文章目录
- 一、Qmake与CMake介绍
- 1.Qmake
- 2.CMake
- 3.使用qmake还是cmake?
- 二、Qt3个窗口基类的区别
- 三、vs qt与QtCreator项目相互转化方法
- 1.QtCreator项目转VS Qt
- 2.VS Qt项目转QtCreator项目
- 四、Qt架构介绍与学习方法详解
一、Qmake与CMake介绍
Qmake和CMake都是构建系统,它们用于自动化编译和构建软件项目的过程。
1.Qmake
Qmake是Qt独有的代码构建工具,主要用于Qt应用程序的构建。它是一个跨平台的构建系统,可以生成特定于平台的Makefile。Qmake使用一种名为Pro文件的脚本语言来定义项目的构建规则和依赖关系。Qmake的优势在于它与Qt紧密集成,可以自动处理Qt特有的构建需求,如MOC(Meta-Object Compiler)和UIC(User Interface Compiler)的调用。
特点:
- 专为Qt应用程序设计。
- 支持跨平台构建。
- 可以生成多种平台的Makefile。
- 与Qt工具链紧密集成。
2.CMake
CMake是C++通用的代码构建工具,它可以生成适用于多种编译器和平台的构建文件。CMake使用CMakeLists.txt文件来描述项目的构建过程,这些文件可以包含条件语句和循环,提供了更高的灵活性。CMake不仅限于C或C++项目,它也支持其他语言,并且可以与多种IDE(集成开发环境)和构建工具配合使用。
绝大多数C++开源项目都使用cmake管理代码,例如:obs、jsoncpp、libcurl、log4cplus等
特点:
- 跨平台,支持多种编译器和构建工具。
- 使用CMakeLists.txt文件定义构建规则。
- 支持条件语句和循环,提供高度灵活性。
- 可以生成Makefile、Visual Studio解决方案文件等。
- 广泛用于开源项目和大型软件项目。
3.使用qmake还是cmake?
代码构建工具各有各的优势,不要过于纠结使用哪种,主要是看当初创建项目的人用哪种构建工具,不使用cmake也没关系,cmake也不是最好的解决方案,例如谷歌的GN,可以实现c++、java、ios项目的跨平台管理,比cmake厉害。qt项目若无特殊要求,使用qmake即可。
比较:
- 集成度:Qmake与Qt框架高度集成,而CMake更加通用。
- 灵活性:CMake在构建配置方面提供了更多的灵活性。
- 使用范围:Qmake主要用于Qt项目,CMake适用于各种类型的项目。
- 跨平台性:两者都支持跨平台构建,但CMake在这方面更为广泛。
二、Qt3个窗口基类的区别
-
QMainWindow:包含菜单栏(QMenuBar)、工具栏(QToolBar)、状态栏(QStatusBar)和中心部件(central widget)。
支持多文档界面(MDI),即在一个主窗口中可以打开多个文档窗口。常用于开发具有复杂界面的应用程序,如IDE、图像编辑器等。
修改菜单栏与工具栏
修改状态栏
结果展示:
-
QWidget:基础窗口类
一个普通的窗口,不包含菜单栏、状态栏,除了登陆界面,新建项目时建议使用QWidget,因为大部分的窗口可能都要做成无边框窗口,需要自定义标题栏,实现拉伸等;QMainWindow使用的场景不多
-
QDialog:对话框,常用来做登陆窗口、弹出窗口(例如设置界面)
用于创建对话框。通常用于显示需要用户输入或确认的信息。常用于实现设置、选项、帮助等对话框。
一般点击“登陆”后会跳到另一个窗口,因此,需要右击活动项目,点击“添加新文件”
点击“Qt–>Qt设计器界面类”
选择“Widget”界面模板,点击“下一步”
点击“下一步”
点击“完成”
需要通过信号槽机制,实现当点击“登陆”按钮时,跳转到主窗口
三、vs qt与QtCreator项目相互转化方法
1.QtCreator项目转VS Qt
首先,需要配置环境变量,将qmake.exe所在的目录输入到系统path。
然后,在cmd中输入转化命令:qmake -tp vc xxx.pro
转化命令运行结果表明:出现cl命令冲突问题。
解决办法是关闭cmd窗口,找到cl.exe路径配置到系统path中,再次打开cmd转换。
转换后,用vs打开.vcxproj文件(双击),此时,项目属性中并没有Qt Project Settings。
此时,需要右键项目,找到“Qt”,点击“Convert custom build steps to Qt/MSBuild",再点击“是”。
此时,项目属性中就出现Qt Project Settings。
2.VS Qt项目转QtCreator项目
在Qt VS Tools插件里点击“Create Basic.pro file”生成pro文件。
此时,会产生pri文件与pro文件。
再用QtCreator打开.pro文件(双击pro文件即可),选择构建套件
将转换后的项目进行构建会失败
此时,需要在QtCreator中添加模块
四、Qt架构介绍与学习方法详解
Qt不仅仅是一个界面库,它还有:
- 数据容器:QString、QVector、QList、QMap
- 网络模块:Http、TCP、UDP
- 图形视图模块
- 数据库模块
- 程序打包
Qt常用控件:
Qt常用模块:通常Qt GUI项目需要包含:Core、Gui、Widgets这三个
Qt学习方法:
-
多看Qt文档,自己多写代码测试;
-
学习Qt提供的demo,自己调试,运行,分析;
-
Qt主要是用来做界面开发,要熟悉Qt设计界面的技巧,掌握各种控件的使用,非常熟悉各种布局的实现方案
既要会用Qt设计器进行布局,又要非常熟悉手写布局;
在做企业级项目时,很少用设计器(小项目),更多的是手写代码(企业级项目)
-
熟悉无边框窗口的设计;
后续会介绍无边框窗口的设计方法
-
需要有一点界面交互的逻辑,例如自定义非标控件,以及各种样式表的使用;
后续会进行介绍
-
学习相关领域的知识,例如:图形图像、音视频、动画、Web交互、http编程、加解密;
-
多总结,要有自己的代码库,以后遇到相同的模块需求,可以复用自己的代码;