(十一)布局管理器综合实例
2017-02-06 21:37
288 查看
开发一个向导用户界面:
1、在同一界面上展现不同的向导页
2、通过上/下一步按钮切换页面
3、不同页面上的元素组件和组件排布都不相同
4、页面中的组件通过布局管理器进行排布
界面设计:
通过嵌套管理布局
通栈式布局管理器管理不同向导页
通过子组件生产不同页
代码:
声明:
此文根据 狄泰学院唐老师的《QT实验分析教程》创作
1、在同一界面上展现不同的向导页
2、通过上/下一步按钮切换页面
3、不同页面上的元素组件和组件排布都不相同
4、页面中的组件通过布局管理器进行排布
界面设计:
通过嵌套管理布局
通栈式布局管理器管理不同向导页
通过子组件生产不同页
代码:
#include "Widget.h" #include <QVBoxLayout> #include <QHBoxLayout> #include <QGridLayout> #include <QFormLayout> #include <QDebug> Widget::Widget(QWidget *parent) :QWidget(parent) { initControl(); } void Widget::initControl() { QVBoxLayout* vLayout = new QVBoxLayout(); //构建了一个垂直布局管理器 QHBoxLayout* hLayout = new QHBoxLayout(); //构建了一个水平布局管理器 preBtn.setText("Pre Page"); preBtn.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); //指定size策略为水平拉伸,垂直固定位 preBtn.setMinimumSize(160, 30); //设置最小尺寸 nextBtn.setText("Next Page"); nextBtn.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); nextBtn.setMinimumSize(160, 30); connect(&preBtn, SIGNAL(clicked()), this, SLOT(onPreBtnClicked())); connect(&nextBtn, SIGNAL(clicked()), this,SLOT(onNextBtnClicked())); hLayout->addWidget(&preBtn); //将组件加入水平布局管理器 hLayout->addWidget(&nextBtn); sLayout.addWidget(get1stPage()); //将组件加入栈布局管理器 sLayout.addWidget(get2ndPage()); sLayout.addWidget(get3rdPage()); vLayout->addLayout(&sLayout); //将栈布局管理器加入到垂直布局管理器当中 vLayout->addLayout(hLayout); //将水平布局管理器加入到垂直布局管理器当中 setLayout(vLayout); //使用垂直布局管理器 } QWidget* Widget::get1stPage() { QWidget* ret = new QWidget(); //创建一个QWidget组件作为栈布局管理器的容器,栈布局管理器中的组件将会填满QWidget QGridLayout* layout = new QGridLayout(); //创建一个表格布局管理器对象 fLbl1.setText("This"); fLbl2.setText("is"); fLbl3.setText("1st"); fLbl4.setText("page"); layout->addWidget(&fLbl1, 0, 0); //将组件加入表格布局管理器 layout->addWidget(&fLbl2, 0, 1); //设置布局管理器后,组件的父组件将发生变化,这里fLbl1的父组件会变成QWidget对象 layout->addWidget(&fLbl3, 1, 0); layout->addWidget(&fLbl4, 1, 1); ret->setLayout(layout); //在将要返回的widget组件上使用表格布局管理器 return ret; } QWidget* Widget::get2ndPage() { QWidget* ret = new QWidget(); QFormLayout* layout = new QFormLayout(); sLineEdit.setText("This is 2rd page"); layout->addRow("Hint:", &sLineEdit); ret->setLayout(layout); return ret; } QWidget* Widget::get3rdPage() { QWidget* ret = new QWidget(); QVBoxLayout* layout = new QVBoxLayout(); tPushBtn1.setText("This is"); tPushBtn2.setText("3rd page"); layout->addWidget(&tPushBtn1); layout->addWidget(&tPushBtn2); ret->setLayout(layout); return ret; } void Widget::onPreBtnClicked() { int index = ((sLayout.currentIndex() - 1) + 3) % 3; sLayout.setCurrentIndex(index); } void Widget::onNextBtnClicked() { int index = (sLayout.currentIndex() + 1) % 3; sLayout.setCurrentIndex(index); } Widget::~Widget() { }
声明:
此文根据 狄泰学院唐老师的《QT实验分析教程》创作
相关文章推荐
- 第二十六课、布局管理器综合实例------------------狄泰软件学院
- 16table布局和综合实例
- TableLayout 布局管理器简单实例
- QT4:布局管理器的综合使用
- Java卡片布局管理器解释及实例
- *PyQt4 精彩实例分析* 实例17 综合布局实例
- java Swing编程之布局管理器简单实例DEMO
- swing学习笔记十一(卡片布局管理器CardLayout )
- swing学习笔记十一(卡片布局管理器CardLayout )
- QT4:布局管理器的综合使用
- Java程序中利用swing.GroupLayout进行布局有关管理器的实例讲解
- WPF 布局之综合实例
- [QT]QT教程之实例分析[六]综合布局实例
- Swing之卡片布局管理器实例
- [QT]QT教程之实例分析[六]综合布局实例
- ASP.NET MVC3 实例(五) Razor 布局简介
- Qt布局管理基本实例
- 《疯狂安卓讲义》P77 -- 实例: 梅花布局效果
- android 流布局实例
- html5--2.10综合实例2-移动端页面练习