Подключите сигнал QML произвольно размещенного.qml-файла к слоту Qt

Я пытаюсь подключиться QML сигнал к Qt слот. Я прочитал этот пример и вот код

int main(int argc, char *argv[]) {
    QGuiApplication app(argc, argv);
    qDebug()<<QUrl::fromLocalFile("main.qml");
    QQuickView view(QUrl::fromLocalFile("main.qml"));//I should replace that line
    QObject *item = view.rootObject();

    MyClass myClass;
    QObject::connect(item, SIGNAL(qmlSignal(QString)),
                     &myClass, SLOT(cppSlot(QString)));

    view.show();
    return app.exec();

}

Работает нормально, но проблема в том, что main.qml должен быть в папке, где .exe файл есть. Итак, каждый раз, когда я изменяю main.qml Я должен скопировать это в другой фодер. Путь к файлу main.qml это: "C:\Qt\projects\ConnectionsQT\main.qml". Я попытался заменить строку на

QQuickView view(QUrl("‪C:\Qt\projects\ConnectionsQT\main.qml");

и по

QQuickView view(QUrl("‪C:\\Qt\\projects\\ConnectionsQT\\main.qml");

но в этом случае программа не может найти main.qml файл. Что я должен делать?

1 ответ

Хорошей практикой является сделать ваш qml-файл частью исполняемого файла приложения, поместив его в файл ресурсов.qrc с помощью Qt creator или вручную:

http://qt-project.org/doc/qt-5/qtquick-deployment.html

И вы можете использовать это с чем-то вроде:

QQuickView view(QUrl("qrc:///res/qml/main.qml"));
Другие вопросы по тегам