如何在事件处理程序(" slot")中获取QListWidget的所有选定项目,该事件处理程序在用户与列表交互时被激活?换句话说,我需要在用户执行操作时(例如在列表中选择新选项)获得所选项目的完整列表
到目前为止,我尝试使用QListWidget.currentItemChanged
,然后尝试使用QListWidget.selectedItems()
获取所有选定的列表项。我采用这种方法的问题是列表在退出已连接到selectedItems()
的事件处理程序之后,currentItemChanged
函数返回的函数才会更新
我正在寻找的解决方案必须与" MultiSelection" (可以同时选择多个列表项)
感谢您的帮助和亲切的问候, 托德
答案 0 :(得分:4)
您必须使用GameObject
信号,当选择任何项目时会激活此信号。
itemSelectionChanged
输出:
import sys
from PyQt5.QtWidgets import QAbstractItemView, QApplication, QListWidget, QListWidgetItem, QVBoxLayout, QWidget
class Widget(QWidget):
def __init__(self, parent=None):
super(Widget, self).__init__(parent=parent)
self.layout = QVBoxLayout(self)
self.listWidget = QListWidget(self)
self.layout.addWidget(self.listWidget)
self.listWidget.setSelectionMode(QAbstractItemView.MultiSelection)
self.listWidget.itemSelectionChanged.connect(self.on_change)
for i in range(10):
item = QListWidgetItem()
item.setText(str(i))
self.listWidget.addItem(item)
def on_change(self):
print("start")
print([item.text() for item in self.listWidget.selectedItems()])
if __name__ == '__main__':
app = QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())
答案 1 :(得分:0)
class YourClass(QMainWindow):
def __init__(self):
super(YourClass,self).__init__()
uic.loadUi("Your_Qt_document_name.ui", self)
#Binding the QListWidget created in the Qt Designer
self.Your_QListWidget_Name.clicked.connect(self.getListItem)
#on cLick item method
def getListItem(self):
#prints the selected item
print(self.Your_QListWidget_Name.currentItem().text())