Как принять вызов к пользовательскому обработчику URL в Касании Ubuntu QML

У меня есть приложение QML, которое должно реагировать на пользовательский вызов обработчика URL, как "myapp://что-то". Я знаю, что должен зарегистрировать обработчик URL в своем *.desktop файле как:

MimeType=x-scheme-handler/myapp;

Однако я не знаю, где принять вызов к этому обработчику в QML. Кто-то может помочь мне?

Спасибо.

2
задан 29 March 2014 в 13:37

1 ответ

Решение для 14,04 (Легкий, только 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.

Решение для 13,10 (требует C++),

.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 со Свойствами контекста для получения дальнейшей информации.

1
ответ дан 8 October 2019 в 10:14

Другие вопросы по тегам:

Похожие вопросы: