当前位置: 代码迷 >> QT开发 >> QStackedWidget有关问题
  详细解决方案

QStackedWidget有关问题

热度:121   发布时间:2016-04-25 05:04:07.0
QStackedWidget问题
传统的QStackedWidget创建的界面是和QListWidget一起使用的,但是我想创建成一组按钮,点击每个按钮能分别的对应QStackedWidget里的子界面,我编写的代码如下:
mainwindow.h
C/C++ code
class MainWindow : public QWidget , public Ui::mainWindow{    Q_OBJECTpublic:    MainWindow(QWidget *parent=0);    ~MainWindow(void);protected:private slots:    void changed_1();    //定义setCurrentIndex接收槽    void changed_2();private:    //创建切换页面    void creatTest_1Page();    void creatTest_2Page();    QStackedLayout *stackedLayout;    QWidget *test_1Page;    QWidget *test_2Page;    QStackedWidget *stackedWidget;};


mainwindow.cpp
C/C++ code
MainWindow::MainWindow(QWidget *parent)    : QWidget(parent){    setupUi(this);    //分页面窗口的实现    void creatTest_1Page();    void creatTest_2Page();    QStackedWidget *stackedWidget=new QStackedWidget;    stackedWidget->addWidget(test_1Page);    stackedWidget->addWidget(test_2Page);    connect(testButton_1,SIGNAL(clicked()),this,SLOT(changed_1()));    connect(testButton_2,SIGNAL(clicked()),this,SLOT(changed_2()));//窗口布局管理    QHBoxLayout *middleButtonLayout=new QHBoxLayout;    middleButtonLayout->addWidget(testButton_1);    middleButtonLayout->addWidget(testButton_2);    QVBoxLayout *mainLayout=new QVBoxLayout;    mainLayout->addWidget(topLabel);    mainLayout->addLayout(middleButtonLayout);    mainLayout->addWidget(line);    mainLayout->addWidget(stackedWidget);    setLayout(mainLayout);}MainWindow::~MainWindow(){    mainWindowP->close();}void MainWindow::closeWindow(){    mainWindowP->close();    close();}void MainWindow::changed_1(){    stackedWidget->setCurrentIndex(0);}void MainWindow::changed_2(){    stackedWidget->setCurrentIndex(1);}void MainWindow::creatTest_1Page(){    test_1Page = new QWidget;}void MainWindow::creatTest_2Page(){    test_2Page = new QWidget;}


程序编译后提示如下错误:
Starting /home/zigbeewidget-build-desktop/zigbeewidget...
The program has unexpectedly finished.
/home/zigbeewidget-build-desktop/zigbeewidget exited with code 0

小弟不知道怎么解决,望高手指点

------解决方案--------------------
MainWindow::MainWindow(QWidget *parent)
: QWidget(parent)
{
setupUi(this);

//分页面窗口的实现
void creatTest_1Page();
void creatTest_2Page();

QStackedWidget *stackedWidget=new QStackedWidget;
  //更改为:stackedWidget=new QStackedWidget;
// 因为此次定义的局部变量,而不是头文件中定义的stackedWidget。
stackedWidget->addWidget(test_1Page);
stackedWidget->addWidget(test_2Page);