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);

 

 

 

  

posted @ 2017-05-30 01:09  billxyd  阅读(206)  评论(0编辑  收藏  举报