There is a Sailfish OS way to show QML:
#include "sailfishapp.h"
#include <QtQuick>
int main(int argc, char *argv[])
{
QScopedPointer<QGuiApplication> app(SailfishApp::application(argc, argv));
QScopedPointer<QQuickView> view(SailfishApp::createView());
view->setSource(SailfishApp::pathTo(QString("qml/ApplicationTemplate.qml")));
view->show();
return app->exec();
}
For qt/sailfish udrestanding, I wonder how to call QGuiApplication and QQuickView directly, without Sailfish OS wrapper: https://sailfishos.org/develop/docs/libsailfishapp/sailfishapp.html/
There is the only way to get application folder:
QUrl SailfishApp::pathTo(const QString &filename)
Convert a relative resource path into a fully qualified path specific to the application
Used to find the fully qualified path of a file contained within the application’s data directory. The filename parameter should specificify the file relative to the base of the data directory. The returned URL will be a fully qualified path pointing to the file.
The data directory is usually found at /usr/share/$$TARGET (where $$TARGET is the application name), so for an app called harbour-myapp and an input filename of “qmlmyApp.qml” the resulting file would be found at /usr/share/harbour-myapp/qml/myApp.qml
The filename parameter represents the path relative to the application’s data directory.
Returns A fully qualified path pointing to the file.
QUrl SailfishApp::pathToMainQml()
Returns the path to the QML file used as the root of the application UI
This function is used to get a path on the local filesystem of the qml file that is opened when your application starts, and that will form the root of all other QML files displayed by your application…
The path returned will usually be of the form /usr/share/$$TARGET/qml/$$TARGET.qml (where $$TARGET is the application name), so for an app called harbour-myapp the path returned would be /usr/share/harbour-myapp/qml/harbour-myapp.qml
Returns A fully qualified path pointing to the file.
So I have to combine
#include <QtQuick>
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QStandardPaths>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
QQuickView view;
view.setSource(QUrl::fromLocalFile("ApplicationTemplate.qml"));
//curent behavour: the project looks for QML file in /home/defaultuser folder
//the question is how to use
//Url SailfishApp::pathTo(const QString &filename) or
//QUrl SailfishApp::pathToMainQml() to pass to main.cpp path to apllication directory
//
view.show();
return app.exec();
}