QMainWindow、QWidget、QDialogの違いは何ですか?


回答:


130

A QWidgetはQtのすべての描画可能なクラスの基本クラスです。任意のQWidgetベースクラスは、それが親を持たないときにそれを示すことによって、ウィンドウとして表示することができます。

A QDialogはに基づいQWidgetていますが、ウィンドウとして表示されるように設計されています。これは常にウィンドウに表示され、ダイアログの一般的なボタン(承認、拒否など)とうまく機能する機能があります。

QMainWindowメインウィンドウの一般的なニーズに合わせて設計されています。メニューバー、ステータスバー、ツールバー、およびその他のウィジェットの定義済みの場所があります。ボタンのように、組み込みのアローアンスQDialogはありません。


1
私はこの質問を探しましたが、それは私が待っていた答えではありません。QtDesignerでQMainWindowを使用すると、メニューバーとステータスバーが表示されます。自分でコードを記述してQMainWindowを使用する場合、これはありません。または、window.addToolBar( "Toolbar");のようなことを実行できると言います。そしてそれは他のどんな頭痛なしに事前に定義された場所にそれを置きますか?
リリアンA.モラル

1
@MoraruLilian:私は実際にはQMainWindowを使用していないので、詳細はわかりません。私の答えで述べたように、彼らには場所があることを知っているので、コードでそれを行うのはあなたが述べるのと同じくらい簡単かもしれません。
Caleb Huitt-cjhuitt 2012年

8
@Caleb_Huitt私が言っていることをします。それがあなたが言おうとしていることであるなら、私はただ明確にしたかったのです。とにかく、QMainWindowの代わりにQWidgetを常に使用することをお勧めします。たとえば、別のレイアウトを設定すると問題が発生する可能性があります。QMainWindowで新しいレイアウトを設定する場合は、QWidgetを作成してQMainWinの中央ウィジェットとして設定する必要があり、その直後にQWidgetでsetLayout(QLayout *)を使用できます。QWidgetを使用するだけで、追加の頭痛を回避できます。確かに、QMainWindowはToolBarとStatusBarの簡単なセットアップを提供しますが、QWidgetで自分で行うことができます...
Lilian A. Moraru

2
QMainWindow基本クラスだけではなく使用することを検討している理由の1つQWidgetは、サポートはあるQMainWindowQDockWidgetサポートQWidgetはしないということです
ComradeJoecool

2
@ mLstudent33これはドキュメンテーションにとって良い質問のように聞こえます。それが役に立たない場合は、コメントではなく主要な質問としてここに質問してください。1つの例(Qt5の場合)は、doc.qt.io
qt-5 / qtwidgets-mainwindows

4

QWidget:QtWidgetsモジュールの他のすべてのGUI要素の基本クラスです。それ自体でウィンドウを構成することも、QLayoutの一部にすることも、単に親子階層のメンバーにすることもできます。

QDialog:は通常使用されます-サプライズ!-ユーザー入力が必要なときに一時的なダイアログを表示します。

QMainWindow:アプリケーションのメインウィンドウとして使用できる便利なクラスです。いくつかの優れた機能が組み込まれています:ステータスバー、ツールバー、メニューバー

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.