从qlistwidgetitem

时间:2018-11-15 19:16:52

标签: python pyqt pyqt4

我在互联网上找不到任何相关内容,并且已经尝试了几个小时。也许我对代码的整个尝试都是错误的。不确定如何正常完成操作。

我正在创建一个自定义窗口小部件,其中带有几个标签和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()

1 个答案:

答案 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()