Qt之QStackedWidget和QStackedLayout

一、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(已布局)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章