diff --git a/tests/src/python/test_qgseditwidgets.py b/tests/src/python/test_qgseditwidgets.py index 7f09dffb6e7..b5792662248 100644 --- a/tests/src/python/test_qgseditwidgets.py +++ b/tests/src/python/test_qgseditwidgets.py @@ -18,8 +18,8 @@ from qgis.core import (QgsProject, QgsFeature, QgsGeometry, QgsPointXY, QgsVecto from qgis.gui import QgsGui from qgis.testing import start_app, unittest -from qgis.PyQt.QtCore import QVariant -from qgis.PyQt.QtWidgets import QTextEdit +from qgis.PyQt.QtCore import Qt, QVariant +from qgis.PyQt.QtWidgets import QTextEdit, QTableWidgetItem start_app() @@ -108,6 +108,24 @@ class TestQgsValueRelationWidget(unittest.TestCase): wrapper.setEnabled(True) self.assertTrue(widget.isEnabled()) + def test_enableDisableOnTableWidget(self): + reg = QgsGui.editorWidgetRegistry() + layer = QgsVectorLayer("none?field=number:integer", "layer", "memory") + wrapper = reg.create('ValueRelation', layer, 0, {'AllowMulti': 'True'}, None, None) + + widget = wrapper.widget() + item = QTableWidgetItem('first item') + widget.setItem(0, 0, item) + + # does not change the state the whole widget but the single items instead + wrapper.setEnabled(False) + # widget still true, but items false + self.assertTrue(widget.isEnabled()) + self.assertNotEqual(widget.item(0, 0).flags(), widget.item(0, 0).flags() | Qt.ItemIsEnabled) + wrapper.setEnabled(True) + self.assertTrue(widget.isEnabled()) + self.assertEqual(widget.item(0, 0).flags(), widget.item(0, 0).flags() | Qt.ItemIsEnabled) + class TestQgsValueMapEditWidget(unittest.TestCase): VALUEMAP_NULL_TEXT = "{2839923C-8B7D-419E-B84B-CA2FE9B80EC7}"