Qt qml Network error问题

最近在学习Qt,需要调用地图,所以用到了QML,但是却遇到了这样的问题

d://qt_project//run//main.qml: Network error

现在我展示一下我的main文件的代码:

cpp 复制代码
#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的资源就可以了

  1. 右键添加新文件
  2. 选择Qt Resource File
  3. 右键点击并添加前缀

  4. 语言不用管,我这里把prefix设置成了/qml
  5. 将文件添加到resource/qml下面
  6. 修改main函数代码如下:
cpp 复制代码
#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代码如下:

cpp 复制代码
import QtQuick 2.15

Rectangle {
    width: 400
    height: 300
    color: "lightblue"

    Text {
        text: "Hello, World!"
        anchors.centerIn: parent
        font.pointSize: 24
    }
}

输出下面的图片就ok了。

本人还是qt的一名新手,有什么不对或者补充的知识,欢迎各位佬在评论区分享,讨论~~~~~。

相关推荐
雪碧聊技术16 分钟前
存储过程的介绍、基本语法、delimiter的使用
数据库·存储过程的基本语法·delimiter的使用
_码农121381 小时前
spring boot 使用mybatis简单连接数据库+连表查询
数据库·spring boot·mybatis
2301_793086872 小时前
JVM 01 运行区域
java·开发语言
愤怒的小鸟~~~2 小时前
c语言创建的一个队列结构(含有这个头指针和这个尾指针的结构具有一定的参考价值)
c语言·开发语言·算法
TTBIGDATA4 小时前
【支持Ubuntu22】Ambari3.0.0+Bigtop3.2.0——Step7—Mariadb初始化
数据库·ambari·hdp·mariadb·bigtop·ttbigdata·hidataplus
大得3694 小时前
django的数据库原生操作sql
数据库·sql·django
tuokuac4 小时前
SQL中的HAVING用法
数据库·sql
爬山算法4 小时前
MySQL(173)MySQL中的存储过程和函数有什么区别?
数据库·mysql
jnrjian4 小时前
利用trigger对大表在线同步 UDI
数据库·sql
Ruimin05194 小时前
Mysql集群技术
数据库·mysql