本页内容

QStylePlugin Class

QStylePlugin 类为自定义的QStyle 插件提供了一个抽象基类。更多内容...

头文件: #include <QStylePlugin>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
继承自: QObject

公共函数

QStylePlugin(QObject *parent = nullptr)
virtual ~QStylePlugin()
virtual QStyle *create(const QString &key) = 0

详细说明

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 = nullptr);

    QStyle *create(const QString &key) override;
    QStringList keys() const;
};

插件的 json 元数据文件mystyleplugin.json 需要包含插件所支持的样式名称信息,具体如下:

{ "Keys": [ "Rocket", "Starbuster" ] }

详情请参阅《如何创建 Qt 插件》。

另请参阅 QStyleFactory 和QStyle 。

成员函数文档

[explicit] QStylePlugin::QStylePlugin(QObject *parent = nullptr)

根据给定的parent 构建一个样式插件。

请注意,该构造函数会由导出该插件的 moc 生成的代码自动调用,因此无需显式调用它。

[virtual noexcept] QStylePlugin::~QStylePlugin()

销毁样式插件。

请注意,当插件不再被使用时,Qt 会自动销毁该插件,因此无需显式调用析构函数。

[pure virtual] QStyle *QStylePlugin::create(const QString &key)

根据给定的样式key 创建并返回一个 `QStyle ` 对象。如果插件无法创建该样式,则应返回 0。

style 键通常是所需样式的类名。请注意,键不区分大小写。例如:

QStyle *MyStylePlugin::create(const QString &key)
{
    QString lcKey = key.toLower();
    if (lcKey == "rocket") {
        return new RocketStyle;
    } else if (lcKey == "starbuster") {
        return new StarBusterStyle;
    }
    return nullptr;
}

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.