如何将主GUI窗口中的键enterPressed()事件连接到特定按钮(也在主GUI中)?
USECASE:
用户启动应用程序,输入一些数据并按下Enter按钮,将被旁路到单击“开始”按钮。
我的想法:
connect(this, SIGNAL(returnPressed()), ui.btn_Start, SLOT(clicked()));
class ClassA : QMainWindow
{
Q_OBJECT
// ...
private:
Ui::ClassAClass ui;
// ...
};
答案 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);
}