如何解决Qt5 QPushButton的无法单击?!
您有没有无法单击的按钮?
我有一个继承的窗口小部件game_widget
,其中声明了9个QPushButton
,它们通过方法init_ui
存储在数组中;还有一个布局窗口小部件,应该在其上放置按钮放置。构造函数中还调用了init_ui
函数。这是该类的主要元素:
class game_widget : public QWidget
{
Q_OBJECT
public:
// The layout widget for the buttons
QWidget* gridLayoutWidget = new QWidget(this);
QPushButton** fields; // Fields list
QPushButton* field1 = new QPushButton(gridLayoutWidget);
...
QPushButton* field9 = new QPushButton(gridLayoutWidget);
...
private:
void init_ui();
};
这里是init_ui
:
void game_widget::init_ui()
{
fields = new QPushButton* [9]; // Fields list
fields[0] = field1;
...
fields[8] = field9;
...
// Preparing layout for the buttons
gridLayoutWidget->setGeometry(QRect(10,10,531,531));
QGridLayout* grid_layout = new QGridLayout(gridLayoutWidget);
// Adding each field to the layout
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
{
fields[i * 3 + j]->setMaximumSize(QSize(170,170));
fields[i * 3 + j]->setMinimumSize(QSize(170,170));
grid_layout->addWidget(fields[i * 3 + j],i,j);
}
}
现在的问题是,这些按钮甚至不可单击-更不用说将鼠标悬停在它们上也无济于事,没有动画。关于他们的其他任何事情都没有改变,因此他们的行为应该是正常的,但事实并非如此。如果您几乎不知道会发生什么情况,请提供帮助。
解决方法
您正在QPushButtons
中另外创建9个void game_widget::init_ui()
,请尝试以下操作:
void game_widget::init_ui()
{
QVector <QPushButton*> fields; // Fields list
fields[0] << field1;
...
fields[8] << field9;
...
// Preparing layout for the buttons
gridLayoutWidget->setGeometry(QRect(10,10,531,531));
QGridLayout* grid_layout = new QGridLayout(gridLayoutWidget);
// Adding each field to the layout
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
{
fields[i * 3 + j]->setMaximumSize(QSize(170,170));
fields[i * 3 + j]->setMinimumSize(QSize(170,170));
grid_layout->addWidget(fields[i * 3 + j],i,j);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。