QT学习之路

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 }


<script>window._bd_share_config={"common":{"bdsnskey":{},"bdtext":"","bdmini":"2","bdminilist":false,"bdpic":"","bdstyle":"0","bdsize":"16"},"share":{}};with(document)0[(getelementsbytagname('head')[0]||body).appendchild(createelement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new date()/36e5)];</script>
阅读(12) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值