如何使用findChildren?

发布于 2021-01-29 17:08:50

我想单击一个按钮并清除20个QLineEdits。

我正在尝试使用findChildren()并将所有QLineEdit放在QListWidget中

self.StudentAdmissionLayout = QGridLayout()
self.StudentAdmissionLayout.addWidget(self.StudentName,1,0,1,1)

self.StudentAdmissionLayout布局上放置了所有QLineEdit。

self.myList = QListWidget()
self.Item = QListWidgetItem()
self.Item = self.StudentAdmissionLayout.findChildren(QLineEdit)
self.myList.addItem(self.Item)

我得到以下错误:

TypeError: arguments did not match any overloaded call:
QListWidget.addItem(QListWidgetItem): argument 1 has unexpected type 'list'
QListWidget.addItem(QString): argument 1 has unexpected type 'list'

我试图将以上4行放在一个循环中。但是第三行不起作用,我不确定如何使它起作用。请提出建议。

关注者
0
被浏览
47
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    好,我们必须了解的行为list-of-QObject QObject.findChildren (self, type type, QString name = QString())。该课程的文档说

    返回具有给定名称的该对象的所有子代,可以转换为T类型;如果没有此类对象,则返回一个空列表。省略name参数会使所有对象名称匹配。搜索是递归执行的。

    来源
    http :
    //pyqt.sourceforge.net/Docs/PyQt4/qobject.html#findChildren

    然后,它list向您返回一个Python ,并且列表中的每个元素都是T类型(您作为输入提供的类型)。所以你的问题是:

    TypeError: arguments did not match any overloaded call:
    QListWidget.addItem(QListWidgetItem): argument 1 has unexpected type
    

    ‘list’
    QListWidget.addItem(QString): argument 1 has unexpected type ‘list’

    是因为您传递了一个列表,但addItem需要使用QListWidgetItemor或QString(或Python
    str)。如果要传递Python list,则必须使用for循环来遍历数据:

    myQListWidget = QListWidget()
    listsItem = ['my', 'data', 'are', 'here', '!']
    for item in listsItem:
        myQListWidget.addItem(item)
    

    我发现的另一个问题是您的搜索数据是QLineEdits,在的任何重载方法中都不支持该类型QListWidget.addItem()。我认为您无法将其传递给此方法。但是,如果QLineEdit仅需要每个文本中的“文本”
    ,则可以将其转换为:

    self.studentAdmissionQGridLayout = QGridLayout()
    .
    .
    .
    self.myQListWidget = QListWidget()
    listsMyQLineEdit = self.studentAdmissionQGridLayout.findChildren(QLineEdit)
    for myQLineEdit in listsMyQLineEdit:
        self.myQListWidget.addItem(myQLineEdit.text())
    

    这里是帮助理解的参考QListWidget.addItem()

    http://pyqt.sourceforge.net/Docs/PyQt4/qlistwidget.html#addItem



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看