【发布时间】:2018-04-06 02:09:42
【问题描述】:
我有一个QTreeView,我监听doubleClicked 信号。然后,如果我双击该项目,我将在QTabwidget 中打开一个文本文件。如果我已经打开了item里面的文字,有什么好的记录方法吗?
我想也许我应该创建类似DataFrame 的东西来记录它,但我不确定这是否是一个好的解决方案。有什么建议吗?
class PrjTreeModel(QStandardItemModel):
def __init__(self, parent,data):
super(PrjTreeModel, self).__init__(parent)
self.items = datapd.DataFrame([['HHH','BBB','RRR']],columns=['UserId','ProjectId','Status'])
self.refreshItems()
def refreshItems(self):
prjId = self.items['ProjectId']
child = ['A','B','C']
for i,row in prjId.iteritems():
parent = QtGui.QStandardItem(row)
for j in child:
parent.appendRow(QtGui.QStandardItem(j))
self.appendRow(parent)
def flags(self, index):
if not index.isValid():
return QtCore.Qt.ItemIsEnabled
return QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable
def headerData(self, section, orientation, role=QtCore.Qt.DisplayRole):
if (role == QtCore.Qt.DisplayRole) and (orientation == QtCore.Qt.Horizontal) and (self.items is not None):
return self.items['UserId'][0]
else:
return QStandardItemModel.headerData(self, section, orientation, role)
class MainWindow(QMainWindow):
[...]
qTreeView.setModel(PrjTreeModel())
qTreeView.doubleClicked.connect(self.dClicked)
self dClicked(self):
[...]
## open txtfile to add in QTabWidget
## when doubled clicked, I don't want to open same item again
## how should I check the state?
【问题讨论】:
-
我没听明白你有问题获得双击事件吗?
-
对不起我的英语不好:),我的意思是我知道如何获得双击事件,但我想知道如果 qtreeview 中的项目已被点击,如何记录。
-
没问题。记录是什么意思?
-
但是程序执行完毕后需要保存这个状态吗?
-
是的!我想保存状态,使用 DataFrame 或其他真/假列表是一个很好的解决方案吗?
标签: python pyqt qtreeview qstandarditemmodel