Problem with importing self-developed component
-
Hello! I am trying to develop my component for GPIO control and embed it in my Qt application using the code below:
#include <QDir> #include <QGuiApplication> #include <QQmlEngine> #include <QQmlFileSelector> #include <QQuickView> #include "GPIO1.h" #include "GPIO1.cpp" [#define DECLARATIVE_EXAMPLE_MAIN(NAME) int main(int argc, char* argv[]) \ {\ QGuiApplication app(argc,argv);\ app.setOrganizationName("QtProject");\ app.setOrganizationDomain("qt-project.org");\ app.setApplicationName(QFileInfo(app.applicationFilePath()).baseName());\ QQuickView view;\ if (qgetenv("QT_QUICK_CORE_PROFILE").toInt()) {\ QSurfaceFormat f = view.format();\ f.setProfile(QSurfaceFormat::CoreProfile);\ f.setVersion(4, 4);\ view.setFormat(f);\ }\ view.connect(view.engine(), SIGNAL(quit()), &app, SLOT(quit()));\ new QQmlFileSelector(view.engine(), &view);\ view.setSource(QUrl("qrc:///" #NAME ".qml")); \ view.setResizeMode(QQuickView::SizeRootObjectToView);\ qmlRegisterType<Message>("com.myself", 1, 0, "GPIO1"); if (QGuiApplication::platformName() == QLatin1String("qnx") || \ QGuiApplication::platformName() == QLatin1String("eglfs")) {\ view.showFullScreen();\ } else {\ view.show();\ }\ return app.exec();\ }
The code of my component is in file gpio1.h:
#ifndef GPIO1_H #define GPIO1_H #include <QObject> class GPIO1 : public QObject { Q_OBJECT public: explicit GPIO1(QObject *parent = 0) : QObject(parent){} Q_INVOKABLE int test(){ return 1; } signals: public slots: }; #endif // GPIO1_H
QML imports are:
import QtQuick 2.0 import QtQuick.Controls 1.3 import com.myself 1.0
Application compiles successfull, the QML editor recognises GPIO1 as an item. but when i run application, I'am having the error message:
"module com.myself is not installed"
I would appreciate any help.
-
Hi @Eugene-Gromov,
You have registered the component after loading the QML file. It should be done before it. -
Thank you very much, @p3c0 problem solved now :)
-
@Eugene-Gromov Congratulations :)
Also please use ``` (3 bacticks) for posting code blocks. -
Hi and welcome to devnet,
Out of curiosity: why are you including GPIO1.cpp in your main.cpp ?
-
@SGaist, during development I replaced implementation to .h file, forgot to remove #include. Will knock my code into shape :)