Qt之布局管理——(1)基本布局管理
2012-11-15 17:21
459 查看
Qt提供的布局类以及他们之间的继承关系(如下图):
常用到的布局类有:QHBoxLayout、QVBoxLayout、QGridLayout三种,分别是水平排列布局、垂直排列布局、表格排列布局。
常用的方法有addWidget()和addLayout()。addWidget()用于在布局中插入控件,addLayout()用于在布局中插入子布局。
在布局管理中还常用到setMargin()用于设定边距,setSpacing()用于设定控件间距。
setColumnStretch()用于设置列的占空比。
示例:实现如下图的布局
basiclayout.h
basiclayout.cpp
setFrameStyle()是QFrame的方法,参数以或的方式设定控件的风格,参数1(QFrame::Shape)用于设定控件的形状,参数2(QFrame::Shadow)用于设定控件俺的阴影。
形状有:NoFrame、Panel、Box、HLine、VLine、WinPanel 6种;阴影有:Plain、Raised、Sunken三种。
常用到的布局类有:QHBoxLayout、QVBoxLayout、QGridLayout三种,分别是水平排列布局、垂直排列布局、表格排列布局。
常用的方法有addWidget()和addLayout()。addWidget()用于在布局中插入控件,addLayout()用于在布局中插入子布局。
在布局管理中还常用到setMargin()用于设定边距,setSpacing()用于设定控件间距。
setColumnStretch()用于设置列的占空比。
示例:实现如下图的布局
basiclayout.h
#ifndef BASICLAYOUT_H #define BASICLAYOUT_H #include <QtGui> class BasicLayout : public QDialog { Q_OBJECT public: BasicLayout(QWidget *parent = 0, Qt::WFlags flags = 0); ~BasicLayout(); private: QLabel *labUser; QLabel *labName; QLabel *labSex; QLabel *labDepartment; QLabel *labAge; QLabel *labRemark; QLineEdit *edtUser; QLineEdit *edtName; QComboBox *cbbSex; QTextEdit *edtDepartment; QLineEdit *edtAge; QLabel *labHead; QLabel *labIcon; QLabel *labIndividual; QPushButton *btnChange; QTextEdit *edtIndividual; QPushButton *btnOk; QPushButton *btnCancel; }; #endif // BASICLAYOUT_H
basiclayout.cpp
#include "basiclayout.h" BasicLayout::BasicLayout(QWidget *parent, Qt::WFlags flags) : QDialog(parent, flags) { setWindowTitle(tr("User Infomation")); //Left Loyout: labUser = new QLabel(tr("User Name:")); labName = new QLabel(tr("Name;")); labSex = new QLabel(tr("Sex:")); labDepartment = new QLabel(tr("Department:")); labAge = new QLabel(tr("Age:")); labRemark = new QLabel(tr("Remark:")); labRemark->setFrameStyle(QFrame::Panel|QFrame::Sunken); edtUser = new QLineEdit; edtName = new QLineEdit; cbbSex = new QComboBox; cbbSex->insertItem(0,tr("Female")); cbbSex->insertItem(1,tr("Male")); edtDepartment = new QTextEdit; edtAge = new QLineEdit; QGridLayout *leftLayou = new QGridLayout; int col_Lab = 0; int col_Content = 1; leftLayou->addWidget(labUser,0,col_Lab); leftLayou->addWidget(edtUser,0,col_Content); leftLayou->addWidget(labName,1,col_Lab); leftLayou->addWidget(edtName,1,col_Content); leftLayou->addWidget(labSex,2,col_Lab); leftLayou->addWidget(cbbSex,2,col_Content); leftLayou->addWidget(labDepartment,3,col_Lab); leftLayou->addWidget(edtDepartment,3,col_Content); leftLayou->addWidget(labAge,4,col_Lab); leftLayou->addWidget(edtAge,4,col_Content); leftLayou->addWidget(labRemark,5,col_Lab,1,2); leftLayou->setColumnStretch(0,1); //设置两列分别占有空间的比例 leftLayou->setColumnStretch(1,3); //Right Layout: labHead = new QLabel(tr("Head:")); labIcon = new QLabel; QPixmap m_icon("head.gif"); labIcon->resize(m_icon.width(),m_icon.height()); labIcon->setPixmap(m_icon); btnChange = new QPushButton(tr("Change")); QHBoxLayout *headLayout = new QHBoxLayout; headLayout->addWidget(labHead); headLayout->addWidget(labIcon); headLayout->addWidget(btnChange); headLayout->setSpacing(20); //控件间距为20像素 labIndividual = new QLabel(tr("Individual:")); edtIndividual = new QTextEdit; QVBoxLayout *rightLayout = new QVBoxLayout; rightLayout->addLayout(headLayout); rightLayout->addWidget(labIndividual); rightLayout->addWidget(edtIndividual); rightLayout->setMargin(10); //Bottom Layout: btnOk = new QPushButton(tr("Ok")); btnCancel = new QPushButton(tr("Cancel")); QHBoxLayout *bottomLayout = new QHBoxLayout; bottomLayout->addStretch(); //添加一个占位符 bottomLayout->addWidget(btnOk); bottomLayout->addWidget(btnCancel); bottomLayout->setSpacing(10); //Main Layout: QGridLayout *mainLayout = new QGridLayout(this); mainLayout->addLayout(leftLayou,0,0); mainLayout->addLayout(rightLayout,0,1); mainLayout->addLayout(bottomLayout,1,0,1,2); mainLayout->setMargin(15); mainLayout->setSpacing(10); mainLayout->setSizeConstraint(QLayout::SetFixedSize); //设置对话框大小固定,不允许用户改变 } BasicLayout::~BasicLayout() { }
setFrameStyle()是QFrame的方法,参数以或的方式设定控件的风格,参数1(QFrame::Shape)用于设定控件的形状,参数2(QFrame::Shadow)用于设定控件俺的阴影。
形状有:NoFrame、Panel、Box、HLine、VLine、WinPanel 6种;阴影有:Plain、Raised、Sunken三种。
相关文章推荐
- Qt之布局管理——(1)基本布局管理
- QT学习 第二章:布局管理--基本布局管理
- Qt布局管理基本实例
- Qt 实现基本布局管理 ---实验
- Qt之布局管理——(1)基本布局管理
- Qt之布局管理——停靠窗口
- Qt 第6章 布局管理(1) 在窗体中摆放窗口部件 学习笔记
- qt中布局管理的理解
- Qt从布局管理看对象树机制
- Qt5布局管理项目示例
- Qt 第6章 布局管理(4) 滚动区域 学习笔记
- 【Qt5开发及实例】6、布局管理之基本布局
- Qt布局管理: 停靠窗口QDockWidget类(纯代码实现)
- Qt布局管理之边栏及背景颜色和图片的设置
- Qt布局管理: 停靠窗口QDockWidget类(纯代码实现)
- Qt布局之管理
- Qt的布局管理组件
- atitit.软件开发GUI 布局管理优缺点总结java swing wpf web html c++ qt php asp.net winform
- Qt5布局管理内 控件设置最小尺寸
- qt 布局管理按钮控件间有空隙?