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

网店代运营网站建设银行信用卡积分兑换话费网站

网店代运营网站,建设银行信用卡积分兑换话费网站,数据营销系统,seo博客教程由于项目原因,最近要进行qml相关开发,我之前也没有搞过qml,因此开一个qml系列的专栏,记录自己关于qml的相关学习新建第一个qml工程按如下图所示方法新建一个最简单的qml工程:编译运行可以看到是一个标题为“hello word…

由于项目原因,最近要进行qml相关开发,我之前也没有搞过qml,因此开一个qml系列的专栏,记录自己关于qml的相关学习

新建第一个qml工程

按如下图所示方法新建一个最简单的qml工程:

编译运行

可以看到是一个标题为“hello word”没有任何内容的空白窗体。

代码解析

main.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>int main(int argc, char *argv[])
{
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endifQGuiApplication app(argc, argv);QQmlApplicationEngine engine;const QUrl url(QStringLiteral("qrc:/main.qml"));QObject::connect(&engine,&QQmlApplicationEngine::objectCreated,&app,[url](QObject *obj, const QUrl &objUrl) {if (!obj && url == objUrl)QCoreApplication::exit(-1);},Qt::QueuedConnection);engine.load(url);return app.exec();
}

可以看到与传统QWidget工程相比关键不同的是这一部分:

    QQmlApplicationEngine engine;const QUrl url(QStringLiteral("qrc:/main.qml"));QObject::connect(&engine,&QQmlApplicationEngine::objectCreated,&app,[url](QObject *obj, const QUrl &objUrl) {if (!obj && url == objUrl)QCoreApplication::exit(-1);},Qt::QueuedConnection);engine.load(url);

如果是QWidget工程这里一般是声明一个窗体比如QWidget然后show()显示。这里有一个很关键的QQmlApplicationEngine类,QML中最关键的也是这个QQmlApplicationEngine

QQmlApplicationEngine 的核心作用

这段代码是 Qt Quick 应用程序的入口核心,与传统QWidget w,w.show()有本质区别。QQmlApplicationEngine负责加载 QML 文件并构建完整的应用程序对象树。比如上面代码engine.load(url)。这是一个QML引擎。

QML 引擎初始化流程

  1. 引擎实例化
    QQmlApplicationEngine engine; 创建 QML 引擎,负责解析 QML 文件、管理组件生命周期和绑定 JavaScript 上下文。

  2. QML 资源定位
    const QUrl url(QStringLiteral("qrc:/main.qml"))指定 QML 入口文件路径。qrc表示从 Qt 资源系统加载,避免文件路径依赖问题。

  3. 对象创建回调
    绑定引擎的信号,用于检测根组件是否成功加载。若失败(!obj 且 URL 匹配),则强制退出应用。

  4. 启动 QML 渲染
    前面都是准备工作,最后关键一步engine.load(url)最终触发 QML 文件的解析和渲染,生成可视化界面。

main.qml

import QtQuick 2.15
import QtQuick.Window 2.15Window {width: 640height: 480visible: truetitle: qsTr("Hello World")
}
  • QtQuick 2.15:导入基础 Qt Quick 模块,包含创建 UI 所需的核心类型
  • QtQuick.Window 2.15:提供窗口管理功能,包含 Window 类型

这里就有一个疑问为什么是2.15,别的行不行?

QtQuick 和 QtQuick.Window 的版本号(如2.15)与Qt框架的版本发布周期相关。每个Qt版本会包含对应的Qt Quick模块更新,版本号反映了模块的兼容性和功能集。所以版本号并非随意选择,而是与Qt发行版中稳定的模块版本一致。例如我使用的Qt版本是5.15.2。Qt 5.15.2中Qt Quick模块的API版本为2.15。

然后下面部分就是定义了一个宽为640px,高为480px并且初始可见,标题为Hello World的window对象。

这里明显就可以看出与传统QWidget开发代码的不同,QWidget 通过代码显式创建控件(命令式),而 QML 通过描述式语言定义界面(声明式),由引擎动态生成对象。并且QWidget 直接操作原生窗口对象,QML 引擎则维护独立的场景图(Scene Graph),通过渲染线程优化性能。

以上就是关于新建的第一个qml工程的代码解析,后续会进一步更新其他相关qml内容。

http://www.dtcms.com/a/439199.html

相关文章:

  • 数字资产离婚分割案:巨额数字资产归谁所有?
  • 网站源码安装教程阳江房产网站
  • 2.VMware上的Kali Linux操作系统安装(2025年10月3日)
  • 全志T113-S3开发板遇到的问题
  • 神卓云监控 K900:异地监控技术落地与方案优化实践
  • 东莞企业网站排名wordpress重置后密码是多少
  • 设计网站建设网站美化教程下载
  • 队列算法精讲:从栈与队列互实现到循环队列(待补充)
  • 蝴蝶优化算法:原理、改进与应用
  • 你会怎么做外国的网站建一个购物网站多少钱
  • 数据驱动下的集成学习实战:从算法选型到业务落地的完整方法论
  • dw旅游网站模板下载物流网站如何设计
  • 建网站能挣钱吗WordPress老文章提示
  • 类中特殊成员(Num018)
  • 网站策划书市场分析商场设计案例分析
  • 比利时网站后缀做漫画封面的网站
  • [创业之路-666]:第四次工业革命(智能革命)未来将创造大量的财富,普通人通过哪些方式参与这些财富的创造与分享?
  • 力扣2653. 滑动子数组的美丽值
  • 网站开发的常见编程语言有哪些成都广告公司招聘信息
  • 给网站做引流多少钱网站sem怎么做
  • 辽宁省水利建设市场信用信息平台网站营销推广策划
  • 欢迎进入河南国安建设集团有限公司网站十大不收费看盘软件排名下载
  • 淘宝上面建设网站安全么夜猫直播视频下载
  • 宝应网站设计17做网站 一件代发
  • DBCA静默创建Oracle CDB与PDB:两种实战方法详解
  • ARM内核
  • 佛山网站建设哪个wordpress主题汉化版
  • 乐山网站制作设计公司网页设计规范图标设计
  • Kubernetes中配置NGINX仅支持TLSv1.3全攻略
  • 国外直播做游戏视频网站有哪些开个网站卖机器怎么做