Chinaunix首页 | 论坛 | 博客
  • 博客访问: 291800
  • 博文数量: 82
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 874
  • 用 户 组: 普通用户
  • 注册时间: 2015-03-21 09:58
个人简介

traveling in cumputer science!!

文章分类

全部博文(82)

文章存档

2016年(13)

2015年(69)

我的朋友

分类: C/C++

2015-06-14 21:32:28

1、QT一些宏的介绍
        Q_OBJECT :如果要用到 signal 或者 slot,就要在类的开始加入这个宏。只有加入了Q_OBJECT,你才能使用QT中的signal和slot机制。
        Q_DECL_OVERRIDE:在QT中是这样定义的,# define Q_DECL_OVERRIDE override
                           所以很明了,override:保留字表示当前函数重写了基类的虚函数。
                           目的:1.在函数比较多的情况下可以提示读者某个函数重写了基类虚函数(表示这个虚函数是从基类继承,不是派生类自己定义的);
                                     2.强制编译器检查某个函数是否重写基类虚函数,如果没有则报错。 用法:在类的成员函数参数列表后面添加该关键字既可。
                           例子: class Base { virtual void f(); };
                                      class Derived : public Base {
                                              void f() override; // 表示派生类重写基类虚函数f
                                               void F() override;//错误:函数F没有重写基类任何虚函数
                                                                              };
          QSettings: 在QT中是这样定义的                                        

点击(此处)折叠或打开

  1. #ifndef QT_NO_QOBJECT
  2.                                     class Q_CORE_EXPORT QSettings : public QObject
  3.                                     #else
  4.                                     class Q_CORE_EXPORT QSettings
  5.                                     #endif
                                然后:

点击(此处)折叠或打开

  1. # if defined(QT_BUILD_CORE_LIB)
  2.                                     # define Q_CORE_EXPORT Q_DECL_EXPORT
  3.                                     # else
  4.                                     # define Q_CORE_EXPORT Q_DECL_IMPORT
  5.                                     # endif
                                然后:

点击(此处)折叠或打开

  1. # define Q_DECL_EXPORT __declspec(dllexport)
  2.                                     # define Q_DECL_IMPORT __declspec(dllimport)

__declspec(dllexport):声明一个导出函数,是说这个函数要从本DLL导出。我要给别人用。一般用于dll中省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出类.

__declspec(dllimport):声明一个导入函数,是说这个函数是从别的DLL导入。我要用。一般用于使用某个dll的exe中不使用 __declspec(dllimport) 也能正确编译代码,但使用 __declspec(dllimport)使编译器可以生成更好的代码。编译器之所以能够生成更好的代码,是因为它可以确定函数是否存在于 DLL中,这使得编译器可以生成跳过间接寻址级别的代码,而这些代码通常会出现在跨 DLL 边界的函数调用中。但是,必须使用 __declspec(dllimport) 才能导入 DLL 中使用的变量.     QT_BEGIN_NAMESPACE:在源代码中是这样定义的:

  1. # define QT_BEGIN_NAMESPACE namespace QT_NAMESPACE {
  2. # define QT_END_NAMESPACE }


阅读(2255) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~