自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

陶赫的博客 - Qt开发学习

本博客主要关于学习Qt相关知识

  • 博客(31)
  • 资源 (2)
  • 收藏
  • 关注

原创 Qt5编译snmp++(1) 编译libdes

Qt5编译SNMP++的步骤

2022-03-17 20:17:29 6354

原创 我是如何通过系统架构设计师考试的(2017年软考)

2017年,时隔7年之后,我又一次参加了计算机技术与软件专业技术资格(水平)考试,报考的科目为《系统架构设计师》,这是一个高级资格考试。上一次参加软考时的高级资格考试还只有《系统分析师》,一转眼的时间,高级资格考试已经有5门了,不得不感叹飞速的变化。本人这次考试成绩为:55(基础知识)/49(案例)/52(论文),勉强算是通过了考试。回顾一下考试历程。2017年初,大概3月份的时候决定

2018-01-07 14:56:45 55036 56

原创 中标麒麟的使用情况

1 中标麒麟是一个闭源的系统,几乎没有什么升级的软件源。2 想要安装boost库不成功。安装boost需要python,而安装pthon又报boost有问题。3 安装最新的jvm不成功。4 安装wine失败。2,3,4步都停止在了叫neoview组件的地方,找不到对应的升级包,估计这是中标麒麟公司自己搞的一个东西,因为在百度也没找到有关的信息。后来更新了软件源到federo

2017-05-21 14:31:56 7655

转载 在linux上使用yum安装JDK

原文地址:http://blog.chinaunix.net/uid-15463753-id-4252690.html在linux上使用yum安装JDK2014-05-14 14:36:59 分类: Java1.查找java相关得列表[qyf@localhost ~]$ yum -y list java*执行结果[qyf@localhos

2017-05-14 16:31:25 370

转载 yum命令参考

yum 命令        yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而

2017-05-07 22:16:48 298

原创 给国产操作系统换个芯——中标麒麟操作系统更新实时内核

为中标麒麟系统更新实时内核,也就是在3.18..48内核版本上打上对应的PREEMPT_RT补丁,在最后一步make install时,系统提示两个错误:Error! Bad returnstatus for module build on kernel: 3.18.48-rt54 (x86_64)Consult/var/lib/dkms/eveusb/1.0.0/build/ma

2017-04-29 19:01:15 9184

转载 Unable to find the ncurses libraries的解决办法

原文:http://blog.chinaunix.net/uid-28295879-id-3521927.html我们在更新CentOS或者Ubuntu的内核时,执行make menuconfig可能看如这样的错误:*** Unable to find the ncurses libraries or the*** required header files.*** ‘make

2017-04-07 06:16:23 526

原创 [Qt入门]17 Qt状态机框架——历史状态

原创文章,可以转载,转载时请以超链接形式保留本文地址、作者信息和本声明。在上一节的例子中,我们使用了Qt状态机框架的分组状态实现了共享状态迁移的功能,基于上一节的状态图,我们考虑这样一种情况,在S1中任意子状态时,我们按下一个按钮中断了状态机,做一些操作,操作完毕后再恢复到原来的状态。上述这种情况,Qt状态机框架提供了历史状态——QHistoryState类用于适应这种模型。具体说来,假设

2017-03-03 21:56:19 1474 2

原创 [QtQuick]使用QtQuick制作带有光照效果的进度条

部落战争中的一种进度条如图所示:这种进度条背景是黑色的,前景是绿色的,有类似光照的效果,使用QtQuick如何做出这种效果呢? 先分析这个进度条的组成:背景基调为黑色,上半部叠加了稍浅一些的类灰色的颜色,前景是绿色为基调,上半部叠加了浅绿色,最上层是白色文字。 这样整个进度条分为五层:第1层黑色,第2层浅灰,第3层绿,第4层浅绿,第5层文字,按照这个思路设计出类似的

2017-03-01 22:01:49 572

原创 使用QtQuick如何制作带有冷却效果的按钮

使用QtQuick如何制作带有冷却效果的按钮 在很多游戏里,一个技能释放之后,需要一段时间冷却,然后才可以继续使用,在我做的小游戏《抗战》中也需要类似的功能,比如炮击、空袭、补给,那么在QML中如何实现这个效果呢?分析一下整个过程:点击按钮后,按钮进入无效状态,然后背景出现某种冷却的效果,当冷却效果结束后,再置按钮有效。按钮一般是圆形的,有文字。简单分析之后,“如何制作带有冷却效果

2017-02-25 19:23:03 785

原创 Qt开发的小游戏-抗日

使用Qt做的小游戏

2017-02-22 21:40:21 7025

原创 [Q学习]16 Qt状态机框架——共享状态迁移

原创文章,可以转载,转载时请以超链接形式保留本文地址、作者信息和本声明。上一节中,我实现了4个状态的状态机:S1、S2、S3和终止态,其中S3可以迁移到到终止态。如果我们通过点击Quit按钮退出状态机,也就是说既要保持S、S2和S3的相互转换状态,又要增任意状态可迁移到终止态,我们可以给S1、S2增加到终止态的状态迁移。状态图像下面这样: 但是有没有这样一种感觉:如果状态数量少,上面这

2016-12-10 07:17:49 1040 1

原创 qsrand用法

今天写程序,需要用到随机种子来产生不同的随机数。在Qt中,设置随机种子的方法是void qsrand(uint seed)。它的参数seed是一个无符号32位数,一般都是与调用事件关联起来在C++环境中,ctime.h头文件提供了time函数,一般要包含该文件:#include 在设置种子的地方调用qsrand((quint32)time(0));关于t

2016-11-23 20:38:57 10953

原创 [Q学习]15 Qt状态机框架——状态机停止

原创文章,可以转载,转载时请以超链接形式保留本文地址、作者信息和本声明。否则将追究法律责任。前几节讲述的都是状态机运行的过程,没有结束状态。任何一个状态机都应该有一个结束状态。那如何停止状态机呢,或者说如何进入终止态呢?Qt状态机框架中,有一个特殊的类QFinalState,这个类定义了状态机的终止状态,我们仅需要简单的将QFinalState的对象A加入到状态机中,然后定义一个状态迁

2016-08-20 09:24:53 1341

原创 [Q学习]14 Qt状态机框架——进入和退出状态3

3 重载onEntry和onExit如果我们要自定义一个状态的话,除了设置属性和信号槽之外,我们还可以通过重载接口实现进入和退出时执行一些操作。一般我们自定义状态类继承QState,QState继承自QAbstractState,QabstractState有两个纯虚函数(接口):virtual void onEntry(QEvent *event) = 0virtual void

2016-06-23 19:08:31 1014

原创 [Q学习]14 Qt状态机框架——进入和退出状态2

2 关联信号槽Qt状态机有这样一个特性:进入某个状态时会触发QState::entered()信号,离开状态时触发QState::exited()信号,如此,我们使用槽函数关联这两个信号就可以做一些额外的操作了。还是之前的代码,增加两个槽函数,输出字符串:声明如下:#ifndef MAINWINDOW_H#define MAINWINDOW_H#include #inclu

2016-06-23 19:06:25 990

原创 [Qt学习]14 Qt状态机框架——进入和退出状态

原创文章,可以转载,转载时请以超链接形式保留本文地址、作者信息和本声明。否则将追究法律责任。在上一节中,我们实现了具有三个状态的状态机,但是这个状态机仅仅是声明了三个状态,定义了状态迁移,没有就进一步完成其他动作。如何在改变状态时做一些操作呢?1 设置属性值假设有这样一种场景,在进入某一个状态时在按钮标签上显示处当前状态标识。对于这样的功能,我们可以通过这个接口来实现:void Q

2016-06-23 19:04:17 1906

原创 [Q学习]13 Qt状态机框架——简单的状态机

原创文章,可以转载,转载时请以超链接形式保留本文地址、作者信息和本声明。否则将追究法律责任。状态机是面向对象中不可缺少的一部分,它可以用于描述对象(系统)如何响应对外部输入。状态机首先状态机定了对象(系统)能够到达的状态,然后定义状态迁移,即如何从一个状态转变到另一个状态。Qt中的状态机紧密地集成了Qt元对象系统,比如状态迁移可以通过信号触发,用户可以设置状态来设施QObject的属性,调用Q

2016-06-21 11:32:55 1100

原创 [Q学习]12 Qt事件系统——发送事件

原创文章,可以转载,转载时请以超链接形式保留本文地址、作者信息和本声明。否则将追究法律责任。前几节说了投递事件、处理事件和过滤事件,本节主要说说发送事件,没有发送事件,前面几节说的内容就没用了。Qt中,发送事件仅有两个接口:1 QCoreApplication::sendEvent()2 QCoreApplication::postEvent()sendEvent:立即发送事件

2016-06-20 17:31:00 767

原创 [Q学习]11 Qt事件系统——过滤事件

原创文章,可以转载,转载时请以超链接形式保留本文地址、作者信息和本声明。否则将追究法律责任。我们可能会遇到这样一种需求——监测某个对象的事件投递过程,分析或者拦截某个事件,这时我们就要用到事件过滤器了。什么是事件过滤器呢?事件过滤器本质上是QObject子类的一个对象,该对象重载了eventFilter接口。如果使用事件过滤器呢?1 定义QObject子类A,重载eventFilter

2016-06-19 08:57:35 466

原创 [Q学习]10 Qt事件系统——处理事件

原创文章,可以转载,转载时请以超链接形式保留本文地址、作者信息和本声明。否则将追究法律责任。上一篇说了如何想QObject类对象投递事件,本篇则要说说接收对象如何处理事件。先看来自于QWidget的例子,从QWidget声明文件中截取一段代码:protected: // Event handlers virtual void mousePressEvent(QMouse

2016-05-12 21:25:16 489

原创 [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 544

原创 [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 1000

原创 [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 2618

原创 [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 2872

原创 [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 1826

翻译 [Q学习]4 QT的元对象系统

QT对C++进行了扩展,提供了三个主要的功能:信号槽、运行时类型信息和动态属性,这三个扩展功能都是由“元对象系统”提供的。元对象系统基于三个支撑点:1 OObject为需要使用元对象系统有点的类提供了基类。2 Q_OBJECT宏声明在类的私有段中,可用来启用元对象特征,如动态属性,信号槽。3 元对象编译器(moc)为每一个QObject子类提供了实现元对象特征的必要代码。MOC

2016-05-03 21:37:55 754

原创 [Q学习]3 QObject的拷贝构造函数与赋值运算符

本文主要是针对QObject的拷贝构造函数和赋值运算符进行说明。先来看一下拷贝构造函数定义:拷贝构造函数,又称复制构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其唯一的形参必须是引用,但并不限制为const,一般普遍的会加上const限制。此函数经常用在函数调用时用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,

2016-05-02 16:15:20 3536 2

原创 [Q学习]2 QT中的对象模型——QPointer

QPointer是一个模板类,为QObject对象提供了守卫指针(Guarded Pointer)。什么是守卫指针?守卫指针QPointer类似于普通C++指针T *,有且仅有一点不同:当被引用的对象被删除的时候,守卫指针自动设置为0,不像普通的C++指针将成为“野指针”。这里,T必须是QObject的子类。什么时候使用守卫指针?当你需要维护一个别的类拥有的QObject对象的指针时,你需要使

2016-05-02 16:13:09 690

翻译 [Q学习]QT对象模型:标识与值

在Qt的对象模型中,我们需要将一部分QT对C++新增的对象作为标识(identity)而不是值(value)。这里说一下标识和值的区别:值是拷贝的或者分配来的;标识则是克隆来的。克隆意味着建立新的标识,而不仅仅是旧标识的一份拷贝。举个例子,双胞胎是不同的标识(identity),他们看起来是一样的,但是他们有不同的名字,不同的地点,和许多完全不同的社会关系网。克隆一个标识是比拷贝和分配值更复杂

2016-05-02 16:10:45 652

翻译 [QT入门篇]1 QT中的对象模型-概述

QT是一个基于C++的图形UI库,但它不仅仅局限于UI,它集成了当前相当广泛的不同技术,如GUI技术、数据存储技术、多媒体技术、网络技术、Web技术、脚本技术等等。提到C++,必然涉及到对象模型。标准的C++对象模型已经高效地支持了对象技术,但是标准C++对象模型的静态特性在某些问题域中很不灵活。比如GUI就是这样一种问题域,它即需要高效的运行效率,又需要高度的灵活性。很幸运,QT可以完美

2016-04-27 21:36:25 388

Qt属性系统

本文档主要讲解了Qt的属性系统常用关键字并配有例程。

2016-04-21

OpenGL编程实例

一本OpenGL的入门书籍,没有高深的东西

2012-01-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除