C++ Qt插槽和信号:输入QPushButton作为参数?
我目前拥有以下功能:C++ Qt插槽和信号:输入QPushButton作为参数?,c++,qt,C++,Qt,我目前拥有以下功能: 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]; bre
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;");
}
有没有什么方法可以发送实际的按钮,这样我就不需要遍历数组中的每个按钮?我不想子类QPushButton,如果我不必这样做的话,这似乎太过分了。我还想避免使用静态变量
这正是我想要的:
void MainWindow::onJeopardySquareClicked(QPushButton clickedButton){
clickedButton.setStyleSheet("background-color: gray;");
}
在OnJeopardySquarecicked中,您可以使用来找出信号来自哪个QObject。否则,您也可以使用来映射对象/小部件。sender()是丑陋的非面向对象的。使用QSignalMapper。有没有一种方法可以直接从sender()获取对象,而无需循环?编辑:我想map就是我想要的。您必须将sender()强制转换为QPushButton,从而获得已单击的按钮。但是你也可以使用QSignalMapper,同意这个。函数的文档中也提到了这一点。
void MainWindow::onJeopardySquareClicked(QPushButton clickedButton){
clickedButton.setStyleSheet("background-color: gray;");
}