我在互联网上找不到任何相关内容,并且已经尝试了几个小时。也许我对代码的整个尝试都是错误的。不确定如何正常完成操作。
我正在创建一个自定义窗口小部件,其中带有几个标签和qlistwidget的每一行中的一个图标。
稍后选择更改,我想读取当前行,自定义小部件数据。
但是我不知道怎么做。
我有这个自定义小部件:
class CustomCatalogWidget(QtGui.QWidget):
def __init__(self, catalogWidget, size):
super(CustomCatalogWidget, self).__init__()
self.mainLayout = QtGui.QHBoxLayout()
#reconstruct catalog items
self.thumbnail = catalogWidget.getThumbnailPixmap()
if not self.thumbnail:
return
self.thumbnail = self.thumbnail.scaled(size, size, QtCore.Qt.KeepAspectRatio)
self.name = catalogWidget.getNodeName()
self.thumbnailLocation = catalogWidget.getDiskThumbnailLocation()
# reconstruct finish
self.labelImage = QtGui.QLabel()
self.labelImage.setPixmap(self.thumbnail)
self.labelName = QtGui.QLabel(self.name)
self.timestamp = datetime.fromtimestamp(catalogWidget.getRenderEndTime())
self.labelRenderEndTime = QtGui.QLabel(self.timestamp.strftime('%Y-%m-%d %H:%M:%S'))
self.mainLayout.addWidget(self.labelImage)
self.mainLayout.addWidget(self.labelName)
self.mainLayout.addWidget(self.labelRenderEndTime)
self.setLayout(self.mainLayout)
与我的主类中的qlistwidget关联的
self.catalogBox = QtGui.QListWidget()
self.insertThumbnailsFromCatalog(self.catalogBox)
self.catalogBox.selectionModel().selectionChanged.connect(functools.partial (self.catalogBoxSelectionChanged, self.catalogBox))
此函数从主内部填充
class:
def insertThumbnailsFromCatalog(self, boxLayout):
#CATALOG ROUTINE
#append all catalog items ot the window.
boxLayout.clear()
for catalogItem in CatalogManager.Catalog.GetCatalogItems(slot=1):
if catalogItem:
cw = CustomCatalogWidget(catalogItem, self.thumbnailSizeSlider.value())
itemWidget = QtGui.QListWidgetItem()
itemWidget.setSizeHint(QtCore.QSize(130,20))
boxLayout.addItem(itemWidget)
boxLayout.setItemWidget(itemWidget, cw)
#catalogBox.addWidget(QHLine())
,现在我试图在更改选择时访问“自定义目录”小部件。 我需要知道标签self.labelName或self.labelRenderEndTime
中写了什么而且我似乎在qlistwidgetitems中找不到qlabel。
def catalogBoxSelectionChanged(self, boxLayout):
row = boxLayout.currentRow()
currentItem = boxLayout.currentItem()
for ch in currentItem.listWidget().children():
if ch.__class__.__name__ == 'QAbstractListModel':
print ch.children()
print dir(ch)
#for x in boxLayout.currentItem().listWidget().children():
# if x.__class__.__name__ == 'QWidget':
#print x.children()
答案 0 :(得分:0)
实际上我知道如何访问它:
for ch in currentItem.listWidget().children():
for x in ch.children():
for i in x.children():
if i.__class__.__name__ == 'QLabel':
print i.text()