[英]Qt5 QPushButton's can't be clicked (?!)
我有一個繼承的小部件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);
}
}
現在的問題是這些按鈕甚至不可點擊 - 更不用說將鼠標懸停在它們上面也不會對它們做任何事情,沒有動畫。 關於他們的其他任何事情都沒有改變,所以他們的行為應該是正常的,但事實並非如此。 如果您對可能發生的事情有絲毫的了解,請提供幫助。
您在void game_widget::init_ui()
中創建了 9 個額外的QPushButtons
,請嘗試以下操作:
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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.