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