关于 qtpropertybrowser 扩展问题
来源:互联网 发布:有注入漏洞的网站源码 编辑:程序博客网 时间:2024/06/16 09:05
qtpropertybrowser 是一个基于QT开发的属性展示控件,功能强大。
在WINDOWS平台,使用VC编译工具,如果将qtpropertybrowser 此库编译成DLL时,在程序中直接使用原始类没有问题,但如果自定义派生类且使用到信号槽时就会遇到一个编译问题,这个问题归根结底在于有没有使用dllimport 特性的问题。
dllexport 和 dllimport 存储类特性是 C 和 C++ 语言的 Microsoft 专用扩展。 可以使用它们从 DLL 中导出或向其中导入函数、数据和对象。可导出类的所有基类都必须是可导出的。 否则,会生成编译器警告。 此外,同样是类的所有可访问成员必须是可导出的。 此规则只允许 dllexport类从 dllimport 类继承,dllimport 类从 dllexport 类继承(但不建议后一种方式)。 通常来说,对 DLL 客户端可访问的所有内容(根据 C++ 访问规则)都应该是可导出接口的一部分。 这包括在内联函数中引用的私有数据成员。
QT自己扩展了C++,并提供了MOC编译工具,编译其信号-槽机制,对所有要使用QT信号槽机制的派生类有两个要求:
1、必须派生自QObject或QObject的子类
2、在派生类首端添加QT的宏 Q_OBJECT,
原因就出在Q_OBJECT中,此宏声明了一个静态数据成员:static const QMetaObject staticMetaObject; 以使用基于QT系例的库时,必须使用 dllimport 编译指令导入数据。
QT 定义了QT_DLL宏,但qtpropertybrowser的宏名称设计就不是很好,也没有提供了相应的说明,但查看源代码会发现一个名为:QT_QTPROPERTYBROWSER_IMPORT 的宏,该宏控制了QT_QTPROPERTYBROWSER_EXPORT对应的定义。
总结:使用qtpropertybrowser的dll库,并从库中类派生子类时,编译出现“无法解析的外部符 struct QMetaObject const”的链接错误时,请在程序预编译指令中加入
“QT_QTPROPERTYBROWSER_IMPORT”。
- 关于 qtpropertybrowser 扩展问题
- 关于扩展Josephus问题
- QtPropertyBrowser简介
- 关于符号扩展的问题
- 关于动态写入表格问题的扩展
- 关于PHP自定义扩展加载的问题
- Adobe Acrobat 关于双击扩展的问题
- 关于TextBox扩展控件验证问题
- 关于PHP自定义扩展加载的问题
- 关于PHP自定义扩展加载的问题
- 关于开启curl扩展问题若干
- Linux关于安装Redis扩展的问题
- Linux关于安装Redis扩展的问题
- QtPropertyBrowser 下载地址
- QtPropertybrowser源码编译
- Qt-解锁QtPropertyBrowser控件
- QtPropertyBrowser的安装与配置
- QtPropertyBrowser的安装与配置
- LTspice introduction
- php协程的多任务调度
- 【PHP-socket框架】MeepoPS轻松构建在线实时聊天, 即时游戏, 视频流媒体播放
- 心随情动
- LINUX 挂载 windows 目录
- 关于 qtpropertybrowser 扩展问题
- Ajax在ssm框架中的应用
- 4月26日,ExampleTreeMap,每日20行。
- 念
- Backpack II 解题报告
- activiti数据库表结构剖析
- fl2440——内核自带按键驱动 代码分析
- 友盟 第三方登录
- mongoDB学习笔记