切换界面(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)));
结束语
这个布局类,很简单,因为太简单而被我忽略了,进而忘记了,故此,说明补充,引以为戒!
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; } }
结束语
这个布局类,很简单,因为太简单而被我忽略了,进而忘记了,故此,说明补充,引以为戒!
相关文章推荐
- Qt的“QStackedLayout”实现多界面切换
- 界面布局--自定义Layout, 边框shape文件, 按钮selector文件及用法
- 用TabLayout实现商品排序界面,并实现线性/网格式布局切换
- QT Layout中增删widget与切换界面
- Android 动画效果(三):overridePendingTransition(界面切换动画)与LayoutTransition(布局动画)
- 三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)
- Qt4.5多国语界面动态切换的实现
- Qt布局中Vertical Line的用法
- Qt_QDockwidget_界面布局【类似vs界面】
- QT:界面切换之飞入飞出
- iOS 8 Auto Layout界面自动布局系列5-自身内容尺寸约束、修改约束、布局动画
- Qt 在布局好的界面上显示一个控件
- QT QGridLayout QHBoxLayout QVBoxLayout 布局管理器运用
- 详解Android ConstraintLayout 约束布局的用法
- Qt实用技巧:界面切换使用Dialog全屏切换
- LayoutInflater.from(this)的用法--inflate就相当于将一个xml中定义的布局找出来.
- QT:界面切换之飞入飞出
- Qt入门-layout布局
- qt界面主窗口布局