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

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的程序演示完成,但这代码里边存在的几个问题,比如设置的按钮位置显示不对,在下一篇文章中,详细研究这些具体界面开发的问题。


http://www.mrgr.cn/news/81833.html

相关文章:

  • python的urllib模块和http模块
  • 如何使用React,透传各类组件能力/属性?
  • 17.3、网络安全应急响应技术与常见的工具
  • 活动预告 | Microsoft Power Platform 在线技术公开课:实现业务流程自动化
  • iPerf3 和 iftop 使用及关系介绍
  • matlab读取二进制文件,要指定保存的数据类型
  • Mac M2 Pro安装MySQL 8.4.3
  • iOS 中的 nil、Nil、NULL、NSNull 僵尸对象和野指针
  • 深度学习笔记(5)——目标检测和图像分割
  • 嵌入式小白
  • 【网络】CookieSession
  • 玩转影刀AI Power-风景小助手教学
  • 2021.12.28基于UDP同信的相关流程
  • 【MySQL】第一弹----库的操作及数据类型
  • Tauri2+Leptos开发桌面应用--Sqlite数据库操作
  • 进军AI大模型-环境配置
  • vue Promise使用
  • Python爬虫(一)- Requests 安装与基本使用教程
  • 二叉树相关性质及其遍历
  • 【老白学 Java】第一次绘制
  • 阿里云人工智能工程师ACA认证免费课程学习笔记
  • Maven + MyBatis
  • MoH:将多头注意力(Multi-Head Attention)作为头注意力混合(Mixture-of-Head Attention)
  • Vuex用法
  • C++进阶重点知识(一)|智能指针|右值|lambda|STL|正则表达式
  • springboot整合log4j2案例以及异常输出格式案例2