我的QMessageBox没有关闭



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

现在,当用户点击Delete button时,出现警告QMessageBox。然后,当他按Ok时,该行将从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++吗?

不要使用关键字(delete)作为函数名

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

您应该调用msg.close()(没有大写C)来关闭msg消息框。

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

最新更新