The QStylePlugin class provides an abstract base for custom QStyle 插件。 更多...
头: | #include <QStylePlugin> |
CMake: |
find_package(Qt6 COMPONENTS Widgets REQUIRED)
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 .
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.
[虚拟]
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 0; }