2017-04-05 18 views
1

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

USECASE:

用户启动应用程序,输入一些数据,然后按Enter键,将被忽略的“开始”按钮被点击。

我的想法:

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

class ClassA : QMainWindow 
{ 
    Q_OBJECT 
    // ... 

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

你确定你需要一个'QMainWindow'为您的使用情况? 'QDialog'有[默认按钮](https://doc.qt.io/qt-5/qdialog.html#default-button),我认为'QDialog's更适合用户输入一些数据并按下Return键。那么,在这里使用'QMainWindow'有什么理由吗? – Mike

+0

@Mike它是应用程序的主窗口 – leon22

回答

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); 
} 
+0

问题是:QMainWindow没有成员“returnPressed” – leon22

+0

@ leon22添加了你所需要的完整代码。 – Resurrection

+0

错误:“插槽需要比信号提供更多的参数”,我认为你有一个错字:returnedPressed vs returnPressed – leon22