uic: add customwidget imports support for python

Fixes: QTBUG-81073
Change-Id: I29659481b14927ffcb8f2cb1829b577a67e4b937
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
bb10
Cristián Maureira-Fredes 2019-12-18 17:56:23 +01:00 committed by Friedemann Kleint
parent 6d545dedad
commit 3f6275960c
2 changed files with 23 additions and 5 deletions

View File

@ -114,11 +114,29 @@ void WriteImports::acceptCustomWidget(DomCustomWidget *node)
const auto &className = node->elementClass();
if (className.contains(QLatin1String("::")))
return; // Exclude namespaced names (just to make tests pass).
const QString &qtModule = qtModuleOf(node);
const QString &importModule = qtModuleOf(node);
auto &output = m_uic->output();
if (!qtModule.isEmpty())
output << "from PySide2." << qtModule << ' ';
output << "import " << className << '\n';
// For starting importing PySide2 modules
if (!importModule.isEmpty()) {
output << "from ";
if (importModule.startsWith(QLatin1String("Qt")))
output << "PySide2.";
output << importModule;
if (!className.isEmpty())
output << " import " << className << "\n\n";
} else {
// When the elementHeader is not set, we know it's the continuation
// of a PySide2 import or a normal import of another module.
if (!node->elementHeader() || node->elementHeader()->text().isEmpty()) {
output << "import " << className << '\n';
} else { // When we do have elementHeader, we know it's a relative import.
QString modulePath = node->elementHeader()->text();
// '.h' is added by default on headers for <customwidget>
if (modulePath.endsWith(QLatin1String(".h")))
modulePath.chop(2);
output << "from " << modulePath << " import " << className << '\n';
}
}
}
} // namespace Python

View File

@ -43,7 +43,7 @@ from PySide2.QtGui import (QBrush, QColor, QConicalGradient, QFont,
QRadialGradient)
from PySide2.QtWidgets import *
import GammaView
from gammaview import GammaView
class Ui_Config(object):