QML学习(五) 做出第一个简单的应用程序

通过前面四篇对QML已经有了基本的了解,今天先尝试做出第一个单页面的桌面应用程序。
1.首先打开Qt,创建项目,选择“QtQuick Application - Empty” 空工程。
在这里插入图片描述
2.设置项目名称和项目代码存储路径
在这里插入图片描述
3.这里要注意选择你的编译器类型,以及输出的程序时32位还是64位。
在这里插入图片描述
4.然后一路下一步生成项目框架,这时候发现,项目工程中生成了这些文件:
在这里插入图片描述
“TestItem.pro”是项目的工程文件;
“main.cpp”是主main的cpp文件;
“qml.qrc”其实算是资源文件,以后添加图片什么的,也可以直接修改这个文件;
“main.qml”就是设计界面的QML文件;

5.先直接编译尝试,可以直接编译通过,并且能Run运行程序,真是一个空的窗体:
在这里插入图片描述

6.虽然你编译能通过,但打开“main.qml”发现第二行提示导入模块报错“QML module not found (QtQuick.window)”
在这里插入图片描述
这种情况通常是由于QML_IMPORT_PATH没有设置好。在电脑的系统环境变量里添加或者直接在项目的pro文件中添加,如下所示
在这里插入图片描述
7.为“QML_IMPORT_PATH”添加Qt安装时实际的qml的安装路径
在这里插入图片描述
添加完成后,回过头来看“main.qml”的报错提示已经消失了。
在这里插入图片描述
至此,我们没有写一行代码,完成了一个空工程,主要是为了验证我们的开发环境,确保开发环境正常。

我们先简单解读一下main.cpp文件

#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

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

在代码中,第二行包含头文件“#include ”。QQmlApplicationEngine 是 Qt 框架中用于加载 QML 应用程序的一个类,它是 QQmlEngine 的一个子类。它提供了一种方便的方式来加载和运行 QML 应用程序,这里就是为了加载和运行 QML 应用程序。
所以,在main()函数中创建了“QQmlApplicationEngine ”对象“engine”。调用“engine.load”方法来加载qml设计的界面,以及连接engine对象的objectCreated信号用以退出程序。

接下来,要做一些简单的页面,只需修改“main.qml”文件,我们尝试添加一些元素。
(1)改掉标题
在这里插入图片描述
(2)加一个矩形
在这里插入图片描述
(3)添加一行文字
在这里插入图片描述

(4)添加一个按钮
在这里插入图片描述
出现错误提醒"Unknown component.(M300)",这是由于没有引入“QtQuick.Controls”,import导入该模块后即正常。
在这里插入图片描述
Ok,按钮和文字都能展示出来,一个QML的程序演示完成,但这代码里边存在的几个问题,比如设置的按钮位置显示不对,在下一篇文章中,详细研究这些具体界面开发的问题。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Dockerfile基础指令

1.FROM 基于基准镜像&#xff08;建议使用官方提供的镜像作为基准镜像&#xff0c;相对安全一些&#xff09; 举例&#xff1a; 制作基准镜像&#xff08;基于centos:lastest&#xff09; FROM cenots 不依赖于任何基准镜像 FROM scratch 依赖于9.0.22版本的tomcat镜像 FROM…

光谱相机的工作原理

光谱相机的工作原理主要基于不同物质对不同波长光的吸收、反射和透射特性存在差异&#xff0c;以下是其具体工作过程&#xff1a; 一、光的收集 目标物体在光源照射下&#xff0c;其表面会对光产生吸收、反射和透射等相互作用。光谱相机的光学系统&#xff08;如透镜、反射镜…

Windows Subsystem for Linux (WSL)

目录 定义与功能 版本与特点 应用场景 启用 WSL 功能 更新WSL及其内核 下载Linux发行版本 WSL&#xff08;Windows Subsystem for Linux&#xff09;是微软在Windows 10和Windows 11中引入的一项功能&#xff0c;使用户能够在Windows上原生运行Linux的命令行工具和应用程…

基于springboot的汽车租赁系统丨源码+数据库+万字文档+PPT

作者简介&#xff1a; 作者&#xff1a;学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”&#xff0c;支持远程部署调试、运行安装。 技术框架 开发语言&#xff1a;Java 框架&#xff1a;spring…

ECharts仪表盘-GaugeCar,附视频讲解与代码下载

引言&#xff1a; ECharts仪表盘&#xff08;Gauge Chart&#xff09;是一种类似于速度表的数据可视化图表类型&#xff0c;用于展示单个或多个变量的指标和状态&#xff0c;特别适用于展示指标的实时变化和状态。本文将详细介绍如何使用ECharts库实现一个仪表盘&#xff0c;…

Debian安装配置RocketMQ

安装配置 本次安装在/tools/rocket目录下 下载 wget https://dist.apache.org/repos/dist/release/rocketmq/5.3.1/rocketmq-all-5.3.1-bin-release.zip 解压缩 unzip rocketmq-all-5.3.1-bin-release.zip 如果出现以下报错 -bash: unzip: command not found可安装unzip工具后执…

单纯从配色看:飞书B端界面超出大多数B端界面的窠臼。

提及管理系统界面的配色&#xff0c;大家的第一印象就是蓝色&#xff0c;导航栏居左&#xff0c;深蓝色。不是说这种配色和布局不好&#xff0c;而是说看多了就腻歪了&#xff0c;本次分享一些飞书的后台界面&#xff0c;虽说也是左右布局&#xff0c;布局上没有啥突破。 但是…

Jupyter在运行上出现错误:ModuleNotFoundError: No module named ‘wordcloud‘

问题分析&#xff1a;显示Jupyter未安装这个模板 解决办法&#xff1a;在单元格内输入&#xff1a;!pip install wordcloud

《Vue3 二》Vue 的模板语法

在 React 中&#xff0c;想要编写 HTML&#xff0c;是使用 JSX&#xff0c;之后通过 Babel 将 JSX 编译成 React.createElement 函数调用&#xff1b;在 Vue 中&#xff0c;也支持 JSX 的开发模式&#xff0c;但大多数情况下都是使用基于 HTML 的模板语法&#xff0c;在模板中允…

idea 安装插件(在线安装、离线安装)

目录 在线安装 离线安装 在线安装 1、打开IntelliJ IDEA 2024.x软件&#xff0c; 点击file-Settings 2、点击搜索框&#xff0c;输入plugins&#xff0c;找到plugins列&#xff0c;输入xxx软件--点击install 安装 3、重启idea 离线安装 1、在官网上下载插件包 &#xff08;1&…

FPGA三模冗余TMR工具(二)

学术和商业领域有许多自动化的三模冗余TMR工具&#xff0c;本文介绍当前主流的基于寄存器传输级的三模冗余工具&#xff08;Register-Transfer Level&#xff0c;RTL&#xff09;&#xff0c;基于重要软核资源的三模冗余工具&#xff0c;以及新兴的基于高层次综合的三模冗余工具…

Ubuntu 中安装 RabbitMQ 教程

简介 RabbitMq作为一款消息队列产品&#xff0c;它由Erlang语言开发&#xff0c;实现AMQP&#xff08;高级消息队列协议&#xff09;的开源消息中间件。 应用场景 异步处理 场景说明&#xff1a;用户注册后&#xff0c;注册信息写入数据库&#xff0c;再发邮件、短信通知。 …

WPF TextBox 输入限制 详解

总目录 前言 通常对于WPF输入框 输入的控制无非以下方式 1 直接禁止输入(包括粘贴) 不符合要求的字符 如只可输入数字的输入框&#xff0c;当你输入字母的时候是无法输入的 2 输入后&#xff0c;校验内容是否符合要求&#xff0c;然后提示错误&#xff0c;禁止提交信息 如只可…

Docker 安装与配置 Nginx

摘要 1、本文全面介绍了如何在 Docker 环境中安装和配置 Nginx 容器。 2、文中详细解释了如何设置 HTTPS 安全连接及配置 Nginx 以实现前后端分离的代理服务。 2、同时&#xff0c;探讨了通过 IP 和域名两种方式访问 Nginx 服务的具体配置方法 3、此外&#xff0c;文章还涵…

Linux学习2.0——vi编辑器和gcc编译器的使用

vi是一种方便的代码编辑器&#xff0c;Linux系统一般是自带的、 vi和vim的区别&#xff1a;vim是vi的升级版&#xff0c;基础功能两者一致&#xff0c;不过在嵌入式开发板中 只有vi没有vim&#xff0c;但是在Ubuntu上我们可以使用vim编辑器&#xff0c;它的功能更加丰富。 这里…

有一个4*5的矩阵如下,要求编写程序计算总和与平均值,并找出其中值最大的那个元素输出,以及其所在的行号和列号。

一、题目 二、代码解析 max_value 被初始化为矩阵的第一个元素 matrix[0][0]。max_row 和 max_col 分别被初始化为 0&#xff0c;表示最大值所在的行和列。s 被初始化为 0&#xff0c;用于累加矩阵中的所有元素。外层循环 for k in range(len(matrix)) 遍历矩阵的每一行。内层…

html + css 淘宝网实战

之前有小伙伴说&#xff0c;淘宝那么牛逼你会写代码&#xff0c;能帮我做一个一样的淘宝网站吗&#xff0c;好呀&#xff0c;看我接下来如何给你做一个淘宝首页。hahh,开个玩笑。。。学习而已。 在进行html css编写之前 先了解下网页的组成和网页元素的尺寸吧 1.网页的组成 …

网神SecFox FastJson反序列化RCE漏洞复现(附脚本)

0x01 产品描述&#xff1a; ‌网神SecFox是奇安信网神信息技术(北京)股份有限公司推出的一款运维安全管理与审计系统‌&#xff0c;集“身份认证、账户管理、权限控制、运维审计”于一体&#xff0c;提供统一运维身份认证、细粒度的权限控制、丰富的运维审计报告、多维度的预警…

MoH:将多头注意力(Multi-Head Attention)作为头注意力混合(Mixture-of-Head Attention)

摘要 https://arxiv.org/pdf/2410.11842? 在本文中&#xff0c;我们对Transformer模型的核心——多头注意力机制进行了升级&#xff0c;旨在提高效率的同时保持或超越先前的准确度水平。我们表明&#xff0c;多头注意力可以表示为求和形式。鉴于并非所有注意力头都具有同等重…

uniapp——微信小程序读取bin文件,解析文件的数据内容(三)

微信小程序读取bin文件内容 读取用户选择bin文件&#xff0c;并解析数据内容&#xff0c;分包发送给蓝牙设备&#xff1b; 文章目录 微信小程序读取bin文件内容读取文件读取内容返回格式 API文档&#xff1a; getFileSystemManager 关于App端读取bin文件&#xff0c;请查看&…