Qt槽和信号:输入QPushButton作为参数

Qt slots and signals: Input QPushButton as a parameter?

本文关键字:QPushButton 参数 输入 信号 Qt      更新时间:2023-10-16

我目前有这个功能:

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;");
    }

在onardysquareclicked中,您可以使用QObject::sender()来查找信号源自哪个QObject。否则,还可以使用QSignalMapper来映射对象/小部件。

sender()既丑陋又非面向对象。使用QSignalMapper。