《C++ GUI Qt 4 编程》 笔记(七)

第21章 创建插件

动态链接库
LIBS += -ldb_cxx
INCLUDEPATH += /usr/local/BerkeleyDb.4.2/include

QLibrary 动态加载dll

插件
常见的插件类型:
数据库驱动程序、图像格式、风格、文本编码解码器

实现一个插件
需要实现两种类:
插件类 提供访问插件功能(处理器类)的接口
处理器基类 插件提供的功能

.pro
TEMPLATE = lib
CONFIG += plugin // 指明是插件库而不是通用库

Qt应用程序在plugins目录中寻找插件比如 plugins/styles
如果需要将Qt插件配置到其他目录中
需要在代码中扩展搜索路径
QCoreApplication::addLibraryPath()
或设置QT_PLUGIN_PATH环境变量

自定义插件
1.定义接口

2. 定义插件

感知插件,加载插件

第22章 应用程序脚本

QtScript模块 ECMAScript (JavaScript标准)

1.把脚本读入QString
2.创建一个QScriptEngine对象,并设置应用程序相关的功能
3.执行脚本

QFileSystemWatcher

脚本:
pi.js
return 3.14;
cube.js
return x * x * x;

QSyntaxHighlighter

QUiLoader

扩展QVariant处理的类型
Q_DECLARE_METATYPE(QScriptValue)

第23章 平台相关特性

平台相关的编程接口
Windows Win32
Mac OS X Carbon
X11 Xlib

QWidget::winId() 返回平台相关的窗口句柄

QWidget::find() 返回指定窗口ID对应的QWidget

平台相关宏定义
Q_WS_MAC
Q_WS_X11
Q_WS_WIN
Q_WS_QWS (Qtopia)

系统版本
QSysInfo::WindowsVersion()
QSysInfo::MacintoshVersion()

编译器宏
Q_CC_MSVC

Qt/Windows桌面版 提供了ActiveQt框架,用以为ActiveX和Qt提供完美结合。
ActiveQt由两个模块组成:
QAxContainer 允许我们使用COM对象并且可以在Qt应用程序中嵌入ActiveX控件
QAxServer 允许我们导出使用Qt编写的自定义的COM对象和ActiveX控件

.pro
CONFIG += qaxcontainer
CONFIG += qaxserver

Q_ENUMS()宏
用来告诉moc在槽中使用的该类型为一个枚举类型

QAxObject封装一个COM对象
QAxWidget封装一个ActiveX控件
QAxBase为QAxObject和QAxWidget实现了COM的核心功能

编写服务器

当包括一个源于QObject类的多重继承的时候,必须总是把这个起源于QObject的类放在第一位,以便moc可以快速识别它。

Q_PROPERTY()宏 使用该宏声明的属性可以用setProperty()设置值

第24章 嵌入式编程

Qt/Embedded Linux (Qtopia Core)是为嵌入式Linux优化过的Qt版本

发布者

yjwx0017

C++软件工程师

《《C++ GUI Qt 4 编程》 笔记(七)》有3个想法

  1. Greetings! I’ve been reading your site for a long time now and finally got the bravery to
    go ahead and give you a shout out from Humble Tx!
    Just wanted to tell you keep up the great job! http://Yahoo.net/

  2. It is the best time to make some plans for the future and it is time to
    be happy. I’ve read this post and if I could I want to suggest you
    few interesting things or advice. Perhaps you can write next articles referring
    to this article. I desire to read even more things
    about it! http://bing.co.uk/

评论已关闭。