【问题标题】:Connect QML signal of arbitrary placed .qml-file to Qt slot将任意放置的 .qml 文件的 QML 信号连接到 Qt 插槽
【发布时间】:2014-11-22 19:19:11
【问题描述】:

我正在尝试将QML 信号连接到Qt 插槽。我读过example 这是代码

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 文件。我该怎么办?

【问题讨论】:

  • 这个问题的标题似乎和你遇到的问题没有任何关系。无论如何,问题似乎是您停止使用QUrl::fromLocalFile()。 URL 不能以 c:\ 开头

标签: qt qml qurl


【解决方案1】:

最好的做法是通过使用 Qt 创建器或手动将 qml 文件放入 .qrc 资源文件中,使您的 qml 文件成为应用程序的一部分:

http://qt-project.org/doc/qt-5/qtquick-deployment.html#managing-resource-files-with-the-qt-resource-system

您可以通过以下方式使用它:

QQuickView view(QUrl("qrc:///res/qml/main.qml"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多