C++框架 之Qt的一系列注意细节

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

当前Qt最新版本为 5.5.0

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://download.qt.io/archive/qt/

Linux Host

Qt 5.5.0 for Linux 32-bit (535 MB) (info)

Qt 5.5.0 for Linux 64-bit (532 MB) (info)

Qt 5.5.0 for Android (Linux 64-bit, 605 MB) (info)

Qt 5.5.0 for Android (Linux 32-bit, 608 MB) (info)

Qt 5.5.0 for Mac (588 MB) (info)

Qt 5.5.0 for Android (Mac, 652 MB) (info)

Qt 5.5.0 for Android and iOS (Mac, 1.7 GB) (info)

Qt 5.5.0 for Windows 64-bit (VS 2013, 650 MB) (info)

Qt 5.5.0 for Windows 32-bit (VS 2013, 633 MB) (info)

Qt 5.5.0 for Windows 32-bit (VS 2012, 587 MB) (info)

Qt 5.5.0 for Windows 32-bit (VS 2010, 585 MB) (info)

Qt 5.5.0 for Windows 32-bit (MinGW 4.9.2, 959 MB) (info)

Qt 5.5.0 for Android (Windows 32-bit, 1.0 GB) (info)

Qt 5.5.0 for Windows RT 32-bit (621 MB) (info)

OS X Host

Qt 5.5.0 for Mac (588 MB) (info)

Qt 5.5.0 for Android (Mac, 652 MB) (info)

Qt 5.5.0 for Android and iOS (Mac, 1.7 GB) (info)

Windows Host

Qt 5.5.0 for Windows 64-bit (VS 2013, 650 MB) (info)

Qt 5.5.0 for Windows 32-bit (VS 2013, 633 MB) (info)

Qt 5.5.0 for Windows 32-bit (VS 2012, 587 MB) (info)

Qt 5.5.0 for Windows 32-bit (VS 2010, 585 MB) (info)

Qt 5.5.0 for Windows 32-bit (MinGW 4.9.2, 959 MB) (info)--我采用的

Qt 5.5.0 for Android (Windows 32-bit, 1.0 GB) (info)

Qt 5.5.0 for Windows RT 32-bit (621 MB) (info)

Qt对不同的平台提供了不同版本的安装包,可根据实际情况自行下载安装

MinGW32 --> Minimalist GNU for Windows 32。

安装过程:

很容易!一路next!!

1.6 Qt的优点

  ●跨平台,几乎支持所有的平台

  ●接口简单,容易上手,学习QT框架对学习其他框架有参考意义。

  ●一定程度上简化了内存回收机制

  ●开发效率高,能够快速的构建应用程序。

  ●有很好的社区氛围,市场份额在缓慢上升。

  ●可以进行嵌入式开发。

1.7为什么学习Qt

1)学习GUI编程,市场上任何一款产品几乎都带图形界面,市场上很火的Android、IOS编程无非也是GUI app编程,GUI编程都是差不多,学习Qt后再学习Android、IOS,那是 So easy。就算不学习Android、IOS,由于Qt跨平台特性,通过Qt写的程序可以在Android、IOS平台上运行。

2)锻炼编程能力,GUI编程比后台编程更能锻炼人,因为你除了核心数据处理外,还需要协调界面,同时懂得前端和后台编程,才能更好地写好程序。

3)为了更好地使用C++,学习Qt的框架(Qt是C++实现的应用程序框架),很多游戏、后台服务器框架都是使用C++实现。

1.8如何学习Qt

第一,要学好C++基础,这样函数和类用起来就很简单了;第二,要会使用帮助,IDE(Qt Creator)一般都带有帮助文件;第三,要会看文档,文档里面会包含全部的类和函数;只要会看文档,就知道了函数或者类的作用,就会用。这个是不需要记的。

2、 创建Qt项目

你还在为没有学习平台而苦恼吗?你还在为没有学习资料而烦心吗?你还在为没人指导而担忧吗?可以私信小编 C++,为你提供学习的平台和资料。

2.1 使用向导创建

打开Qt Creator 界面选择 New Project或者选择菜单栏 【文件】-【新建文件或项目】菜单项

弹出New Project对话框,选择Qt Widgets Application,

选择【Choose】按钮,弹出如下对话框

设置项目名称和路径,按照向导进行下一步,

选择编译套件

向导会默认添加一个继承自CMainWindow的类,可以在此修改类的名字和基类。继续下一步

即可创建出一个Qt桌面程序。

2.2 手动创建

添加一个空项目

选择【choose】进行下一步。设置项目名称和路径 —> 选择编译套件 --> 修改类信息 --> 完成(步骤同上),生成一个空项目。在空项目中添加文件:在项目名称上单击鼠标右键弹出右键菜单,选择【添加新文件】

弹出新建文件对话框

在此对话框中选择要添加的类或者文件,根据向导完成文件的添加。

代码:

HelloQt.pro

QT += widgets SOURCES += main.cpp

main.cpp

按 Ctrl+C 复制代码

按 Ctrl+C 复制代码

总结:

  ●1>. 在窗口中添加按钮

      ▲类名: QPushButton

      ▲设置按钮显示的内容: setText

      ▲移动按钮位置: move

      ▲按钮设置父窗口:setParent

      ▲设置窗口的大小:resize() resizeFixed()

  ●2>. Qt的坐标体系:

      ▲坐标原点: 左上角

      ▲x轴延伸的方向: 向右递增

      ▲y轴延伸的方向: 向下递增

  ●3>. Qt内存回收机制

      满足什么条件的类不需要用户手动释放内存?

      ▲1. 从QObject类直接或间接派生

      ▲2. 给直接或间接派生出的类, 指定父对象

2.3 .pro文件

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

按 Ctrl+C 复制代码

按 Ctrl+C 复制代码

.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/painter.cpp

●#工程中包含的资源文件

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的特性

在这里使用“+=”,是因为我们添加我们的配置选项到任何一个已经存在中。这样做比使用“=”那样替换已经指定的所有选项更安全。

2.4 一个最简单的Qt应用程序

按 Ctrl+C 复制代码

按 Ctrl+C 复制代码

解释:

★Qt头文件没有.h后缀

★Qt一个类对应一个头文件,类名就是头文件名

★QApplication应用程序类

  ●★管理图形用户界面应用程序的控制流和主要设置。

●★ 是Qt的整个后台管理的命脉它包含主事件循环,在其中来自窗口系统和其它资源的所有事件处理和调度。它也处理应用程序的初始化和结束,并且提供对话管理

  ●★ 对于任何一个使用Qt的图形用户界面应用程序,都正好存在一个QApplication 对象,而不论这个应用程序在同一时间内是不是有0、1、2或更多个窗口。

★a.exec()

程序进入消息循环,等待对用户输入进行响应。这里main()把控制权转交给Qt,Qt完成事件处理工作,当应用程序退出的时候exec()的值就会返回。在exec()中,Qt接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。

3、QtCreator常用快捷键

有的电脑是 Fn+...

  1)帮助文件:F1 (光标在函数名字或类名上,按 F1 即可跳转到对应帮助文档,查看其详细用法)

  2).h 文件和对应.cpp 文件切换:F4

  3)编译并运行:Ctrl + R

  4)函数声明和定义(函数调用和定义)切换:F2

  5)代码注释取消注释:Ctrl + / (选中代码再按快捷键)

  6)字体变大变小:Ctrl + 鼠标滚轮向上向下

  7)移动代码:选中所要移动的代码 -> 按住 ctrl + shift -> 键盘方向键

  8)查找替换关键字:ctrl + f

  9)快速打开代码所在目录:编辑模式下 -> 选中项目文件 -> 右击 -> 选择“显示包含的目录”,即可显示项目所在目录(此方法同样可以打开代码文件所在目录)

帮助文档的使用:

比较详细的链接:https://blog.csdn.net/tennysonsky/article/details/48471805

我们使用 Qt 帮助文档,主要分为这么几步:

  1)类使用的相关介绍

  2)查看所用部件(类)的相应成员函数(功能,参数,返回值)

  3)查看部件的信号

  4)查看部件的事件(所对应的虚函数如何编写)

所要查看的几个重要信息:

公有成员函数:操作部件属性的相关函数。

公有槽函数:Qt类中已经定义好的槽函数,直接可与信号相连接。

信号:软中断,如按下按钮触发 pressed() 信号等。

保护成员函数:通常事件所对应的虚函数放在此处。

事件:常用事件,如操作鼠标触发的鼠标事件。

1)当然,我们可以直接在“帮助”模式下的“索引”输入框里输入所需查看的类:

2)查看所用部件(类)的相应成员函数(功能,参数,返回值)

查看所用部件的相应成员函数( 本身的成员函数,继承过来的成员函数 ),主要是为了查看这个成员函数如何使

用,包括函数的功能,参数,返回值。

4、案例代码:

第一个:

01_QtTest.pro

#模块QT += core gui#高于4版本,添加 QT += widgets ,为了兼容Qt4greaterThan(QT_MAJOR_VERSION, 4): QT += widgets#应用程序的名字TARGET = mike#指定makefile的类型, appTEMPLATE = app#源文件 .cpp文件SOURCES += main.cpp mywidget.cpp#头文件 .h文件HEADERS += mywidget.h

main.cpp

#include "mywidget.h"//QApplication应用程序类//Qt头文件没有.h//头文件和类名一样#include int main(int argc, char *argv[]){ //有且只有一个应用程序类的对象 QApplication a(argc, argv); //MyWidget继承与QWidget, QWidget是一个窗口基类 //所以MyWidget也是窗口类 //w就是一个窗口 MyWidget w; //窗口创建默认是隐藏,需要人为显示 w.show(); //让程序一直执行,等待用户操作 //等待事件的发生 a.exec(); return 0;}

mywidget.cpp

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent) : QWidget(parent){}MyWidget::~MyWidget(){}

mywidget.h

#ifndef MYWIDGET_H#define MYWIDGET_H#include class MyWidget : public QWidget{ //Q_OBJECT //信号与槽的时候需要public: MyWidget(QWidget *parent = 0); ~MyWidget();};#endif // MYWIDGET_H

你还在为没有学习平台而苦恼吗?你还在为没有学习资料而烦心吗?你还在为没人指导而担忧吗?可以私信小编 C++,为你提供学习的平台和资料。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • Qt是属于一个跨平台的GUI开发软件,支持的平台有Unix、Linux、Windows/WinCE、IOS等。 Q...
    一叶之界阅读 8,024评论 0 17
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 98,523评论 9 468
  • 一 小狐狸的奶奶有一串硬币,奶奶说把这串硬币藏在被窝里一起睡上两晚,好运就会降临。 刺猬向来是讨厌狐狸一族的,觉得...
    陳耳仔阅读 1,477评论 0 0
  • 关注我吧 给我一个机会 写进你心里 那些靠积赞才有勇气表白的人 最后都怎样了? 文\影子 ✄ 不知道你们在玩社交软...
    微风清酒阅读 589评论 1 17