PyQt/QListWidget/README.md
2019-07-03 15:00:16 +08:00

2.2 KiB
Raw Blame History

QListView

1、删除自定义Item

运行 DeleteCustomItem.py

  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

2、自定义可拖拽Item

运行 DragDrop.py

CustomWidgetSortItem

3、腾讯视频热播列表

运行 HotPlaylist.py

简单思路说明:

  • 利用QListWidget设置一些特殊的参数达到可以横向自动显示
  • QNetworkAccessManager异步下载网页和图片
  • 滚动到底部触发下一页加载

自定义控件说明:

  • 主要是多个layout和控件的结合其中图片QLabel为自定义,通过setPixmap设置图片,重写paintEvent绘制底部渐变矩形框和白色文字
  • 字体颜色用qss设置
  • 图标利用了QSvgWidget显示可以是svg 动画(如圆形加载图)

QListWidget的参数设置

  1. setFlow(QListWidget.LeftToRight)
  2. setWrapping(True)
  3. setResizeMode(QListWidget.Adjust)

HotPlaylist

4、仿折叠控件效果

运行 FoldWidget.py

  1. 利用QListWidget设置Item的自定义控件
  2. QListWidget通过间隔设置QPushButtonCustomWidget来添加
  3. 绑定按钮的选中状态通过setHidden设置Item的隐藏和显示
  4. 自定义控件中尺寸发生变化后需要调用adjustSize()来同步

FoldWidget

5、列表常用信号

运行 SignalsExample.py

根据官网文档 https://doc.qt.io/qt-5/qlistwidget.html#signals 中的信号介绍编写

SignalsExample