2017-10-25 26 views
0

나는 QTreeView이고 나는 doubleClicked 신호를 듣습니다. 그런 다음 항목을 두 번 클릭하면 QTabwidget에 텍스트 파일이 열립니다. 항목의 텍스트를 이미 열어 놓은 경우 녹음 할 수있는 좋은 방법이 있습니까?QTreeView 항목을 두 번 클릭 한 것을 어떻게 기록합니까?

나는 이것을 기록하기 위해 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? 
당신은 사용자 지정 역할 사용하여 더블 클릭 항목에 플래그를 설정할 수 있습니다
+0

를? – aghilpro

+0

불쌍한 영어에 대해 유감스럽게 생각합니다. 두 번 클릭 한 이벤트를받는 방법을 알고 있지만 qtreeview의 항목을 클릭하면 기록하는 방법을 알고 싶습니다. –

+0

문제 없습니다. 기록으로 무엇을 의미합니까? – aghilpro

답변

0

: 나는 당신이 더블 클릭 이벤트를 얻을 수있는 문제가하지 못해서

class MainWindow(QMainWindow): 
    def __init__(self): 
     ... 
     qTreeView.setModel(PrjTreeModel()) 
     qTreeView.doubleClicked.connect(self.dClicked) 

    def dblClicked(self, index): 
     item = index.model().itemFromIndex(index) 
     if not item.data(Qt.UserRole + 1): 
      item.setData(True, Qt.UserRole + 1) 
      print('open txt file:', item.text()) 
     else: 
      print('already double-clicked')