当前位置: 首页 > article >正文

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();
}

(5/28注:更新一下,这里可以用绝对路径,按照下面写就行了,下面的信息我不删了,就当分享一下添加qml文件了

    view->setSource(QUrl(QStringLiteral("file:///D://QT_project//run//main.qml")));

搜索了大量的资料后最后还是问AI解决了问题,这里看第四行我这里用的是绝对路径,这就意味着,必须要对本机的资源进行访问,然后就network error了(具体原因我其实也没弄清楚,要是有佬明白可以在评论区分享一下!)

我们访问的时候,按照下面步骤将main.qml设置成QT的资源就可以了

  1. 右键添加新文件
  2. 选择Qt Resource File
    在这里插入图片描述
  3. 右键点击并添加前缀
    在这里插入图片描述
    在这里插入图片描述
  4. 语言不用管,我这里把prefix设置成了/qml
    在这里插入图片描述
  5. 将文件添加到resource/qml下面
  6. 修改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的一名新手,有什么不对或者补充的知识,欢迎各位佬在评论区分享,讨论~~~~~。

http://www.lryc.cn/news/2387528.html

相关文章:

  • Prompt工程:解锁大语言模型的终极密钥
  • Spring Boot微服务架构(六):伪装的微服务有哪些问题?
  • 恶意npm与VS Code包窃取数据及加密货币资产
  • Matlab快速上手五十六:详解符号运算里假设的用法,通过假设可以设置符号变量的取值范围,也可以通过假设设置变量属于集合:整数、正数和实数等
  • 机器学习笔记【Week1】
  • 什么是3D全景视角?3D全景有什么魅力?
  • 【Mini-F5265-OB开发板试用测评】按键控制测试
  • Debian重装系统后
  • 每日Prompt:古花卷
  • [学习]C语言指针函数与函数指针详解(代码示例)
  • 夏季用电高峰如何防患于未“燃”?电力测温技术守护城市生命线
  • 浙大版《Python 程序设计》题目集6-3,6-4,6-5,6-6列表或元组的数字元素求和及其变式(递归解法)
  • Leetcode 3563. Lexicographically Smallest String After Adjacent Removals
  • 【创造型模式】抽象工厂方法模式
  • 一台手机怎样实现多IP上网?方法有多种
  • 【FFmpeg+SDL】播放音频时,声音正常但是有杂音问题(已解决)
  • Linux 527 重定向 2>1 rsync定时同步(未完)
  • 3DVR拍摄指南:从理论到实践
  • OSI模型中的网络协议
  • 【C/C++】线程局部存储:原理与应用详解
  • 分块查找详解
  • leetcode hot100刷题日记——21.不同路径
  • Elasticsearch 如何实现跨数据中心的数据同步?
  • C语言学习笔记三 --- V
  • 通过JS模板引擎实现动态模块组件(Vite+JS+Handlebars)
  • 梯度消失和梯度爆炸的原因及解决办法
  • 欧拉定理:若 gcd(a,n)=1,则 a^φ(n)≡1(mod n)。
  • fvm install 下载超时 过慢 fvm常用命令、flutter常用命令
  • Python正则表达式:30秒精通文本处理
  • Introduction to SQL