diff options
author | Cristian Maureira-Fredes <Cristian.Maureira-Fredes@qt.io> | 2020-05-26 11:29:59 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-08-18 15:43:13 +0000 |
commit | 59aee8caa4142b839c7a7c9d87d86d374ab3781d (patch) | |
tree | e39e14aaf5831b7b4e95888716136b35f9552d52 | |
parent | f5817425ca532f91310bdc55b3f026df4362940a (diff) |
Add support for QFormLayout::TakeRowResult
The struct TakeRowResult was not explicitly declared in the
typesystem, leaving out some QFormLayout functions like
QFormLayout::takeRow(...).
Fixes: PYSIDE-1312
Change-Id: I77577cb54ff9cca56435b62c4848832e79f575f8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
(cherry picked from commit f096a6497b311555a06be7218027411a6a6ee166)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | sources/pyside6/PySide6/QtWidgets/CMakeLists.txt | 1 | ||||
-rw-r--r-- | sources/pyside6/PySide6/QtWidgets/typesystem_widgets_common.xml | 3 | ||||
-rw-r--r-- | sources/pyside6/tests/QtWidgets/qformlayout_test.py | 32 |
3 files changed, 34 insertions, 2 deletions
diff --git a/sources/pyside6/PySide6/QtWidgets/CMakeLists.txt b/sources/pyside6/PySide6/QtWidgets/CMakeLists.txt index 3f960bcff..85d4cdfd2 100644 --- a/sources/pyside6/PySide6/QtWidgets/CMakeLists.txt +++ b/sources/pyside6/PySide6/QtWidgets/CMakeLists.txt @@ -37,6 +37,7 @@ ${QtWidgets_GEN_DIR}/qfocusframe_wrapper.cpp ${QtWidgets_GEN_DIR}/qfontcombobox_wrapper.cpp ${QtWidgets_GEN_DIR}/qfontdialog_wrapper.cpp ${QtWidgets_GEN_DIR}/qformlayout_wrapper.cpp +${QtWidgets_GEN_DIR}/qformlayout_takerowresult_wrapper.cpp ${QtWidgets_GEN_DIR}/qframe_wrapper.cpp ${QtWidgets_GEN_DIR}/qgesture_wrapper.cpp ${QtWidgets_GEN_DIR}/qgestureevent_wrapper.cpp diff --git a/sources/pyside6/PySide6/QtWidgets/typesystem_widgets_common.xml b/sources/pyside6/PySide6/QtWidgets/typesystem_widgets_common.xml index 1df831d72..85b0443d9 100644 --- a/sources/pyside6/PySide6/QtWidgets/typesystem_widgets_common.xml +++ b/sources/pyside6/PySide6/QtWidgets/typesystem_widgets_common.xml @@ -2912,6 +2912,9 @@ <enum-type name="ItemRole"/> <enum-type name="RowWrapPolicy"/> + <value-type name="TakeRowResult"> + <include file-name="QFormLayout" location="global"/> + </value-type> <modify-function signature="getLayoutPosition(QLayout*,int*,QFormLayout::ItemRole*)const"> <modify-argument index="0"> diff --git a/sources/pyside6/tests/QtWidgets/qformlayout_test.py b/sources/pyside6/tests/QtWidgets/qformlayout_test.py index 55348daaa..8760a3a9b 100644 --- a/sources/pyside6/tests/QtWidgets/qformlayout_test.py +++ b/sources/pyside6/tests/QtWidgets/qformlayout_test.py @@ -35,7 +35,7 @@ sys.path.append(os.fspath(Path(__file__).resolve().parents[1])) from init_paths import init_test_paths init_test_paths(False) -from PySide6.QtWidgets import QFormLayout, QWidget +from PySide6.QtWidgets import QFormLayout, QWidget, QLabel, QMainWindow from helper.usesqapplication import UsesQApplication @@ -93,7 +93,35 @@ class QFormLayoutTest(UsesQApplication): self.assertEqual(row, 0) self.assertEqual(role, QFormLayout.SpanningRole) + def testTakeRow(self): + window = QMainWindow() + window.setCentralWidget(QWidget()) + formlayout = QFormLayout(window.centralWidget()) + + widget_label = "blub" + widget = QLabel(widget_label) + + self.assertEqual(formlayout.count(), 0) + formlayout.addRow(widget) + self.assertEqual(formlayout.count(), 1) + self.assertEqual(formlayout.itemAt(0).widget(), widget) + + widget_id = id(widget) + + # Now there are no more references to the original widget on the + # Python side. Assert that this does not break the references to + # the widget on the C++ side so that "taking" the row will work. + del widget + + takeRowResult = formlayout.takeRow(0) + self.assertEqual(formlayout.count(), 0) + + widget = takeRowResult.fieldItem.widget() + + self.assertIsNotNone(widget) + self.assertEqual(widget_id, id(widget)) + self.assertEqual(widget.text(), widget_label) + if __name__ == "__main__": unittest.main() - |