0

QMessageBox如果用户错误地按下了删除按钮,我正在使用 a来警告用户。当用户在 中按下 Ok 按钮时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;
}
4

2 回答 2

0

您的 Close 电话中没有 () ......这真的是 C++ 吗?

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

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

于 2013-06-17T10:44:03.313 回答
0

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

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

于 2013-06-18T10:31:00.067 回答