在 Qt 框架中如何使用 QListWidget和QStackedWidget?
时间: 2024-09-11 15:03:23 浏览: 62
QstackedWidget添加滚动条根据QlistWidget所选生成不同内容
在Qt框架中,`QListWidget`通常用于创建列表视图,让用户可以选择项目,并且每个选择可以关联到不同的内容或行为。而`QStackedWidget`则是一个垂直布局容器,允许你在不同场景之间平滑切换显示的内容,类似于窗口的堆叠模式。
下面是使用这两个组件的基本步骤:
1. **设置QListWidget**:
- 首先,你需要在UI设计文件中包含`QListWidget`控件,并通过`Q_OBJECT`宏标记它作为QObject派生类。
- 在构建器文件 `.ui` 中添加所需的列表项,可以通过`addItem()`方法动态添加或设置初始内容。
- 可以连接信号(如`currentItemChanged()`)到槽函数(比如处理选中的列表项),以便在用户选择时执行特定操作。
```cpp
// 在类里头
QListView *listView = new QListView(parent);
listView->setModel(model); // 设置模型数据
// 当列表项改变时
connect(listView, &QListView::currentItemChanged, this, [this](const QModelIndex ¤t, const QModelIndex &previous) {
if (current.isValid()) {
displaySelected(current.data()); // 用当前选中的数据做些操作
}
});
```
2. **使用QStackedWidget**:
- 创建一个`QStackedWidget`实例,并在UI上添加。
- 添加多个`QWidget`作为`QStackedWidget`的页面,每一页代表一种不同的内容展示区。
- 使用`addWidget()`方法添加页面,使用`setCurrentIndex()`来显示指定页面。
```cpp
// 页面1
QWidget *page1 = new QWidget(parent);
// ... 创建并配置页面1的布局
// 页面2
QWidget *page2 = new QWidget(parent);
// ... 创建并配置页面2的布局
// 在需要切换时
stackedWidget->addWidget(page1);
stackedWidget->setCurrentWidget(page1); // 显示第一页
stackedWidget->setCurrentWidget(page2); // 切换到第二页
```
阅读全文