У меня есть приложение QML, которое должно реагировать на пользовательский вызов обработчика URL, как "myapp://что-то". Я знаю, что должен зарегистрировать обработчик URL в своем *.desktop файле как:
MimeType=x-scheme-handler/myapp;
Однако я не знаю, где принять вызов к этому обработчику в QML. Кто-то может помочь мне?
Спасибо.
Следующий код QML будет работать над 14,04 только потому, что он требует Qt >= 5.1
(и Надежный человек обеспечивает 5.2.1
).
У Вас может быть a .desktop
файл, содержащий:
Exec=/usr/bin/qmlscene %U /path/to/your/qml-app/myapp.qml
MimeType=x-scheme-handler/myapp
и используйте Qt.application.arguments[1]
получить содержание URL.
.desktop файл очень похож на предыдущий, но здесь qmlscene
заменяется под названием Ваше приложение:
Exec=/path/to/your/binary_app %U
MimeType=x-scheme-handler/myapp
Для 13,10, необходимо будет использовать некоторый C++ и проанализировать аргументы с помощью этого типа приложения:
#include <QtGui/QGuiApplication>
#include "qtquick2applicationviewer.h"
#include <QQmlContext>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QtQuick2ApplicationViewer viewer;
// Register the URL with the QML runtime
viewer.rootContext()->setContextProperty("url", app.arguments().at(1));
// Now, load the main page
viewer.setMainQmlFile(QStringLiteral("qml/myapp.qml"));
viewer.showExpanded();
return app.exec();
}
Вы сможете получить URL от QML благодаря setContextProperty ().
Посещение, Встраивающее Объекты C++ в QML со Свойствами контекста для получения дальнейшей информации.