我有一些代码可以启动QMessageBox
,但是当提示时,我无法在两个按钮之间切换。它停留在默认按钮上。
像Escape
和Enter
这样的键可以正常工作,但是Tab
,Space
和Left
和Right
键却什么也不做。我想拥有它,因此按这些键会将焦点从一个按钮更改为另一个按钮,或者如果Space
将充当Enter
。
我认为这将是默认行为或易于实现,但我没有看到它。我不希望a)构建自己的ui表单,或b)构建复杂的keyPressEvent函数,但是也许那是我要坚持的。
在Mac OS X 10.6.8中使用Qt 5.3.2,qt-creator 3.1.2和3.0.1。
QMessageBox msgBox;
msgBox.setWindowTitle("This is a prompt");
msgBox.setIcon(QMessageBox::Question);
msgBox.layout()->setSizeConstraint(QLayout::SetMaximumSize);
msgBox.setText(tr("This is some text"));
msgBox.setInformativeText(tr("Here is some great information for you.\n"));
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
msgBox.setDefaultButton(QMessageBox::No);
msgBox.setBaseSize(QSize(400,160));
msgBox.setfocusPolicy(Qt::StrongFocus);
int ret = msgBox.exec();
我尝试使用setfocusPolicy(Qt::StrongFocus);
,但这没有帮助。
我能够在Linux上的Qt 5.14.1 + qtcreator 4.10.1上获得预期的效果,因此我将进行更多测试。它可能特定于我的平台。