我目前拥有此功能:
void MainWindow::onJeopardySquareClicked(){
QPushButton *temp;
for(int i =0; i < 6;i++){
for (int j = 0; j < 6; ++j) {
if(button[i][j] == sender()){
temp = button[i][j];
break;
}
}
}
temp->setStyleSheet("background-color: gray;");
}
连接到QPushButtons的网格:
QObject::connect(button[arrI][j],SIGNAL(pressed()),this, SLOT(onJeopardySquareClicked()));
有没有办法发送实际按钮,所以我不需要遍历数组中的每个按钮?如果我不需要,我不想继承QPushButton,这似乎有点过分。我也想避免使用静态变量。
这就是我想要的:
void MainWindow::onJeopardySquareClicked(QPushButton clickedButton){
clickedButton.setStyleSheet("background-color: gray;");
}
答案 0 :(得分:3)
在onJeopardySquareClicked中,您可以使用QObject::sender()找出信号源自哪个QObject。否则,您还可以使用QSignalMapper来映射对象/小部件。
答案 1 :(得分:0)
sender()是丑陋的非OOP。使用QSignalMapper。