为了账号安全,请及时绑定邮箱和手机立即绑定

PySide QtGui.QList小工具:如何与对象数据相关联

PySide QtGui.QList小工具:如何与对象数据相关联

ABOUTYOU 2022-09-27 09:43:19
我正在使用内置的派赛德模块在自由民俗局中构建一个图形用户界面。有没有一种简单/标准的方法将数据“附加”到 PySide QtGui.QListWidget 中的列表项?到目前为止,我有这个(注意这不是完整的代码,但希望能理解这一点):Class fcGui(QtGui.QWidget):    def initUI(self):        self.listWidget = QtGui.QListWidget(self)        self.objData = []        self.listWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)        for i in range(0,len(App.ActiveDocument.Objects)):            self.listWidget.addItem(App.ActiveDocument.Objects[i].Name)    def acceptance(self):        print(self.listWidget.selectedItems())这将按名称打印所选项目。但现在我需要对与这些名称关联的对象执行一些操作。有没有一种直接的方法来做到这一点?我能想到的只是一个复杂的方案来确定每个选定项目的索引,并将其与相应对象的列表相关联。任何帮助将不胜感激。
查看完整描述

1 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

您可以使用自定义角色来存储对象:


ObjectRole = QtCore.Qt.UserRole + 1000



Class fcGui(QtGui.QWidget):

    def initUI(self):

        self.listWidget = QtGui.QListWidget(self)

        self.objData = []

        self.listWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)

        for obj in App.ActiveDocument.Objects:

            it = QtGui.QListWidgetItem(obj.Name)

            it.setData(ObjectRole, obj)

            self.listWidget.addItem(it)


    def acceptance(self):

        for it in self.listWidget.selectedItems():

            obj = it.data(ObjectRole)

            print(obj, obj.Name)


查看完整回答
反对 回复 2022-09-27
  • 1 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信