- 博客(17)
- 收藏
- 关注
原创 QT之消息对话框
我们会经常见到一些标准对话框,Qt 也为开发者提供了一些可复用的对话框类型。 Qt 提供的可复用对话框全部继 QDialog 类,关系如下图所示: Qt 中的标准对话框遵循相同的使用方式,大概流程如下: 那么我们的消息对话框是应用程序中最常见的界面元素,主要用于:1、为用户提示重要信息;2、强制用户进行操作选择。如我们平时所见的画图时的对话框,如下: ...
2018-04-01 22:17:30 3534
原创 QT之创建登录对话框
之前我们介绍了对话框的相关知识,那么今天我们就来创建一个登录对话框,包含用户名和密码的这么一个可复用的模板。 需求分析:登录对话框是应用程序中的常用部件。可复用软件部件,获取用户名和密码。最终我们将要做成如下所示的界面: 登录对话框的设计与架构关系如图所示: 我们 Widget 的头文件和 .cpp 文件实现如下所示: ...
2018-04-01 11:34:10 1083
原创 QT之对话框
我们在平时的软件设计中,难免会遇到对话框,那么我们今天就来看看 Qt 中的对话框。 对话框是与用户进行简短交互的顶层窗口,QDialog 是 Qt 中所有对话框窗口的基类。QDialog 继承于 QWidget 是一种容器类型的组件。关系入下图所示: QDialog 的意义:1、QDialog 作为一种专用的交互窗口而存在;2、QDialog 不能作为子部件嵌入其它容器中;3...
2018-03-30 00:56:34 279
原创 QT之对象父子关系
QT对象间可以存在父子关系: 1、每一个对象都保存有它所有子对象的指针 2、每一个对象都有一个指向其父对象的指针 其关系如下图所示: 当指定QT对象的父对象时,其父对象会在子对象链中表中会加入该对象的指针,该对象会保存指向其父对象的指针。 我们在QT中创建了3个 QObject 对象,我们让 c1、c2 的父对象指向 p,那么我们打印 c1 和 c2 的...
2018-03-29 00:34:13 1567
原创 QT之界面与业务逻辑的分离
我们在实现计算器的时候,得考虑到界面与逻辑的分离。 那么基本程序的架构一般包含:1、用户界面模块(UI),用来接受用户输入及呈现数据;2、业务逻辑模块(Business Logic),根据用户需求处理数据。 基本的设计原则是:功能模块之间需要进行解耦;核心思想是强内聚,弱耦合:1. 每个模块应该只实现单一的功能;2. 模块内部的子模块只为整体的单一功能而存在;3. 模块...
2018-03-26 22:20:11 11503
原创 QT之计算器解析算法下
上篇博客我们已经将中缀表达式正确的转换为后缀表达式了。 那么后缀表达式是如何进行计算的呢?这时就需要比那里后缀表达式中的数字和运算符了。如果当前元素为运算符:1. 从栈中弹出右操作数;2. 从栈中弹出左操作数;3. 根据符号进行运算;4. 将运算结果压入栈中。当遍历结束时,再将栈中的唯一数字为运算结果。 用伪码描述出来就是: 我们在这块得考虑到数学运算中的除法(除0)...
2018-03-25 14:38:03 577
原创 QT之计算器核心解析算法
上节我们说到计算机默认的是后缀表达式,那么中缀表达式转后缀表达式的过程就类似于编译过程。必须得注意这么几个问题:四则运算表达式中的括号必须匹配;根据运算符优先级进行转换;转换后的表达式中没有括号;转换后可以顺序计算出最终结果。 下来我们就讲下具体的转换过程: 1、当前元素 e 为数字:输出 2、当前元素 e 为运算符时: 1. 与栈顶运算符进行优先级比较;2.小于等于时将栈顶元...
2018-03-21 23:19:27 506
原创 QT之计算器对四则运算表达式的解析
前面我们已经关于计算器介绍的已经够多了,那么它现在还是没有具备计算的功能。 今天我们来继续讲解计算器的解析算法,那么对于一个四则运算表达式,它是如何读懂的呢?比如:“+9.11 + ( -3 - 1 ) * -5 ”; 人类习惯的数学表达式叫做中缀表达式,还有一种将运算符放在数字后面的后缀表达式,比如:5 + 3 ==> 5 3 +; 1 + 2 * 3 ==> 1 2 3 * ...
2018-03-19 22:45:52 2280
原创 QT之字符串类
前面我们讲解了开发计算器的信号处理机制,接下来我们来讲讲关于字符串显示的问题。 我们都知道 C 语言不支持真正意义上的字符串;C 语言是用字符数组和一组函数来实现字符串操作的;C 语言不支持自定义类型,因此我们无法获得字符串类型。 从 C 到 C++ 的进化过程引入了自定义类型,在 C++ 中可以通过类完成字符串类型的定义。C++ 中的STL标准库又是...
2018-03-18 19:02:39 359
原创 QT之消息处理
那么我们之前学习了计算器的界面制作,但是只是实现了一个计算器的界面,还不具有计算器的功能。 接下来我们就要学习在QT中如何进行消息的处理,比如你按下1键之后,QT会如何处理这个信号。QT封装了具体操作系统的消息机制,同时它遵循经典的 GUI 消息驱动事件模型。 QT中定义了与系统消息相关的概念,接下来我们将介绍3个概念: 1、信号(signal):由操...
2018-03-18 18:53:31 1232
原创 QT之计算器代码重构
首先我们来讲讲为什么要进行代码重构?在一些大的项目中,代码重构是一个必不可少的步骤。因为项目大了,代码也就多了,后期的维护将会很难,所以我们要适当的进行代码重构,让代码的可复用性提高,使软件的设计和架构更加合理。 代码实现和代码重构有什么不同呢?代码实现的重点是功能的实现,而代码重构则是在实现功能的基础上进行再次优化,以提高代码质量。 那么什么样的代码需要...
2018-03-18 18:38:00 329
原创 QT之创建计算器
上篇博客说我们要创建一个计算器,那么下面我们来创建一个计算器的界面,这节只是简单的开发一个计算器的界面。实现的是一个文本框只能显示,不能输入的,界面大小固定的计算器。那么在开发之前,我们的的QT知识还有所欠缺,对于文本框的显示,我们没有相关的知识,我们就先学习下 QLineEdit 组件。 QLineEdit 用于接收用户输入;QLineEdit 能够获取用户输入的字符...
2018-03-18 18:30:56 398
原创 QT之坐标系统
GUI操作系统都有其特定的坐标系统;我们本节要在坐标系统中进行窗口和部件的定位,定位类型分为3种: 1、顶级窗口部件的定位 2、窗口内部件的定位 3、窗口部件的大小设置 Qt 使用同一的坐标系统定位窗口部件的位置和大小;Qt 部件类提供成员函数在坐标系统中进行定位;QWidget 类提供了窗口部件所需的坐标系统成员函数。 QWidget 类中的坐标系统成员函数,如图: ...
2018-03-18 18:22:19 280
原创 QT之窗口部件及窗口类型
今天我们来继续学习QT的相关知识,本文的内容是介绍QT的窗口部件及窗口类型。 先说下窗口组件,图形用户界面由不同的窗口和窗口组件构成,一般是在<QtGui>中包含,对应Qt中的GUI模块;Qt以组件对象的方式构建图形用户界面;组件的类型分为两种:1、容器类(父组件),用于包含其他的界面组件。2、功能类(子组件),这个是用于实现特定的交互功能。 **Qt中没有父组件的顶级组件叫做窗口!...
2018-03-17 18:11:06 4434
原创 QT Creator工程简介
我们在学习QT教程之前,有必要来了解一下QT Creator,因为它和QT是不可分割的,学习了它的基本用法,有助于我们以后QT的学习。好了,废话不多说,我们直接开始吧。 QT Creator 以工程项目的方式对源码进行管理,那么QT Creator里面都有什么东西呢? 它的里面包含有不同类型的文件: 1、.pro 项目描述文件 这个里面就包含了一些描述项目的信息,我们在后面进行介绍。其实它...
2018-03-17 17:59:31 1079
原创 QT之启程
今天开始学习QT了。我们怀着无比激动的心情,用一个源文件(main.cpp)开始搭建QT的相关环境。先是在QT command编译器中输入qmake -project,生成4.pro文件。接着执行qmake,生成好多文件,但主要是makefile文件。最后执行make,但是没有我们想要的 .exe 可执行程序生成 博主百度了一下这个问题,由于博主的QT5.8是直接安装的,并没有设置环境...
2018-03-17 17:55:33 187
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人