12 2012 档案

摘要:这篇文章的分类是C++,所以特此声明这里提到的规则只适用于C++。对于C语言,是有不同的一套规则的。先来看看下面这段代码,有问题吗?01.void RunStateMachine() 02.{ 03. switch(m_status) 04. { 05. case TASK_START: 06. int data = FormDataToSend(); 07. m_mailbox->Send(data); 08. m_status = TASK_SENT; 09. break; 10. case ... 阅读全文
posted @ 2012-12-28 18:20 onlycxue 阅读(838) 评论(0) 推荐(0)
摘要:最近做智慧农业的项目,在网络配置时要动态获取本机的IP地址以及子网掩码和DNS,研究了一段时间终于有结果1.用到网络相关的类要在工程文件.pro里加入下面一句话,告诉编译器加入网络模块QT +=network2,用到的Qt的类QNetworkInterface :这个类会帮我们获取本机的所有网络接口,存储网络接口的名称以及物理地址等QNetworkAddressEntry:可以帮我们存储网络接口的IP地址,子网掩码,以及广播地址等一般将这两个类联合起来使用 QList<QNetworkInterface> list = QNetworkInterface::allInterface 阅读全文
posted @ 2012-12-26 19:52 onlycxue 阅读(1121) 评论(0) 推荐(0)
摘要:函数模板是C++新增的一种性质,它允许只定义一次函数的实现,即可使用不同类型的参数来调用该函数。这样做可以减小代码的书写的复杂度,同时也便于修改(注:使用模板函数并不会减少最终可执行程序的大小,因为在调用模板函数时,编译器都根据调用时的参数类型进行了相应实例化)。下面来看看函数模板的使用过程:struct job{ char name[20]; int salary;};template <class T> //函数模板声明,通用变量类型为Tvoid swap(T &a, T &b);void showJob(const job &a);//打印job内容u 阅读全文
posted @ 2012-12-26 19:27 onlycxue 阅读(1383) 评论(0) 推荐(0)
摘要:为了访问其他编译单元(如另一代码文件)中的变量或对象,对普通类型(包括基本数据类、结构和类),可以利用关键字extern,来使用这些变量或对象时;但是对模板类型,则必须在定义这些模板类对象和模板函数时,使用标准C++新增加的关键字export(导出/出口/输出)。例如:extern int n;extern struct Point p;extern class A a;export template<class T> class Stack<int> s;export template<class T> void f (T& t) {……}一般是在 阅读全文
posted @ 2012-12-22 10:34 onlycxue 阅读(13216) 评论(0) 推荐(2)
摘要:udpSocket = new QUdpSocket(this); QByteArray datagram = "blog.const.net.cn"; udpSocket->writeDatagram(datagram.data(), datagram.size(), QHostAddress::Broadcast, 45454); udpSocket->bind(QHostAddress("192.168.1.104"), 45454); UDP客户端广播QUdpSocket *udpsocket1 = new QUdpSocket(th 阅读全文
posted @ 2012-12-21 09:11 onlycxue 阅读(7131) 评论(0) 推荐(0)
摘要:Qt在嵌入式开发中经常遇到没有头绪的错误提示,有的时候很难找到问题的所在,就我目前这两天遇到的问题做一个小总结,如下:setdevinfraweb.o: In function `setDevInfraWeb::setDevInfraWeb()':setdevinfraweb.cpp:(.text+0x38): undefined reference to `vtable for setDevInfraWeb'setdevinfraweb.o: In function `setDevInfraWeb::~setDevInfraWeb()':setdevinfraweb. 阅读全文
posted @ 2012-12-15 17:25 onlycxue 阅读(402) 评论(0) 推荐(0)
摘要:今天,写Qt代码时有一个变量我想声明为const类型,但是不知道从哪里声明,在类里声明编译器报错了,构造函数里声明结果也不行,后来从网上查了查可以写在初始化参数表里,之前自己还看过初始化参数列表的使用,但今天还是忘了初始化参数列表存在的意义,太菜了,初始化参数表就是在在构造函数之前执行函数初始化。class sensorControlForm : public QWidget{ Q_OBJECTpublic: explicit sensorControlForm(QWidget *parent = 0); void setPic(QPixmap icon ,QString b... 阅读全文
posted @ 2012-12-14 18:47 onlycxue 阅读(3115) 评论(0) 推荐(0)
摘要:作为Qt的菜鸟,一直以为Qt的界面很呆板,没有什么突破,甚至有时候认为Qt真的out了,最近,老大又让做“智慧农业”的实训系统,要求界面还要有别的风格,我昨天从网上找了好多,关于Qt美化界面的有QSS和QML,今天早上从网上找了一些相关的文章并做了一些测试(QSS方面的),很激动,很神奇,现在的体会就是Qss可以给部件化妆,方的可以画成圆的,也可以给部件“穿衣服”,穿各种颜色。。1,首先要写一个.qss文件。QPushButton{ border:2px solid gray; border-radius: 10px;}QPushButton:hover{ color:whi... 阅读全文
posted @ 2012-12-12 18:21 onlycxue 阅读(11415) 评论(2) 推荐(1)
摘要:我一般使用固定的方式给窗体添加背景void controlForm::setWidgetbackground(QWidget *widget,QPixmap image){ QPalette palette; palette.setBrush(backgroundRole(),QBrush(image)); widget->setPalette(palette);}但有时候添加不成功因为忘记了设置下面的属性 阅读全文
posted @ 2012-12-06 16:30 onlycxue 阅读(2053) 评论(0) 推荐(0)
摘要:C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一个清晰的剖析。当然,相同的文章在网上也出现过一些了,但我总感觉这些文章不是很容易阅读,大段大段的代码,没有图片,没 阅读全文
posted @ 2012-12-06 11:03 onlycxue 阅读(289) 评论(0) 推荐(0)
摘要:text, data (initialized), bss, stack, heap几个段根据APUE,程序分为下面的段:.text, data (initialized), bss, stack, heap。data/bss/text: text段在内存中被映射为只读,但.data和.bss是可写的。bss是 英文Block Started by Symbol的简称,通常是指用来存放程序中未初始化的全局变量的一块内存区域,在程序载入时由内核清0。BSS段属于静态内存分配。它的初始值也是由用 户自己定义的连接定位文件所确定,用户应该将它定义在可读写的RAM区内,源程序中使用malloc分配的内 阅读全文
posted @ 2012-12-05 19:35 onlycxue 阅读(205) 评论(0) 推荐(0)
摘要:F1使用方法:选中某一类或函数,按下F1,出现帮助文档 F2使用方法:选中某一类或函数,按下F2,迅速定位到该类或函数声明的地方或被调用的地方 Ctrl+鼠标滚轮的使用方法:按住Ctrl,使鼠标滚轮旋转,可调整字体的大小 Ctrl+F使用方法:(作用:查找当前文档)选中你想选的内容之后,按下Ctrl+F,会列出所有和你选的内容一样的语句 F4使用方法:在*.cpp和*.h之间切换 Ctrl+1,2,3,4,5,6使用介绍:在Welcome,Edit,Debug,Projects,Help,Output几种模式之间切换 F3作用:查找下一个你选的内容 Shift + F3作用:查找... 阅读全文
posted @ 2012-12-05 14:50 onlycxue 阅读(416) 评论(0) 推荐(0)
摘要:1。 找到U盘不插U盘sudo fdisk -l插入U盘sudo fdisk -l这时会多出一项来,一般是/dev/sdb1,就是U盘了2。 挂载sudo mkdir /mnt/usbsudo mount -t vfat /dev/sdb1 /mnt/usb/就OK 了 阅读全文
posted @ 2012-12-04 11:31 onlycxue 阅读(155) 评论(0) 推荐(0)
摘要:今天刚相对彻底的搞懂函数返回局部普通变量(不包括指针和引用)与局部指针、引用的返回区别,先看下面代码#include <IOSTREAM>#include <STRING>using namespace std;string version1(const string &s1,const string &s2);const string & version2(string &s1,const string &s2);const string &version3(string &s1,const string &am 阅读全文
posted @ 2012-12-03 17:45 onlycxue 阅读(1111) 评论(0) 推荐(0)
摘要:1.将const 指针付给非const指针是不允许的。2.内联函数是按值传递的,而宏是替换。3.引用是变量的别名,引用主要用于函数,使函数使用原始 ,而不是变量的别名。4。int & 表示指向int类型的引用。引用必须在声明的时候进行初始化c语言可以允许避开按值传递的限制,采用指针传值的方式。5.按引用传递与按值传递唯一的区别在于声明函数的方式不同,void swapr (int & a,int & b);void swapv(int a,int b);引用传值和和按值还有一个区别是引用传值如果对引用进行了修改,会改变原值。double refcube(const do 阅读全文
posted @ 2012-12-03 17:29 onlycxue 阅读(1192) 评论(0) 推荐(0)