如何更改QDialogBox中的默认QPushButton
How to change the default QPushButton in a QDialogBox
我的目标是有两个按钮,"取消"和"连接",并在用户按 Enter 时将取消作为默认按钮。我还希望用户能够按 TAB 键转到下一个按钮("连接")并按 Enter 并按下"连接"。这是我的代码:
QPushButton * cancelButton = new QPushButton(tr("&Cancel"));
cancelButton->setAutoDefault(true);
cancelButton->setDefault(true);
cancelButton->setFocus();
QPushButton * continueButton = new QPushButton(tr("Co&nnect"));
continueButton->setAutoDefault(true);
continueButton->setDefault(false);
ui->buttonBox->addButton(cancelButton, QDialogButtonBox::RejectRole);
ui->buttonBox->addButton(continueButton, QDialogButtonBox::AcceptRole);
将"取消"按钮设置为默认按钮实际上似乎不起作用。
在所有按钮上设置 autoDefault 属性似乎是必要的,例如,允许在按 TAB 和 Enter 后按下按钮。这似乎与自动默认的文档相符。但是,默认属性的文档似乎表明,仅当没有设置了 autoDefault 属性的按钮时,才会按下默认按钮。否则,按下 ENTER 时按下的按钮将是当前选择的自动默认按钮。所以似乎我需要做的是让取消按钮默认有焦点,但我似乎不知道该怎么做。
您必须在
将按钮添加到QDialogButtonBox
后调用cancelButton->setFocus();
,而不是之前。
在调用对话框>显示之前尝试添加以下行
button->isEnabled(true)
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 如何使用默认参数等选择模板专业化
- 具有默认模板参数的多态类的模板推导失败
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 当函数模板参数是具有默认参数的类模板时,函数模板参数的推导如何执行
- 初始化具有非默认构造函数的std::数组项的更好方法
- 何时提供默认参数作为模板参数
- 是默认情况下分配给char数组常量的值
- 具有默认值的引用获取函数
- 具有默认模板类型的默认构造函数的类型推导
- 当给定默认值时,为什么此模板参数推导失败
- 修改 VS Code 中的默认C++代码段
- 声明默认的模板化函数
- 将const引用参数初始化为默认参数会导致悬空引用吗
- 如何使用非默认构造函数实例化模板化类
- 如何修复带有 clang 的参数'args'缺少默认参数的问题?
- 从具有默认值的部分指定模板类继承时发生SWIG错误,具有不带默认值的正向声明
- 如何释放QPushButton的焦点,这是QDialog的默认按钮
- 设置QPUSHBUTTON的最小宽度,同时保持默认的最小尺寸行为
- 如何更改QDialogBox中的默认QPushButton