QStackedWidget
目录
要实现一个窗口位置,触发式更换Widget,可以采用堆栈窗体QStackedWidget。
起初,刚接触QT编程时,想到的方法是setParent() 这个函数,通过设置父窗体来实现同一位置显示不同界面。后来,发现QStackedWidget这个东东,问题得到了完美解决。
代码块
列出部分代码,如下:
void ClientWidget::layoutClientWgt()
{
m_pStackWgt = new QStackedWidget;
m_pWgt0 = new QWidget;
m_pWgt1 = new QWidget;
m_pWgt2 = new QWidget;
m_pWgt3 = new QWidget;
m_pWgt4 = new QWidget;
m_pWgt5 = new QWidget;
m_pStackWgt->addWidget(m_pWgt0);
m_pStackWgt->addWidget(m_pWgt1);
m_pStackWgt->addWidget(m_pWgt2);
m_pStackWgt->addWidget(m_pWgt3);
m_pStackWgt->addWidget(m_pWgt4);
m_pStackWgt->addWidget(m_pWgt5);
//将StackWidget放到ClientWidget中
QGridLayout *gridlayout = new QGridLayout;
gridlayout->addWidget(m_pStackWgt);
gridlayout->setMargin(0);
gridlayout->setSpacing(0);
gridlayout->setContentsMargins(0,0,0,0);
this->setLayout(gridlayout);
m_pStackWgt->setCurrentIndex(0);
}
void ClientWidget::slotWgt1Show()
{
m_pStackWgt->setCurrentIndex(1);
}
通过addWidget将QWidget或其子类添加到堆栈窗体对象中去,它们按照添加顺序排列,再通过响应槽函数,调用setCurrentIndex(int),来设置将某个界面显示在顶层。
典型应用场景
- 通过按钮触发,连接按钮的click()信号与自定义槽函数。
- 结合QListWidget,通过点击item触发。