Qt5布局管理(三)——QStackedWidget堆栈窗口类
来源:互联网 发布:店铺淘宝客效果 编辑:程序博客网 时间:2024/05/18 21:05
堆栈窗口类QStackedWidget
Code@github:https://github.com/LeeHDsniper/LearnQt/tree/master/CH303
实例效果
如上图,堆栈窗口左半部分是一个QListWidget对象,右半部分是分别是三个标签。通过点击左边不同的项目,可以使得右边的Lable进行切换。
具体的结构是这样:
首先这个大的窗口是一个QDialog的派生,这个大窗口包含三个子对象:
- 一个QHBoxLayout布局对象,它将窗口分为左右两部分
- 一个QListWidget对象,包含三个Item
- 一个QStackedWidget对象,包含了三个标签对象
代码如下:
stackdlg.h,定义了各个元素
#ifndef STACKDLG_H#define STACKDLG_H#include <QDialog>#include <QListWidget>#include <QStackedWidget>#include <QLabel>class StackDlg : public QDialog{ Q_OBJECTpublic: StackDlg(QWidget *parent = 0); ~StackDlg();private: QListWidget *list; QStackedWidget *stack; QLabel *lable1; QLabel *lable2; QLabel *lable3;};#endif // STACKDLG_H
stackdlg.cpp 具体实现
#include "stackdlg.h"#include <QHBoxLayout>StackDlg::StackDlg(QWidget *parent) : QDialog(parent){ setWindowTitle(tr("StackedWidget")); list=new QListWidget(this); //新建一个QListWidget控件对象 list->insertItem(0,tr("Window1"));//在QListWidget中插入三个条目作为选择项 list->insertItem(1,tr("Window2")); list->insertItem(2,tr("Window3")); //创建三个QLable标签控件对象,作为堆栈窗口需要显示的三层窗体 lable1=new QLabel(tr("WindowTest1")); lable2=new QLabel(tr("WindowTest2")); lable3=new QLabel(tr("WindowTest3")); stack=new QStackedWidget(this);//新建一个QStackedWidget堆栈窗体对象 //将三个QLable标签控件依次插入堆栈窗体中 stack->addWidget(lable1); stack->addWidget(lable2); stack->addWidget(lable3); QHBoxLayout *mainlayout=new QHBoxLayout(this); mainlayout->setMargin(5); mainlayout->setSpacing(5); mainlayout->addWidget(list); mainlayout->addWidget(stack,0,Qt::AlignHCenter); mainlayout->setStretchFactor(list,1); mainlayout->setStretchFactor(stack,3); connect(list,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentIndex(int)));}StackDlg::~StackDlg(){}
重要代码
这个里面的重要代码有两个:
1. mainlayout->setStretchFactor(list,1);
mainlayout->setStretchFactor(stack,3);
这个我在前面的文章中已经讲过:
http://blog.csdn.net/leehdsniper/article/details/51005149,这里对list和stack的参数为1和3,区别就在于拉伸时的变化率的大小。
2. connect(list,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentIndex(int)));
这个连接函数将QListWidget的信号currentRowChange(int)和QStackedWidget的槽setCurrentIndex(int)连接在一起,所以才导致了堆栈窗口的切换。
0 0
- Qt5布局管理(三)——QStackedWidget堆栈窗口类
- 布局管理(分割窗口QSplitter类、停靠窗口QDockWidget类、堆栈窗体QStackedWidget类、基本布局(QLayout))
- Qt之布局管理——堆栈窗体QStackedWidget
- 【Qt5开发及实例】5、布局管理之堆栈窗体QStackedWidget类
- Qt布局管理-堆栈窗体QStackedWidget类
- Qt布局管理: 堆栈窗体QStackedWidget类(纯代码实现)
- QT5布局管理——分割窗口QSplitter类
- Qt--堆栈窗口(QStackedWidget)的使用
- 堆栈窗口 QStackedWidget 测试
- 堆栈窗口 QStackedWidget 测试
- 堆栈窗口QStackedWidget
- 堆栈窗体QStackedWidget类以及布局QSplitter
- Qt5布局管理(一)——QSplitter分割窗口类
- Qt5布局管理(二)——QDockWidget停靠窗口类
- Qt学习——堆栈窗体QStackedWidget类
- Qt学习——堆栈窗体QStackedWidget类 .
- Qt学习——堆栈窗体QStackedWidget类
- Qt学习——堆栈窗体QStackedWidget类
- Python序列之字符串
- listDir.php
- TOJ 1782.The jackpot
- java 浅谈反射机制
- .htaccess简介
- Qt5布局管理(三)——QStackedWidget堆栈窗口类
- 11个提问频率最高的PHP面试题
- css选择器总结
- StarUML小技巧汇总
- 码农小汪剑指Offer之37-平衡二叉树判定
- php牛逼的面试题分享
- 安装ipython时python setup.py egg_info错误的解决办法
- Android学习之5.0三姐妹调色板palette的使用
- App Manifest