summaryrefslogtreecommitdiffstats
path: root/src/tools/uic
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2022-01-12 15:18:02 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2022-01-13 15:47:46 +0100
commite376c229e906bc25068a22d758c24eef644e8b28 (patch)
tree0efa774dbd18f14d8f32c8612ebba3cf38845ee5 /src/tools/uic
parent7719fcea4b174da078b6630df24345c63e6cc75d (diff)
uic/Python: Import base class for flag values
Extend the logic extracting enum base classes to flags to handle things like QAbstractItemView::EditTriggers. Exclude the Qt namespace. Amends de15836dbf5007092c19bc9ab15ca3d1a36901ad. Fixes: PYSIDE-1773 Task-number: PYSIDE-1404 Pick-to: 6.2 6.2.3 6.3 Change-Id: Ib0cd0836a91f330e5bc3307690062a965abec7eb Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'src/tools/uic')
-rw-r--r--src/tools/uic/python/pythonwriteimports.cpp27
-rw-r--r--src/tools/uic/python/pythonwriteimports.h1
2 files changed, 22 insertions, 6 deletions
diff --git a/src/tools/uic/python/pythonwriteimports.cpp b/src/tools/uic/python/pythonwriteimports.cpp
index ec4968da2f..0d295b483d 100644
--- a/src/tools/uic/python/pythonwriteimports.cpp
+++ b/src/tools/uic/python/pythonwriteimports.cpp
@@ -233,16 +233,31 @@ void WriteImports::addPythonCustomWidget(const QString &className, const DomCust
void WriteImports::acceptProperty(DomProperty *node)
{
- if (node->kind() == DomProperty::Enum) {
- // Add base classes like QFrame for QLabel::frameShape()
- const QString &enumV = node->elementEnum();
- const auto colonPos = enumV.indexOf(u"::");
- if (colonPos > 0)
- addQtClass(enumV.left(colonPos));
+ switch (node->kind()) {
+ case DomProperty::Enum:
+ addEnumBaseClass(node->elementEnum());
+ break;
+ case DomProperty::Set:
+ addEnumBaseClass(node->elementSet());
+ break;
+ default:
+ break;
}
+
WriteIncludesBase::acceptProperty(node);
}
+void WriteImports::addEnumBaseClass(const QString &v)
+{
+ // Add base classes like QFrame for QLabel::frameShape()
+ const auto colonPos = v.indexOf(u"::");
+ if (colonPos > 0) {
+ const QString base = v.left(colonPos);
+ if (base.startsWith(u'Q') && base != u"Qt")
+ addQtClass(base);
+ }
+}
+
} // namespace Python
QT_END_NAMESPACE
diff --git a/src/tools/uic/python/pythonwriteimports.h b/src/tools/uic/python/pythonwriteimports.h
index c833e216a6..05cf48c1a1 100644
--- a/src/tools/uic/python/pythonwriteimports.h
+++ b/src/tools/uic/python/pythonwriteimports.h
@@ -55,6 +55,7 @@ protected:
private:
void addPythonCustomWidget(const QString &className, const DomCustomWidget *dcw);
bool addQtClass(const QString &className);
+ void addEnumBaseClass(const QString &v);
void writeImport(const QString &module);
QHash<QString, QString> m_classToModule;