// Use the class generation utils provided by the designer plugin static inline bool generateFormClass(const GuiAppParameters ¶ms, const Core::GeneratedFile &uiFile, Core::GeneratedFile *formSource, Core::GeneratedFile *formHeader, QString *errorMessage) { // Retrieve parameters from settings Designer::FormClassWizardParameters fp; fp.uiTemplate = uiFile.contents(); fp.uiFile = uiFile.path(); fp.className = params.className; fp.sourceFile = params.sourceFileName; fp.headerFile = params.headerFileName; QString headerContents; QString sourceContents; // Invoke code generation service of Qt Designer plugin. if (QObject *codeGenerator = ExtensionSystem::PluginManager::instance()->getObjectByClassName("Designer::QtDesignerFormClassCodeGenerator")) { const QVariant code = ExtensionSystem::invoke<QVariant>(codeGenerator, "generateFormClassCode", fp); if (code.type() == QVariant::List) { const QVariantList vl = code.toList(); if (vl.size() == 2) { headerContents = vl.front().toString(); sourceContents = vl.back().toString(); } } } if (headerContents.isEmpty() || sourceContents.isEmpty()) { *errorMessage = QString::fromAscii("Failed to obtain Designer plugin code generation service."); return false; } formHeader->setContents(headerContents); formSource->setContents(sourceContents); return true; }