【问题标题】:Qt-creator: my QMessageBox is not closingQt-creator:我的 QMessageBox 没有关闭
【发布时间】:2013-06-17 10:11:51
【问题描述】:

我使用QMessageBox 来警告用户如果他误按了删除按钮。当用户按下QMessageBox 中的确定按钮时,将调用一个函数从QTableView(连接到数据库)中删除一行。删除后,应该刷新 QTableView 并显示新数据(没有删除的行)。

现在,当用户点击Delete button 时,会出现警告QMessageBox。然后,当他按下确定时,该行将从QTableView 中删除。在这一点上,我希望QMessageBox 消失,并显示QTableView 的新刷新版本,这不会发生!!。取而代之的是QMessageBox 再次出现并且必须手动完成刷新(因为我刚刚启动应用程序).​​.为什么会发生这种情况?

这是我的代码:

QMessageBox msg;
msg.setIcon(QMessageBox::Warning);
msg.setText("Delete");
msg.setInformativeText("continue ?");
msg.setDetailedText("Delete permanently");
msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msg.setDefaultButton(QMessageBox::Cancel);

int ret = msg.exec();
if(ret == 1024){
    msg.Close;
    deleteDataBaseRecord(); // connect to server and delete DB data which is then show the QTableView again
}
else {
    msg.Close;
}

【问题讨论】:

    标签: c++ qt-creator qmessagebox


    【解决方案1】:

    Close call 中没有 ()... 这真的是 C++ 吗?

    不要使用关键字(删除)作为函数名。

    另外,当有可用的名称时,不要使用常量 (1024)。

    【讨论】:

    • 1- Close 中没有 any(),是的,它是 c++。 2-为了简单起见,我把“删除”放在了“删除”上,但在实际代码中它被称为其他东西。 3-我无法更改返回的 int,它已经定义为当您按 OK 时,您将获得 int 1024,我只是在使用它
    【解决方案2】:

    你应该调用msg.close()(不带大写C)来关闭msg消息框。

    另外,如果单击确定按钮,QMessageBox::exec() 方法的返回值可以是QMessageBox::Ok。实际上,QMessageBox::Close(在您的情况下为 msg.Close)可以是这些按钮之一。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-07
      • 2020-05-27
      • 2012-02-06
      • 1970-01-01
      • 2013-04-03
      • 2014-12-25
      • 2014-11-09
      • 1970-01-01
      相关资源
      最近更新 更多