QtCreator's
デザイナーでQMainWindow
を設計しました。これは、デフォルトの中央ウィジェット(QWidget
)で構成され、QVBoxLayout
には他のすべてのウィジェットが含まれています。今私が欲しいのは、QVBoxLayout
が自動的に中央のウィジェットの長方形スペース全体を占めることです。
これどうやってするの?中央のウィジェットのプロパティにもQVBoxLayout's
のプロパティにも使用可能なプロパティが見つかりませんでした。
QVBoxLayout
を手動で作成する必要はありません。中央のQWidget
を選択して、レイアウト作成ボタンを押すだけです。
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);
}
MainWindow
に少なくとも1つのウィジェットを追加します。次に、ウィンドウをクリックして選択し、VerticalLayout
の上部にあるQTCreator
ボタンをクリックします。縦型レイアウトが自動的に中央のウィジェットに追加され、すべての表面が塗りつぶされます。
これはすでに回答されていますが、私は個人的にすべてのコントロール要素を保持することを好みますandレイアウトを手動でフォームに追加します。クラスファイルにコントロールを追加するのではなく、シグナル/スロットを接続して、クラス内のクラスのロジックに関連するウィジェットを非表示/表示するだけです。
手動でウィジェットにレイアウトを追加するには、最初に少なくとも1つの子ウィジェット/コントロールを追加する必要があります。それは私には完全に明確ではなかったので、最初にレイアウトを追加しようとしていました。