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中是这样定义的
然后:
然后:
阅读(12) | 评论(0) | 转发(0) |
<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>
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中是这样定义的
点击(此处)折叠或打开
- #ifndef QT_NO_QOBJECT
- class Q_CORE_EXPORT QSettings : public QObject
- #else
- class Q_CORE_EXPORT QSettings
- #endif
点击(此处)折叠或打开
- # if defined(QT_BUILD_CORE_LIB)
- # define Q_CORE_EXPORT Q_DECL_EXPORT
- # else
- # define Q_CORE_EXPORT Q_DECL_IMPORT
- # endif
点击(此处)折叠或打开
- # define Q_DECL_EXPORT __declspec(dllexport)
- # 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:在源代码中是这样定义的:
- # define QT_BEGIN_NAMESPACE namespace QT_NAMESPACE {
- # define QT_END_NAMESPACE }
相关热门文章
给主人留下些什么吧!~~
评论热议