首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QListWidget和多选

QListWidget和多选
EN

Stack Overflow用户
提问于 2010-10-24 22:25:33
回答 5查看 39.4K关注 0票数 28

我有一个普通的QListWidget,有几个信号和插槽。一切都和我预期的一样。我可以更新,检索,清除等。

但是UI不支持多选。

如何为QListWidget‘启用’多项选择?我有限的PyQt经验告诉我,我需要通过子类化来创建一个自定义的QListWidget。但是下一步呢?

谷歌给了我C++答案,但我在找Python

http://www.qtforum.org/article/26320/qlistwidget-multiple-selection.html

http://www.qtcentre.org/threads/11721-QListWidget-multi-selection

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-10-25 02:28:52

不幸的是,我不能提供Python特定的语法帮助,但是您不需要创建任何子类。

创建QListWidget后,使用传入的多个选择类型之一调用setSelectionMode()QAbstractItemView::ExtendedSelection可能就是您想要的选择类型。您可能想要查看此模式的一些变体。

在您的itemSelectionChanged()信号槽中,调用selectedItems()以获取QListWidgetItem指针的QList

票数 30
EN

Stack Overflow用户

发布于 2014-06-04 02:19:16

对于PyQT4来说,这是

代码语言:javascript
复制
QListWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
票数 26
EN

Stack Overflow用户

发布于 2018-08-29 23:37:50

在具有多个选择的listWidget中获取多个选定值的示例。

代码语言:javascript
复制
from PyQt5 import QtWidgets, QtCore
class Test(QtWidgets.QDialog):
    def __init__(self, parent=None):
        super(Test, self).__init__(parent)
        self.layout = QtWidgets.QVBoxLayout()
        self.listWidget = QtWidgets.QListWidget()
        self.listWidget.setSelectionMode(
            QtWidgets.QAbstractItemView.ExtendedSelection
        )
        self.listWidget.setGeometry(QtCore.QRect(10, 10, 211, 291))
        for i in range(10):
            item = QtWidgets.QListWidgetItem("Item %i" % i)
            self.listWidget.addItem(item)
        self.listWidget.itemClicked.connect(self.printItemText)
        self.layout.addWidget(self.listWidget)
        self.setLayout(self.layout)

    def printItemText(self):
        items = self.listWidget.selectedItems()
        x = []
        for i in range(len(items)):
            x.append(str(self.listWidget.selectedItems()[i].text()))

        print (x)

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    form = Test()
    form.show()
    app.exec_()

输出:-

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4008649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档