当前位置:网站首页>1、项目准备与新建
1、项目准备与新建
2022-06-27 01:59:00 【无休止符】
目录
一、环境搭建
1 - Qt安装
- Qt版本:Qt 5.9.8
- Qt开发环境搭建:参考地址 -> https://blog.csdn.net/qq23001186/article/details/125469147
2 - FFmpeg安装
二、Qt项目组成和管理
- Qt项目管理窗口:在Qt Creator左侧工具栏中单击“编辑”按钮,即可进入项目管理窗口;Qt Creator可以打开多个项目,但只有一个活动项目,活动项目名称加粗显示
- 在项目名称节点下,分组管理着各种源文件,文件和分组如下
- xxx.pro文件:是项目管理文件,包括一些对项目的设置项
- Headers分组:该节点下是项目内的所有头文件(.h)
- Sources分组:该节点下是项目内的所有C++源文件(.cpp)
- Resources分组:该节点下项目内的各种资源文件,如QML文件,图标(图片)文件,翻译文件等;使用qrc文件加载资源
三、.pro项目文件简介
- .pro文件注释:使用
#进行注释
| 关键字 | 释义 |
|---|---|
TEMPLATE | 指定qmake为这个应用程序生成哪种makefile |
QT | 指定所要使用的Qt模块(默认是core gui,对应于QtCore和QtGui模块) |
CONFIG | 配置变量指定了编译器所要使用的选项和所需要被连接的库 |
TARGET | 指定可执行文件或库的基本文件名,其中不包含任何的扩展、前缀或版本号(默认的是当前的目录名) |
DEFINES | 应用程序所需的额外的预处理程序定义的列表 |
SOURCES | 应用程序中的所有源文件的列表 |
HEADERS | 应用程序中的C++头文件(.h) |
FORMS | 应用程序中的所有.ui文件(由Qt设计器生成)的列表 |
DESTDIR | 放置可执行程序目标的目录 |
INCLUDEPATH | 应用程序所需的额外的包含路径的列表 |
DEPENDPATH | 应用程序所依赖的搜索路径 |
VPATH | 寻找补充文件的搜索路径 |
DEF_FILE | 只有Windows需要:应用程序所要连接的.def文件 |
RC_FILE | 只有Windows需要:应用程序的资源文件 |
RES_FILE | 只有Windows需要:应用程序所要连接的资源文件 |
- TEMPLATE关键字类型
| TEMPLATE关键字内容 | 释义 |
|---|---|
app | 建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。 |
lib | 建立一个库的makefile。当使用这个模板时,除了“app”模板中提到系统变量,还有一个VERSION是被支持的。你需要在为库指定特定信息的.pro文件中使用它们。VERSION - 目标库的版本号,比如,2.3.1 |
vcapp | 建立一个应用程序的Visual Studio项目文件 |
vclib | 建立一个库的Visual Studio项目文件 |
subdirs | 这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile。在这个模板中只有一个系统变量SUBDIRS可以被识别。这个变量中包含了所要处理的含有项目文件的子目录的列表。这个项目文件的名称是和子目录同名的,这样qmake就可以发现它。例如,如果子目里是“myapp”,那么在这个目录中的项目文件应该被叫做myapp.pro |
- CONFIG关键字类型:配置变量指定编译器所要使用的选项和所需要被连接的库。配置变量中可以添加任何东西,但只有下面这些选项可以被qmake识别
| CONFIG关键字内容 | 释义 |
|---|---|
release | 应用程序将以release模式连编。如果“debug”被指定,它将被忽略 |
debug | 应用程序将以debug模式连编 |
warn_on | 编译器会输出尽可能多的警告信息。如果“warn_off”被指定,它将被忽略 |
warn_off | 编译器会输出尽可能少的警告信息 |
qt | 应用程序是一个Qt应用程序,并且Qt库将会被连接 |
thread | 应用程序是一个多线程应用程序 |
x11 | 应用程序是一个X11应用程序或库 |
windows | 只用于“app”模板:应用程序是一个Windows下的窗口应用程序 |
console | 只用于“app”模板:应用程序是一个Windows下的控制台应用程序 |
dll | 只用于“lib”模板:库是一个共享库(dll) |
staticlib | 只用于“lib”模板:库是一个静态库 |
plugin | 只用于“lib”模板:库是一个插件,这将会使dll选项生效 |
四、Qt元对象系统
- Qt元对象系统简介:Qt元对象系统(Meta-Object System)提供了对象之间通信的信号与槽基址、运行时类型信息和动态属性系统
- Qt元对象系统由以下三个基础组成
- QObject类是所有使用元对象系统的类的基类
- 在一个类的private部分声明Q_OBJECT宏,使得类可以使用元对象的特性,如动态属性、信号与槽
- MOC(元对象编辑器)为每个QObject的子类提供必要的代码来实现元对象系统的特性;构建项目时,MOC工具读取C++源文件,当它发现类的定义里有Q_OBJECT宏时,它就会为这个类生成另外一个包含有元对象支持代码的C++源文件,这个生成的源文件连同类的实现文件一起被编译和连接
五、Qt基本模块
| 模块 | 描述 |
|---|---|
| Qt Core | QtCore模块是所有基于Qt的应用程序的基础,其他模块使用的核心非图形类。提供信号与槽的对象间通信机制,并发和多线程,容器,事件系统,插件和I/O设施 |
| Qt GUI | 最重要的GUI模块。图形用户界面 (GUI) 组件的基类。包括 OpenGL |
| Qt widgets | 用于构建GUI界面的C++图形组件类,包含基于GUI应用程序的典型小部件类和QSceneGraph类。在Qt 5中从QtGui中分离出来 |
| Qt Multimedia | 音频、视频、广播和相机功能类 |
| Qt Multimedia Widgets | 实现多媒体功能得到界面组件类 |
| Qt Network | 使用网络编程更简单和轻便的类 |
| Qt QML | Qt QML模块用于QML和JavaScript语言 |
| Qt Quick | 该模块用于使用QML2编写的GUI应用程序。用于构建具有自定义用户界面的高度动态应用程序的声明性框架 |
| Qt Quick Controls | 提供轻量级 QML 类型,用于为桌面、嵌入式和移动设备创建高性能用户界面。这些类型采用简单的样式架构并且非常高效 |
| Qt Quick Dialogs | 用于从 Qt Quick 应用程序创建系统对话框并与之交互的类型 |
| Qt Quick Layouts | 用于在Qt Quick中安排项目的布局 |
| Qt SQL | 包含使用SQL进行数据库集成的类 |
| Qt Test | 用于单元测试 Qt 应用程序和库的类。注意:二进制兼容性保证不适用于 Qt 测试。但是,它将保持源兼容 |
六、项目新建
1 - 新建项目
- 新建项目







2 - 使用vs打开项目
使用vs打开项目
- qml的ui部分建议在qt中开发
- 调试的话可以选择vs,更易于调试
新建bat文件生成vs项目文件:
qmake -tp vc DemoProl.pro(使用qmake根据当前的.pro文件生成适应于Visual Stdio的工程文件)

win10下运行bat设置:系统环境变量中添加变量名 ->
%path%,变量值 ->C:/windows/system32运行GeneVS.bat报错:

设置cl.exe的环境变量:到电脑中搜索cl.exe;我电脑的路径是
D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64;在环境变量 -> 系统 -> PATH中添加路径即可使用VS打开工程文件.vcxproj

3 - QT的继承体系
QGuiApplication app(argc, argv);:在main.cpp中可以看到 app是QGuiApplication类,查看源码发现QGuiApplication继承QCoreApplication,并且使用了宏Q_OBJECT;而QCoreApplication继承了QT的基类QObject


QQmlApplicationEngine engine:QQmlApplicationEngine继承了QQmlEngine,并且也使用了宏Q_OBJECT;QQmlEngine继承了QJSEngine;QJSEngine最终继承了QT的基类QObject


4 - vs运行项目
- 以下报错的解决方案:项目 -> 重定解决方案目标
1>------ 已启动生成: 项目: DemoProl, 配置: Debug x64 ------
1>D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: 找不到 Windows SDK 版本8.1。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
1>已完成生成项目“DemoProl.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

5 - vs将默认编码调成UTF-8
- 为什么需要修改为UTF-8:因为Qt中的默认编码为UTF-8,而且其他大部分的IDE编码均为UTF-8;而VS的默认编码为GB2312
- vs将默认编码调成UTF-8:工具 -> 扩展和更新 -> 联机 -> 搜索
force UTF-8(No BOM)-> 关闭vs后会自动进行安装 -> 重新打开项目即可
- 修改字符编码后可能会出现报错信息:warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
解决方案:
1.修改字符编码格式 (推荐)
Visual Studio提供高级保存选项功能,它能指定特定代码文件的编码规范和行尾所使用的换行符。
在Visual Studio 2017中,该命令没有默认显示在“文件”菜单中。用户需要手工设置,才能显示该命令。
操作方法如下:
(1)单击“工具”|“自定义”命令,弹出“自定义”对话框。
(2)单击“命令”标签,进入“命令”选项卡。
(3)在“菜单栏”下拉列表中,选择“文件”选项。
(4)单击“添加命令”按钮,弹出“添加命令”对话框。
(5)在“类别”列表中,选择“文件”选项;在“命令”列表中,选择“高级保存选项”选项。
(6)单击“确定”按钮,关闭“添加命令”对话框。
(7)选中“控件”列表中的“高级保存选项”选项,单击“上移”或者“下移”按钮,调整该命令的位置。
(8)单击“关闭”按钮,完成“高级保存选项”命令的添加操作。
(9)打开“文件”菜单下的“高级保存选项”,设置编码 Unicode(utf-8带签名)- 代码页 65001
边栏推荐
猜你喜欢

图论知识及其应用初步调研

Markdown table (consolidated)

Constraintlayout Development Guide

学习DiscoDiffusion的最基础操作

Hot discussion: what are you doing for a meaningless job with a monthly salary of 18000?

二叉树oj题目

按键控制LED状态翻转

ThreadLocal详解

DAMA、DCMM等数据管理框架各个能力域的划分是否合理?有内在逻辑吗?

Some exception handling for idea plug-in development
随机推荐
消费者追捧iPhone,在于它的性价比超越国产手机
I earned 3W yuan a month from my sideline: the industry you despise really makes money!
Oracle/PLSQL: HexToRaw Function
Oracle/PLSQL: Upper Function
Oracle/PLSQL: Soundex Function
Config in UVM_ How to use the DB mechanism
达梦数据库安装
C语言--职工信息管理系统设计
ThreadLocal详解
Oracle/PLSQL: To_Clob Function
二叉树oj题目
Shell script series (1) getting started
Google began to roll itself, AI architecture pathways was blessed, and 20billion generation models were launched
宁愿去996也不要待业在家啦!24岁,失业7个月,比上班更惨的,是没班可上
图论知识及其应用初步调研
使用命令行安装达梦数据库
UVM in UVM_ config_ Use of DB in sequence
Binary tree OJ problem
Due to the invalidation of the prospectus of bori technology, CICC has stopped providing guidance to it and abandoned the listing on the Hong Kong stock exchange?
Flink学习2:应用场景