QT学习之路

来源:互联网 发布:淘宝卖衣服从哪进货 编辑:程序博客网 时间:2024/05/17 12:51
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) |
0

上一篇:JAVA 中 extends 与 implements 的前世今生

下一篇:QT中 QT_BEGIN_NAMESPACE、QT_END_NAMESPACE的应用介绍!!

相关热门文章
  • PyQt5系列教程(六)如何让界面...
  • 欢迎chenjqtc在ChinaUnix博客...
  • 欢迎学习三思在ChinaUnix博客...
  • 欢迎扶朕起来朕要学习在ChinaU...
  • 欢迎要努力学习啊在ChinaUnix...
  • test123
  • 编写安全代码——小心有符号数...
  • 使用openssl api进行加密解密...
  • 一段自己打印自己的c程序...
  • sql relay的c++接口
  • linux dhcp peizhi roc
  • 关于Unix文件的软链接
  • 求教这个命令什么意思,我是新...
  • sed -e "/grep/d" 是什么意思...
  • 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
原创粉丝点击