这个例子展示了如何创建一个以新的GUI外观扩展Qt的插件。
Qt中的插件是存储在共享库中的类,可以在运行时由QPluginLoader加载。在Qt中创建插件时,它们要么扩展Qt应用程序,要么扩展Qt本身。编写可扩展Qt本身的插件是通过继承插件基类之一,从该类重新实现功能并添加宏来实现的。在此示例中,我们通过添加新的GUI外观(即,使新的QStyle)来扩展Qt 。插件概述文档中对插件进行了高级介绍。
提供新样式的插件会继承QStylePlugin基类。样式插件由Qt加载并通过QStyleFactory提供。我们已经实现了SimpleStylePlugin,它提供了SimpleStyle。新样式通过以红色绘制按钮背景为小部件样式。
从某种意义上说,新样式与平台无关,因为它不是基于任何特定的样式实现,而是使用QProxyStyle来调整默认为本机系统样式的当前应用程序样式中的外观。
注意:在某些平台上,本机样式将阻止按钮具有红色背景。在这种情况下,请尝试以其他样式(例如Fusion)运行示例。还可设置的设置为。
我们使用测试插件StyleWindow,在其中显示QPushButton。在SimpleStyle和StyleWindow类不包含任何插件的特定功能及其实现是微不足道的。因此,我们将跳过它们并继续使用SimpleStylePlugin和main()功能。看完之后,我们检查插件的配置文件。
1. SimpleStylePlugin类定义
SimpleStylePlugin继承QStylePlugin,它们都是插件类。
返回此插件可以创建的样式名称的列表,同时使用这样的字符串并返回与键对应的QStyle。这两个函数都是从QStylePlugin重新实现的纯虚函数。当应用程序请求SimpleStyle此插件创建的样式的实例时,Qt将使用此插件创建它。
2. SimpleStylePlugin类实现
这是实现:
由于此插件仅支持一种样式,因此我们返回带有该样式的类名称的QStringList。
这是函数:
需要注意的是,「样式插件的键不区分大小写。大小写敏感度因插件而异,因此在实现新插件时需要进行检查」。
该main()函数:
初始化QApplication对象时,Qt会加载可用的样式插件。QStyleFactory类能获取到所有样式,并使用生成它们(它是所有样式插件的包装)。
3. 简单样式插件配置文件
SimpleStylePlugin位于其自己的目录中,并且具有自己的配置文件:
在插件配置文件中,我们需要在构建共享库而不是可执行文件时设置lib模板。我们还必须将设置为。我们还将库设置为存储在stylewindow下的styles文件夹中,因为这是Qt在其中搜索样式插件的路径。
4. 关于更多
在「QtCreator软件」可以找到:
或在以下「Qt安装目录」找到:
领取专属 10元无门槛券
私享最新 技术干货