QML工程之初始工程代码分析

news2024/9/26 3:26:20
  1. 接着上一讲,当建立完工程之后,IDE 会呈现如下的界面

  1. 下面的代码是main.cpp,工程起始运行的代码段,具体的函数说明都在代码段里面进行了标注。

#include <QGuiApplication> //主要是ui进程运行头函数,包含事件循环,运行前初始化等
#include <QQmlApplicationEngine> //按照字面的意思是解析Qml应用程序引擎库函数 加载 解析 事件绑定等功能

int main(int argc, char *argv[])
{
    qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));//初始化虚拟键盘环境

    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);//设置高清屏幕预览自适应

    QGuiApplication app(argc, argv); //定义一个应用程序 对象

    QQmlApplicationEngine engine;    //定一个qml应用程序引擎 对象
    const QUrl url(QStringLiteral("qrc:/main.qml")); //加载qml文件
    QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
                     &app, [url](QObject *obj, const QUrl &objUrl) { //

        if (!obj && url == objUrl) //当创建qml对象失败的时候退出
            QCoreApplication::exit(-1);
    }, Qt::QueuedConnection); //connect 最后一个参数设置同步异步信号处理,具体参考https://blog.csdn.net/prefect_boy/article/details/101016393 相关文件介绍

//当发射者engine 触发objectCreated信号的时候运行lambada表达式
    engine.load(url); //在这里进行加载qml文件 当创建完成会调用objectCreated 信号,我猜了 哈哈

    return app.exec(); //线程进入循环等待 直到内部有函数终止进行函数调用
}
  1. 接下来开始讲解main.qml 这个就是界面展示的具体实现代码,如果有html css 前端基础的话很容易理解。有兴趣的话可以学习相关前端HTML 教程技术https://www.runoob.com/html/html-tutorial.html ,对后续qml的开发有很大的帮助;

  1. 前面的操作利用qml engine -〉load 这个函数 进行加载和展示main.qml 里面的内容:

QML 类似于网页设计的 HTML,是一种标记语言,我们可以借助 CSS 对它进行美化,也可以借助 JavaScript 进行交互。有 Web 开发经验的读者学习 QML 将非常轻松。

使用 QML 开发界面主要有以下几个优点:

  • QML 非常灵活,可以做出非常炫酷的效果,例如 QQ、360、迅雷等都不在话下。

  • QML 是标记语言,见名知意,非常容易编写和阅读,大大提高了开发和维护效率。

  • QML 界面简洁大气,有很多动画,适合移动端。

  • 不同平台下的 QML 使用相同的渲染机制,界面效果一致,不会随操作系统的不同而变化。

import QtQuick 2.12  //代码库的引用方式和python的方式很像 quick理解为事件处理类吧
import QtQuick.Window 2.12   //理解为控件样式类吧
import QtQuick.VirtualKeyboard 2.4

Window {  //定义主窗口
    id: window    //窗口的id
    visible: true   //是否隐藏
    width: 640    //界面的大小设置
    height: 480
    title: qsTr("Hello World")  //head 展示字体

    InputPanel { //调用虚拟键盘 刚开始可以不了解这些 后续需要使用输入事件的时候再讲
        id: inputPanel
        z: 99
        x: 0
        y: window.height
        width: window.width

        states: State {
            name: "visible"
            when: inputPanel.active
            PropertyChanges {
                target: inputPanel
                y: window.height - inputPanel.height //显示的键盘高度
            }
        }
        transitions: Transition {//transition 定义了当 State 发生变化时要应用的动画。
            from: ""
            to: "visible"
            reversible: true
            ParallelAnimation {
                NumberAnimation {
                    properties: "y"
                    duration: 250
                    easing.type: Easing.InOutQuad
                }
            }
        }
    }
}
  1. 本节内容主要讲解了main函数初始化和了解如何加载main.qml 文件,和qml简单的语法讲解。下一节就开始了真正的qml的学习了,例如 在主界面添加按钮 绑定按钮事件,初始化edit text等常用的控件。敬请期待下一节 再会!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/170483.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

寻找数组的中心下标

Python-寻找数组的中心下标 题目 给你一个整数数组 nums &#xff0c;请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标&#xff0c;其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端&#xff0c;那么左侧数之和视为 0 &#xff0c;因…

佳讯频传!安全狗多项能力获信通院认可

近期&#xff0c;信通院发布了其主导的《基于云的工作负载保护平台能力要求》标准以及《零信任产业图谱》。 作为国内云原生安全领导厂商&#xff0c;安全狗也凭借自身综合且突出的安全能力获得信通院认可。 厦门服云信息科技有限公司&#xff08;品牌名&#xff1a;安全狗&a…

【SpringBoot高级篇】SpringBoot集成RocketMQ消息队列]

【SpringBoot高级篇】SpringBoot集成RocketMQ消息队列]RocketMQ简介技术架构基本概念Docker环境安装RocketMQrocketmq-client消息发送基本样例消息发送发送同步消息发送异步消息单向发送消息消费消息负载均衡模式广播模式顺序消息顺序消息生产顺序消费消息延时消息启动消息消费…

基于M实现的JWT解决方案

文章目录基于M实现的JWT解决方案简介现状原理JWT 组成结构头部Header有效载荷Payload哈希签名SignatureJWT完整结果JWT基于M的使用流程总结完整代码基于M实现的JWT解决方案简介JWT 英文名是 Json Web Token &#xff0c;是一种用于通信双方之间传递安全信息的简洁的、URL安全的…

2023年,PMP认证考试的心得分享

对于刚开始要准备参加PMP考试的人&#xff0c;大多应该都是不知道怎么去考试复习好的。PMP认证考试虽是美国的考试&#xff0c;但其实这跟国内其它的考试复习也差不多&#xff0c;没有什么很特别之处&#xff0c;只是多了一个中英互译&#xff0c;再就是学习的内容不一样&#…

windows系统中环境系统变量和用户变量的区别

前言 -- 什么是环境变量一般我们安装软件之后&#xff0c;为了能够在cmd命令行运行软件&#xff0c;一般都需要设置一下环境变量&#xff0c;否则就会出现找不相关命令的错误提示。所谓环境变量&#xff0c;可以简单理解为就是给操作系统定义的一些路径和名称。比如使用最常使用…

个人对粗糙集的一些理解和简单举例

文章目录1、 数据价值密度低的解决方案1.1 粗糙集中对应的概念&#xff1a;属性约简1.2 属性约简的好处1.3 粗糙集的应用2、粗糙集的简介--->原理2.1 粗糙集的概念2.2 从例子看粗糙集2.3 粗糙集模型的分类及其评估标准3、粗糙集的主要研究方向3.1 模型创新3.2 属性约简3.3 提…

浅析正则表达式+范围规则校验表达式+js从字符串中截取数字

平时项目中经常需要用到正则表达式&#xff0c;可惜之前太懒(当然最主要是太菜也不会写)都是直接网上搜。之前用的也简单&#xff0c;无非是校验手机号码格式、校验邮箱格式、偶尔有校验密码这种&#xff0c;网上一搜一大堆&#xff0c;根本不用自己写&#xff0c;结果前段时间…

【ONE·C || 函数与数组】

总言 C语言&#xff1a;函数、数组初步认识。 文章目录总言1、函数1.1、是什么1.1.1、基本介绍1.1.2、库函数使用演示(strcpy、memset)1.1.3、自定义函数使用演示1.2、函数参数、传值调用和传址调用1.3、相关练习1.3.1、写一个函数&#xff1a;可以判断一个数是不是素数1.3.2、…

集成学习-理论概述

1、集成学习概述集成学习(ensemble learning)本身不是一个单独的机器学习算法&#xff0c;而是通过构建并结合多个机器学习器来完成学习任务。集成学习的特点&#xff1a;集成方法是一种将几种机器学习技术组合成一个预测模型的元算法&#xff0c;以减小方差&#xff08;baggin…

python-文件和异常

1. 从文件中读取数据1.1. 读取整个文件在同目录下创建textA文本文件123 456 789a. open函数&#xff1a;要以任何方式去使用文件&#xff0c;都需要先打开文件&#xff0c;它接受一个参数——要打开文件的名称。 open()返回一个表示文件的对象。b. 关键字with在不再需要访问文件…

可以自动生成日报的清单工具

用过了很多todolist工具&#xff08;Microsoft_ _To D、oodoist、滴答清单、印象笔记、有道笔记、&#xff09; 最终稳定一直在用的就这一个“闪点清单” 我的核心诉求就两点 1. 可以实时记录任务&#xff0c;并标记是否完成 2. 可以按天、周导出&#xff0c;自动整合成日报…

《计算机构造与解释》读书笔记(4)

文章目录1. 写在最前面2. 并发&#xff1a;时间是一个本质问题2.1 并发系统中时间的性质2.1.1 并发程序的正确行为2.2 控制并发的机制2.2.1 对共享变量的串行访问2.2.2 Schema 里的串行化2.2.3 使用多重共享资源的复杂性2.2.4 串行化实现2.2.5 死锁2.2.6 并发性、时间和通信3. …

Linux学习记录——구 进程概念的基础理解

文章目录一、操作系统概念理解二、进程的基本理解1、什么是进程&#xff1f;2、进程的属性1、指令查看进程2、目录查看进程3、进程与进程之间1、父子进程概念2、创建子进程---fork的基础使用方法3、fork原理的初级理解1、fork的操作2、fork如何看待代码和数据3、fork如何看待两…

【Docker概念和实践 2】虚拟机 ubuntu18上安装docker

一、说明 已经安装了N遍Docker了&#xff0c;逐步成了一套习惯&#xff0c;这里专门记录之&#xff1b;总之&#xff0c;安装前必须回答得问题是&#xff1a;何种操作系统、何种版本、是否虚拟机、云数据源等问题。一个环境如果装得好&#xff0c;就不需要重装&#xff0c;如果…

C语言刷题之摩尔投票法

目录 1.引入 2.摩尔投票算法 3.基本步骤 摩尔投票法分为两个阶段&#xff1a; 1.抵消阶段 2.检验阶段 4.代码实现 5.扩展沿伸 6.总结 1.引入 我们来看一个问题&#xff1a; 假设有一个无序数组长度为n&#xff0c;要求找出其中出现次数超过n/2的数&#xff0c;要求时间复…

vue3-环境搭建(docker版本)

序 大大小小项目经历无数&#xff0c;之前都是写的vue2的项目&#xff0c;因为项目需要&#xff0c;边学边用vue3&#xff0c;也算能转的开&#xff0c;但心里一直想系统的理顺一下vue3。 看了看极客时间&#xff0c;掘金小课&#xff0c;都没有能达到心里预期的“系统学习”…

免费内网穿透软件一步设置实现外网访问

在工作和生活中&#xff0c;有很多类似内网搭建服务器和外网连接内网的需求&#xff0c; 例如在任何地方都能访问自己家里的主机电脑笔记本上的应用&#xff0c;让出差外网和任何地方都能访问到公司内部局域网的服务器……这些需求我们可以统一用一个方案解决&#xff0c;那就是…

网络编程UDP+TCP

日升时奋斗&#xff0c;日落时自省 目录 1、网络编程基本概念 2、UDP数据报套接字编程 2.1、UDP相关API 2.1.1、DatagramSocket API 2.1.2、DatagramPacket API 2.2、UDP版本服务器 2.3、UDP版本客户端 2.4、UDP连接操作 2.5、翻译业务 2.6、总结 3、TCP流套接字编程 …

【项目实战】一文入门项目中Lombok的常用注解

一、Lombok介绍 1.1 Lombok是什么&#xff1f; 一个Java库&#xff0c;用于简化Java代码。 Lombok是一个非常神奇的 java 类库&#xff0c;会利用注解自动生成 java Bean 中烦人的 Getter、Setting&#xff0c;还能自动生成 logger、ToString、HashCode、Builder 等 java特色…