摘要: 一、QVaraint简介 QVaraint类作为一个包含了大多数Qt普通类型的的联合体类。因为c++联合体没有构造函数和析构函数的,许多继承的Qt类不能够在联合体当中使用。(联合体当中的变量共用一个存储区),没有了联合变量,我们在物体属性以及数据库的工作等方面受到很多的困扰。一个QVariant对象一段时间只保留一种类型的值。我们可以使用 bool QVariant::canConvert(... 阅读全文
posted @ 2016-04-21 16:16 永不停息; 阅读(786) 评论(0) 推荐(0) 编辑
摘要: 一 、QSettings介绍: 用户通常希望应用程序记住其设置。在windows中,这些设置保存在注册表中,ios在属性文件列表中,而unix,在缺乏标准的情况下,其存储在ini文本中。QSettings有两种存储格式:QSettings::NativeFormat(在windows平台可读写注册表)、QSettings::IniFormat(读写ini文件)、QSettings::Inva... 阅读全文
posted @ 2016-04-21 16:15 永不停息; 阅读(7960) 评论(0) 推荐(1) 编辑
摘要: Qt中经常会访问鼠标的位置,qt中将坐标分为局部坐标,与全局坐标。局部坐标用pos表示,全局坐标用globalPos表示。pos与globalPos区别:globalPos:widget鼠标所在位置在整个屏幕上的坐标。pos:widget上相对QPoint(0,0)的坐标。来自为知笔记(Wiz) 阅读全文
posted @ 2016-04-21 16:10 永不停息; 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 一、简介 QSerialPort类是Qt5封装的串口类,可以与串口进行通信。QSerialPortInfo是一个辅助类,提供串口的一些信息,如可用的串口名称,描述,制造商,序列号,串口16位产品编号等。利用QSerialPortInfo提供的可用串口信息,可设置串口波特率,并打开需要的串口进行通信。二、使用使用时要注意,通过找到计算机可用的串口,得到后,要调用setPortName或者set... 阅读全文
posted @ 2016-04-21 16:10 永不停息; 阅读(8623) 评论(0) 推荐(0) 编辑
摘要: 今天在打包Qt程序时,出现了因为缺少插件,导致背景图无法显示的问题。第一次将plugins目录全部拷贝到了应用程序根目录下,还是无法运行。查阅资料,需要拷贝plugins子目录到应用程序跟目录。虽然最后软件贴图可以全部显示。但是对于plugins目录还是了解太少。下面就让我们来了解下各个目录下插件的作用吧!常用的Qt插件:图片支持库:imageformats 音频、视频支持库:me... 阅读全文
posted @ 2016-04-21 16:09 永不停息; 阅读(4136) 评论(0) 推荐(0) 编辑
摘要: json是一种轻量级数据交换格式。json完全独立于语言的文本格式,但是使用了类似于C语言的的家族习惯。常用的json库:JsonCpp:一个用c++处理josn的开发包:网址:http://jsoncpp.sourceforge.net/.cJson一个超轻巧,携带方便,单文件,简单的可作为ANSI-C标准的Json解析器网址:http://sourceforge.net/projects/c... 阅读全文
posted @ 2016-04-21 16:09 永不停息; 阅读(471) 评论(0) 推荐(0) 编辑
摘要: copy on write 意思当内容有变动的时候,才对容器中的数据结构进行复制。否则仅作共享。QT许多类中使用了隐式数据共享技术,来最大化资源利用率和最小化拷贝时的资源消耗。 在数据传递时,其实只传递了数据的指针,而只有函数发生需要写入的情况时,数据才会拷贝。说到拷贝不得不说的两种类型:深拷贝与浅拷贝,深拷贝需要拷贝一个类中所有的数据成员,并分配相应的内存,即构造一个新对象。对于cpu和内存都是... 阅读全文
posted @ 2016-04-21 16:08 永不停息; 阅读(1083) 评论(0) 推荐(0) 编辑
摘要: 在做串口通信的时候,其中犯了一个错误。在此记录一下:QT中串口通信接到收据和发送数据的接口如下:QByteArray QIODevice::readAll()//接受数据qint64 QIODevice::write(const QByteArray & byteArray)//写入数据接受数据和发送数据都是以 字节数组为单位的。我在ini文件存储了指令串:“01 16 7B 28 48 ... 阅读全文
posted @ 2016-04-21 16:08 永不停息; 阅读(5708) 评论(0) 推荐(0) 编辑
摘要: 在QT中使用addDataBase添加一个数据库连接,其中第一个参数应该填入使用数据库驱动的类型,如QMYSQL、QSQLLITE、QSQLPSSQL等。QSqlDatabase QSqlDatabase::addDatabase(const QString & type, const QString & connectionName = QLatin1String( defaultCon... 阅读全文
posted @ 2016-04-21 16:08 永不停息; 阅读(5866) 评论(0) 推荐(0) 编辑
摘要: 对于一个非计算机专业出身的人,以前只知道计算机中所有的数据都是以二进制形式进行存储,计算,通信的。但是人类文明中,主要的信息展现以文本的形式展现的。如果使用内存中的0和1来表示文本一直都是一个问题,因为每一个人都可以制定自己的编码。这种现象直到ASCII的出现。ASCII统一了数字,字母,符号的二进制编码。 美国标准ASCII有128个,0-32和127是控制字符或通... 阅读全文
posted @ 2016-04-21 16:08 永不停息; 阅读(6406) 评论(0) 推荐(1) 编辑
摘要: 一:什么是静态对象? 对象的存储方式是静态的。 局部静态对象和类的静态对象。 局部静态对象:一个变量在函数内部定义,其生命周期跨越了该函数的多次调用。局部对象确保不迟于在程序执行流第一次经过该对象的定义语句时进行初始化。这样的对象一旦被创建,在程序结束之前都不会销毁。在定义局部静态对象的函数执行完毕后,该静态对象不会撤销。当该函数被多次调用的过程中,静态局部对象会持续存在并... 阅读全文
posted @ 2016-04-21 16:07 永不停息; 阅读(16370) 评论(1) 推荐(2) 编辑
摘要: 在了解这个概念前,需要了解这么几个概念。纯虚函数,虚函数,非虚函数纯虚函数: 被声明为纯虚函数的类一定是作为基类来使用的,含有纯虚函数的类被称为抽象类,抽象类不能实例化对象。因此纯虚函数一般用来声明接口。其派生类必须实现这个函数。纯虚函数在基类中可以有函数实现,也可以没有。声明纯虚函数的原因是,在基类往往不合适进行实例化,比如一个shape类,中的draw方法。必须为纯虚函数,因为他不是任... 阅读全文
posted @ 2016-04-21 16:07 永不停息; 阅读(2413) 评论(0) 推荐(0) 编辑
摘要: C++中类与类之间存在着两种名称遮盖关系,变量遮盖、函数遮盖。其本质都是名字的查找方式导致的,当编译器要找一个名字,它一旦找到一个相符的名字,就不会往下找了,因此遮掩本质上是优先查找那个名字的问题。 查找名字时,编译器先从子类开始,一旦找到了,就不再继续查找。无论普通函数,虚函数,还是纯虚函数,结果都是输出子类的函数调用。 避免遮掩继承而来的名称是因为,你在使用public继承而又... 阅读全文
posted @ 2016-04-21 16:07 永不停息; 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 单例模式是最常用的设计模式之一,对单例的理解:一个类有且只有一个对象(只能实例化一次,不能进行拷贝,赋值),并提供一个全局访问接口。例如windows中的任务管理器,打印机管理程序等。现在就单例模式的几种实现方式进行比较:1、最常见的单例写法 使用static私有变量,并提供一个静态方法作为单例的接口。让构造成为私有的,即该对象不能通过类外进行实例化。class Single... 阅读全文
posted @ 2016-04-21 16:06 永不停息; 阅读(13031) 评论(0) 推荐(0) 编辑
摘要: #include int main(){int a[1000000];//局部变量return 0;}编译运行后发现溢出错误。#include int a[1000000];//全局变量int main(){return 0;}编译运行后正常。在解释原因前我们先看一下一个由C/C++编译的程序占用的内存分为几个部分:1、 栈区(stack sagment):由编译器自动分配释放,存放函数的参数的值... 阅读全文
posted @ 2016-04-21 16:06 永不停息; 阅读(611) 评论(0) 推荐(0) 编辑
摘要: C++11标准新增加了一种存储方式----线程存储。C++11目前有四种管理数据内存的方式:自动存储静态存储动态存储线程存储自动存储在函数内部定义的常规变量为自动变量,使用自动存储。自动变量:指在定义它们的时候才创建,在定义它们的函数返回时系统回收变量所占存储空间。对这些变量存储空间的分配和回收是由系统自动完成的。一般情况下,不作专门说明的局部变量,均是自动变量。自动变量也可用关键字auto作出... 阅读全文
posted @ 2016-04-21 16:06 永不停息; 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 问题:单例模式中,静态函数中实例化了类对象,私有构造函数得到执行。构造函数是非静态成员函数,难道静态函数中能调用非静态函数吗?class Singleton{public: static Singleton * getInstance();private: Singleton(); ~Singleton(); static Singleton * m_sglton ;//(... 阅读全文
posted @ 2016-04-21 16:05 永不停息; 阅读(5147) 评论(0) 推荐(0) 编辑
摘要: 赋值操作为什么要返回 reference to *this? 要弄清这个问题之前,先了解函数的返回值类型:返回值类型,返回引用类型返回值类型:返回的是一个对象的副本。 test operator= (const test &t) { ... cout i = t.i; cout << "拷贝" << endl; } test operator= (const test &t... 阅读全文
posted @ 2016-04-21 16:04 永不停息; 阅读(1314) 评论(0) 推荐(0) 编辑
摘要: 之前写拷贝构造函数的时候,以为参数为引用,不为值传递,仅仅是为了减少一次内存拷贝。然而今天看到一篇文章发现自己对拷贝构造的参数理解有误。 参数为引用,不为值传递是为了防止拷贝构造函数的无限递归,最终导致栈溢出。 下面来看一个例子:class test{public: test() { cout test.a(test t=ort)==test.a(test t(ort)) ... 阅读全文
posted @ 2016-04-21 16:04 永不停息; 阅读(12162) 评论(1) 推荐(4) 编辑
摘要: 在一个类中定义的类被称为嵌套类,定义嵌套类的类被称为外部类。对类进行嵌套通常是为了帮助实现另一个类,并避免名称冲突。对类嵌套往往为了帮助实现另一个类,并避免名称冲突。如下:class queue{private: struct Node{ Item item;struct Node *next }; ...};由于struct在默认情况下其成员为公有的, 所以Node实际上是一个嵌套类。作用域... 阅读全文
posted @ 2016-04-21 16:04 永不停息; 阅读(20375) 评论(2) 推荐(4) 编辑