QMainWindow上のQtのレイアウト
-
19-09-2019 - |
質問
私はQMainWindow
デザイナーでQtCreator's
を設計しました。これは、その中のすべての他のウィジェットと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
ボタンをクリックしてください。あなたが縦レイアウトが自動的に中央のウィジェットに加え、全ての面を埋めされます。
これは、既に回答されていますが、私は個人的に、すべての制御要素は、を維持することを好むとのレイアウトは、フォームに手動で追加しました。私は単にクラス内、クラスのロジックに関連する/ショーウィジェットを非表示にするには、信号/スロットをフックアップ、クラスファイルのコントロールを追加しないでください。
手動で最初に少なくとも一つの子ウィジェット/コントロールを追加する必要があります任意のウィジェットにレイアウトを追加します。それは私には全く明確ではありませんでしたし、私は最初のレイアウトを追加しようとしていた。