Header:#include < QStylePlugin >
qmake:QT += widgets
Inherits:QObject
Public Functions
QStylePlugin(QObject *parent = nullptr)
virtual ~QStylePlugin()
virtual QStyle *create(const QString &key) = 0
Detailed Description
QStylePlugin是一个简单的插件接口,它可以很容易地创建自定义样式,可以使用QStyleFactory类动态加载到应用程序中。
编写一个样式插件是通过继承这个基类,重新实现纯虚拟create()函数,并使用Q_PLUGIN_METADATA()宏导出类来实现的。
class MyStylePlugin : public QStylePlugin
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QStyleFactoryInterface" FILE "mystyleplugin.json")
public:
MyStylePlugin(QObject *parent = 0);
QStyle *create(const QString &key) override;
};
json元数据文件mystyleplugin。插件的Json需要包含插件支持的样式名称的信息,如下所示:
{ "Keys": [ "Rocket", "Starbuster" ] }
See How to Create Qt Plugins for details.
See also QStyleFactory and QStyle.
Member Function Documentation
QStylePlugin::QStylePlugin(QObject *parent = nullptr)
用给定的父类构造一个样式插件。
请注意,这个构造函数是由导出插件的moc生成的代码自动调用的,因此不需要显式调用它。
[virtual] QStylePlugin::~QStylePlugin()
Destroys the style plugin.
销毁样式插件。
请注意,Qt在不再使用插件时自动销毁插件,因此不需要显式调用析构函数。
[pure virtual] QStyle *QStylePlugin::create(const QString &key)
创建并返回给定样式键的QStyle对象。如果一个插件不能创建一个样式,它应该返回0。
样式键通常是所需样式的类名。注意键不区分大小写。例如:
QStyle *MyStylePlugin::create(const QString &key)
{
QString lcKey = key.toLower();
if (lcKey == "rocket") {
return new RocketStyle;
} else if (lcKey == "starbuster") {
return new StarBusterStyle;
}
return 0;
}