Qt qml Network error问题
最近在学习Qt,需要调用地图,所以用到了QML,但是却遇到了这样的问题
d://qt_project//run//main.qml: Network error
现在我展示一下我的main文件的代码:
#include <QApplication>
#include <QQuickView>
#include <QQmlContext>
#include <QGeoCoordinate> // 添加 QGeoCoordinate 头文件
#include <QQmlEngine>
int main(int argc,char *argv[])
{QApplication a(argc, argv);QQuickView *view=new QQuickView();view->engine()->rootContext()->setContextProperty("center", QVariant::fromValue(QGeoCoordinate(-25.363, 131.044)));view->setSource(QUrl(QStringLiteral("D://QT_project//run//main.qml")));view->show();return a.exec();
}
搜索了大量的资料后最后还是问AI解决了问题,这里看第四行我这里用的是绝对路径,这就意味着,必须要对本机的资源进行访问,然后就network error了(具体原因我其实也没弄清楚,要是有佬明白可以在评论区分享一下!)
我们访问的时候,按照下面步骤将main.qml设置成QT的资源就可以了
- 右键添加新文件
- 选择Qt Resource File
- 右键点击并添加前缀
- 语言不用管,我这里把prefix设置成了/qml
- 将文件添加到resource/qml下面
- 修改main函数代码如下:
#include <QApplication>
#include <QQuickView>
#include <QQmlContext>
#include <QGeoCoordinate> // 添加 QGeoCoordinate 头文件
#include <QQmlEngine>
int main(int argc,char *argv[])
{QApplication a(argc, argv);QQuickView *view=new QQuickView();//缺什么补什么就行view->engine()->rootContext()->setContextProperty("center", QVariant::fromValue(QGeoCoordinate(-25.363, 131.044)));//view->setSource(QUrl(QStringLiteral("qrc:/qml/main.qml")));view->show();return a.exec();
}
其实就是修改那个Qurl那个,这里的前缀qrc就是表示是qt的资源,这样我们就可以直接在qt里面访问到main.qml而就不用借用network去访问本机的资源了。
下面给一个示例,可以自行测试一下,main函数代码不用改,main.qml代码如下:
import QtQuick 2.15Rectangle {width: 400height: 300color: "lightblue"Text {text: "Hello, World!"anchors.centerIn: parentfont.pointSize: 24}
}
输出下面的图片就ok了。
本人还是qt的一名新手,有什么不对或者补充的知识,欢迎各位佬在评论区分享,讨论~~~~~。