0

我对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弹出OkButton。我无法使用鼠标单击Ok按钮,尽管使用键盘键我可以做到这一点。无论我使用键盘还是使用按钮Close(使用键盘或鼠标)。我总是得到返回值1024,这不过是QMessageBox::Ok. 这就是为什么在日志中总是出现“单击确定按钮”的原因。

  1. 为什么我只得到1024 返回值
  2. 有什么东西阻止鼠标点击QMessageBox按钮Ok
4

2 回答 2

1

文档(对于 Qt4)说

QMessageBox::QMessageBox ( QWidget * parent = 0 )

Constructs a message box with no text and no buttons.

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

于 2016-02-23T12:21:43.637 回答
0

我发现了问题。声明时msgBox,没有parent给出。一旦我给了父母,它就开始正常工作了。尽管我不确定这仅影响Ok按钮而不影响close按钮。谢谢。

于 2016-02-25T05:38:06.293 回答