diff options
author | Friedemann Kleint <[email protected]> | 2022-05-03 12:53:33 +0200 |
---|---|---|
committer | Friedemann Kleint <[email protected]> | 2022-05-05 16:04:43 +0200 |
commit | de5f162a70dda9d74cfce2337a9f90ddcb4ca75f (patch) | |
tree | e0b77e3c5f4a2feeeb3f2f593524a3bcfc170448 /sources/pyside6/tests/QtWidgets | |
parent | 37697e672b2f50d60505570a9c399bb35fbf9a97 (diff) |
shiboken: Introduce a function to get the type name of a polymorphic class
Helps for hierarchies that do not have virtual destructors where the
default typeid(t).name() does not work (QStyleOption).
Pick-to: 6.3
Fixes: PYSIDE-1909
Change-Id: I9ce3769a8c3550d011023597eede0ae6f8c9ad68
Reviewed-by: Christian Tismer <[email protected]>
Diffstat (limited to 'sources/pyside6/tests/QtWidgets')
-rw-r--r-- | sources/pyside6/tests/QtWidgets/CMakeLists.txt | 1 | ||||
-rw-r--r-- | sources/pyside6/tests/QtWidgets/qstyleoption_test.py | 68 |
2 files changed, 69 insertions, 0 deletions
diff --git a/sources/pyside6/tests/QtWidgets/CMakeLists.txt b/sources/pyside6/tests/QtWidgets/CMakeLists.txt index 8978df9a4..5989c0625 100644 --- a/sources/pyside6/tests/QtWidgets/CMakeLists.txt +++ b/sources/pyside6/tests/QtWidgets/CMakeLists.txt @@ -106,6 +106,7 @@ PYSIDE_TEST(qpicture_test.py) PYSIDE_TEST(qpushbutton_test.py) PYSIDE_TEST(qsplitter_test.py) PYSIDE_TEST(qstyle_test.py) +PYSIDE_TEST(qstyleoption_test.py) PYSIDE_TEST(qtableview_test.py) PYSIDE_TEST(qtabwidget_test.py) PYSIDE_TEST(qtabwidgetclear_test.py) diff --git a/sources/pyside6/tests/QtWidgets/qstyleoption_test.py b/sources/pyside6/tests/QtWidgets/qstyleoption_test.py new file mode 100644 index 000000000..2cbdfcfbd --- /dev/null +++ b/sources/pyside6/tests/QtWidgets/qstyleoption_test.py @@ -0,0 +1,68 @@ +############################################################################# +## +## Copyright (C) 2022 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the test suite of Qt for Python. +## +## $QT_BEGIN_LICENSE:GPL-EXCEPT$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 as published by the Free Software +## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +import sys +import os +import unittest + +from pathlib import Path +sys.path.append(os.fspath(Path(__file__).resolve().parents[1])) +from init_paths import init_test_paths +init_test_paths(False) + +from helper.usesqapplication import UsesQApplication + +from PySide6.QtWidgets import (QApplication, QCommonStyle, QPushButton) + + +text = '' + + +class Style(QCommonStyle): + + def drawControl(self, element, option, painter, widget=None): + # This should be a QStyleOptionButton with a "text" field + global text + text = option.text + + +class StyleOptionTest(UsesQApplication): + '''PYSIDE-1909: Test cast to derived style option classes.''' + + def testStyle(self): + global text + button = QPushButton("Hello World") + button.setStyle(Style()) + button.show() + while not text: + QApplication.processEvents() + self.assertEqual(text, button.text()) + + +if __name__ == '__main__': + unittest.main() |