Qt之QStackedWidget和QStackedLayout
2016-12-07 17:06
351 查看
一、QStackedLayout类
QStackedLayout类可以对一组子窗口部件进行摆放,或者对它们进行“分页”,而且一次只显示其中一个,而把其他的子窗口部件或者分页都隐藏起来,QStackedLayout本身并不可见。分页是从0开始编号的。要使某个特定的子窗口部件可见,可以用一个页号来调用setCurrentIndex()。使用indexOf()可以获取子窗口部件的页号。这里给出部分实例代码:
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
stacklayout = new QStackedLayout;
stacklayout->addWidget(oneWidget); //index=0
stacklayout->addWidget(twoWidget); //index=1
stacklayout->addWidget(fiveWidget); //index=2
stacklayout->addWidget(threeWidget); //index=3
stacklayout->addWidget(fourWidget); //index=4
stacklayout->addWidget(powerWidget); //index=5
setLayout(stacklayout); //必须要有
connect(oneWidget->start,SIGNAL(clicked()),this,SLOT(change1()));
connect(oneWidget->setup,SIGNAL(clicked()),this,SLOT(change2()));
connect(oneWidget->playback,SIGNAL(clicked()),this,SLOT(change3()));
connect(oneWidget->devinfo,SIGNAL(clicked()),this,SLOT(change4()));
connect(twoWidget->videoshow->back,SIGNAL(clicked()),this,SLOT(change0()));
connect(fiveWidget->backbtn,SIGNAL(clicked()),this,SLOT(change0()));
connect(threeWidget->backButton,SIGNAL(clicked()),this,SLOT(change0()));
connect(fourWidget->backbutten,SIGNAL(clicked()),this,SLOT(change0()));
}
void Widget::change0()
{
stacklayout->setCurrentIndex(0);
}
void Widget::change1()
{
stacklayout->setCurrentIndex(1);
}
void Widget::change2()
{
stacklayout->setCurrentIndex(2);
}
void Widget::change3()
{
stacklayout->setCurrentIndex(3);
}
void Widget::change4()
{
stacklayout->setCurrentIndex(4);
}
void Widget::change5()
{
stacklayout->setCurrentIndex(5);
}
二、QStackedWidget类
QStackedWidget类提供了一个带内置QStackedLayout的QWidget。创建stackedwidget会默认创建一个子widget(已布局)。
QStackedLayout类可以对一组子窗口部件进行摆放,或者对它们进行“分页”,而且一次只显示其中一个,而把其他的子窗口部件或者分页都隐藏起来,QStackedLayout本身并不可见。分页是从0开始编号的。要使某个特定的子窗口部件可见,可以用一个页号来调用setCurrentIndex()。使用indexOf()可以获取子窗口部件的页号。这里给出部分实例代码:
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
stacklayout = new QStackedLayout;
stacklayout->addWidget(oneWidget); //index=0
stacklayout->addWidget(twoWidget); //index=1
stacklayout->addWidget(fiveWidget); //index=2
stacklayout->addWidget(threeWidget); //index=3
stacklayout->addWidget(fourWidget); //index=4
stacklayout->addWidget(powerWidget); //index=5
setLayout(stacklayout); //必须要有
connect(oneWidget->start,SIGNAL(clicked()),this,SLOT(change1()));
connect(oneWidget->setup,SIGNAL(clicked()),this,SLOT(change2()));
connect(oneWidget->playback,SIGNAL(clicked()),this,SLOT(change3()));
connect(oneWidget->devinfo,SIGNAL(clicked()),this,SLOT(change4()));
connect(twoWidget->videoshow->back,SIGNAL(clicked()),this,SLOT(change0()));
connect(fiveWidget->backbtn,SIGNAL(clicked()),this,SLOT(change0()));
connect(threeWidget->backButton,SIGNAL(clicked()),this,SLOT(change0()));
connect(fourWidget->backbutten,SIGNAL(clicked()),this,SLOT(change0()));
}
void Widget::change0()
{
stacklayout->setCurrentIndex(0);
}
void Widget::change1()
{
stacklayout->setCurrentIndex(1);
}
void Widget::change2()
{
stacklayout->setCurrentIndex(2);
}
void Widget::change3()
{
stacklayout->setCurrentIndex(3);
}
void Widget::change4()
{
stacklayout->setCurrentIndex(4);
}
void Widget::change5()
{
stacklayout->setCurrentIndex(5);
}
二、QStackedWidget类
QStackedWidget类提供了一个带内置QStackedLayout的QWidget。创建stackedwidget会默认创建一个子widget(已布局)。
相关文章推荐
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- Qt 5.6更新至RC版,最终版本近在咫尺
- Qt定时器和随机数详解
- Qt实现图片移动实例(图文教程)
- Qt for Android开发实例教程
- QModelIndex/Role/Model介紹<二>
- Qt Model/View/Delegate浅谈 - QAbstractListModel
- Qt Model/View/Delegate浅谈 - roleNames()
- QT历程(一):与CryptoJs对应的AES加密
- 基于PyQt5的快速开发框架QFramer
- OSX下安装PyQt
- ok6410开发板移植DirectFB手记
- 【笔记】给Qt内嵌一个Chrome吧
- 【算法】最短路径之A*搜索
- qt入门必备
- 在 Qt4 中使用 C++11
- Hello Word ~ v0.2.2 背单词软件发布 -- By WHYPRO
- ubuntu下opencv和qt的安装配置
- linux下opengl的安装(with qt)