将QMainWindow中的enterPressed()连接到Button clicked()

时间:2017-04-05 08:28:21

标签: c++ visual-studio qt qt5

如何将主GUI窗口中的键enterPressed()事件连接到特定按钮(也在主GUI中)?

USECASE:

用户启动应用程序,输入一些数据并按下Enter按钮,将被旁路到单击“开始”按钮。

我的想法:

connect(this, SIGNAL(returnPressed()), ui.btn_Start, SLOT(clicked()));

class ClassA : QMainWindow
{
    Q_OBJECT
    // ...

    private:
        Ui::ClassAClass ui;
    // ...
};

1 个答案:

答案 0 :(得分:1)

您可以将信号连接到其他信号:

connect(this, &MainWindow::returnPressed, ui.btn_Start, &QPushButton::released);

就是这样。信号被转发到发送它的QPushButton实例信号,因此将调用连接到它的任何信号。另外(您谈论事件)在QMainWindow::keyPressEvent中重新实现:

class MainWindow : public QMainWindow
{
//...
signals:
    void returnPressed() const;

protected:
    void keyPressEvent(QKeyEvent *event);
};

void MainWindow::keyReleaseEvent(QKeyEvent *event)
{
    if(event->key() == Qt::Key_Return)
        emit returnPressed();
    QMainWindow::keyReleaseEvent(event);
}