先介绍点相关知识,QLayout专门用于管理里几何图形的基础类,是一个抽象类,被 QBoxLayout,QGridLayout,QFormLayout,and QStackedLayout继承。QBoxLayout类用于Widget水平或竖直方向的布局管理,被QHBoxLayout,和QVBoxLayout继承;QGridLayout将网格中Widget布局进行管理;QFormLayout用于管理输入Widget和与其相关的Label;QStackedLayout提供了一关于Widget的堆栈,每次只显示一个Widget,同QTabWidget、QStackedWidget的功能类似。
QPushButton*pbtn1 = new QPushButton;
QPushButton*pbtn2= new QPushButton;
QPushButton*pbtn3= new QPushButton;
QStackedLayout *stackedLayout = new QStackedLayout;
stackedLayout->addWidget(pbtn1);
stackedLayout->addWidget(pbtn2);
stackedLayout->addWidget(pbtn3);
connect(pbtn1,SIGNAL(clicked()),this,SLOT(switchItem()));
connect(pbtn2,SIGNAL(clicked()),this,SLOT(switchItem()));
connect(pbtn3,SIGNAL(clicked()),this,SLOT(switchItem()));
QVBoxLayout*mainLayout = new QVBoxLayout;
mainLayout->addLayout(stackedLayout);
setLayout(mainLayout);
以上程序实现了QStackedLayout的初始化,还需要添加如下代码:
switchItem()
{
QPushButton*pbtn = dynamic_cast<QPushButton*>(this->sender());
if (pbtn)
{
if (pbtn == pBtn0) {
stackedLayout->setCurrentIndex(0);
}
else if (pbtn == pBtn1) {
stackedLayout->setCurrentIndex(1);
}
else if(pbtn == pBtn[2] )
{
stackedLayout->setCurrentIndex(2); }
}
}
本文介绍了Qt中QStackedLayout的使用方法,通过实例展示了如何创建并切换不同的控件。利用QPushButton作为触发器,实现堆栈式布局的动态显示。
643

被折叠的 条评论
为什么被折叠?



