问题描述
您有没有无法单击的按钮?
我有一个继承的窗口小部件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);
}
}