众所周之,一个优秀的**“程序猿”**, 除了能够提出新颖而高效算法,并在命令行形式下编写出来,使得处理器能够执行相关操作外,还应能够制作出良好的交互界面,使得外行人员也能够了解清楚你的产品设计思想,为你的创作而点赞!为了实现可视化这一目的,Qt语言就应运而生。
Qt是用来进行用户图形界面设计的程序框架,它是跨平台的,不论在Windows、Linux还是Mac OS下面都能够运行,而且代码是基于 C++编写的,表达形式丰富多样,而且开发效率非常高。
【一】首先下载Qt5对应的最新版软件:https://www.qt.io/download
【二】一定要有相应的C++语言基础,否则很难弄清楚Qt5中有关类、对象、继承相关操作。详细的学习经验科研参看这个帖子,不要奢求一次性全部学懂,需要慢慢来磨练代码,知乎是一个不错的资源池,可以提供很多学习资料(如视频、书记PDF等)https://www.zhihu.com/question/23933514/answer/26393521
【三】Qt开发环境的基本介绍:
(1)Qt开发过程中,我们除了采用编程的方式实现窗口界面设计外,我们还可以利用UI设计器来对整个窗口进行绘制和布局。
(2)采用GUI形式创建的一个Qt项目如下:
对于【1】而言,是QLabel类中的一个对象,专门用来管理文字;
对于【2】而言,是QLineEdit类中的一个对象,专门用来管理框型文字输入;
对于【3】而言,是QPushButton类中的一个对象,专门用来管理按钮点击过程;
(3)为了实现UI界面与项目中的Headers头文件和Sources源文件相联系,于是我们需要在dialog.h文件中加入类的私有属性(【1】【2】【3】)。
QDialog、QLabel、QLineEdit、QPushButton都是类,直接用类名作为标准可导入进来,这是Qt头文件的写法特点。首先这个类名Dialog继承于基类QDialog,采用共有继承方式,Q_OBJECT是一个宏,为私有类型,用来启动Qt元对象系统的一些特有属性。Public是系统自动生成的一个对象,而Private则是我们刚刚新增加的三个属性,分别创造出三个对象。Private Slots是创建一个信号的接受槽。这个槽里面会执行相应的程序。
当然,如果我们直接采用UI界面来进行设计的话,那么系统会自动生成Private,但是private slots这个还是需要我们右击按钮才能添加进来这个接受槽。
(4)在dialog.cpp文件里面,我们特别需要理解几个函数及其表达意思:
首先这个bool ok ,表示的是布尔值(True\False)。QString 也是一个类,定义字符串类。ui->lineEdit-text()表示从框型图中读入文本字符串(如“12.34”),然后通过str.toInt(&ok)来实现字符串str内容转换为整型,成功之后返回True。
(5)信号和槽机制(Signal & Slot)
首先我们需要明确信号和槽机制的连接方式。学习这个机制的目的是为了让两个独立的对象之间能够进行通信。比如让QLineEdit对象输入的文本值能够与QPushButton按钮对象之间进行相关联,进而得到最终的结果。
基本格式如下:
// 信号与槽机制最常见的使用方式
connect(Object1, SIGNAL(signal),Object,SLOT(slot));
其中signal 为Object1的信号,而slot为Object2的槽。
(6)Qt5 对象系统的介绍
【1】QObject是最基本的类,所有使用元对象系统的功能必须继承自QObject。
【2】GUI界面的对象一般是QWidget类产生的对象。
【3】布局管理器对象一般是QGridLayout类产生的对象(网格布局)。
【4】字符串类的对象一般是QString类产生的对象。
【5】容器类:QList类(子类:QItemSelect、QQueue、QSingleSpy、QStringList、QTestEventList)、QLinkedList类、QVector类(QPolygon、QStack)。
(7) Qt5 的控件介绍
【1】Buttons按钮组:PushButton、 ToolButton、RadioButton、CheckBox、CommandLinkButton、ButtonBox
【2】InputWidget输入控件组:ComboBox、TextEdit、SpinBox、TimeEdit、DateEdir、Horizontal Scroll Bar(横向滚动条)、Vertical Scroll Bar(垂直滚动条)、Horizontal Slider(横向滑块)、Vertical Slider(纵向滑块)
【3】显示控件组(DisplayWidget):QLabel等
【4】空间间隔组(Spacers)
【5】布局管理组(Layouts)
【6】容器组(Containers)
【7】项目视图组(Item View)
【8】项目控件组(Item Widget)
未完待续…