1

Qtを使用して作業用のビルドとアプリケーションを作成している学生プログラマーですが、ユーザーが変更を保存せずにダイアログを終了したときの処理方法を理解するのに苦労しています。ダイアログは主にデータ入力を目的としているため、変更が加えられたかどうかを識別し、終了する前に保存するオプションをユーザーに提供できると非常に便利です。QDialogでQtのドキュメントを調べまし終了ボタンが押された場合に返されるモードに関しては何も見つかりませんでした。終了ボタンがいつクリックされたかを識別する手段を持つことが最優先事項です。また、学生プログラマーである私は、データの前後を比較する方法に関するベストプラクティスのアイデアも受け入れています。データはテーブルに入力されているので、このようなものを作成する必要があると思います

connect(some kinda exit handler, SIGNAL(clicked), this, SLOT(comparePreAndPostTable)

QVector<QString> prechanges =  everything from the table
QVector<QString> postchanges = everything from table when exit is clicked


if(prechanges != postchanges)
{
     Give oppertunity to save
}

どんな援助も大歓迎です!Qtがすでにこれのために何かを持っていたら、それは本当に素晴らしいでしょう!

4

1 に答える 1

7

ダイアログの終了ボタンを処理するには、 QWidgetcloseEvent()のメソッドをオーバーライドする必要があります。ドキュメントには、あなたが探しているもののように奇妙に見える例さえあります:

 void MainWindow::closeEvent(QCloseEvent *event)
 {
     if (maybeSave()) {
         writeSettings();
         event->accept();
     } else {
         event->ignore();
     }
 }

maybeSave()何かが変わったかどうかを確認するためにどこを比較しますか。

于 2012-05-02T16:36:19.287 に答える