QT 基本チュートリアル (レイアウト マネージャー)


序文

この記事では、インターフェイスのレイアウトにおいて非常に重要なレイアウトマネージャーの使い方について説明していきます。レイアウトマネージャーを使用することで、インターフェイスをより美しくすることができます。

1. レイアウトマネージャーの概要

レイアウト マネージャーは、グラフィカル ユーザー インターフェイス (GUI) アプリケーションでウィジェットを自動的に管理および配置するために使用されるツールです。レイアウト マネージャーを使用すると、ウィジェットをさまざまなウィンドウ サイズやユーザー インターフェイスのレイアウトに適応させ、さまざまな画面サイズやユーザーのニーズに適合させることができます。

Qt では、開発者がウィジェットを便利に整理および管理できるように、さまざまなレイアウト マネージャーが提供されています。一般的に使用されるレイアウト マネージャーをいくつか示します。

1.QVBoxLayout (垂直レイアウト マネージャー): 垂直レイアウト マネージャーは、ウィジェットを上から下の順序で配置します。

2.QHBoxLayout (水平レイアウト マネージャー): 水平レイアウト マネージャーは、ウィジェットを左から右の順序で配置します。

3.QGridLayout (グリッド レイアウト マネージャー): グリッド レイアウト マネージャーはウィジェットをグリッドに配置し、行と列を指定してレイアウトを制御できます。

4.QFormLayout (フォーム レイアウト マネージャー): フォーム レイアウト マネージャーは、ラベルと入力フィールドの組み合わせを作成し、それらを 1 列または 2 列に配置するために使用されます。

5.QStackedLayout(スタックレイアウトマネージャー): スタックレイアウトマネージャーは、複数のウィジェットを積み重ねて配置し、そのうちの1つのウィジェットのみを表示し、切り替えて別のウィジェットを表示することができます。

使用布局管理器的好处是,当窗口大小改变时,布局管理器会自动调整窗口部件的位置和大小,以适应新的大小。这样,开发者无需手动调整每个部件的位置和大小,大大简化了界面设计和窗口调整的工作。

2. QVBoxLayout (垂直レイアウトマネージャー)

垂直レイアウト マネージャーは、ウィジェットを上から下の順序で配置します。

addWidget() メソッドを使用して、垂直レイアウト マネージャーにウィジェットを追加します。

addStretch() メソッドを使用してストレッチ項目を追加し、ウィジェットの自動充填と位置合わせを実現できます。

#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QPushButton>

int main(int argc, char *argv[]) {
    
    
    QApplication app(argc, argv);

    QWidget window;
    window.setWindowTitle("Vertical Layout Example");

    QVBoxLayout layout;

    QPushButton *button1 = new QPushButton("Button 1");
    QPushButton *button2 = new QPushButton("Button 2");
    QPushButton *button3 = new QPushButton("Button 3");

    layout.addWidget(button1);
    layout.addWidget(button2);
    layout.addWidget(button3);

    window.setLayout(&layout);

    window.show();

    return app.exec();
}

3. QHBoxLayout (水平レイアウトマネージャー)

水平レイアウト マネージャーは、ウィジェットを左から右に順番に配置します。

addWidget() メソッドを使用して、水平レイアウト マネージャーにウィジェットを追加します。

addStretch() メソッドを使用してストレッチ項目を追加し、ウィジェットの自動充填と位置合わせを実現できます。

#include <QApplication>
#include <QWidget>
#include <QHBoxLayout>
#include <QPushButton>

int main(int argc, char *argv[]) {
    
    
    QApplication app(argc, argv);

    QWidget window;
    window.setWindowTitle("Horizontal Layout Example");

    QHBoxLayout layout;

    QPushButton *button1 = new QPushButton("Button 1");
    QPushButton *button2 = new QPushButton("Button 2");
    QPushButton *button3 = new QPushButton("Button 3");

    layout.addWidget(button1);
    layout.addWidget(button2);
    layout.addWidget(button3);

    window.setLayout(&layout);

    window.show();

    return app.exec();
}

4. QGridLayout (グリッドレイアウトマネージャー)

グリッド レイアウト マネージャーはウィジェットをグリッドに配置し、行と列を指定してレイアウトを制御できます。

addWidget() メソッドを使用して、ウィジェットをグリッド レイアウト マネージャーに追加し、ウィジェットが配置される行と列を指定します。

setRowStretch() メソッドと setColumnStretch() メソッドを使用して、行と列の伸縮率を設定できます。

#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QPushButton>

int main(int argc, char *argv[]) {
    
    
    QApplication app(argc, argv);

    QWidget window;
    window.setWindowTitle("Grid Layout Example");

    QGridLayout layout;

    QPushButton *button1 = new QPushButton("Button 1");
    QPushButton *button2 = new QPushButton("Button 2");
    QPushButton *button3 = new QPushButton("Button 3");

    layout.addWidget(button1, 0, 0);
    layout.addWidget(button2, 0, 1);
    layout.addWidget(button3, 1, 0);

    window.setLayout(&layout);

    window.show();

    return app.exec();
}

5. QFormLayout (フォームレイアウトマネージャー)

フォーム レイアウト マネージャーは、ラベルと入力フィールドの組み合わせを作成し、それらを 1 列または 2 列に配置するために使用されます。

addRow() メソッドを使用して、フォーム レイアウト マネージャーにラベルと入力フィールドを追加します。

setLabelAlignment() メソッドを使用して、ラベルの配置を設定できます。

#include <QApplication>
#include <QWidget>
#include <QFormLayout>
#include <QLabel>
#include <QLineEdit>

int main(int argc, char *argv[]) {
    
    
    QApplication app(argc, argv);

    QWidget window;
    window.setWindowTitle("Form Layout Example");

    QFormLayout layout;

    QLabel *label1 = new QLabel("Label 1");
    QLineEdit *lineEdit1 = new QLineEdit();

    QLabel *label2 = new QLabel("Label 2");
    QLineEdit *lineEdit2 = new QLineEdit();

    layout.addRow(label1, lineEdit1);
    layout.addRow(label2, lineEdit2);

    window.setLayout(&layout);

    window.show();

    return app.exec();
}

6. QStackedLayout (スタックレイアウトマネージャー)

スタック レイアウト マネージャーは、複数のウィジェットをスタック状に配置し、1 つのウィジェットのみを表示します。

addWidget() メソッドを使用して、スタック レイアウト マネージャーにウィジェットを追加します。

現在表示されているウィジェットのインデックスを設定するには、setCurrentIndex() メソッドを使用します。

#include <QApplication>
#include <QWidget>
#include <QStackedLayout>
#include <QPushButton>
#include <QLabel>

int main(int argc, char *argv[]) {
    
    
    QApplication app(argc, argv);

    QWidget window;
    window.setWindowTitle("Stacked Layout Example");

    QStackedLayout layout;

    QPushButton *button1 = new QPushButton("Button 1");
    QLabel *label1 = new QLabel("Label 1");

    QPushButton *button2 = new QPushButton("Button 2");
    QLabel *label2 = new QLabel("Label 2");

    layout.addWidget(button1);
    layout.addWidget(label1);
    layout.addWidget(button2);
    layout.addWidget(label2);

    layout.setCurrentIndex(0); // 设置初始显示的部件

    window.setLayout(&layout);

    window.show();

    return app.exec();
}

要約する

上記は、一般的に使用される 5 つのレイアウト マネージャーと、対応するコード例の紹介です。実際のニーズに基づいて適切なレイアウト マネージャーを選択し、Qt のレイアウト システムを使用してウィジェットを管理および配置し、適応性の高いユーザー インターフェイスを作成できます。

おすすめ

転載: blog.csdn.net/m0_49476241/article/details/132950661