Qt学习
文章平均质量分 66
taohe_0
这个作者很懒,什么都没留下…
展开
-
Qt5编译snmp++(1) 编译libdes
Qt5编译SNMP++的步骤原创 2022-03-17 20:17:29 · 6402 阅读 · 0 评论 -
[Q学习]13 Qt状态机框架——简单的状态机
原创文章,可以转载,转载时请以超链接形式保留本文地址、作者信息和本声明。否则将追究法律责任。状态机是面向对象中不可缺少的一部分,它可以用于描述对象(系统)如何响应对外部输入。状态机首先状态机定了对象(系统)能够到达的状态,然后定义状态迁移,即如何从一个状态转变到另一个状态。Qt中的状态机紧密地集成了Qt元对象系统,比如状态迁移可以通过信号触发,用户可以设置状态来设施QObject的属性,调用Q原创 2016-06-21 11:32:55 · 1114 阅读 · 0 评论 -
[Q学习]12 Qt事件系统——发送事件
原创文章,可以转载,转载时请以超链接形式保留本文地址、作者信息和本声明。否则将追究法律责任。前几节说了投递事件、处理事件和过滤事件,本节主要说说发送事件,没有发送事件,前面几节说的内容就没用了。Qt中,发送事件仅有两个接口:1 QCoreApplication::sendEvent()2 QCoreApplication::postEvent()sendEvent:立即发送事件原创 2016-06-20 17:31:00 · 776 阅读 · 0 评论 -
[Qt学习]14 Qt状态机框架——进入和退出状态
原创文章,可以转载,转载时请以超链接形式保留本文地址、作者信息和本声明。否则将追究法律责任。在上一节中,我们实现了具有三个状态的状态机,但是这个状态机仅仅是声明了三个状态,定义了状态迁移,没有就进一步完成其他动作。如何在改变状态时做一些操作呢?1 设置属性值假设有这样一种场景,在进入某一个状态时在按钮标签上显示处当前状态标识。对于这样的功能,我们可以通过这个接口来实现:void Q原创 2016-06-23 19:04:17 · 1930 阅读 · 0 评论 -
[Q学习]14 Qt状态机框架——进入和退出状态2
2 关联信号槽Qt状态机有这样一个特性:进入某个状态时会触发QState::entered()信号,离开状态时触发QState::exited()信号,如此,我们使用槽函数关联这两个信号就可以做一些额外的操作了。还是之前的代码,增加两个槽函数,输出字符串:声明如下:#ifndef MAINWINDOW_H#define MAINWINDOW_H#include #inclu原创 2016-06-23 19:06:25 · 1008 阅读 · 0 评论 -
[Q学习]14 Qt状态机框架——进入和退出状态3
3 重载onEntry和onExit如果我们要自定义一个状态的话,除了设置属性和信号槽之外,我们还可以通过重载接口实现进入和退出时执行一些操作。一般我们自定义状态类继承QState,QState继承自QAbstractState,QabstractState有两个纯虚函数(接口):virtual void onEntry(QEvent *event) = 0virtual void原创 2016-06-23 19:08:31 · 1029 阅读 · 0 评论 -
[Q学习]15 Qt状态机框架——状态机停止
原创文章,可以转载,转载时请以超链接形式保留本文地址、作者信息和本声明。否则将追究法律责任。前几节讲述的都是状态机运行的过程,没有结束状态。任何一个状态机都应该有一个结束状态。那如何停止状态机呢,或者说如何进入终止态呢?Qt状态机框架中,有一个特殊的类QFinalState,这个类定义了状态机的终止状态,我们仅需要简单的将QFinalState的对象A加入到状态机中,然后定义一个状态迁原创 2016-08-20 09:24:53 · 1381 阅读 · 0 评论 -
qsrand用法
今天写程序,需要用到随机种子来产生不同的随机数。在Qt中,设置随机种子的方法是void qsrand(uint seed)。它的参数seed是一个无符号32位数,一般都是与调用事件关联起来在C++环境中,ctime.h头文件提供了time函数,一般要包含该文件:#include 在设置种子的地方调用qsrand((quint32)time(0));关于t原创 2016-11-23 20:38:57 · 11005 阅读 · 0 评论 -
[Q学习]16 Qt状态机框架——共享状态迁移
原创文章,可以转载,转载时请以超链接形式保留本文地址、作者信息和本声明。上一节中,我实现了4个状态的状态机:S1、S2、S3和终止态,其中S3可以迁移到到终止态。如果我们通过点击Quit按钮退出状态机,也就是说既要保持S、S2和S3的相互转换状态,又要增任意状态可迁移到终止态,我们可以给S1、S2增加到终止态的状态迁移。状态图像下面这样: 但是有没有这样一种感觉:如果状态数量少,上面这原创 2016-12-10 07:17:49 · 1047 阅读 · 1 评论 -
[Qt入门]17 Qt状态机框架——历史状态
原创文章,可以转载,转载时请以超链接形式保留本文地址、作者信息和本声明。在上一节的例子中,我们使用了Qt状态机框架的分组状态实现了共享状态迁移的功能,基于上一节的状态图,我们考虑这样一种情况,在S1中任意子状态时,我们按下一个按钮中断了状态机,做一些操作,操作完毕后再恢复到原来的状态。上述这种情况,Qt状态机框架提供了历史状态——QHistoryState类用于适应这种模型。具体说来,假设原创 2017-03-03 21:56:19 · 1512 阅读 · 2 评论 -
[Q学习]11 Qt事件系统——过滤事件
原创文章,可以转载,转载时请以超链接形式保留本文地址、作者信息和本声明。否则将追究法律责任。我们可能会遇到这样一种需求——监测某个对象的事件投递过程,分析或者拦截某个事件,这时我们就要用到事件过滤器了。什么是事件过滤器呢?事件过滤器本质上是QObject子类的一个对象,该对象重载了eventFilter接口。如果使用事件过滤器呢?1 定义QObject子类A,重载eventFilter原创 2016-06-19 08:57:35 · 472 阅读 · 0 评论 -
[Qt入门篇]6 Qt的属性系统——READ/WRITE/MEMBER
在上一篇文章中,介绍了Qt属性的声明过程,本文主要介绍Q_PROPERTY()中可以使用的关键字。在Qt5.6中,Q_PROPERTY()总共有12个关键字,本文介绍三个:READ、WRITE和MEMBER。为什么首先这三个?因为一个属性必须有一个读操作,如果没有READ定义,就必须定义MEMBER,否则这个属性无法访问,一个无法访问的属性又有什么意义呢?而WRITE则是与READ相关的操作,原创 2016-05-09 15:18:56 · 3015 阅读 · 0 评论 -
[Qt入门篇]7 Qt的属性系统——NOTIFY和RESET
接上一篇,READ、WRITE和MEMBER能够实现属性读写,就Qt本身来讲,我觉得Qt更推荐使用READ和WRITE,而不是MEMBER,这从QWidget的声明中能够看出来——所有属性的读写都是READ和WRITE定义的,没有使用MEMBER。这也可以理解,MEMBER将属性关联了成员变量,用户修改属性时相当于直接对成员变量操作,这样的操作破坏了类的封闭性;而READ和WRITE则是使用类成员原创 2016-05-10 21:44:08 · 2633 阅读 · 0 评论 -
[Qt入门篇]8 Qt的属性系统——总结
QT常用的属性READ、WRITE、MEMBER、NOTIFY、RESET。1 QObject子类中使用Q_PROPERTY宏声明属性;2 Q_PROPERTY宏中不能使用逗号(,),只能使用空格。3 每个属性至少有一个READ方法;4 如果没有READ方法,那就必须有MEMBER;5 READ和WRITE关联了类的成员函数,MEMBER关联的类的成员变量;6 WRITE不原创 2016-05-10 21:49:50 · 1005 阅读 · 0 评论 -
[Q学习]QT对象模型:标识与值
在Qt的对象模型中,我们需要将一部分QT对C++新增的对象作为标识(identity)而不是值(value)。这里说一下标识和值的区别:值是拷贝的或者分配来的;标识则是克隆来的。克隆意味着建立新的标识,而不仅仅是旧标识的一份拷贝。举个例子,双胞胎是不同的标识(identity),他们看起来是一样的,但是他们有不同的名字,不同的地点,和许多完全不同的社会关系网。克隆一个标识是比拷贝和分配值更复杂翻译 2016-05-02 16:10:45 · 663 阅读 · 0 评论 -
[Q学习]2 QT中的对象模型——QPointer
QPointer是一个模板类,为QObject对象提供了守卫指针(Guarded Pointer)。什么是守卫指针?守卫指针QPointer类似于普通C++指针T *,有且仅有一点不同:当被引用的对象被删除的时候,守卫指针自动设置为0,不像普通的C++指针将成为“野指针”。这里,T必须是QObject的子类。什么时候使用守卫指针?当你需要维护一个别的类拥有的QObject对象的指针时,你需要使原创 2016-05-02 16:13:09 · 695 阅读 · 0 评论 -
[Q学习]3 QObject的拷贝构造函数与赋值运算符
本文主要是针对QObject的拷贝构造函数和赋值运算符进行说明。先来看一下拷贝构造函数定义:拷贝构造函数,又称复制构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其唯一的形参必须是引用,但并不限制为const,一般普遍的会加上const限制。此函数经常用在函数调用时用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,原创 2016-05-02 16:15:20 · 3548 阅读 · 2 评论 -
[Q学习]4 QT的元对象系统
QT对C++进行了扩展,提供了三个主要的功能:信号槽、运行时类型信息和动态属性,这三个扩展功能都是由“元对象系统”提供的。元对象系统基于三个支撑点:1 OObject为需要使用元对象系统有点的类提供了基类。2 Q_OBJECT宏声明在类的私有段中,可用来启用元对象特征,如动态属性,信号槽。3 元对象编译器(moc)为每一个QObject子类提供了实现元对象特征的必要代码。MOC翻译 2016-05-03 21:37:55 · 755 阅读 · 0 评论 -
[Q学习]9 Qt事件系统——投递事件
Qt中如何向一个对象A投递事件E?按照下面三个步骤即可:1 A是QObejct或者QObject子类的对象;2 E是QEvent或者QEvent子类的对象;3 客户端调用A.event(&E)。代码应该是这样的:#include int main(int argc, char *argv[]){ QCoreApplication a(argc, argv)原创 2016-05-12 21:07:48 · 556 阅读 · 0 评论 -
[Q学习]10 Qt事件系统——处理事件
原创文章,可以转载,转载时请以超链接形式保留本文地址、作者信息和本声明。否则将追究法律责任。上一篇说了如何想QObject类对象投递事件,本篇则要说说接收对象如何处理事件。先看来自于QWidget的例子,从QWidget声明文件中截取一段代码:protected: // Event handlers virtual void mousePressEvent(QMouse原创 2016-05-12 21:25:16 · 496 阅读 · 0 评论 -
[Qt入门篇]5 Qt的属性系统——声明属性
Qt提供了灵活的属性系统,它基于Qt的元对象系统,不依赖于编译器,这保证了Qt独立于编译其和平台的特点。这篇文章主要看看如何声明属性。属性系统比较复杂,先看一个简单的例子。在QWidget中,有很多属性的声明,找一个简单学习:Q_PROPERTY(bool modal READ isModal)这里出现了5个元素:Q_PROPERTY、bool、modal、READ、isModal原创 2016-05-09 15:17:54 · 1836 阅读 · 0 评论 -
[QT入门篇]1 QT中的对象模型-概述
QT是一个基于C++的图形UI库,但它不仅仅局限于UI,它集成了当前相当广泛的不同技术,如GUI技术、数据存储技术、多媒体技术、网络技术、Web技术、脚本技术等等。提到C++,必然涉及到对象模型。标准的C++对象模型已经高效地支持了对象技术,但是标准C++对象模型的静态特性在某些问题域中很不灵活。比如GUI就是这样一种问题域,它即需要高效的运行效率,又需要高度的灵活性。很幸运,QT可以完美翻译 2016-04-27 21:36:25 · 393 阅读 · 0 评论