QMessageBox::Ok 没有响应鼠标单击“确定”按钮



我对Qt相对较新。我在函数中有以下一段代码(位于从QObject继承的用户定义类中):

QMessageBox msgBox;
msgBox.setText("Try clicking Ok button.");   
int ret = msgBox.exec();
qDebug() << "Return Val:" << ret;
switch (ret)
{
    case QMessageBox::Ok:
    {
        qDebug()<<"Ok button clicked";
        break;
    }
    default:
    {
        qDebug()<<"Control Should Not Reach this log";
        break;
    }
}

运行此代码后, 将弹出带有Ok按钮的QMessageBox。我无法使用鼠标单击Ok按钮,尽管使用键盘键我可以做到这一点。无论我使用键盘还是使用按钮Close (使用键盘或鼠标)。我总是得到返回值1024这只不过是QMessageBox::Ok.这就是为什么在日志中总是"单击确定按钮"的原因。

  1. 为什么我只得到1024作为返回值
  2. 是否有阻止鼠标单击QMessageBox Ok按钮

文档(对于 Qt4)说

QMessageBox::QMessageBox ( QWidget * parent = 0 )
Constructs a message box with no text and no buttons.

即使显示它们,这里的按钮也可能是无序的。尝试另一个构造函数,使用 setStandardButtons()或使用静态方法之一,如 QMessageBox::information() ,在大多数情况下,这就是您所需要的。

我发现了问题。在宣布msgBox时,没有给出parent。一旦我给了父母,它就开始正常工作。虽然我不确定这如何影响Ok按钮而不是close按钮。谢谢。

最新更新