Qtのモーダルダイアログとモードレスダイアログ

ここに画像を挿入説明
フレームモードと非モーダルボックスの作成は同じですが、キーは異なる表示方法です。
次のような違いは次のとおりです。

モーダルダイアログボックス(他のウィンドウ上ではない仕事)、モードレスダイアログ(他のウィンドウを操作することができる)
ではなく、ディスプレイへのモーダルダイアログのshow()メソッド経由よりも表示するには、exec()メソッドを持つモーダルダイアログ。
ここでは、(ショーの違いについて話)とexec()しなければならない、です
)(ショー:
非モーダルダイアログボックスを表示します。制御はすぐに呼び出し元の関数に戻ります。
ポップアップウィンドウは、モーダルプロパティの値に応じて、モーダルダイアログボックスです。
(オリジナル:表示するダイアログコントロールダイアログAS Aはモードレスすぐに電話番号を返します。..
モーダルダイアログの[プロパティザ・モーダルの値またはモードレスよられます。)

EXEC():
表示モーダルダイアログボックス、およびユーザーがダイアログボックスを閉じるまで、プログラムをロックします。DialogCode機能は結果を返します。
ダイアログボックスがポップアップ表示時には、ダイアログボックスを閉じるまで、ユーザーは、同じ手順の下で他のウィンドウに切り替えることはできません。
(オリジナル:.ダイアログAS Aモーダルダイアログでショー、でユーザーが機能でITを閉じるまで、ブロッキングA A DialogCodeに結果を返します。
同じ時における他のウィンドウを持つユーザーができるわけではありません相互作用するアプリケーションは、彼らがダイアログで閉じるを使用するまで。)
ここでは、コードの外観を使用します

  		QDialog dia(this);
    	dia.resize(200,100);
      	dia.exec();
    	qDebug()<<"模态对话框创建";

        //非模态对话框创建
        QDialog * dia1 = new QDialog(this);
        dia1->show();
        dia1->setAttribute(Qt::WA_DeleteOnClose);

このコードは、そう、そうでない状況が幹部のinvoke()メソッドというダイアログボックスが表示され、モーダルダイアログ全体で点滅しますので、非モーダルダイアログボックスは、新しいを使用して作成するには、ラムダ式の内側に書かれています場合は、のsetAttribute(Qtの:: WA_DeleteOnClose)の最後の行つかの間ではありません。そのスペースはスペースの過度の印加によるメモリリークを防ぐために、タイムリーなリリース後のヒープ内に作成されるように(通常ものの、不可能)。

公開された212元の記事 ウォンの賞賛4 ビュー8748

おすすめ

転載: blog.csdn.net/ShenHang_/article/details/104877408