Q_OBJECT宏的作用】的更多相关文章

The Q_OBJECT macro at the beginning of the class definition is necessary for all classes that define signals or slots 只有加入了Q_OBJECT,你才能使用QT中的signal和slot机制. 比如编写事件接口等程序时,有时会出现如下问题: 在PC端成功编译,但在开发板端却显示错误: QObject::connect: No such slot QWidget::*******(…
在linux内核中重新定义了printk,如pr_debug,dev_dbg等.要使用这些宏函数就需要定义DEBUG. 详见:kernel printk信息显示级别 那么DEBUG该定义在什么地方呢? 定义到pr_debug或dev_dbg头文件中,则内核所有的宏都起作用.则打印信息太多,不易调试. 理想的宏定义 应该是想打印信息的模块或文件中,那应放到什么位置呢? 最好放到使用文件的最开头 测试用例: //#define DEBUG static inline int poww(int v)…
在C语言#define机制中包括了一个规定,与允许把参数替换到文本中,这种实现通常称为宏或宏定义.下面是宏的声明方式: #define      name(parameter-list)          stuff 其中  parameter-list的左括号必须与name紧邻,如果中间有空白,parameter-list就会被解释为stuff的一部分. 宏的作用 1.替换作用:在程序中使用宏可以进行快速的替换. 2.执行简单的计算使用宏在程序的规模和速度方面都更胜一筹. 3.条件编译:可以通…
原文地址:http://blog.csdn.net/zhenwenxian/article/details/8564574 内核的部分函数带有__init和__exit宏,负责“初始化”和“清理收尾”该函数.如果该模块被编译进内核,而不是动态加载.宏 __init的使用会在初始化完成后丢弃该函数并收回所占内存, 宏__initdata同__init 类似,只不过对变量有效.简单来说是指示gcc把标记的数据或者函数放到指定sector. linux中把一些启动及初始化时候用的数据用__init标识…
看到开放源代码,宏定义经常这样用 #define some() do { do_somt_thing(); } while (0) 为什么这样用? 能够试一下.假如一个普通宏定义 #define some(x) Fun1(x);Fun2(x) if(condition) some(x); 变为 if(condition) Fun1(x); Fun2(x); 这样直接加个花括号不久行了,为什么还用do......while()?假如加上花括号 #define some(x) {Fun1(x);Fu…
在进行Qt编程的时候,有时候会将类的定义和实现都写在源文件中,如果同时在该类中使用信号/槽,那么可能就会遇到 undefined reference to vtable for "xxx::xxx"的链接错误,这是因为qmake默认不会处理cpp文件中的 Q_OBJECT导致链 接的时候缺少相应的 moc_xxx.h文件,此时,可以先用moc处理该cpp文件:moc xxx.cpp,然后讲生成的moc_xxx.h文件 包含到cpp文件中,问题就可以解决…
在PHP源码中,我们经常会看到很多函数前面有个PHPAPI,但这是什么呢? 于是我在php源码/main/php.h中找到了它的定义 #ifdef PHP_WIN32 # include "tsrm_win32.h" # include "win95nt.h" # ifdef PHP_EXPORTS # define PHPAPI __declspec(dllexport) # else # define PHPAPI __declspec(dllimport) #…
1. CC_SYNTHESIZE(int, nTest, Test); 相当于: protected: int nTest; public: virtual nTest getTest(void) const { return nTest; } public: virtual void setTest(int var){ nTest = var; } 2. CC_SAFE_DELETE(p);//安全删除 相当于: do { if(p) { delete (p); (p) = 0; } } wh…
总结: 本文先通过一个例子介绍了Qt项目的大致组成,即其一个简单的项目框架,如何定义窗口类,绑定信号和槽,然后初始化窗口界面,显示窗口界面,以及将程序的控制权交给Qt库. 然后主要对Qt中的信号与槽机制.Qt 元对象系统.布局管理器的概念进行分析. --------------------------------------------- 1. 下载 Qt5 http://download.qt.io/official_releases/qt/5.8/5.8.0/  2. 新建Qt 项目 具体过…
Qt的简单案例--加法计算器(详细代码注释) 一.项目结构 二.项目代码 widget.h #ifndef WIDGET_H #define WIDGET_H //预编译指令, 为了避免头文件被重复包含: 如果WIDGET_H没有被定义, 那么把WIDGET_H这个词替换为空; 一直到下面#endif结束预编译 #include <QWidget> #include <QPushButton> #include <QLineEdit> #include <QLab…