PyQt/QListWidget/README.md

44 lines
1.6 KiB
Markdown
Raw Normal View History

2018-12-24 00:08:46 +08:00
# QListView
2019-03-12 12:47:56 +08:00
- 目录
- [删除自定义Item](#1、删除自定义Item)
- [自定义可拖拽Item](#2、自定义可拖拽Item)
- [腾讯视频热播列表](#3、腾讯视频热播列表)
2018-12-24 00:08:46 +08:00
## 1、删除自定义Item
2018-12-25 21:55:38 +08:00
[运行 DeleteCustomItem.py](DeleteCustomItem.py)
2018-12-24 00:08:46 +08:00
1. 删除item时先要通过`QListWidget.indexFromItem(item).row()`得到它的行数
2. 通过`takeItem`函数取出该Item并删除掉,`item = self.listWidget.takeItem(row)`
3. 移除item对应的自定义控件`self.listWidget.removeItemWidget(item)`
4. 如果是清空所有Item可以通过循环删除但是删除的时候行号一直是0即可原因和删除list数组一样。
![CustomWidgetItem](ScreenShot/DeleteCustomItem.gif)
## 2、自定义可拖拽Item
2018-12-25 21:55:38 +08:00
[运行 DragDrop.py](DragDrop.py)
2018-12-24 00:08:46 +08:00
2018-12-25 00:48:54 +08:00
![CustomWidgetSortItem](ScreenShot/DragDrop.gif)
## 3、腾讯视频热播列表
2018-12-25 21:55:38 +08:00
[运行 HotPlaylist.py](HotPlaylist.py)
2018-12-25 00:48:54 +08:00
简单思路说明:
- 利用`QListWidget`设置一些特殊的参数达到可以横向自动显示
- `QNetworkAccessManager`异步下载网页和图片
- 滚动到底部触发下一页加载
自定义控件说明:
- 主要是多个layout和控件的结合其中图片`QLabel`为自定义,通过`setPixmap`设置图片,重写`paintEvent`绘制底部渐变矩形框和白色文字
- 字体颜色用qss设置
- 图标利用了`QSvgWidget`显示可以是svg 动画(如圆形加载图)
`QListWidget`的参数设置
1. `setFlow(QListWidget.LeftToRight)`
2. `setWrapping(True)`
3. `setResizeMode(QListWidget.Adjust)`
![HotPlaylist](ScreenShot/HotPlaylist.gif)