美文网首页
Qt 界面布局

Qt 界面布局

作者: wjundong | 来源:发表于2020-02-02 03:06 被阅读0次

    QGridLayout 网格布局

    addWidget () 括号内有四个参数。分别为所添加组件位置的行数、列数、所添加组件占的行数、列数

    Layout::Layout(QWidget *parent)
        : QWidget(parent)
    {
        // 在当前 QWidget 中创建网格布局
        QGridLayout *mainLayout = new QGridLayout(this);
    
        QTextBrowser *textBrowser1 = new QTextBrowser();
        QTextBrowser *textBrowser2 = new QTextBrowser();
        QPushButton *button1 = new QPushButton("按钮 1");
        QPushButton *button2 = new QPushButton("按钮 2");
        QPushButton *button3 = new QPushButton("按钮 3");
        QPushButton *button4 = new QPushButton("按钮 4");
        QPushButton *button5 = new QPushButton("按钮 5");
    
        // 设置两个文本框所占行数列数都为 2
        mainLayout->addWidget(textBrowser1, 0, 0, 2, 2);
        mainLayout->addWidget(textBrowser2, 2, 0, 2, 2);
    
        // 在第二列加入四个 button,0 ~ 3行
        mainLayout->addWidget(button1, 0, 2);
        mainLayout->addWidget(button2, 1, 2);
        mainLayout->addWidget(button3, 2, 2);
        mainLayout->addWidget(button4, 3, 2);
        // 最后一个 button 占 1 个行数,3 个列数
        mainLayout->addWidget(button5, 4, 0, 1, 3);
    }
    
    效果图

    布局嵌套

    水平布局和垂直布局比较简单,可直接看布局嵌套。

    Layout::Layout(QWidget *parent)
        : QWidget(parent)
    {
        // 父布局为水平布局
        QHBoxLayout *mainLayout = new QHBoxLayout(this);
        // 左右两个子布局都为垂直布局
        QVBoxLayout *leftLayout = new QVBoxLayout;
        QVBoxLayout *rightLayout = new QVBoxLayout;
    
        // 左边布局只放一个 textBrowser1 代表棋盘
        QTextBrowser *textBrowser1 = new QTextBrowser();
        leftLayout->addWidget(textBrowser1);
    
        // 创建一个水平布局用来放置 button
        QHBoxLayout *buttonLayout = new QHBoxLayout;
        QPushButton *button1 = new QPushButton("悔棋");
        QPushButton *button2 = new QPushButton("认输");
        buttonLayout->addWidget(button1);
        buttonLayout->addWidget(button2);
    
        // 右边布局由三个部分组成,两个组件和一个放置button 的水平布局
        QTextBrowser *textBrowser2 = new QTextBrowser();
        QTextBrowser *textBrowser3 = new QTextBrowser();
        rightLayout->addWidget(textBrowser2);
        rightLayout->addWidget(textBrowser3);
        rightLayout->addLayout(buttonLayout);
        // 设置布局中的各个部分的比例
        rightLayout->setStretchFactor(textBrowser2, 2);
        rightLayout->setStretchFactor(textBrowser3, 5);
    
        mainLayout->addLayout(leftLayout);
        mainLayout->addLayout(rightLayout);
        mainLayout->setStretchFactor(leftLayout, 5);
        mainLayout->setStretchFactor(rightLayout, 1);
    }
    
    
    效果图

    相关文章

      网友评论

          本文标题:Qt 界面布局

          本文链接:https://www.haomeiwen.com/subject/zbufxhtx.html