当前位置:网站首页>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(); //让应用程序对象进入消息循环
}
边栏推荐
猜你喜欢

Introduction to FPGA (III) - 38 decoder

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

RFID的工作原理

el-form 每行显示两列,底部按钮居中

Use the jsonobject object in fastjason to simplify post request parameter passing

海外APP推送(下篇):海外厂商通道集成指南

Introduction to FPGA (II) - one out of two selector

种种迹象表明,Apple将有望支持AV1

Some common writing methods and skills

程序员培训学习后好找工作吗?
随机推荐
向日葵远程控制为何采用BGP服务器?自动最优路线、跨运营商高速传输
pytest接口自动化测试框架 | fixture调用fixture
Pytest interface automation test framework | pytest configuration file
面试官:如何理解QPS,TPS,RT?
flink 写redis 比较慢,大家有啥思路优化吗?
DS-24C/DC220V时间继电器
How does the chain store cashier system help shoe stores manage their branches?
物联网设备加密的意义
行业案例|指标中台如何助力银行业普惠金融可持续发展
MySQL组合索引(多列索引)使用与优化
10. 509. Introduction to PKCs file format
Pytest interface automated testing framework | common plug-ins of pytest
《多线程下ThreadLocal使用场景实例》
Flink cdc 是不是只支持 sql-client的方式提交SQL脚本啊
【活动早知道】LiveVideoStack近期活动一览
Pytest interface automated test framework | fixture call fixture
MySQL之数据查询(聚合函数)
Network protocol: tcp/ip protocol
Audio and video technology development weekly | 255
.NET WebAPI 使用 GroupName 对 Controller 分组呈现 Swagger UI