00_Qt概述以及如何创建一个QT新项目

news/2024/11/29 21:40:13/

Qt概述

  • 1.Qt概述
    • 1.1 什么是Qt
    • 1.2 Qt的发展史
    • 1.3 支持的平台
    • 1.4 Qt版本
    • 1.5 Qt的下载与安装
    • 1.6 Qt的优点
  • 2.QT新项目创建
  • 3.pro文件
  • 4.主函数
  • 5.代码命名规范和快捷键

1.Qt概述

1.1 什么是Qt

  • Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。

1.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等各平台的全面支持。

1.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

1.4 Qt版本

Qt按照不同的版本发行,分为商业版和开源版

  • 商业版
    为商业软件提供开发,他们提供传统商业软件发行版,并且提供在商业有效期内的免费升级和技术支持服务。
  • 开源的LGPL版本:
    为了开发自有而设计的开放源码软件,它提供了和商业版本同样的功能,在GNU通用公共许可下,它是免费的。

1.5 Qt的下载与安装

下载地址:
http://www.qt.io/download-open-source/

1.6 Qt的优点

  • 跨平台,几乎支持所有的平台。
  • 接口简单,容易上手,学习QT框架对学习其他框架有参考意义。
  • 一定程度上简化了内存回收机制 。
  • 开发效率高,能够快速的构建应用程序。
  • 有很好的社区氛围,市场份额在缓慢上升。
  • 可以进行嵌入式开发。

2.QT新项目创建

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
文件名不可以有英文
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.pro文件

在使用Qt向导生成的应用程序.pro文件格式如下:

QT       += core gui  //包含的模块  core和gui(用户图形)
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets //大于Qt4版本 才包含widget模块
TARGET = QtFirst  //应用程序名  生成的.exe程序名称
TEMPLATE = app    //模板类型    应用程序模板
SOURCES += main.cpp\   //源文件mywidget.cpp
HEADERS  += mywidget.h   //头文件

.pro就是工程文件(project),它是qmake自动生成的用于生产makefile的配置文件。.pro文件的写法如下:

  • 注释
    从“#”开始,到这一行结束。
  • 模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择:TEMPLATE = app
  • app -建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。
  • lib - 建立一个库的makefile。
  • vcapp - 建立一个应用程序的VisualStudio项目文件。
  • vclib - 建立一个库的VisualStudio项目文件。
  • subdirs -这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile。
  • #指定生成的应用程序名:
    TARGET = QtDemo
  • #工程中包含的头文件
    HEADERS += include/painter.h
  • #工程中包含的.ui设计文件
    FORMS += forms/painter.ui
  • #工程中包含的源文件
    SOURCES += sources/main.cpp sources
  • #工程中包含的资源文件
    RESOURCES += qrc/painter.qrc
  • greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    这条语句的含义是,如果QT_MAJOR_VERSION大于4(也就是当前使用的Qt5及更高版本)需要增加widgets模块。如果项目仅需支持Qt5,也可以直接添加“QT += widgets”一句。不过为了保持代码兼容,最好还是按照QtCreator生成的语句编写。
  • #配置信息
    CONFIG用来告诉qmake关于应用程序的配置信息。
    CONFIG += c++11 //使用c++11的特性
    在这里使用“+=”,是因为我们添加我们的配置选项到任何一个已经存在中。这样做比使用“=”那样替换已经指定的所有选项更安全。

4.主函数

#include "widget.h"
#include <QApplication>//包含一个应用程序类的头文件
//main程序入口 argc命令行变量的数量 argv命令行变量的数组
int main(int argc, char *argv[])
{//a是应用程序对象,在QT中,应用程序对象有且仅有一个
QApplication a(argc, argv);
//窗口对象  Widget父类 ->QWidget
Widget w;
//窗口对象 默认不会显示,必须要调用show方法显示窗口w.show();//让应用程序对象进入消息循环return a.exec();
}

解释:

  • Qt系统提供的标准类名声明头文件没有.h后缀
  • Qt一个类对应一个头文件,类名就是头文件名
  • QApplication应用程序类
  • 管理图形用户界面应用程序的控制流和主要设置。
  • 是Qt的整个后台管理的命脉它包含主事件循环,在其中来自窗口系统和其它资源的所有事件处理和调度。它也处理应用程序的初始化和结束,并且提供对话管理。
  • 对于任何一个使用Qt的图形用户界面应用程序,都正好存在一个QApplication 对象,而不论这个应用程序在同一时间内是不是有0、1、2或更多个窗口。
  • a.exec()
    程序进入消息循环,等待对用户输入进行响应。这里main()把控制权转交给Qt,Qt完成事件处理工作,当应用程序退出的时候exec()的值就会返回。在exec()中,Qt接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>//包含头文件 QWidget 窗口类class Widget : public QWidget
{Q_OBJECT//Q_OBJECT宏,允许类中使用信号和槽的机制public:Widget(QWidget *parent = nullptr);//构造函数~Widget();//析构函数};
#endif // WIDGET_H

5.代码命名规范和快捷键

  • 命名规范
    类名 首字母大写,单词和单词之间首字母大写
    函数名和变量名称,首字母小写,单词和单词之间首字母大写

  • 快捷键
    注释:ctrl + /
    运行:ctrl + r
    编译:ctrl + b
    字体缩放:ctrl + 鼠标滚轮
    查找:ctrl + f
    整行移动:ctrl + shift + ↑或者↓
    帮助文档: F1
    自动对齐:ctrl + i
    同名之间的.h.cpp切换:F4

帮助文档
在这里插入图片描述


http://www.ppmy.cn/news/1431277.html

相关文章

【Linux系统化学习】线程互斥 | 互斥量(锁)

目录 多线程抢票问题 对问题的解释 代码的原子性 线程互斥 上述问题的解决方法 相关概念 互斥量&#xff08;锁&#xff09; 锁的定义和初始化 锁的销毁 加锁和解锁 加锁注意事项 使用锁注意事项 锁的原理 可重入与线程安全 概念 常见线程不安全的情况 常见线…

Vs Code npm install 报错解决方法

用的人家的前端框架发现是封装过的&#xff0c;要修改人家前端的话还得把前端源码放在Vs Code 上运行&#xff0c;后端放在IDEA上运行&#xff0c;然后前后端并行开发&#xff0c;在配置前端环境时遇到&#xff1a; npm install 这个的原因是我把node下载到D盘了权限不够框框爆…

Redis入门到通关之Redis数据结构-Hash篇

文章目录 ☃️ 概述☃️底层实现☃️源码☃️其他 欢迎来到 请回答1024 的博客 &#x1f353;&#x1f353;&#x1f353;欢迎来到 请回答1024的博客 关于博主&#xff1a; 我是 请回答1024&#xff0c;一个追求数学与计算的边界、时间与空间的平衡&#xff0c;0与1的延伸的后…

图论基础知识 深度搜索(DFS,Depth First Search),广度搜索(BFS,Breathe First Search)

图论基础知识 学习记录自代码随想录 dfs 与 bfs 区别 dfs是沿着一个方向去搜&#xff0c;不到黄河不回头&#xff0c;直到搜不下去了&#xff0c;再换方向&#xff08;换方向的过程就涉及到了回溯&#xff09;。 bfs是先把本节点所连接的所有节点遍历一遍&#xff0c;走到下…

线性回归、逻辑回归

线性回归是一种统计分析方法,它利用数理统计中的回归分析来确定两种或两种以上变量间相互依赖的定量关系。这种分析方法在生活中有着广泛的应用场景,如经济学、市场营销、医学研究、教育评估以及人力资源管理等。其表达形式通常为y = wx+e,其中y是因变量,x是自变量,w是权重…

Excel遇上VBA,开启智能联网新篇章!

EXCEL可联网了竖屏 你是否曾经因为Excel中的数据更新不及时而烦恼&#xff1f;是否因为手动整理网络数据而疲惫不堪&#xff1f;现在&#xff0c;有了VBA&#xff08;Visual Basic for Applications&#xff09;的加持&#xff0c;Excel也能轻松联网&#xff0c;实现数据自动更…

分享三个转换速度快、准确率高的视频转文字工具

想要直接将视频转换成文字&#xff0c;转换工具很重要&#xff01;给大家分享三个转换速度快、准确率高的视频转文字工具&#xff0c;轻松完成转换。 1.网易见外 https://sight.youdao.com/ 网易家的智能转写翻译服务工作站&#xff0c;网页端就可以直接使用&#xff0c;支持视…

Kafka - Kafka 为啥抛弃 Zookeeper?

Kafka 为什么要抛弃 ZooKeeper&#xff1f;取代方案是怎样的&#xff1f;因为确实有优化空间。 Zookeeper加kafka 的架构&#xff0c;有三层角色&#xff1a; zookeeper &#xff0c;提供基础的状态持久化和状态通知服务 controller &#xff0c;基于zookeeper提供的服务&…