(2) qml诞生的原因 和Qt Creator开发环境的介绍

devtools/2024/10/11 3:25:16/

文章目录

  • qml诞生原因
    • Qt Quick应⽤程序
    • Qt Creator环境
        • 1、MSVC
        • 2、MinGW
        • MSVC的优缺点
        • MinGW的优缺点
      • 最后的选择
      • 延伸阅读
    • 一些常用的快捷键
    • 统一格式化代码
    • 统一qml 语言的格式
    • Locator 定位器
    • 帮助

qml诞生原因

可以在Qt5中开发的不同类型的经典应⽤程序。桌⾯应⽤程
序正在发⽣着改变,不久之后移动设备将会为占据我们的世界。移动设备的
⽤户界⾯设计⾮常不同。它们相对于桌⾯应⽤程序更加简洁,只需要专注的
做⼀件事情。动画效果是⼀个⾮常重要的部分,⽤户界⾯需要⽣动活泼。传
统的Qt技术已经不适于这些市场了。
由此qml诞生

Qt Quick应⽤程序

在现代的软件开发中有⼀个内在的冲突,⽤户界⾯的改变速度远远⾼于我们
的后端服务。在传统的技术中我们开发的前端需要与后端保持相同的步调。
当⼀个项目在开发时⽤户想要改变⽤户界⾯,或者在⼀个项目中开发⼀个⽤
户界⾯的想法就会引发这个冲突。敏捷项项目需要敏捷的⽅法。
Qt Quick 提供了⼀个类似HTML声明语⾔的环境应⽤程序作为你的⽤户界⾯
前端(the front-end),在你的后端使⽤本地的c++代码。这样允许你在两端
都游刃有余

Qt Creator环境

需要先到环境里面去构建套件kit
在这里插入图片描述
链接到我们下载qt的目录 会自动识别该目录下面的编译套件 常用的有mingw和 msvc
配置相关的套件
在这里插入图片描述

1、MSVC

即Microsoft Visual C++ Compiler,即微软自己的编译器。

我们下载Windows下的OpenCV时,解压后里面有两个文件夹,一个是build,一个是source,build这个文件夹实际上是官方已经提前给我们编译好了的库,会带两个文件夹VC14,VC15(分别与Visual Studio的版本有对应关系),这两个文件夹下的库可以直接运行不需要编译将VS作为Qt的开发环境也是使用这个编译器的缘故,但是,使用的必须是msvc编译器,不能够跨平台。

2、MinGW

我们都知道GNU在Linux下面鼎鼎大名的gcc/g++,MinGW则是指Minimalist GNU for Windows的缩写它是将GNU开发工具移植到Win32平台下的产物,即一套Windows上的GNU工具集。
用其开发的程序不需要额外的第三方DLL支持就可以在Windows下运行,相对地,不使用动态库导致的就是编译出来的程序大很多。也是可以设置使用静态库的,mingw编译器需要自己手动编译source文件生成库文件,mingw这个编译器能够跨平台,能够在linux、arm等平台使用,这些平台使用的编译器都是g++、gcc。

MSVC的优缺点

优点:

qtcreator的debuger有功能缺陷,经常会出现变量无法查看的问题,棘手的bug还是需要在VS环境下进行调试。很多人的开发模式就是qtcreator写代码,VS下面做调试。

缺点:

不能跨平台

编码的问题,QT5的Qstring默认是UTF8格式,QT5极力推介把源码用UTF8格式存储。 但是MSVC只支持带BOM的UTF8格式,qmake不支持带BOM的UTF8格式,逼我只能用GBK么。这样的话,用qt5,每次都要Qstring::fromLocal8bit(“我是中国人”);况且就算BOM问题解决了,源代码是UTF8了。MSVC的执行编码也是GBK

MinGW的优缺点

优点:

能跨平台

缺点:

MinGW无法利用生成的dump文件在windbg或VS下面定位到出错的代码

Scene3D在MinGW64位Release和MinGW32位Debug模式下运行直接闪退,而64位Debug和32位Release却正常运行。

动态删除继承QuickItem的对象,有几率导致非法内存访问,可以定位到问题在Qt源码中Renderer中的一处

最后的选择

到底选择哪个版本,MinGW 比较方便,配置易上手适合初学者,MSVC功能强大,适合进阶,但是具体项目上要根据依赖的第三方库选择版本。

如果你的第三方库是msvc的,能可能就必须msvc,如果第三方库是mingw的可能就必须mingw。

跨平台开发的话,用的库基本上一定是Linux能用的库,而Linux能用的库一定是在mingw下支持会比较好。(mingw甚至能 include unistd.h 之类的Linux专用头文件),那就优选mingw。

来源:本文为CSDN博主「吻等离子」的原创文章
原文链接:https://blog.csdn.net/qq_43445867/article/details/127889570

延伸阅读

Qt中的各种编译器

1.uic:UI编译器,将.ui文件转化为ui_*.h文件

2.rcc:资源编译器,将.qrc文件转换成qrc_*.h文件

3.moc:元对象编译器,将含有Q_OBJECT的头文件转换成标准.h文件

4.qmake : 把pro文件编译成makefile文件,然后可以调用make命令

5.MSVC:微软VC++编译器

6.MinGW:gcc编译器

一些常用的快捷键

  • Ctrl+B - 构建项目
  • Ctrl+R - 运⾏项目
  • Ctrl+Tab - 切换已打开的⽂档
  • Ctrl+k - 打开定位器
  • Esc - 返回
  • F2 - 查找对应的符号解释。
  • F4 -在头⽂件与源⽂件之间切换(只对c++代码有效)
    在这里插入图片描述
    快捷键配置的位置如上

统一格式化代码

可能需要在此处进行统一的格式化处理代码
限制为MIME类型 :text/x-c++src; text/x-c++hdr; text/x-csrc; text/x-chdr; text/x-objcsrc; text/x-objc++src
没有clang format 需要去网上下载一个 然后指定路径即可
在这里插入图片描述

统一qml 语言的格式

在这里插入图片描述
creator 自带格式化 qml语言的格式化 可以在 qt quick 里面去把相关的 保存时自动格式化给带上

Locator 定位器

在这里插入图片描述
左边底部可以显⽰弹出⼀系列的选项。如果你只是想搜索你项目中的⼀个⽂
件,你只需要给出⽂件第⼀个字⺟提⽰就可以了。定位器也接收通配符,⽐
如*main.qml也可以查找。你也可以通过前缀搜索来搜索指定内容的类型

帮助

在这里插入图片描述
可以查找所有qt api的解释


http://www.ppmy.cn/devtools/46376.html

相关文章

云实例初始化的行业标准:Cloud-Init

01 前言 Cloud-Init[1] 是跨平台云实例初始化的行业标准。它得到了所有主要公共云提供商的支持,适用于私有云基础设施的配置系统以及裸机安装。Cloud-Init 将在启动时识别其运行所在的云环境,读取来自云端提供的任何元数据,并据此初始化系…

拍视频麦克风什么牌子好?户外无线麦克风哪个牌子好,看本期文章

​无线领夹麦克风,作为现代音频技术的重要代表,已经广泛应用于各种场合。它不仅能提高演讲者的声音质量,还能增加演讲的互动性和生动性。然而,面对市场上众多的无线领夹麦克风产品,如何选择一款适合自己的设备成为了一…

旧手机翻身成为办公利器——PalmDock的介绍也使用

旧手机有吧!!! 破电脑有吧!!! 那恭喜你,这篇文章可能对你有点用了。 介绍 这是一个旧手机废物利用变成工作利器的软件。可以在 Android 手机上快捷打开 windows 上的文件夹、文件、程序、命…

Python笔记 - Exception chaining

在Python中,异常链接(Exception Chaining)是指在处理一个异常时抛出另一个异常的技术。这样可以保留原始异常的信息,同时提供新的异常信息。这种机制在调试和错误跟踪时特别有用,因为它保留了异常发生的完整上下文。 …

三维大场景管理-3Dtiles规范

简介 : 这篇文章都是三年前写的了,一直在笔记库存中,今天把他放出来。主要是讲Cesium 的3Dtiles 格式,当然3Dtiles主要是解决场景管理大场景的LOD实现的问题,不管是剔除渲染性能优化之Culling 剔除或者 LOD 、3Dtiles…

【面试】Java的前端编译器和后端编译器

目录 1. 说明2. 前端编译器2.1 主要功能2.2 工作原理 3. 后端编译器3.1 主要功能3.2 工作原理 1. 说明 1.在Java的编译过程中,编译器通常被划分为前端编译器和后端编译器,各自负责不同的任务。2.前端编译器主要负责源代码的词法分析、语法分析和语义检查…

LAMP集群分布式安全方案

实验目的 LAMP(Linux Apache MySQL PHP)是一种常见的Web应用程序堆栈,而LAMP集群是将多个服务器组合在一起以提供高可用性和可扩展性的解决方案。LAMP集群式安全方案的实验目的可以有以下几个方面: 1. 评估集群环境下的数据安…

利用BeanFactoryPostProcessor让Bean提前被创建

起因是bean的一些初始化方法里面,查询数据的时话,用到了Spring的一些Bean,采用的是静态调用。而这些bean还没有被始始化出来。导致空指针异常。需要提前把这部份bean创建好。虽然下面提出的解决方法能解决该问题。但仍然是不推荐的调用。不符…