上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 25 下一页
用户对应用程序经常有这样的要求:要求它能记住它的settings,比如窗口大小,位置,一些别的设置,还有一个经常用的,就是recent files,等等这些都可以通过Qsettings来实现。我们知道,这些settings一般都是存在系统里的,比如windows一般都写在系统注册表或者写INI文件,mac系统一般都在XML文件里,那么按照一般的标准来说,许多应用程序是用INI文件来实现的。而Qsettings就是提供了一种方便的方法来存储和恢复应用程序的settings。QSettings的API是基于Qvariant,Qvariant是一种数据类型的集合,它包含了大部分通常的Qt数据类型,比 Read More
posted @ 2013-12-19 13:59 星语海蓝 Views(2111) Comments(0) Diggs(0) Edit
Qt提供了三个内置验证器类: QDoubleValidator, QIntValidator, QRegExpValidator。QDoubleValidator类: 提供了对浮点数的范围检查.QIntValidator类: 提供了一个确保一个字符串包含一个在一定有效范围内的整数的验证器。Example of use: QLineEdit *lineEdit; QIntValidator *validator = new QIntValidator(0,100,this) lineEdit->setValidator(validator )//上述代码说明lineEdit只能输入0--1 Read More
posted @ 2013-12-10 13:23 星语海蓝 Views(789) Comments(0) Diggs(0) Edit
1.连续内存序列容器(vector,string,deque)序列容器的erase方法返回值是指向紧接在被删除元素之后的元素的有效迭代器,可以根据这个返回值来安全删除元素。vector c; for(vector::iterator it = c.begin(); it != c.end();) { if(need_delete()) it = c.erase(it); else ++it; }2.关联容器(set,multiset,map,multimap)关联容器的erase方法没有返回值,被删除的迭代器失效,所以删除前必须确保能得到下一个迭代器,可以用“后置递增迭代器”技术。map... Read More
posted @ 2013-11-22 10:54 星语海蓝 Views(368) Comments(0) Diggs(0) Edit
最近遇到一些项目都包含了qrc文件,这个是Qt的资源文件,如果在pro文件中不包含的话,在编译的时候会提示找不到相应资源的错误。下面说一下手动修改pro和编写qrc文件的方法。我们直接在命令行下执行qmake –project -o .pro 命令,会生成.pro文件,然后用文本编辑器打开这个文件:RESOURCES = test.qrc//添加这句,假设qrc的文件名为test然后编写test.qrc文件:images/copy.pngimages/cut.pngimages/document.pngimages/icon.pngimages/new.pngimages/open.pngim Read More
posted @ 2013-11-09 18:34 星语海蓝 Views(6878) Comments(0) Diggs(0) Edit
你的软件在某个时刻停止服务,CPU占用达到100%+,这种问题一个可能的原因是产生了死循环,假设程序某处存在潜在的死循环,并在某种条件下会引发,本文以一个示例来定位出现死循环的位置。当程序某处存在死循环,通常定位问题及缩小范围的方法是,在可疑的代码处加log,或者注释掉可疑代码,这对于容易重现问题的程序来说还好,但对于“偶尔”才会产生问题程序却很难调试,因为我们很难重现程序故障。本文所述的调试过程正是在这种情况下,假设问题已经出现,我们要求环境保护现场,即出问题的程序还在运行中。1.我们首先要知道是哪个线程出了问题:首先查一下出问题进程的pid,例如ovtsvn@ovtsvn:~/MASS4/ Read More
posted @ 2013-10-28 09:38 星语海蓝 Views(20656) Comments(0) Diggs(3) Edit
C++模板 模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。 模板是一种对类型进行参数化的工具; 通常有两种形式:函数模板和类模板; 函数模板针对仅参数类型不同的函数; 类模板针对仅数据成员和成员函数类型不同的类。 使用模板的目的就是能够让程序员编写与类型无关的代码。比如编写了一个交换两个整型int 类型的swap函数,这个函数就只能实现int 型,对double,字符这些类型无法实现,要实现这些类型的交换就要重新编写另一个swap函数。使用模板的目的就是要让这程序的实现与类型无关,比如... Read More
posted @ 2013-10-25 10:34 星语海蓝 Views(849) Comments(0) Diggs(0) Edit
QLabel 类代表标签,它是一个用于显示文本或图像的窗口部件。 构造 QLabel 类支持以下构造函数:[plain]view plaincopyQLabel(QWidget*parent=0,Qt::WindowFlagsf=0);QLabel(constQString&text,QWidget*parent=0,Qt::WindowFlagsf=0); 其中第二个构造函数能够同时通过参数 text 给出要显示的文本,因此是最常用的构造方式。 属性 QLabel 对象的显示内容可以通过属性获取或修改,相关成员函数如下:[plain]view plaincopyQSt... Read More
posted @ 2013-10-22 12:25 星语海蓝 Views(2050) Comments(0) Diggs(0) Edit
find:在非string类型的容器里,可以直接找出所对应的元素.find函数需要几个参数:迭代器,下标值,所要找的元素vector a;find(a.begin(),a.end(),1);这句话就表示从a的头开始一直到尾,找到第一个值为1的元素,返回的是一个指向该元素的迭代器。 Read More
posted @ 2013-10-18 11:01 星语海蓝 Views(195) Comments(0) Diggs(0) Edit
虚函数表对C++了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样,指明了实际所应该调用的函数。这里我们着重看一下这张虚函数表。C++的编译器应该是保证虚函数表的指针存在于对象实例中最前面的位置(这是为了保证取到虚函数表的有最高的性能——如果有多层继承或 Read More
posted @ 2013-10-09 10:56 星语海蓝 Views(591) Comments(0) Diggs(0) Edit
一个类,有成员变量:静态与非静态之分;而成员函数有三种:静态的、非静态的、虚的。那么这些个东西在内存中到底是如何分配的呢?以一个例子来说明:#include"iostream.h"class CObject{public: static int a; CObject(); ~CObject(); void Fun();private: int m_count; int m_index;};VoidCObject::Fun(){ cout<<"Fun\n"<<endl;}CObject::CObject(){ cout<< Read More
posted @ 2013-10-08 17:39 星语海蓝 Views(3002) Comments(0) Diggs(0) Edit
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 25 下一页