ToB企服应用市场:ToB评测及商务社交产业平台

标题: QT入门 [打印本页]

作者: 西河刘卡车医    时间: 2024-7-11 09:13
标题: QT入门
1 QT概述

1.1 什么是QT

是一个跨平台的C++应用步伐开发框架
具有短平快的良好特质: 投资少、周期短、见效快、效益高
几乎支持所有的平台, 可用于桌面步伐开发以及嵌入式开发
有属于自己的事件处理机制
可以搞效率的开发基于窗口的应用步伐。
Qt是标准 C++ 的扩展, C++的语法在Qt中都是支持的
良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,可以快速上手。
Qt 提供了一种称为 signals/slots 的安全类型来替代 callback(回调函数),这使得各个元件 之间的协同工作变得十分简单。
1.2 Qt的特点

广泛用于开发GUI步伐,也可用于开发非GUI步伐。
GUI = Graphical User Interface
也就是基于窗口的应用步伐开发。
有丰富的 API
Qt 包括多达 250 个以上的 C++ 类
可以处理正则表达式。
支持 2D/3D 图形渲染,支持 OpenGL
Qt给步伐猿提供了非常详细的官方文档
支持XML,Json
框架底层模块化, 利用者可以根据需求选择相应的模块来利用
可以轻松跨平台
和Java的跨平台方式差别
在差别的平台利用的是相同的上层接口,但是在底层封装了差别平台对应的API(暗度陈仓)。
1.3 Qt中的模块

Qt 基本模块(Qt Essentials):提供了 Qt 在所有平台上的基本功能。
Qt 附加模块(Qt Add-Ons):实现一些特定功能的提供附加代价的模块。
增值模块(Value-AddModules):单独发布的提供额外代价的模块或工具。
技术预览模块(Technology Preview Modules):一些处于开发阶段,但是可以作为技术预览利用的模块。
Qt 工具(Qt Tools):帮助应用步伐开发的一些工具。
模块描述Qt CoreQt 类库的核心,所有其他模块都依赖于此模块Qt GUI计划 GUI 界面的基础类,包括 OpenGLQt Multimedia音频、视频、摄像头和广播功能的类Qt Multimedia Widgets实现多媒体功能的界面组件类Qt Network使网络编程更简单和轻便的类Qt QML用于 QML 和 JavaScript语言的类Qt Quick用于构建具有定制用户界面的动态应用步伐的声明框架Qt Quick Controls创建桌面样式用户界面,基于 Qt Quick 的用户界面控件Qt Quick Dialogs用于 Qt Quick 的系统对话框类型Qt Quick Layouts用于 Qt Quick 2 界面元素的布局项Qt SQL利用 SQL 用于数据库操纵的类Qt Test用于应用步伐和库进行单元测试的类Qt Widgets用于构建 GUI 界面的 C++ 图形组件类1.4 Qt案例

VirtualBox:虚拟机软件。
VLC多媒体播放器:一个体积小巧、功能强盛的开源媒体播放器。
YY语音:又名“歪歪语音”,是一个可以进行在线多人语音谈天和语音会议的免费软件。
咪咕音乐:咪咕音乐是中国移动倾力打造的正版音乐播放器
WPS Office:金山公司(Kingsoft)出品的办公软件,与微软Office兼容性良好,个人版免费。
Skype:一个利用人数众多的基于P2P的VOIP谈天软件。
1.5 相干文件

1.5.1 项目文件(.pro)

在创建的Qt项目中自动生成了一个后缀为 .pro 的项目文件,该文件中记载着项目的一些属性信息,具体信息如下:
  1. # 在项目文件中, 注释需要使用 井号(#)
  2. # 项目编译的时候需要加载哪些底层模块
  3. QT       += core gui
  4. # 如果当前Qt版本大于4, 会添加一个额外的模块: widgets
  5. # Qt 5中对gui模块进行了拆分, 将 widgets 独立出来了
  6. greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
  7.    
  8. # 使用c++11新特性
  9. CONFIG += c++11       
  10. #如果在项目中调用了废弃的函数, 项目编译的时候会有警告的提示   
  11. DEFINES += QT_DEPRECATED_WARNINGS
  12. # 项目中的源文件
  13. SOURCES += \
  14.         main.cpp \
  15.         mainwindow.cpp
  16.         
  17. # 项目中的头文件
  18. HEADERS += \
  19.         mainwindow.h
  20.         
  21. # 项目中的窗口界面文件
  22. FORMS += \
  23.         mainwindow.ui
复制代码
1.5.2 main.cpp

在这个源文件中有步伐的入口函数 main(),下面给大家介绍下这个文件中自动生成的几行代码:
  1. #include "mainwindow.h"                // 生成的窗口类头文件
  2. #include <QApplication>                // 应用程序类头文件
  3. int main(int argc, char *argv[])
  4. {
  5.     // 创建应用程序对象, 在一个Qt项目中实例对象有且仅有一个
  6.     // 类的作用: 检测触发的事件, 进行事件循环并处理
  7.     QApplication a(argc, argv);
  8.     // 创建窗口类对象
  9.     MainWindow w;
  10.     // 显示窗口
  11.     w.show();
  12.     // 应用程序对象开始事件循环, 保证应用程序不退出
  13.     return a.exec();
  14. }
复制代码
1.5.3 mainwindow.ui

在Qt中每一个窗口都对应一个可编辑的可视化界面(*.ui), 这个界面对应的是一个xml格式的文件, 一般情况下不需要在xml格式下对这个文件进行编辑, 关于这个文件结构相识即可。
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <ui version="4.0">
  3. <class>MainWindow</class>
  4. <widget  name="MainWindow">
  5.   <property name="geometry">
  6.    <rect>
  7.     <x>0</x>
  8.     <y>0</y>
  9.     <width>800</width>
  10.     <height>600</height>
  11.    </rect>
  12.   </property>
  13.   <property name="windowTitle">
  14.    <string>MainWindow</string>
  15.   </property>
  16.   <widget  name="centralwidget"/>
  17.   <widget  name="menubar"/>
  18.   <widget  name="statusbar"/>
  19. </widget>
  20. <resources/>
  21. <connections/>
  22. </ui>
复制代码
1.5.4 mainwindow.h

这个文件是窗口界面对应的类的头文件。
  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>                // Qt标准窗口类头文件
  4. QT_BEGIN_NAMESPACE
  5. // mainwindow.ui 文件中也有一个类叫 MainWindow, 将这个类放到命名空间 Ui 中
  6. namespace Ui { class MainWindow; }       
  7. QT_END_NAMESPACE
  8. class MainWindow : public QMainWindow
  9. {
  10.     Q_OBJECT        // 这个宏是为了能够使用Qt中的信号槽机制
  11. public:
  12.     MainWindow(QWidget *parent = nullptr);
  13.     ~MainWindow();
  14. private:
  15.     Ui::MainWindow *ui;                // 定义指针指向窗口的 UI 对象
  16. };
  17. #endif // MAINWINDOW_H
复制代码
1.5.5 mainwindow.cpp

这个文件是窗口界面对应的类的源文件。
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. MainWindow::MainWindow(QWidget *parent)
  4.     : QMainWindow(parent)
  5.     , ui(new Ui::MainWindow)        // 基于mainwindow.ui创建一个实例对象
  6. {
  7.     // 将 mainwindow.ui 的实例对象和 当前类的对象进行关联
  8.     // 这样同名的连个类对象就产生了关联, 合二为一了
  9.     ui->setupUi(this);
  10. }
  11. MainWindow::~MainWindow()
  12. {
  13.     delete ui;
  14. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4