是否可以像设置/获取项目文本一样为QListWidget中的项目设置/获取对象?
我正在使用PyQt4
,我QListWidget
在一个窗口中有一个窗口,我在运行时添加了它.我想在窗口中使用一个按钮来清除选择QListWidget
.
我想知道是否有任何方法可以实现这一目标?
我检查clear()
但它清除listwidget中的项目,但我想清除listwidget中的选择.
我有一个Qlistwidget
我可以选择多个项目.我可以在listwidget中获取包含所有选定项目的列表,但无法找到获取相应行列表的方法.要获取listwidget中所选项的列表,我使用了以下代码:
print [str(x.text()) for x in self.listWidget.selectedItems()]
Run Code Online (Sandbox Code Playgroud)
要检索行,我正在寻找类似的东西:
a = self.listWidget.selectedIndexes()
print a
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我也尝试了一些导致这样的输出的代码,这不是很有用:
<PyQt4.QtGui.QListWidgetItem object at 0x0000000013048B88>
<PyQt4.QtCore.QModelIndex object at 0x0000000014FBA7B8>
Run Code Online (Sandbox Code Playgroud) 我想编辑通过按钮以编程方式选择的 listWidget 项目。我不完全确定是否有一种方法可以编辑选定的项目,而不必删除原始项目并将新的编辑添加回来。
我看到了这个......但我不确定这是否是我需要的,因为我无法传递新值:
selItems = listWidget.selectedItems()
for item in selItems:
listWidget.editItem(item, "test")
TypeError: QListWidget.editItem(QListWidgetItem): too many arguments
Run Code Online (Sandbox Code Playgroud) 我如何获取事件处理程序(“插槽”)中QListWidget的所有选定项,该事件处理程序在用户与列表进行交互时被激活?换句话说,当用户执行某项操作时(例如在列表中选择一个新的选择),我需要有可用选择项的完整列表。
到目前为止,我尝试使用的是什么QListWidget.currentItemChanged
,然后尝试使用来获取所有选定的列表项QListWidget.selectedItems()
。这种方法的问题在于,从selectedItems()
函数返回的列表直到退出我已连接的事件处理程序后才更新至currentItemChanged
我正在寻找的解决方案必须与“ MultiSelection”一起使用(可以同时选择多个列表项)
感谢帮助和友善的问候,托德
我正在开发一个 QGIS 插件,其中的 UI 是用 PyQt 制作的。我有一个 QListWidget 和一个填充它的函数。我想为每个项目添加一个上下文菜单,只有一个选项:打开另一个窗口。
我在搜索信息时遇到了麻烦,因为大部分信息仅适用于 PyQt4 而我使用的是版本 5。我想在其上添加上下文菜单的 QListWidget 是ds_list_widget
. 这是一些相关的代码。
FORM_CLASS, _ = uic.loadUiType(os.path.join(
os.path.dirname(__file__), 'dialog_base.ui'))
class Dialog(QDialog, FORM_CLASS):
def __init__(self, parent=None):
...
self.p_list_widget = self.findChild(QListWidget, 'projects_listWidget')
self.p_list_widget.itemClicked.connect(self.project_clicked)
self.ds_list_widget = self.findChild(QListWidget, 'datasets_listWidget')
self.ds_list_widget.itemClicked.connect(self.dataset_clicked)
...
def project_clicked(self, item):
self.fill_datasets_list(str(item.data(Qt.UserRole)))
self.settings.setValue('projectIdValue', str(item.data(Qt.UserRole)))
def fill_datasets_list(self, project_id):
self.ds_list_widget.clear()
dataset_list = self.anotherClass.fetch_dataset_list(project_id)
for dataset in dataset_list:
#Query stuff from remote
...
item = QListWidgetItem(ds_name, self.ds_list_widget)
item.setIcon(self.newIcon(ds_img))
item.setData(Qt.UserRole, ds_id)
self.ds_list_widget.addItem(item)
self.ds_list_widget.setIconSize(self.iconSize)
Run Code Online (Sandbox Code Playgroud) 我正在学习 PySide,我很困惑如何在第一次将 QListWidget 项目设置为不可选择后将其设置回可选择状态。我知道我可以:
QListWidget.SetFlags(QtCore.Qt.ItemIsSelectable)
Run Code Online (Sandbox Code Playgroud)
我有点不确定为什么该标志被命名为“ItemIsSelelectable”,因为它似乎使该项目无法选择。但我想在设置此标志后将项目设置回可选状态。
我是 PyQt 的新手。我首先在Qt Designer中做了一个对话框,在一个QListWidget中实现了简单的增删改查操作。除了编辑之外,我的所有操作都很有魅力,所以我做了很多关于如何使项目可编辑的搜索,但结果并不令人满意。我可以使用openPersistentEditor
and进行编辑closePersistentEditor
,但它的行为方式并不是我想要的。我只是希望在双击或按下编辑按钮时可以编辑这些项目,就像在普通的 gui 中一样。
我的 Qt 设计器代码是:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'myDialog.ui'
#
# Created by: PyQt5 UI code generator 5.6
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(358, 226)
self.widget = QtWidgets.QWidget(Dialog)
self.widget.setGeometry(QtCore.QRect(10, 10, 341, 201))
self.widget.setObjectName("widget")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget)
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout.setObjectName("horizontalLayout")
self.mylist = …
Run Code Online (Sandbox Code Playgroud) qlistwidget ×10
python ×7
pyqt ×6
qt ×5
pyqt5 ×2
contextmenu ×1
icons ×1
object ×1
pyqt4 ×1
pyside ×1