Qt编程:QListWidget与QStackedWidget实战技巧
需积分: 9 105 浏览量
更新于2024-09-17
1
收藏 108KB PDF 举报
本文主要总结了Qt开发中常用的5种控件的使用方法,包括QListWidget和QStackedWidget,旨在分享实践经验,帮助开发者更好地理解和应用这些控件。
在Qt编程中,QListWidget是一种常用的列表控件,用于展示一系列可选择的项目。创建一个新的QListWidget实例可以通过以下代码实现:
```cpp
QListWidget* listwidget = new QListWidget;
```
为了设置listwidget中的item,你可以指定其图标和文本,如下所示:
```cpp
QIcon icon; // 初始化图标
QString name; // 初始化文本
QListWidgetItem* itm = new QListWidgetItem(QIcon(icon), name);
```
将item添加到listwidget有两种方式,一是添加到最后:
```cpp
listwidget->addItem(itm);
```
二是插入到特定位置(例如第一个位置):
```cpp
listwidget->insertItem(0, itm);
```
选中特定行可使用`setCurrentRow()`函数:
```cpp
listwidget->setCurrentRow(int row); // row是你要选中的行号
```
获取当前选中的item索引可以这样操作:
```cpp
QModelIndex curSelItm = listwidget->currentIndex();
```
当listwidget中的item被点击时,可以连接信号和槽来处理:
```cpp
connect(listwidget, SIGNAL(clicked(QModelIndex)), this, SLOT(selectItem(QModelIndex)));
```
调整item的高度可以设定大小提示:
```cpp
QSize size;
size.setHeight(45);
ui->listWidget->item(5)->setSizeHint(size);
```
给当前选中的item设置背景图片:
```cpp
QImage _image("strPath + menu_bg.png"); // 加载图片
listWidget->currentItem()->setBackground(QBrush(_image));
```
另一种常见的控件是QStackedWidget,它用于在多个页面之间进行切换。创建QStackedWidget并添加页面:
```cpp
QStackedWidget* stackedWidget = new QStackedWidget; // 新建一个QStackedWidget实例
stackedWidget->addWidget(QWidget *page); // 添加一个QWidget作为页面
stackedWidget->insertWidget(int index, QWidget *page); // 在特定位置插入一个页面
```
显示特定索引的页面:
```cpp
stackedWidget->setCurrentIndex(int index); // index是你想要显示的页面的索引
```
当QListWidget的当前项发生变化时,可以连接信号和槽来更新QStackedWidget的页面:
```cpp
connect(listWidget, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
this, SLOT(changePage(QListWidgetItem*, QListWidgetItem*)));
```
通过以上的方法,开发者能够熟练地使用QListWidget和QStackedWidget,提高Qt应用的交互性和用户体验。
2022-06-08 上传
214 浏览量
2018-09-21 上传
2015-11-26 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
crazybigtomato
- 粉丝: 5
- 资源: 2
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍