当前位置:网站首页>QT入门引导 及其 案例讲解
QT入门引导 及其 案例讲解
2022-07-26 12:04:00 【比特冬哥】
一、QT概述
1. 什么是QT
Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。
2. Qt的发展史
1991年 Qt最早由奇趣科技开发
1996年 进入商业领域,它也是目前流行的Linux桌面环境KDE的基础
2008年 奇趣科技被诺基亚公司收购,Qt称为诺基亚旗下的编程语言
2012年 Qt又被Digia公司收购
2014年4月 跨平台的集成开发环境Qt Creator3.1.0发布,同年5月20日配发了Qt5.3正式版,至此Qt实现了对iOS、Android、WP等各平台的全面支持。
3. 支持的平台
- Windows – XP、Vista、Win7、Win8、Win2008、Win10
- Uinux/X11 – Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGI IRIX、FreeBSD、BSD/OS、和其他很多X11平台
- Macintosh – Mac OS X
- Embedded – 有帧缓冲支持的嵌入式Linux平台,Windows CE
4. Qt版本
Qt按照不同的版本发行,分为商业版和开源版
- 商业版
为商业软件提供开发,他们提供传统商业软件发行版,并且提供在商业有效期内的免费升级和技术支持服务。 - 开源的LGPL版本:
为了开发自有而设计的开放源码软件,它提供了和商业版本同样的功能,在GNU通用公共许可下,它是免费的。
5. Qt的下载与安装
下载地址:
http://www.qt.io/download-open-source/

安装
默认安装(建议组件全部选中)
Qt对不同的平台提供了不同版本的安装包,可根据实际情况自行下载安装
6. Qt的优点
(1)跨平台,几乎支持所有的平台
接口简单,容易上手,学习QT框架对学习其他框架有参考意义。
(2)一定程度上简化了内存回收机制
(3)开发效率高,能够快速的构建应用程序。
(4)有很好的社区氛围,市场份额在缓慢上升。
(5)可以进行嵌入式开发。
7. 成功案例
(1)Linux桌面环境KDE
(2)WPS Office 办公软件
(3)Skype 网络电话
(4)Google Earth 谷歌地图
(5)VLC多媒体播放器
(6)VirtualBox虚拟机软件
…
二、创建Qt项目
1. 使用向导创建
打开Qt Creator 界面选择 New Project或者选择菜单栏 【文件】-【新建文件或项目】菜单项
弹出New Project对话框,选择Qt Widgets Application
选择【Choose】按钮,弹出如下对话框
设置项目名称和路径,按照向导进行下一步(名称和路径不能有中文和空格)
选择编译套件
向导会默认添加一个继承自CMainWindow的类,可以在此修改类的名字和基类。默认的基类有QMainWindow、QWidget以及QDialog三个,我们可以选择QWidget(类似于空窗口),这里我们可以先创建一个不带UI的界面,继续下一步
系统会默认给我们添加main.cpp、mywidget.cpp、 mywidget.h和一个.pro项目文件,点击完成,即可创建出一个Qt桌面程序。
2. 手动创建
添加一个空项目
选择【choose】进行下一步。设置项目名称和路径 —> 选择编译套件 --> 修改类信息 --> 完成(步骤同上),生成一个空项目。在空项目中添加文件:在项目名称上单击鼠标右键弹出右键菜单,选择【添加新文件】
弹出新建文件对话框

在此对话框中选择要添加的类或者文件,根据向导完成文件的添加。
三、案例讲解
当你创建完一个项目后,你会发现项目里有以下这几个文件:
- 第一个“test01”是你所创建项目时设置的工程名
- 往下看,是一个.pro文件
.pro就是工程文件(project),它是qmake自动生成的用于生产makefile的配置文件,一般没有特殊的项目处理,你不需要对其进行修改。 - Headers是头文件
widget.h就是你在创建项目时 你所选择的窗口类头文件,以后写程序时的一些函数变量名可以在该类下进行声明或赋初值。 - Source源文件
main.cpp为创建一个窗口并显示
widget.cpp里面主要为widget类的函数调用,基本操作可以在其构造函数中实现。 - 最后一个Forms是窗体文件
widget.ui是可视化设计的窗体,你可以在里面自定义你想要的窗口布局。
main入口函数
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv); //a应用程序对象,在QT中,应用程序对象有且仅有一个
Widget w; //窗口对象,Widget父类 ->QWidget
w.show(); //窗口对象 默认不会显示 必须要调用show方法显示窗口
return a.exec(); //让应用程序对象进入消息循环
}
边栏推荐
- pytest接口自动化测试框架 | fixture调用fixture
- Redisson分布式锁流程详解(二)
- Sunflower senior product director technology sharing: how to apply in AD domain environment
- How do children's playgrounds operate?
- 使用fastJson中的JSONObject对象简化POST请求传参
- Pytest interface automation test framework | use decorators to decorate the use cases that need to be run
- 物联网设备加密的意义
- .NET WebAPI 使用 GroupName 对 Controller 分组呈现 Swagger UI
- 10. 509. Introduction to PKCs file format
- How RFID works
猜你喜欢

FPGA入门学习(二) - 二选一的选择器

Pytorch深度学习快速入门教程 -- 土堆教程笔记(一)

There are various signs that apple is expected to support AV1

向日葵远程控制为何采用BGP服务器?自动最优路线、跨运营商高速传输

基于 Flink CDC 实现海量数据的实时同步和转换

Miccai2022 paper | evolutionary multi-objective architecture search framework: application in covid-19 3D CT classification

Real time synchronization and conversion of massive data based on Flink CDC

Li Kai: the interesting and cutting-edge audio and video industry has always attracted me

一些常用的文章写作使用方法和技巧

Understanding useref is enough
随机推荐
FPGA入门学习(二) - 二选一的选择器
Understand the string class
4.1 configure MySQL and register login module
Pytest interface automated test framework | fixture call fixture
2022.7.23-----leetcode.剑指offer.115
Codepoint 58880 not found in font, aborting. Flutter build APK reports an error
Hou Peixin, chairman of the openharmony Working Committee of the open atom open source foundation, sent a message to the openatom openharmony sub forum
Sword finger offer 25. merge two sorted linked lists
Pytest interface automation test framework | rerun failed cases
SSJ-21B时间继电器
Talking about web vitals
pytest接口自动化测试框架 | 通过标记表达式执行用例
Oracle AWR 报告脚本:SQL ordered by Elapsed Time
CVPR 2022 new SOTA for monocular depth estimation new CRFs: neural window fullyconnected CRFs
Use the jsonobject object in fastjason to simplify post request parameter passing
There are various signs that apple is expected to support AV1
远程ip Debugger(实用干货)
【倒计时10天】腾讯云音视频专场即将见面,千元大奖等你来拿!
Introduction to FPGA (II) - one out of two selector
【Mysql约束】