• 1.Basic Layouts


      使用过mfc编程,就知道控件需要自己拖放。当一个界面有很多小控件时,摆放这些控件特别麻烦。

      但是qt编程中有布局(Layout),让系统来摆放控件。使整个控件有一致的外观和感觉,特别方便。

    1.水平方向的布局 QHBoxLayout

          

    思考:

    简单的把控件添加到布局里面就ok了。

        horizontalGroupbox = new QGroupBox("Horizontal Layout");
        hlayout = new QHBoxLayout;
    
        QPushButton *button1 = new QPushButton("Button1");
        QPushButton *button2 = new QPushButton("Button2");
        QPushButton *button3 = new QPushButton("Button3");
        QPushButton *button4 = new QPushButton("Button4");
    
        hlayout->addWidget(button1);
        hlayout->addWidget(button2);
        hlayout->addWidget(button3);
        hlayout->addWidget(button4);
    
        horizontalGroupbox->setLayout(hlayout);

    2.栅格布局。QGridLayout

          

    思考:

    1.grid layout是按行列来进行布局的。

    2.这个布局有4行,3列。

    3.第一行只有一个QTextEdit,但是它横跨4行。

    4.第二列比第一列长,第三列比第二列长。原因是调用了 setRowStretch()函数。

        gridGroupbox = new QGroupBox("Grid Layout");
        gridLayout = new QGridLayout;
    
        label1 = new QLabel("Line1");
        label2 = new QLabel("Line2");
        label3 = new QLabel("Line3");
    
        lineEdit1 = new QLineEdit;
        lineEdit2 = new QLineEdit;
        lineEdit3 = new QLineEdit;
        textEdit = new QTextEdit;
    
        textEdit->setPlainText(tr("This widget takes up two thirds of grid layout"));
    
        gridLayout->addWidget(textEdit, 0, 2, 4, 1);
        gridLayout->addWidget(label1, 1, 0);
        gridLayout->addWidget(label2, 2, 0);
        gridLayout->addWidget(label3, 3, 0);
        gridLayout->addWidget(lineEdit1, 1, 1);
        gridLayout->addWidget(lineEdit2, 2, 1);
        gridLayout->addWidget(lineEdit3, 3, 1);
    
        gridLayout->setRowStretch(1, 10);
        gridLayout->setRowStretch(2, 20);
    
        gridGroupbox->setLayout(gridLayout);

    3.表单布局 QFormLayout

        

    思考:

    1.表单布局是一种只有2列的布局。

    2.表单布局可以用gridlayout实现,但是表单布局简单一些。

    3.addRow方法,直接添加label 和 widget。

        formGroupBox = new QGroupBox("Form Layout");
        formLayout = new QFormLayout;
    
        formLineEdit = new QLineEdit;
        comboBox = new QComboBox;
        spinBOx = new QSpinBox;
    
        formLayout->addRow(tr("Line1"),  formLineEdit);
        formLayout->addRow(tr("Line2,Long Text:"),  comboBox);
        formLayout->addRow(tr("Line3"),  spinBOx);
    
        formGroupBox->setLayout(formLayout);

    4.竖直方向布局。

    把刚才布局都添加到竖直布局,就是我们整个程序

        mainLayout = new QVBoxLayout;
        mainLayout->addWidget(horizontalGroupbox);
        mainLayout->addWidget(gridGroupbox);
        mainLayout->addWidget(formGroupBox);
        mainLayout->addWidget(bigTextEdit);
        mainLayout->addWidget(buttonBox, 0, Qt::AlignRight);

      

  • 相关阅读:
    Leetcode 1349 参加考试的最大学生数
    卡特兰数小结
    Leetcode 76 最小覆盖字串 (滑动窗口)
    Leetcode 5331.跳跃游戏
    实现对properties文件的有序读写
    Android日志框架darks-logs使用教程
    Android入门-Service-start,end,bind,unbind之间的区别
    Android实用代码七段(一)
    [转帖]自动调整TextView字体大小以适应文字长度
    apk,task,android:process与android:sharedUserId的区别
  • 原文地址:https://www.cnblogs.com/billxyd/p/6919454.html
Copyright © 2020-2023  润新知