day3作业
实现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();
}