QStylePlugin Class

The QStylePlugin class provides an abstract base for custom 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 is a simple plugin interface that makes it easy to create custom styles that can be loaded dynamically into applications using the QStyleFactory 类。

Writing a style plugin is achieved by subclassing this base class, reimplementing the pure virtual create () function, and exporting the class using the 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;
};
					

The json metadata file mystyleplugin.json for the plugin needs to contain information about the names of the styles the plugins supports as follows:

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

如何创建 Qt 插件 了解细节。

另请参阅 QStyleFactory and QStyle .

成员函数文档编制

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

Constructs a style plugin with the given parent .

Note that this constructor is invoked automatically by the moc generated code that exports the plugin, so there is no need for calling it explicitly.

[virtual noexcept] QStylePlugin:: ~QStylePlugin ()

Destroys the style plugin.

Note that Qt destroys a plugin automatically when it is no longer used, so there is no need for calling the destructor explicitly.

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

创建并返回 QStyle object for the given style key . If a plugin cannot create a style, it should return 0 instead.

The style key is usually the class name of the required style. Note that the keys are case insensitive. For example:

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;
}