布局管理器 设计模式实现布局 详情见工具栏 垂直布局,水平布局,打破布局。 代码实现布局 main.cpp 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071#include "testlayout.h"#include <QApplication>#include<QLabel>#include<QLineEdit>#include<QFormLayout>#include<QRadioButton>#include<QVBoxLayout>#include<QPushButton>#include<QSpacerItem>int main(int argc, char *argv[]){ QApplication a(argc, argv); TestLayout w; //添加部件并且布局 //添加标签 QLabel* nameLabel = new QLabel("姓名:(&N)"); QLabel* ageLabel = new QLabel("年龄:(&A)"); QLabel* emailLabel = new QLabel("邮箱:(&E)"); QLabel* doorLabel = new QLabel("门牌号码:"); // 添加文本框 QLineEdit* nameLineEdit = new QLineEdit; QLineEdit* ageLineEdit = new QLineEdit; QLineEdit* emailLineEdit = new QLineEdit; QLineEdit* doorNumLineEdit = new QLineEdit; //设置伙伴关系——绑定快捷键 nameLabel->setBuddy(nameLineEdit); ageLabel->setBuddy(ageLineEdit); emailLabel->setBuddy(emailLineEdit); //添加布局 //QFormLayout常用语表单布局 QFormLayout* headerLayout = new QFormLayout; //将部件添加到布局管理器中 headerLayout->addRow(nameLabel,nameLineEdit); headerLayout->addRow(ageLabel,ageLineEdit); headerLayout->addRow(emailLabel,emailLineEdit); headerLayout->addRow(doorLabel,doorNumLineEdit); //性别标签 QLabel* sexLabel = new QLabel("性别:"); //添加单选按钮 QRadioButton* mBtn = new QRadioButton; QRadioButton* wBtn = new QRadioButton; mBtn->setText("男"); wBtn->setText("女"); //添加水平布局管理器 QHBoxLayout* sexLayout = new QHBoxLayout; sexLayout->addWidget(sexLabel); sexLayout->addWidget(mBtn); sexLayout->addWidget(wBtn); //添加垂直布局管理器 //将两个布局管理器添加到一起 QVBoxLayout* mainLayout = new QVBoxLayout(&w);//参数-指定父窗体 mainLayout->addLayout(headerLayout);//添加布局 mainLayout->addLayout(sexLayout); //在性别选项下添加空白 QSpacerItem* spacer = new QSpacerItem(30,30); mainLayout->addItem(spacer);//添加空隙对象 //添加一个按钮 QPushButton* okBtn = new QPushButton("确定"); //将按钮添加到布局管理器中 mainLayout->addWidget(okBtn);//添加部件 mainLayout->setMargin(10);//与窗口的间隙 mainLayout->setSpacing(20);//设置控件间的间隙 //设置窗口布局管理器 w.setLayout(mainLayout); w.show(); return a.exec();}