web-dev-qa-db-ja.com

QMainWindowのQtレイアウト

QtCreator'sデザイナーでQMainWindowを設計しました。これは、デフォルトの中央ウィジェット(QWidget)で構成され、QVBoxLayoutには他のすべてのウィジェットが含まれています。今私が欲しいのは、QVBoxLayoutが自動的に中央のウィジェットの長方形スペース全体を占めることです。

これどうやってするの?中央のウィジェットのプロパティにもQVBoxLayout'sのプロパティにも使用可能なプロパティが見つかりませんでした。

34
Milan

QVBoxLayoutを手動で作成する必要はありません。中央のQWidgetを選択して、レイアウト作成ボタンを押すだけです。

alt text

41
Georg Schölly

QtCreatorを使用する代わりにコードでそれを行いたい場合は、QWidgetにレイアウトを設定し、QWidgetをメインウィンドウの中央ウィジェットとして次のように設定できます。この:

#include <QtGui>
#include <QWidget>
#include <QHBoxLayout>
#include "mainwindow.h"

MainWindow::MainWindow() {  

        // Set layout
        QHBoxLayout *layout = new QHBoxLayout;
        layout->addWidget(myWidget1);
        layout->addWidget(myWidget2);

        // Set layout in QWidget
        QWidget *window = new QWidget();
        window->setLayout(layout);

        // Set QWidget as the central layout of the main window
        setCentralWidget(window);

}
68

MainWindowに少なくとも1つのウィジェットを追加します。次に、ウィンドウをクリックして選択し、VerticalLayoutの上部にあるQTCreatorボタンをクリックします。縦型レイアウトが自動的に中央のウィジェットに追加され、すべての表面が塗りつぶされます。

13

これはすでに回答されていますが、私は個人的にすべてのコントロール要素を保持することを好みますandレイアウトを手動でフォームに追加します。クラスファイルにコントロールを追加するのではなく、シグナル/スロットを接続して、クラス内のクラスのロジックに関連するウィジェットを非表示/表示するだけです。

手動でウィジェットにレイアウトを追加するには、最初に少なくとも1つの子ウィジェット/コントロールを追加する必要があります。それは私には完全に明確ではなかったので、最初にレイアウトを追加しようとしていました。

3
Rachael