day3作业
- 电脑硬件
- 2025-09-12 06:06:01

实现QListWidget 和 QStackWidget的联动 listWidget 双击第几项,stackWidget 就切换到第几页
#ifndef WIDGET_H #define WIDGET_H #include <QMainWindow> #include <QStackedWidget> #include <QListWidget> namespace Ui { class Widget; // 声明Ui类 } class Widget : public QMainWindow { Q_OBJECT public: explicit Widget(QWidget *parent = nullptr); ~Widget(); private: Ui::Widget *ui; QStackedWidget *stackedWidget; QListWidget *listWidget; }; #endif // WIDGET_H #include "widget.h" #include <QVBoxLayout> #include <QListWidget> #include <QListWidgetItem> #include <QTextEdit> #include <QStackedWidget> Widget::Widget(QWidget *parent) : QMainWindow(parent), ui(new Ui::Widget), stackedWidget(new QStackedWidget(this)), listWidget(new QListWidget(this)) { ui->setupUi(this); setCentralWidget(stackedWidget); QWidget *page1 = new QWidget; QWidget *page2 = new QWidget; QTextEdit *textEdit1 = new QTextEdit("页面1的内容", page1); QTextEdit *textEdit2 = new QTextEdit("页面2的内容", page2); QVBoxLayout *layout1 = new QVBoxLayout(page1); layout1->addWidget(textEdit1); page1->setLayout(layout1); QVBoxLayout *layout2 = new QVBoxLayout(page2); layout2->addWidget(textEdit2); page2->setLayout(layout2); stackedWidget->addWidget(page1); stackedWidget->addWidget(page2); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(listWidget); mainLayout->addWidget(stackedWidget); setLayout(mainLayout); new QListWidgetItem("页面1", listWidget); new QListWidgetItem("页面2", listWidget); connect(listWidget, &QListWidget::itemDoubleClicked, this, [this](QListWidgetItem *item) { if (item) { int row = listWidget->row(item); // 获取单击项的行号 stackedWidget->setCurrentWidget(row); } }); } Widget::~Widget() { // 清理代码 } #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication app(argc, argv); Widget widget; widget.show(); return app.exec(); }