QMessageBox :: Ok没有响应鼠标点击确定按钮

时间:2016-02-23 10:52:14

标签: qt mouseclick-event qmessagebox

我对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;
    }
}

运行此代码后, QMessageBox会弹出Ok按钮。我无法使用鼠标点击 Ok按钮,虽然使用键盘按键我可以这样做。无论我使用键盘还是使用按钮Close (使用键盘或鼠标)。我总是得到返回值1024 ,这只是QMessageBox::Ok。这就是为什么在日志中总是会出现“ Ok按钮点击”。

  1. 为什么我只获得1024 作为返回值
  2. QMessageBox的{​​{1}}是否存在阻止鼠标点击的内容 按钮

2 个答案:

答案 0 :(得分:1)

文档(针对Qt4)说

QMessageBox::QMessageBox ( QWidget * parent = 0 )

Constructs a message box with no text and no buttons.

即使显示它们,这里的按钮也可能出现故障。尝试使用其他构造函数,使用setStandardButtons()使用其中一种静态方法,例如QMessageBox::information(),这在大多数情况下都是您需要的。

答案 1 :(得分:0)

我发现了问题。声明msgBox时,未给出parent。一旦我给了父母,它开始工作正常。虽然我不确定这只会影响Ok按钮而不影响close按钮。 感谢。