我是QT Creator GUI的新手,我很難用信號和插槽。我使用QT 4.2.1來練習一個詞搜索拼圖qt如何連接QPushButton的二維數組並返回位置
下面是我的代碼的一部分,使用矢量創建一個2D拼圖。我試圖使用數組,但拼圖的大小將由用戶決定。我有很多使用數組的編譯錯誤。所以我決定使用Vector
我試過了這個帖子的一些選項:Get index of QPushButton on 2D array QPushButton但是它們都不起作用。
你能幫我看看爲什麼信號和插槽沒有連接?有沒有辦法檢查信號是否連接? 我將不勝感激任何幫助和反饋。謝謝!
void MainWindow::displayPuzzle(QVector<QVector<QPushButton*>>& button, QVector<QVector<QChar>> puzzle2D){
widget1 = new QWidget;
QGridLayout* l = new QGridLayout;
QSignalMapper mapper;
for (int r = 0; r < puzzle2D.size(); r++) {
QVector<QPushButton*> vect;
for (int c = 0; c < puzzle2D[r].size(); c++) {
//format the button
vect.push_back(new QPushButton);
vect.last()->setText(puzzle2D[r][c]);
vect.last()->setFixedSize(60,60);
vect.last()->show();
auto pos = QString{"%1 %2"}.arg(r).arg(c);
//connect with signals and slots
mapper.connect(vect.last(), SIGNAL(clicked()), SLOT(map()));
mapper.setMapping(vect.last(), pos);
//add button to layout
l->addWidget(vect.last(), r, c);
l->setSpacing(0);
l->setMargin(0);
l->setContentsMargins(-1,-1,-1,-1);
}
button.push_back(vect);
}
connect(&mapper, SIGNAL(mapped(QString)), SLOT(puzzleClick(QString)));
widget1->setLayout(l);
}
void MainWindow::puzzleClick(QString text){
int r = text.split(" ").at(0).toInt();
int c = text.split(" ").at(1).toInt();
QMessageBox::information(this, "click:", r + " " + c);
}
爲什麼心臟使用Qt 4.2? Qt目前版本爲5.8 ... – valleymanbs
也許您正在使用Qt Creator版本4.2.1?您的應用程序鏈接了哪個Qt庫版本? – valleymanbs