2015-11-27 5 views
0

Теперь я создал QTreeWidget, когда я нажимаю на элемент, я хочу получить данные виджета. Я наполняю свою QTreeWidget таким образом:Получить ItemWidget из QTreeWidget в событии DoubleClick

def addNodeToTreeview(self, data): 
    self.panelInfoPatientUi.treeWidgetDevices.clear() 
    for item in data: 
     mainWidgetItem = QtGui.QTreeWidgetItem(self.panelInfoPatientUi.treeWidgetDevices) 
     widgetContainer = QtWidgets.QWidget() 
     widgetContainer.setObjectName("widgetContainer") 
     deviceWidget = Ui_DeviceListviewWidget() 
     deviceWidget.setupUi(widgetContainer) 

     deviceWidget.labelSerialNumber.setText(item.serialNumber) 
     deviceWidget.labelModel.setText(item.model) 
     deviceWidget.labelInstallationDate.setText(item.installDate) 

     mainWidgetItem.setSizeHint(0, widgetContainer.sizeHint()) 

     self.panelInfoPatientUi.treeWidgetDevices.addTopLevelItem(mainWidgetItem) 
     self.panelInfoPatientUi.treeWidgetDevices.setItemWidget(mainWidgetItem, 0, widgetContainer) 

     for files in item.listFile: 
      #Files 
      fileWidgetItem = QtGui.QTreeWidgetItem(mainWidgetItem) 
      widgetContainerFiles = QtWidgets.QWidget() 
      widgetContainerFiles.setObjectName("widgetContainerFiles") 
      fileWidget = Ui_FileListWidgetItem()  
      fileWidget.setupUi(widgetContainerFiles) 

      fileWidgetItem.setText(0, "BLABLBALA") 

      fileWidget.labelFileName.setText(files.fileName) 
      fileWidget.labelDateFile.setText(files.dateFile) 

      fileWidgetItem.setSizeHint(0, widgetContainerFiles.sizeHint()) 
      mainWidgetItem.addChild(fileWidgetItem) 
      self.panelInfoPatientUi.treeWidgetDevices.setItemWidget(fileWidgetItem, 0, widgetContainerFiles) 

я подключить виджет таким образом:

def connectSignalTreeWidget(self): 
     self.view.panelInfoPatientUi.treeWidgetDevices.itemDoubleClicked.connect(self.testest) 

и когда я получить Click событие я не могу получить доступ к моему виджету я попробовал несколько пути:

def testest(self, item, col): 

    print(self.view.panelInfoPatientUi.treeWidgetDevices.itemWidget(item, 0)) 

    #print([method for method in dir(item) if callable(getattr(item, method))]) 
    #print(str(item.ItemType())) 
    #print(str(item.text(col))) 
    #print(str(item.child(0))) 
    #print(str(item.childCount())) 
    #print(str(item.child(1).text(0))) 

    #print(str(self.view.panelInfoPatientUi.treeWidgetDevices.currentItem())) 
# titi = .itemWidget(item, columnIndex) 
# print(str(titi)) 
# titi.text(0) 
# titi.data() 
    #print(str(titi.labelFileName.text())) 

    '''selectedItems = self.view.panelInfoPatientUi.treeWidgetDevices.selectedItems() 
    for selectedItem in selectedItems: 
     print(str(selectedItem.text(0))) 
     print(str(selectedItem.text(1))) 
     print(str(selectedItem.text(2))) ''' 

    ''' 
    print(item.data(1, 0)) 
    print("column count " + str(data.columnCount())) 
    print("AHYAAAAAAAAAA")''' 

Как я использую метод setItemWidget, я ожидаю получить метод getItemWidget и получить данные от него, но нет. Как я могу получить доступ к fileWidget.labelFileName?

Благодаря

+0

Вы можете получить доступ к виджетам, добавленным к дереву, ака 'fileWidgetItem'. Вы не можете получить доступ к любому 'fileWidget', потому что они не находятся в дереве. В коде отсутствует связь между 'fileWidgetItem' и' fileWidget'. – Mel

+0

Спасибо за ваш ответ. Так что это значит? Должен ли я помещать информацию, которая мне нужна в fileWidgetItem, как скрытая? или изменить свой способ создания TreeView? – PyNico

ответ

0

Я нашел решение: я изменил свое творение METHODE:

def addNodeToTreeview(self, data): 
    self.panelInfoPatientUi.treeWidgetDevices.clear() 
    for item in data: 
     mainWidgetItem = QtGui.QTreeWidgetItem(self.panelInfoPatientUi.treeWidgetDevices) 
     widgetContainer = QtWidgets.QWidget() 
     widgetContainer.setObjectName("widgetContainer") 
     deviceWidget = Ui_DeviceListviewWidget() 
     deviceWidget.setupUi(widgetContainer) 

     deviceWidget.labelSerialNumber.setText(item.serialNumber) 
     deviceWidget.labelModel.setText(item.model) 
     deviceWidget.labelInstallationDate.setText(item.installDate) 

     mainWidgetItem.setSizeHint(0, widgetContainer.sizeHint()) 

     self.panelInfoPatientUi.treeWidgetDevices.addTopLevelItem(mainWidgetItem) 
     self.panelInfoPatientUi.treeWidgetDevices.setItemWidget(mainWidgetItem, 0, widgetContainer) 

     for files in item.listFile: 
      #Files 

      fileWidgetItem = QtGui.QTreeWidgetItem(mainWidgetItem) 
      widgetContainerFiles = QtWidgets.QWidget() 
      widgetContainerFiles.setObjectName("widgetContainerFiles") 

      widgetContainerFiles.ui = Ui_FileListWidgetItem() 
      widgetContainerFiles.ui.setupUi(widgetContainerFiles) 

      widgetContainerFiles.ui.labelFileName.setText(files.fileName) 
      widgetContainerFiles.ui.labelDateFile.setText(files.dateFile) 

      fileWidgetItem.setSizeHint(0, widgetContainerFiles.sizeHint()) 
      mainWidgetItem.addChild(fileWidgetItem) 
      self.panelInfoPatientUi.treeWidgetDevices.setItemWidget(fileWidgetItem, 0, widgetContainerFiles) 

и я могу получить мои данные так:

def testest(self, item, col): 

    print(str(item.treeWidget().itemWidget(item, col).ui.labelFileName.text())) 

 Смежные вопросы

  • Нет связанных вопросов^_^