Quantcast
Channel: Qt DevNet forums: Installation and Deployment
Viewing all articles
Browse latest Browse all 2113

Static plugins for qml app

$
0
0
Hello all. I want to include static plugins in my qml project. As i understand i need to use <QtPlugin> and <QQmlExtensionPlugin>. When I create QtQuick2 project without QtQuick.Controls it works fine with static plugins: qml: import QtQuick 2.2 //import QtQuick.Controls 1.1   Rectangle{     width: 200     height: 200     color: "LightGreen" } cpp: #include <QGuiApplication> #include <QQmlApplicationEngine>   #include <QQuickView> #include <QtPlugin> #include <QQmlEngine>     #include <QQmlExtensionPlugin> Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin) Q_IMPORT_PLUGIN(QtQuick2Plugin)   int main(int argc, char *argv[]) {     QGuiApplication app(argc, argv);     qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuick2Plugin().instance())->registerTypes("QtQuick");       QQuickView viewer;     viewer.engine()->setImportPathList(QStringList());     viewer.setSource(QUrl(QStringLiteral("qrc:///main.qml")));     viewer.show();       return app.exec(); } But when i try to use QtQuick.Controls… qml: import QtQuick 2.2 import QtQuick.Controls 1.1   ApplicationWindow {     visible: true     width: 640     height: 480     title: qsTr("Hello World")       menuBar: MenuBar {         Menu {             title: qsTr("File")             MenuItem {                 text: qsTr("Exit2")                 onTriggered: Qt.quit();             }         }     }       Text {         text: qsTr("Hello World")         anchors.centerIn: parent     } } cpp: #include <QApplication> #include <QQmlApplicationEngine>   #include <QtPlugin> #include <QQmlExtensionPlugin>   Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin) Q_IMPORT_PLUGIN(QtQuick2Plugin) Q_IMPORT_PLUGIN(QtQuickControlsPlugin) Q_IMPORT_PLUGIN(QtQuickLayoutsPlugin) Q_IMPORT_PLUGIN(QtQuick2WindowPlugin)   int main(int argc, char *argv[]) {     QGuiApplication app(argc, argv);       qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuick2Plugin().instance())->registerTypes("QtQuick");     qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuickControlsPlugin().instance())->registerTypes("QtQuick.Controls");     qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuickControlsPlugin().instance())->registerTypes("QtQuick.Controls.Private");     qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuickControlsPlugin().instance())->registerTypes("QtQuick.Controls.Styles");     qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuickLayoutsPlugin().instance())->registerTypes("QtQuick.Layouts");     qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuick2WindowPlugin().instance())->registerTypes("QtQuick.Window");       QQmlApplicationEngine engine;     engine.setImportPathList(QStringList());     engine.load(QUrl(QStringLiteral("qrc:///main.qml")));       return app.exec(); } In this case i get error: “ContentItem is not a type”. I know that ContentItem is qml type from QtQuick.Controls.Private. And i assume that i did incorrect type registration for this namespace. How can i solve this problem?

Viewing all articles
Browse latest Browse all 2113

Trending Articles