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

在项目中,时常会碰到将一个界面切换成其他界面,实现这种效果的做法有很多。这里,我将讲一个用布局类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;
    }
}


结束语

这个布局类,很简单,因为太简单而被我忽略了,进而忘记了,故此,说明补充,引以为戒!


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值