我(非常)对PyQT和QT很新,并且必须快速设计一个与现代双窗格邮件应用程序大致相似的用户界面:留下一个邮件列表,一个编辑器.我想提供一些信息,而不仅仅是在QListView中显示的字符串 – 基本上是粗体文本中的项目名称,下面两行描述不同的样式,左上角是一组标签徽章.此外,列表必须每隔几秒左右更新一次(可能只更改很少的项目),所以我不想每次都重写数据.
从我在各种手册和教程中阅读的内容来看,有不同的方法可以实现,并且我不确定最常用的方法是什么(其他人在编写核心应用程序后必须使用代码) – 您将使用对象和方法 – QListView或QListWidget,然后继承QAbstractListModel或QStandardItemModel,…?
解决方法:
如果你不想考虑你的模型,或者真的在视图之间共享,那么QListWidget就是为了这个目的.您只需直接处理List,数据就存储在自己的底层模型中.
对于QListWidget,您可以使用:QListWidget.setItemWidget(QListWidgetItem item, QWidget widget)
这将需要您创建自己的小部件,以您想要的方式,为您的文本和像素图显示QLabel.然后你可以通过执行以下操作将它们添加到QListWidget:
# create item widget
item = QListWidgetItem()
w = CustomItemWidget()
w.setTitle = "Title"
w.setDescription = "Blah blah"
# would have a QPixmap already cached
w.setBadgeImage = preCreatedPixmaps['thisBadge']
listW