基于Qt5.8.0,主要讲解Widget C++编程,建议初学者学习。
这一篇中通过创建一个hello world程序,主要讲解了Qt Creator开发环境的创建以及Qt程序运行发布等内容。
本篇实现多个窗口的切换显示。
在前一篇的内容中我们已经实现了登录对话框,这一篇对其进行改进,在弹出对话框中填写用户名和密码,按下登录按钮,如果用户名和密码均正确则进入主窗口,如果有错则弹出警告对话框。
后面几篇里我们将介绍经典的Qt主窗口部件QMainWindow,主窗口部件就是一般的应用程序主窗口,它包含了菜单栏、工具栏、中心部件、状态栏和可停靠部件等。这一篇将着重介绍菜单的实现以及使用资源文件来添加菜单图标。
一个软件不仅要有强大的功能,还要有一个美观的界面,布局管理器就是用来对界面部件进行布局管理的。
前面已经在主窗口中添加了菜单和工具栏,这一篇我们将实现基本的文本编辑功能。
这一篇我们来添加查找菜单的功能,还会涉及Qt Creator很多实用功能。
在程序主窗口QMainWindow中,主要包含菜单栏、工具栏、中心部件和状态栏。前面几个已经讲过了,这一篇讲解状态栏的使用。
事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。在Qt中处理事件有多种方法,不过最常用的是重写Qt事件处理函数。这里我们就以鼠标事件和键盘事件为例来进行简单的介绍。
如果要对程序实现时间上的控制,那么就要使用到定时器。而随机数也是很常用的一个功能,当我们要产生一个随机结果时就要使用到随机数。这一篇就来简单介绍一下定时器和随机数。
Qt中提供了强大的2D绘图系统,可以使用同一API实现在屏幕和绘图设备上进行绘制,它主要基于QPainter、QPaintDevice和QPaintEngine这三个类。
Qt现在支持三种类型的渐变填充,分别由QGradient的三个子类来表示,QLinearGradient表示线性渐变,QRadialGradient表示辐射渐变,QConicalGradient表示锥形渐变。
Qt中除了绘制图形以外,还可以使用QPainter::darwText()函数来绘制文字。
如果要绘制一个复杂的图形,尤其是要重复绘制这样的图形,那么可以使用QPainterPath类,然后使用QPainter::drawPath()来进行绘制。
Qt提供了四个类来处理图像数据:QImage、QPixmap、QBitmap和QPicture,它们都是常用的绘图设备。
这一节我们将讲解Qt的坐标系统,分为两部分来讲解。
这一节我们将应用前面讲到的内容,编写一个简单的涂鸦板程序,这一节只是实现最基本的鼠标画线功能。
本讲我们将实现在涂鸦板上绘制图形,这里以矩形为例进行讲解。
图形视图可以对大量定制的2D图形项进行管理和相互作用。视图部件可以让所有图形项可视化,它还提供了缩放和旋转功能。
在学习数据库相关内容前,建议大家掌握一些基本的SQL知识,应该可以看懂基本的SELECT、INSERT、UPDATE和DELETE等语句,因为在这几篇教程中使用的都是非常简单的操作,所以即便没有数据库的专业知识也可以看懂。
在Qt 5中已经提供了对MySQL数据库的默认支持。
前面两节中已经在Qt里利用QSqlQuery类执行了SQL语句,这一节我们将详细讲解该类的使用。
Qt中使用了自己的机制来避免使用SQL语句,为开发者提供了更简单的数据库操作及数据显示模型,分别是只读的QSqlQueryModel,操作单表的QSqlTableModel以及可以支持外键的QSqlRelationalTableModel。
QSqlTableModel提供了一个一次只能操作单个SQL表的读写模型,它是QSqlQuery的更高层次的替代品,可以浏览和修改独立的SQL表。
QSqlRelationalTableModel继承自QSqlTableModel,并且对其进行了扩展,提供了对外键的支持。一个外键就是一个表中的一个字段和其他表中的主键字段之间的一对一的映射。
在Qt中提供了Qt XML模块来进行XML文档的处理,这里主要提供了两种解析方法: DOM方法,可以进行读写;SAX方法,可以进行读取。
本讲使用代码来创建那个XML文档,并且实现查找、更新、插入等操作。
如果你只想读取并显示整个XML文档,那么SAX是很好的选择,因为它提供了比DOM更简单的接口,并且它不需要将整个XML文档一次性读入内存,这样便可以用来读取较大的文件。
QXmlStreamReader类提供了一个快速的解析器通过一个简单的流API来读取格式良好的XML文档,它是作为Qt的SAX解析器的替代品身份出现的,因为它比SAX解析器更快更方便。