Qt-creator:我的QMessageBox没有关闭

时间:2013-06-17 10:11:51

标签: c++ qt-creator qmessagebox

如果他误按了“删除”按钮,我正在使用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;
}

2 个答案:

答案 0 :(得分:0)

你的Close调用没有()这真的是C ++吗?

不要将关键字(删除)用作功能名称。

此外,如果有可用名称,请不要使用常量(1024)。

答案 1 :(得分:0)

您应该拨打msg.close()(不使用大写字母C)来关闭msg消息框。

此外,如果单击了“确定”按钮,QMessageBox::exec()方法的返回值可以是QMessageBox::Ok。实际上,QMessageBox::Close(在您的情况下为msg.Close)可以是其中一个按钮。