有关QStackedWidget问题
#include "widget.h"
#include "ui_widget.h"
#include<QWidget>
#include<QVBoxLayout>
#include<QComboBox>
#include<QStackedWidget>
#include<QLabel>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{ QWidget *firstPageWidget = new QWidget;
QWidget *secondPageWidget = new QWidget;
QWidget *thirdPageWidget = new QWidget;
QLabel *label=new QLabel(firstPageWidget);
label->setText("abc");
QStackedWidget *stackedWidget = new QStackedWidget;
stackedWidget->addWidget(firstPageWidget);
stackedWidget->addWidget(secondPageWidget);
stackedWidget->addWidget(thirdPageWidget);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(stackedWidget);
this->setLayout(layout);
QComboBox *pageComboBox = new QComboBox(this);
pageComboBox->addItem(tr("Page 1"));
pageComboBox->addItem(tr("Page 2"));
pageComboBox->addItem(tr("Page 3"));
connect(pageComboBox, SIGNAL(activated(int)),
stackedWidget, SLOT(setCurrentIndex(int)));
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
我是刚刚学Qt,所以请高手指点一下,我想做个页面切换,然后就写出上面的代码,在第一个页面搞了个Label,但是发觉运行后那个Label没有显示出来,是不是QStackedWidget没有出现呢?
[最优解释]
具体有点忘记了。
如果不是currentWidget()->show()的话
你需要获得当前内容的那个widget
QWidget *contentWidget1 = new ....;
QWidget *contentWidget2 = new ....;
QWidget *contentWidget3 = new ....;
QWidget *contentWidget4 = new ....;
stackWidget->addWidget(contentWidget1);
stackWidget->addWidget(contentWidget2);
stackWidget->addWidget(contentWidget3);
stackWidget->addWidget(contentWidget4);
contentWidget1 到4就是需要show()一下哈。
[其他解释]
setCurrentWidget()确保是要显示当前的widget.
还是翻页以后 要显示之前的需要show()一下。
[其他解释]
请问是要改成firstPageWidget.show()吗
[其他解释]
不是哈。
currentWidge()->show();