我想让我的应用程序对笔记本电脑友好。我可以在任何地方使用选项卡,但是如果我使用 QPushButton 选项卡,我不能使用 Enter
按下它,只能使用 空格
键。
有什么问题?如何使其可按下 Enter
?
原文由 totymedli 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想让我的应用程序对笔记本电脑友好。我可以在任何地方使用选项卡,但是如果我使用 QPushButton 选项卡,我不能使用 Enter
按下它,只能使用 空格
键。
有什么问题?如何使其可按下 Enter
?
原文由 totymedli 发布,翻译遵循 CC BY-SA 4.0 许可协议
根据 Qt 的文档 Enter 应该可以工作
默认情况下,对话框中的命令按钮是自动默认按钮,即当它们接收到键盘输入焦点时,它们会自动成为默认按钮。默认按钮是当用户在对话框中按下 Enter 或 Return 键时激活的按钮。您可以使用 setAutoDefault() 更改此设置。
http://qt-project.org/doc/qt-4.8/qpushbutton.html
原文由 Amxx 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答2k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
tl;博士
Enter
选择要使其可按下的按钮。QPushButton
的蓝色部分。autoDefault
或default
选中复选框。大多数情况下,
autoDefault
和default
之间的主要区别在于按钮的呈现方式。但在某些情况下,它可能会导致意想不到的事情,因此有关更多信息,请阅读下文。全面审查
概述
每个
QPushButton
都有 3 个未继承的属性。从这些中,当我们将按钮放在QDialog
s 上时,两个(default
和autoDefault
)具有主要作用,因为这些设置(以及关注其中一个button) 决定如果我们按Enter
将按下哪个按钮。默认情况下,所有这些属性都设置为 false。唯一的期望是
autoDefault
如果按钮有一个QDialog
父级,那将是真的。每次您按
空格
键时,将按下焦点在它上面的按钮。下面将描述如果按Enter
会发生什么。默认属性
如果设置为 true,则该按钮将是 _默认按钮_。
如果在对话框上按下
Enter
,则将按下此按钮,除非焦点位于自动默认按钮上。应该只有一个默认按钮。如果您添加更多,那么最后添加的将是默认按钮。
自动默认属性
如果设置为 true,则该按钮将是一个 autoDefault button 。
如果在对话框上按下
Enter
键,那么如果焦点在它上面,则会按下此按钮。如果焦点不在自动默认按钮上并且没有默认按钮,则将为
Enter
按下下一个自动默认按钮。平房
如果设置为 true,那么按钮的边框将不会被提升。
示例表
下表显示了在不同焦点上使用不同按钮将按下哪个按钮。按钮是从左到右添加的。
测试代码
以下代码是一种向对话框添加按钮的方法。它可用于通过更改
boolean
值setDefault()
和/或setAutoDefault()
来进行测试。You just need to create a window, add a
QPushButton
calledpushButton
and aQLabel
calledlabel
(that is the default naming).不要忘记#include <QMessageBox>
。然后将此代码复制到按钮的clicked()
信号:展示
如果你编译代码,你可以得到这个窗口。您甚至不必单击按钮,因为操作系统呈现它们的方式显示了如果您按
Enter
或空格
将按下哪个按钮。官方文档
这个答案大部分是根据官方文档做出的。
Qt 制作的 QPushButton 文档说明 了这些:
检查 QDialog 和 QMessageBox 也是值得的。