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

时间:2014-03-21 20:23:31

标签: 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];
                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;");
    }

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

sender()是丑陋的非OOP。使用QSignalMapper。