Qt5 QMessageBox无法在按钮之间切换

我有一些代码可以启动QMessageBox,但是当提示时,我无法在两个按钮之间切换。它停留在默认按钮上。

EscapeEnter这样的键可以正常工作,但是TabSpaceLeftRight键却什么也不做。我想拥有它,因此按这些键会将焦点从一个按钮更改为另一个按钮,或者如果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上获得预期的效果,因此我将进行更多测试。它可能特定于我的平台。

hirxn45624 回答:Qt5 QMessageBox无法在按钮之间切换

感谢@VladimirBershov和https://stackoverflow.com/a/32378759/4149835的回答,帮助我解决了这个问题。

以前,我曾在消息框对象本身上调用过$('#card-price-Div-Slide').data('data-min','20'); $('#card-price-Div-Slide').data('data-max','40'); $('#card-price-Div-Slide').setAttribute('data-min','20'); ,但是我这样做是:

setFocusPolicy(Qt::StrongFocus)

然后解决了! Mac OS X 10.6.8要求对按钮本身有严格的关注策略才能获得此功能。

本文链接:https://www.f2er.com/2591807.html

大家都在问