【问题标题】:QMessageBox::Ok is not responding for mouse clicks on Ok buttonQMessageBox::Ok 没有响应鼠标点击 Ok 按钮
【发布时间】:2016-02-23 10:52:13
【问题描述】:

我对@9​​87654321@ 比较陌生。我在函数中有以下代码(在从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 button clicked”。

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

【问题讨论】:

    标签: qt mouseclick-event qmessagebox


    【解决方案1】:

    文档(对于 Qt4)说

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-04-03
        • 2011-06-23
        • 2013-03-21
        • 2019-06-18
        • 2019-01-30
        • 2014-04-09
        • 1970-01-01
        相关资源
        最近更新 更多