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

 

 

 

  

转载于:https://www.cnblogs.com/billxyd/p/6919454.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值