一、前言
前边分别讲述了Qt的核心特性——信号与槽和Qt的事件系统,要完整地了解Qt的框架,还需要了解Qt的两项支持,分别是多线程和网络,以及Qt两项独特的模块编程支持,分别是多媒体编程和串口编程。或许,大部分人在接触Qt的时候,急于上手直接开始做项目,亦或是迫切想要掌握各种各样的类,但其实,无论是可视化ui设计界面内的组件,还是各式各样的类(例如:QToolBar类、QAction类、QPainter类等等),都是“工具”,只有掌握好Qt的六项主要内容,就可以借助“工具”更好地进行Qt界面的设计。至于是可视化ui设计界面内的组件,还是各式各样的类,都可以在需要使用到的时候单独地查阅Qt提供地文档或是独立搜索相关内容的讲解。
除此之外,我认为Qt还有两项也需要独立出来的内容,第一是文件系统操作和文件读写,对其中的Json文件的操作和读写,不建议使用Qt提供的QJson(这块内容可以自己查阅一下和尝试编程一下,不难,但会发现文件内容并不理想),而是采用传统的C++编程;第二是Qt提供的数据库Qt SQL,这里建议不如使用MySQL(对于数据库这块,不懂的话感兴趣学一学,深究这块不亚于学一门技术)。对于第一点,有一篇在GitHub上star数特别高的文章,可以分享给大家:https://github.com/nlohmann/json
二、进程和线程
1、进程
进程是指一个具有独立功能的程序在某个数据集合上的一次动态执行过程,它是系统进行资源分配和调度的基本单元。
2、线程
线程是进程内独立的一条运行路线,处理器调度的最小单元,也可以称为轻量级进程,一个进程可以拥有多个线程,每个线程必须有一个父进程。
三、使用QThread创建多线程程序
其实在Qt的示例里,就有一个很好的多线程的例子,它提供的代码量不多,也比较容易读懂,因此我觉得是个不错的例子,在这里粘贴一下给大伙看看,将在下一篇文章中再具体根据自编程一个QThread示例,下面是Qt提供的示例代码:
masterthread.h文件代码:
/****************************************************************************
**
** Copyright (C) 2012 Denis Shienkov <denis.shienkov@gmail.com>
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtSerialPort module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, a