0

QMessageBoxユーザーが誤って [削除] ボタンを押した場合にユーザーに警告するためにを使用しています。ユーザーが の [OK] ボタンを押すと、(データベースに接続されている)QMessageBoxから行を削除する関数が呼び出されます。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;
}
4

2 に答える 2

0

メッセージ ボックスmsg.close()を閉じるには、(大文字の C なしで) を呼び出す必要があります。msg

QMessageBox::exec()さらに、メソッドの戻り値は、QMessageBox::Okクリックされた [OK] ボタンの場合です。実際、QMessageBox::Close(あなたの場合msg.Close)はそれらのボタンの1つになる可能性があります。

于 2013-06-18T10:31:00.067 に答える
0

Close 呼び出しに () がありません...これは本当に C++ ですか?

キーワード (delete) を関数名として使用しないでください。

また、使用可能な名前がある場合は、定数 (1024) を使用しないでください。

于 2013-06-17T10:44:03.313 に答える