在QT中按线时如何按下默认按钮在小部件中编辑

How to press a default button when by pressing an lineEdit in a WIDGET in QT

提问人:Chansy 提问时间:12/24/2019 最后编辑:Chansy 更新时间:12/25/2019 访问量:1118

问:

我正在使用 QT 4.8 和 C++,我需要一个默认按钮,当在行中输入一些文本时,将按下该按钮编辑并按下 ENTER 键。

根据 QT 文档对按钮的属性“default”。 该行为仅适用于对话框。

“默认按钮行为仅在对话框中提供。当按钮具有焦点时,始终可以通过按空格键从键盘单击按钮。

我怎么能有一个小部件有这种行为,它是我所有 GUI 组件的容器。

谢谢。

C++ QT QT4

评论

0赞 Sumeet 12/24/2019
你能发布一些你尝试过的示例代码吗?
0赞 Chansy 12/24/2019
@Sumeet 谢谢。我只是通过QtDesigner将此按钮的属性“default”设置为true。

答:

1赞 Vladimir Bershov 12/24/2019 #1

您可以将信号 QLineEdit::returnPressed() 连接到插槽 QAbstractButton::click()。

方法 1

在设计器中,您只需:

  1. 右键单击 lineEdit
  2. 选择“转到插槽...”

enter image description here

  1. 选择:returnPressed()

enter image description here

  1. 按 ok
  2. 在代码视图中,您将看到连接到所选信号的插槽
  3. 您可以简单地调用所需按钮的插槽:click()

enter image description here

方法 2

您可以手动将任何 lineEdit 的信号连接到任何 pushButton 的插槽:

在 Qt 4 语法中:

connect(ui->lineEdit, SIGNAL(returnPressed()),
            ui->anyButton, SLOT(click()));

在新的 Qt 5 语法中:

connect(ui->lineEdit, &QLineEdit::returnPressed,
            ui->anyButton, &QPushButton::click);

评论

0赞 Chansy 12/25/2019
谢谢~我尝试了 Method2 Qt4 语法,现在它可以工作了