C++ | 初识Qt

一、了解Qt

Qt是一个跨平台的C++开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,也可以开发不带界面的命令行(Command User Interface,CUI)程序。Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部;Qt 除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多其它功能,比如多线程、访问数据库、图像处理、音频视频处理、网络通信、文件操作等,这些 Qt 都已经内置了。

QT学习资料:http://c.biancheng.net/view/1792.html

二、Qt的优点

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

三、Qt应用

  1. Linux桌面环境KDE
  2. WPS Office 办公软件
  3. Skype 网络电话
  4. Google Earth 谷歌地图
  5. VLC多媒体播放器
  6. VirtualBox虚拟机软件

四、在Qt Creator中创建Qt项目

1.项目结构

main.cpp、xxx.cpp、xxx.h、xxx.ui、项目名称.pro,如下图所示:

C++ | 初识Qt_第1张图片

2.构建项目 

点击Qt Creator左侧的“项目”按钮,可以设置构建目录,设置完成后,点击左下角的“构建”按钮,可以生成ui_xxx.h文件,该文件是根据窗体上的组件及其属性、信号与槽的关联等自动生成的一个类的定义文件。

3.Makefile文件

一个工程(project)中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。所以,Makefile 文件描述了整个工程的编译、连接等规则。其中包括:工程中的哪些源文件需要编译以及如何编译、需要创建哪些库文件以及如何创建这些库文件、如何最后产生我们想要的可执行文件。

4.项目管理文件.pro

.pro就是工程文件(project),存储项目设置,它是qmake自动生成的用于生产makefile的配置文件。注释从“#”开始,到这一行结束。

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

TEMPLATE =app #模板,生成应用程序的makefile,模板变量告诉qmake为这个应用程序生成哪种makefile

DEFINES += QT_DEPRECATED_WARNINGS

SOURCES += \
    main.cpp \
    mainwindow.cpp

HEADERS += \
    mainwindow.h

FORMS += \
    mainwindow.ui

qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

 

1.“Qt += core gui”:表示项目中加入 core gui 模块。core gui 是 Qt 用于 GUI 设计的类库模块,如果创建的是控制台(Console)应用程序,就不需要添加 core gui。Qt 类库以模块的形式组织各种功能的类,根据项目涉及的功能需求,在项目中添加适当的类库模块支持。例如,如果项目中使用到了涉及数据库操作的类就需要用到 sql 模块,在 pro 文件中需要增加如下一行:Qt +=sql

2.模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择:TEMPLATE = app

  • app -建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。
  • lib - 建立一个库的makefile。
  • vcapp - 建立一个应用程序的VisualStudio项目文件。
  • vclib - 建立一个库的VisualStudio项目文件。
  • subdirs -这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile。

3.“greaterThan(QT_MAJOR_VERSION, 4): QT += widgets”:条件执行语句,表示当 Qt 主版本大于 4 时,才加入 widgets 模块;

4.SOURCES、HEADERS、FORMS 记录了项目中包含的源程序文件、头文件和窗体文件(.ui 文件)的名称。这些文件列表是 Qt Creator 自动添加到项目管理文件里面的,用户不需要手动修改。当添加一个文件到项目,或从项目里删除一个文件时,项目管理文件里的条目会自动修改。

5.main.cpp

#include "widget.h"
#include 

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);//应用程序对象,有且仅有一个
    Widget w;//窗口对象,父类:Qwidget
    w.show();//窗口对象默认不会显示
    return a.exec();//让应用程序对象进入消息循环(一直捕捉用户行为)
}
  1. QApplication应用程序类:
    1. 管理图形用户界面应用程序的控制流和主要设置。
    2. 是Qt的整个后台管理的命脉,它包含主事件循环,以及来自窗口系统和其它资源的所有事件处理和调度。它也处理应用程序的初始化和结束,并且提供对话管理。
    3. 对于任何一个使用Qt的图形用户界面应用程序,都正好存在一个QApplication 对象,而不论这个应用程序在同一时间内是不是有0、1、2或更多个窗口。
  2. a.exec():程序进入消息循环,等待对用户输入进行响应。这里main()把控制权转交给Qt,Qt完成事件处理工作,当应用程序退出的时候exec()的值就会返回。在exec()中,Qt接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。

6.可视化设计的窗体.ui

1.每一个组件都有objectName属性,表示组件的对象名称,界面上的每个组件都需要一个唯一的对象名称,以便被引用。

2.在设计窗口的上方有一个工具栏,用于调整设计器进入不同的状态,以及进行布局设计:

按钮及快捷键 功能
Edit Widget (F3) 界面设计进入编辑状态,就是正常的设计状态
Edit Signals/Slots(F4)  进入信号与槽的可视化设计状态
Edit Buddies 进入伙伴关系编辑状态,可以设置一个Label 与一个组件成为伙伴关系
Edit Tab Order 进入Tab 顺序编辑状态,Tab 顺序是在键盘上按Tab 键时,输入焦点在界面各组件之间跳动的顺序
Lay Out Horizontally (Ctrl+H) 将窗体上所选组件水平布局
Lay Out Vertically (Ctrl+L)  将窗体上所选组件垂直布局
Lay Out Horizontally in Splitter 将窗体上所选组件用一个分割条进行水平分割布局
Lay Out Vertically in Splitter 将窗体上所选组件用一个分割条进行垂直分割布局
Lay Out in a Form Layout 将窗体上所选组件按窗体布局
Lay Out in a Grid 将窗体上所选组件网格布局
Break Layout 解除窗体上所选组件的布局,也就是打散现有的布局
Adjust Size(Ctrl+J) 自动调整所选组件的大小
 

五、在VS中创建Qt项目

1.安装插件

通过VS“工具”->"扩展和更新",安装Qt Visual Studio Tools,创建Qt Widgets Application项目。

2.项目结构

main.cpp、项目名称.cpp、项目名称.h、项目名称.ui、项目名称.qrc,如下图所示。双击.ui文件,将通过Qt Designer开的该文件。

C++ | 初识Qt_第2张图片

 

 

 

 

 

你可能感兴趣的:(C++,Qt,c++,Qt)