您的位置:首页 > 编程语言 > Qt开发

切换界面(QStackedLayout 分组布局的用法)--Qt

2018-03-24 16:23 2655 查看
在项目中,时常会碰到将一个界面切换成其他界面,实现这种效果的做法有很多。这里,我将讲一个用布局类QStackedLayout 实现的。

QStackedLayout 分组布局
QStackedLayout 分组布局是将一些窗口部件按照一定的编号存放,且每次只能显示当前编号所对应的窗口部件。

比较常用的函数有:
int addWidget(QWidget* widget)    //添加窗口部件
void setCurrentIndex(int index)       //设置特定窗口部件可见
int indexof(QWidget* widget)         //获得子窗口的编号

实际运用
在实际运用中,界面布局被特定的某个信号触发,从而显示指定的界面。 m_relatedInfoForm=new RelatedInfoForm();
m_relatedMessageForm=new RelatedMessageForm();
m_messageList=new QListWidget();
m_stackedLayout=new QStackedLayout();
m_stackedLayout->addWidget(m_messageList);
m_stackedLayout->addWidget(m_relatedInfoForm);
m_stackedLayout->addWidget(m_relatedMessageForm);

this->setLayout(m_stackedLayout);

connect(m_relatedInfoForm,SIGNAL(display(int,QStringList)),this,SLOT(switchPage(int,QStringList)));
connect(m_relatedMessageForm,SIGNAL(display(int,QStringList)),this,SLOT(switchPage(int,QStringList)));
void MessageForm::switchPage(int n, QStringList strList)
{
m_stackedLayout->setCurrentIndex(n);  //指定编号为n 的界面
switch (n) {
case 0:
loadMessageList();
break;
case 1:
m_relatedInfoForm->setContent(strList);
m_relatedInfoForm->loadTreeList();
break;
case 2:
m_relatedMessageForm->setContent(strList);
m_relatedMessageForm->loadRelatedMessageList();
break;
default:
break;
}
}


结束语
这个布局类,很简单,因为太简单而被我忽略了,进而忘记了,故此,说明补充,引以为戒!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: