QStackedWidget
QStackedWidget 提供一些层叠的 Widget,同一时间只有一个Widget处于可视状态,就像书本一样。
什么时候使用 QStackedWidget
强烈建议 如果需要点击一个按钮显示一些界面再点击按钮隐藏当前界面而去显示另外的界面时。都使用 QStackedWidget
。而不是手动去设置点击按钮后隐藏一些控件,然后显示一些控件。我曾遇到界面一些复杂的情况下,使用代码设置控件显隐。当显示较多控件时会导致主页面撑大,再切换成显示较少控件时页面无法还原的情况。
使用要点
对于 ui 界面的 QStackedWidget
开局自带两个 QWidget
。所以不需要进行代码设置。常用的接口有
void setCurrentIndex(int index);
设置当前的 index,QStackedWidget 展示 index 的 Widget。
对于代码创建的 QStackedWidget
开局没有自带任何 Widget。需要通过
int addWidget(QWidget *widget)
int insertWidget(int index, QWidget *widget)
当然 删除 获取对应 index 的 Widget的接口也是有的,这里就不一一举例了
代码
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
ui->radioButton->setChecked(true);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_radioButton_clicked()
{
ui->stackedWidget->setCurrentIndex(0);
}
void Widget::on_radioButton_2_clicked()
{
ui->stackedWidget->setCurrentIndex(1);
}