Qt 练习题:基于 QListWidget 和 QStackedWidget 的页面切换
Qt 练习题:基于 QListWidget 和 QStackedWidget 的页面切换
题目描述:
请使用 Qt 设计一个窗口,其中包含一个 QListWidget 和一个 QStackedWidget。要求实现以下功能:当用户双击 QListWidget 中的某一项时,QStackedWidget 切换到对应的页面(索引相同)。
当 QStackedWidget 页面发生切换时,在控制台输出当前页面的索引值。
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QListWidget>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{
ui->stackedWidget->setCurrentIndex( ui->listWidget->row(item));
// 获取被双击项的索引
// int index = ui->listWidget->row(item);
// 切换到 QStackedWidget 的第 0 页
//ui->stackedWidget->setCurrentIndex(row);
}
void Widget::on_stackedWidget_currentChanged(int index)
{
qDebug()<<"页面改变"<<index;
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QListWidget>
#include <QStackedWidget>
#include<QDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_listWidget_itemDoubleClicked(QListWidgetItem *item);
void on_stackedWidget_currentChanged(int arg1);
private:
Ui::Widget *ui;
};
#endif // WIDGET_H