Теперь я создал 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?
Благодаря
Вы можете получить доступ к виджетам, добавленным к дереву, ака 'fileWidgetItem'. Вы не можете получить доступ к любому 'fileWidget', потому что они не находятся в дереве. В коде отсутствует связь между 'fileWidgetItem' и' fileWidget'. – Mel
Спасибо за ваш ответ. Так что это значит? Должен ли я помещать информацию, которая мне нужна в fileWidgetItem, как скрытая? или изменить свой способ создания TreeView? – PyNico