diff options
Diffstat (limited to 'sources/pyside2')
-rw-r--r-- | sources/pyside2/PySide2/QtGui/typesystem_gui_common.xml | 3 | ||||
-rw-r--r-- | sources/pyside2/PySide2/typesystem_templates.xml | 6 | ||||
-rw-r--r-- | sources/pyside2/tests/QtWidgets/qvalidator_test.py | 27 |
3 files changed, 32 insertions, 4 deletions
diff --git a/sources/pyside2/PySide2/QtGui/typesystem_gui_common.xml b/sources/pyside2/PySide2/QtGui/typesystem_gui_common.xml index 55bc438be..2578a1aa9 100644 --- a/sources/pyside2/PySide2/QtGui/typesystem_gui_common.xml +++ b/sources/pyside2/PySide2/QtGui/typesystem_gui_common.xml @@ -1713,6 +1713,9 @@ <modify-argument index="return"> <replace-type modified-type="QString"/> </modify-argument> + <inject-code class="native" position="end"> + <insert-template name="return_QString_native"/> + </inject-code> <inject-code class="target" position="end"> <insert-template name="return_QString"/> </inject-code> diff --git a/sources/pyside2/PySide2/typesystem_templates.xml b/sources/pyside2/PySide2/typesystem_templates.xml index 7ac4ac158..e0b47b6e3 100644 --- a/sources/pyside2/PySide2/typesystem_templates.xml +++ b/sources/pyside2/PySide2/typesystem_templates.xml @@ -278,6 +278,12 @@ <template name="return_QString"> %PYARG_0 = %CONVERTTOPYTHON[QString](%1); </template> + <template name="return_QString_native"> + if (%ISCONVERTIBLE[QString](%PYARG_0)) + %1 = %CONVERTTOCPP[QString](%PYARG_0); + else + qWarning("%TYPE::%FUNCTION_NAME: Argument is not convertible to unicode."); + </template> <template name="return_tuple_QValidator_QString_int"> %BEGIN_ALLOW_THREADS diff --git a/sources/pyside2/tests/QtWidgets/qvalidator_test.py b/sources/pyside2/tests/QtWidgets/qvalidator_test.py index 951d6b2b0..dd5eaadb3 100644 --- a/sources/pyside2/tests/QtWidgets/qvalidator_test.py +++ b/sources/pyside2/tests/QtWidgets/qvalidator_test.py @@ -29,38 +29,49 @@ from PySide2.QtCore import * from PySide2.QtGui import * from PySide2.QtWidgets import * +from PySide2.QtTest import * import unittest from helper import UsesQApplication class MyValidator1(QValidator): - def fixUp(self, input): + def fixup(self, input): return "fixed" def validate(self, input, pos): return (QValidator.Acceptable, "fixed", 1) class MyValidator2(QValidator): - def fixUp(self, input): + def fixup(self, input): return "fixed" def validate(self, input, pos): return (QValidator.Acceptable, "fixed") class MyValidator3(QValidator): - def fixUp(self, input): + def fixup(self, input): return "fixed" def validate(self, input, pos): return (QValidator.Acceptable,) class MyValidator4(QValidator): - def fixUp(self, input): + def fixup(self, input): return "fixed" def validate(self, input, pos): return QValidator.Acceptable +class MyValidator5(QValidator): + def validate(self, input, pos): + if input.islower(): + return (QValidator.Intermediate, input, pos) + else: + return (QValidator.Acceptable, input, pos) + + def fixup(self, input): + return "22" + class QValidatorTest(UsesQApplication): def testValidator1(self): line = QLineEdit() @@ -110,5 +121,13 @@ class QValidatorTest(UsesQApplication): self.assertEqual(line.text(), "foo") self.assertEqual(line.cursorPosition(), 3) + def testValidator5(self): + line = QLineEdit() + line.show() + line.setValidator(MyValidator5()) + line.setText("foo") + QTest.keyClick(line, Qt.Key_Return) + self.assertEqual(line.text(), "22") + if __name__ == '__main__': unittest.main() |