Подключите сигнал 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"));