Skip to content

Commit 6acef7c

Browse files
committed
feat(tools_qt): add QListWidget support and utility function to retrieve values
1 parent 38db0d5 commit 6acef7c

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

tools_qt.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
from qgis.PyQt.QtWidgets import QAction, QLineEdit, QComboBox, QWidget, QDoubleSpinBox, QCheckBox, QLabel, QTextEdit, \
2727
QDateEdit, QAbstractItemView, QCompleter, QDateTimeEdit, QTableView, QSpinBox, QTimeEdit, QPushButton, \
2828
QPlainTextEdit, QRadioButton, QSizePolicy, QSpacerItem, QFileDialog, QGroupBox, QMessageBox, QTabWidget, QToolBox, \
29-
QToolButton, QDialog, QGridLayout, QTextBrowser, QHeaderView
29+
QToolButton, QDialog, QGridLayout, QTextBrowser, QHeaderView, QListWidget
3030
from qgis.core import QgsExpression
3131
from qgis.gui import QgsDateTimeEdit
3232
from qgis.utils import iface
@@ -251,6 +251,27 @@ def set_calendar(dialog, widget, date, default_current_date=True):
251251
date = QDateTime.currentDateTime()
252252
widget.setDateTime(date)
253253

254+
def get_listwidget_values(dialog, widget, role=Qt.ItemDataRole.UserRole):
255+
"""
256+
Returns a list of all values in a QListWidget.
257+
:param dialog: The parent dialog in which to search for the widget.
258+
:param widget: The QListWidget or its objectName (str).
259+
:param role: The role of the data to get from the items.
260+
:return: list of values (strings) or None if widget not found.
261+
"""
262+
values = None
263+
if type(widget) is str:
264+
widget = dialog.findChild(QWidget, widget)
265+
if widget is None:
266+
return
267+
if isinstance(widget, QListWidget):
268+
values = []
269+
for i in range(widget.count()):
270+
item = widget.item(i)
271+
if item is not None:
272+
values.append(item.data(role))
273+
return values
274+
254275

255276
def set_time(dialog, widget, time):
256277

@@ -308,6 +329,8 @@ def get_widget_value(dialog, widget):
308329
value = str(value).lower()
309330
elif isinstance(widget, QgsDateTimeEdit):
310331
value = get_calendar_date(dialog, widget)
332+
elif isinstance(widget, QListWidget):
333+
value = get_listwidget_values(dialog, widget)
311334

312335
return value
313336

0 commit comments

Comments
 (0)