初始化的内容写到析构函数中。。。。。。。

大概是, 应该在构造函数中初始化的堆栈窗体代码写到了 析构函数 。。。。

不是因为没掌握构造/析构,而是。。。。

检查了四十多分钟没检查出来。。

被自己蠢哭。

cpp 复制代码
#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
}

Widget::~Widget()
{
    // 初始化三个窗体
    QWidget *firstPageWidget = new QWidget;
    QWidget *secondPageWidget = new QWidget;
    QWidget *thirdPageWidget = new QWidget;

    // 在三个窗体分别设置三个按钮
    QPushButton *btn1 = new QPushButton("Page 1", firstPageWidget);
    QPushButton *btn2 = new QPushButton("Page 2", secondPageWidget);
    QPushButton *btn3 = new QPushButton("Page 3", thirdPageWidget);

    // 实例化堆栈窗体对象,把窗体添加到堆栈窗体
    QStackedWidget *stackedWidget = new QStackedWidget;
    stackedWidget->addWidget(firstPageWidget);
    stackedWidget->addWidget(secondPageWidget);
    stackedWidget->addWidget(thirdPageWidget);


//    QListWidget *listWidget = new QListWidget;
//    QListWidgetItem *firstItem = new QListWidgetItem(tr("First"), listWidget);
//    QListWidgetItem *secondItem = new QListWidgetItem(tr("Second"), listWidget);
//    QListWidgetItem *thirdItem = new QListWidgetItem(tr("Third"), listWidget);

//    listWidget->insertItem(0, firstItem);
//    listWidget->insertItem(1, secondItem);
//    listWidget->insertItem(2, thirdItem);					// 两种方法都可以,方法一

    
    QListWidget *listWidget = new QListWidget;				// 方法二
    listWidget->addItem(tr("First"));
    listWidget->addItem(tr("Second"));						
    listWidget->addItem(tr("Third"));


    QHBoxLayout *layout = new QHBoxLayout;
    layout->addWidget(listWidget, 1);
    layout->addWidget(stackedWidget, 3);
    this->setLayout(layout);

    connect(listWidget, SIGNAL(currentRowChanged(int)), stackedWidget, SLOT(setCurrentIndex(int)));
    // 堆栈窗体的槽是确定的 ------ setCurrentIndex(int),也就意味着对应信号的参数也必须和槽匹配
    this->resize(960, 600);
}