如果你不写gui,可能不会在意maya channelBox的ui是如何实现的。最近一个工具需要用属性栏来显示和设置参数,当然思路有很多种。我使用QTreeView and QStandardItemModel 来实现的。因为我需要选择设置参数时能同时选中它的标签,但是标签那一栏需要设置为不可编辑,只做显示用。
只要override flags 方法即可
1 2 3 4 5 | def flags(self,index): flags = QtCore.Qt.ItemIsEnabled|QtCore.Qt.ItemIsSelectable if index.isValid() and index.column()==1: flags|= QtCore.Qt.ItemIsEditable return flags |
如果使用的是QTreeWidget只有使用openPersistentEditor()和closePersistentEditor()来解决这一问题
1 2 3 4 5 6 7 8 9 10 11 | self._lastOpen = None self.itemDoubleClicked.connect(self.openEditStatus) self.itemSelectionChanged.connect(self.closeEditStatus) def closeEditStatus(self): if self._lastOpen: self.closePersistentEditor(self._lastOpen,1) self._lastOpen = None def openEditStatus(self): if self.currentColumn() == 1: self.openPersistentEditor(self.currentItem(),1) self._lastOpen = self.currentItem() |