一数据库 |
Qt简介(Build your world with Qt)编程 |
二windows |
Qt5.7.0的安装浏览器 |
三网络 |
Qt系统构造库及经常使用类框架 |
四编程语言 |
信号(signal)与槽(slot)通讯机制函数 |
五工具 |
QtDesigner开发工具的使用布局 |
六 |
登陆对话框程序的编写 |
七 |
文件、文本的基本操做 |
八 |
字体、颜色对话框的使用 |
九 |
停靠/堆栈/分割窗口的介绍 |
十 |
QWebEngineWidgets的介绍 |
十一 |
图表程序的开发 |
十二 |
记事本程序的开发 |
十三 |
基于QWebEngineView实现一个简易的浏览器 |
一.Qt简介
Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供创建艺术级图形用户界面所需的全部功能。它是彻底面向对象的,很容易扩展,而且容许真正的组件编程。
Qt按照不一样的版本发行,分为商业版和开源版。Qt商业版为商业软件提供开发,它们提供传统商业软件发行版而且提供在协议有效期内的免费升级和技术支持服务。而Qt开源版是为了开发自由而设计的开放源码软件,它提供了和商业版本一样的功能,在GNU通用公共许可证下,它是免费的。
Qt支持的主流平台有:
MS/Windows------9五、9八、NT4.0、windows7/8/10/XP;
UNIX/X11------Linux、Sun Solaris、HP-UX、CompaqTru64 UNIX、IBM AIX、SGI IRIX和其余不少X11平台;
Macintosh------Mac OS X;
Embedded------有帧缓冲(framebuffer)支持的Linux平台、Windows CE。
2、Qt5.7.0的安装
本文主要介绍Qt5.7.0 for windows 64-bit(VS2013,904MB)开发工具在Windows 10 Professional OS环境下的安装。下载网址:https://www.qt.io/download-open-source/#section-2。须要下载的安装包以下图1和图2所示。
安装步骤:
step1:首先安装Qt5.7.0 for windows 64-bit(VS2013,904MB);
step2:其次安装Visual Studio Add-in 1.2.5 for Qt5插件;
step3:系统环境变量配置;
step4:创建Qt工程验证安装成功。
安装图解:
须申请注册一个Qt Account,方可进入安装界面如图3-图6所示;
图3
安装完成后,配置系统环境变量,以下图7所示;
打开VS2013后,会在菜单栏显示Qt5,依次点击Qt5->Qt Options->Add,而后按下图8红色区域填写相应内容;
配置成功后,会有以下图9和图10所示内容。
创建Qt工程
创建工程(QHello)图解以下图11所示:
图11
图12
图13
图14
工程创建好之后,双击解决方案列表中的Form Files->qhello.ui进入Qt Designer设计师界面,而后从Qt designer 布局界面的左侧部件编辑区域中(Widget Box)中拖拽一个PushButton 到主界面上,单击右键更改其显示文本为Hello Qt以及对象名称为helloQtBtn。固然你还能够经过更改样式表改变控件的颜色、字体、大小,背景图片等元素。,这里我给主窗口加了一副Border imag图片,目的是为了适应窗口大小的改变,界面布局以下图15所示。
图15
主界面布局完成后,再在Qt Designer设计师界面中新建一个qtdlg.ui的对话框,而后从Widget Box中拖拽一个Label控件,更改其文本显示为:Build your world with Qt,一样的能够更改其样式表修改或添加你喜好的风格。这里布局的界面以下图16所示。
qtdlg.ui布局完成后,将它添加到解决方案中Form files目录下与qhello.ui并列,而后编译,编译完成后会在解决方案中的Generated Files 目录下生成一个ui_qtdlg.h的文件。此时,分别添加一个qtdlg.h头文件和一个qtdlg.cpp源文件。
而后添加相应的内容,这里面有一个技巧:qtdlg.h里的内容能够从qhello.h里复制,而后作对应的更改(只要学过C++的应该都会,默认你们都会了),同理qtdlg.cpp里的内容也能够参照qhello.cpp文件里的内容修改,其实也就是一个构造函数和一个析构函数的添加,基类改为QDialog,相关头文件也要作相应更改。再次编译成功后,须要在qhello.h文件中包含头文件#include”qtdlg.h”,在下面的QHello类中定义一个私有槽[ private slots:void helloQtBtnSlot();]用来与Hello Qt这个pushbutton进行通讯。代码:
void QHello::helloQtBtnSlot()
{
Qtdlg *dlg=new Qtdlg;//非模态对话框
dlg ->show();
}
而后须要在QHello构造函数中用connect函数作一个链接,代码:
QObject::connect(ui.helloQtBtn,SIGNAL(clicked()),this,SLOT(helloQtBtnSlot()));
最后按F5调试运行,点击Hello Qt,弹出一个带有Build your world with Qt字样的对话框。如上图15和16所示。
3、Qt系统构造库及类
Qt系统主要有如下模块构成,以下表一所示:
ActiveQt |
Qt中活动控件类模块,包含ActiveX和COM |
Qt3DCore |
Qt3D仿真框架的基础类模块 |
Qt3DInput |
Qt3D输入类模块 |
Qt3DLogic |
Qt帧同步类模块 |
Qt3DQuick |
使用QML处理3D内容,基于OpenGL |
Qt3DQuickInput |
Qt3DQuick输入类模块 |
Qt3DQuickRender |
Qt3DQuick渲染类模块 |
Qt3DRender |
Qt3D渲染类模块 |
QtANGLE |
提供OpenGL驱动或Directx驱动的类模块 |
QtBluetooth |
Qt蓝牙通讯类模块 |
QtCharts |
Qt 图表组件库类模块 |
QtCLucene |
Qt文本搜索引擎类模块 |
QtConcurrent |
Qt高层次API类模块 |
QtCore |
Qt核心非GUI类模块 |
QtDataVisualization |
Qt可视化编程类模块 |
QtDBus |
Qt高级进程间通讯机制类模块 |
QtDesigner |
Qt设计师类模块 |
QtDesignerComponents |
Qt设计师组件类模块 |
QtGamepad |
Qt游戏手柄类模块 |
QtGui |
Qt核心GUI类模块 |
QtHelp |
Qt帮助类模块 |
QtLocation |
Qt地图场景类模块 |
QtMultimedia |
Qt多媒体类模块 |
QtMultimediaWidgets |
Qt多媒体控件类模块 |
QtNetwork |
Qt网络类模块 |
QtNfc |
Qt近场通讯类模块 |
QtOpenGL |
Qt开源图形库类模块 |
QtOpenGLExtensions |
Qt开源图形库拓展类模块 |
QtPacketProtocol |
Qt网络驱动协议类模块 |
QtPlatformHeaders |
Qt平台标题类模块 |
QtPlatformSupport |
Qt平台支持类模块 |
QtPositioning |
Qt定位类模块 |
QtPrintSupport |
Qt打印支持类模块 |
QtPurchasing |
Qt采购类模块 |
QtQml |
QtQml主要实现与JavaScript集成 |
QtQmlDebug |
Qml调试类模块 |
QtQmlDevTools |
Qml开发支持类模块 |
QtQuick |
编写Qml应用标准类库 |
QtQuickControls2 |
QtQuick控件模块 |
QtQuickParticles |
QtQuick粒子类模块 |
QtQuickTemplates2 |
QtQuick模板类库模块 |
QtQuickTest |
QtQuick测试类模块 |
QtQuickWidgets |
QtQuick部件类模块 |
QtScript |
Qt脚本类模块 |
QtScriptTools |
Qt脚本工具类模块 |
QtScxml |
Qt脚本可扩展编程语言类模块 |
QtSensors |
Qt传感器类模块 |
QtSerialBus |
Qt串行总线类模块 |
QtSerialPort |
Qt串口类模块 |
QtSql |
Qt数据库类模块 |
QtSvg |
Qt透视图类模块 |
QtTest |
Qt测试类模块 |
QtUiPlugin |
QtUi插件类模块 |
QtUiTools |
QtUi工具类模块 |
QtWebChannel |
Qt网络通讯类模块 |
QtWebEngine |
Qt网络引擎类模块 |
QtWebEngineCore |
Qt网络引擎核心非Gui类模块 |
QtWebEngineWidgets |
Qt网络引擎核心Gui类模块 |
QtWebSockets |
Qt网络套接字类模块 |
QtWebView |
Qt网络视图类模块 |
QtWidgets |
Qt部件编程类模块 |
QtXml |
Qt可扩展标记语言模块 |
QtXmlPatterns |
QtXml模式类模块 |
QtZlib |
Qt压缩/解压类模块 |
经常使用到的类以下表2所示:
主要的类 |
描述 |
抽象窗口部件类 |
抽象窗口部件类是经过子类来使用的 |
高级窗口部件类 |
高级的GUI窗口部件,好比列表视图、进度条等 |
基本窗口部件类 |
基本的GUI窗口部件,好比按钮、组合框、滚动条 |
数据库类 |
与数据库相关的类,好比与SQL数据库相关的类 |
日期与时间类 |
处理日期与时间的类 |
事件类 |
用来生成和处理事件的类 |
环境类 |
提供了多样全面的服务,好比事件处理,系统设置等 |
布局管理类 |
调整窗口部件大小的位置,可以构成复杂对话框的类 |
共享类 |
为了快速复制而引用计数的类 |
帮助系统类 |
用来给应用程序提供在线帮助的类 |
多媒体、图形、打印类 |
处理图形(2D,3D、OpenGL)和图像的编码和解码以及提供声音,动画、打印等服务 |
4、信号(signal)与槽(slot)通讯机制
Qt提供了一种信号和槽的通讯机制用于完成界面操做的响应,经过connect函数完成任意两个Qt对象之间的通讯。其中,信号会在某个特定的状况或动做下被触发,槽是等同于接收并处理信号的函数。以下图17所示Qt中信号与槽的通讯机制示意图
观上图可知信号与槽的通讯方式:
1. 同一个信号能够与多个槽相连
2.同一个槽能够响应多个信号
5、QtDesigner开发工具的使用
熟悉Qtdesigner界面开发环境,如图18所示。
图18
6、登陆对话框程序的编写
界面以下图19所示。(代码就补贴了( ̄▽ ̄)")
图19
主要代码:
//登陆到主界面
void Dialog::on_signInBtn_clicked()
{
if (ui->userlineEdit->text() == "hello"&&ui->passwordlineEdit->text() == "qt2016")
{
logindlg = new MainWindow;
logindlg->show();
this->close();
}
else
{
QMessageBox::information(this, "登陆失败", "用户名或密码错误请从新登陆");
return;
}
}
主界面
以下图20所示。
未完待续~