Qt文档阅读笔记-对Style Plugin Example实例的解析
目錄
?
前言
Style Plugin Example
SimpleStylePlugin Class 定義
SimpleStylePlugin Class 實(shí)現(xiàn)
main()函數(shù)
The Simple Style Plugin Profile
?
前言
文檔中給的現(xiàn)象圖是這樣的:
但在本人Qt5.8 Windows 7端 MinGW編譯器中?沒有官方實(shí)例的現(xiàn)象,這里修改成如下的現(xiàn)象:
詳情請看這個連接:
https://blog.csdn.net/qq78442761/article/details/86577171
?
?
Style Plugin Example
插件是Qt存儲在類中的共享庫,這個能夠在運(yùn)行的時候被QPluginLoader加載。插件是對應(yīng)用程序的擴(kuò)展。
寫一個插件的邏輯:
1. 首先要繼承插件的一個基礎(chǔ)類(文檔查base classes);
2. 重寫函數(shù),并且增加宏。
在Style Plugin Example這個例子中plugin為外觀,這屬于low-level,而high-level插件要看overview document。
plugin中,新風(fēng)格繼承了QStylePlugin類,通過Qt進(jìn)行加載,通過QStyleFactory確保其插件可用;通過實(shí)現(xiàn)SimpleStylePlugin類使得Button的風(fēng)格改變。
這個新風(fēng)格在某種意義上是和平臺無關(guān)的,使用QProxyStyle會改變當(dāng)前應(yīng)用程序的風(fēng)格。
使用StyleWindow去測試插件。SimpleStyle和StyleWindow并不能加載所有類型的插件,他們的實(shí)現(xiàn)很簡單。
這里要注意,pro文件對plugin很重要(本人自己總結(jié)的,好像是廢話,pro對所有Qt程序都重要)
?
?
SimpleStylePlugin Class 定義
SimpleStylePlugin為QStylePlugin的子類,并且為一個接口類:
class SimpleStylePlugin : public QStylePlugin{Q_OBJECTQ_PLUGIN_METADATA(IID "org.qt-project.Qt.QStyleFactoryInterface" FILE "simplestyle.json")public:SimpleStylePlugin() {}QStringList keys() const;QStyle *create(const QString &key) override;};keys()函數(shù)返回這個style的名稱,create()函數(shù)的一個參數(shù)為string類型,返回QStyle的鍵值。這兩個函數(shù)都是QStylePlugin中繼承下來的純虛函數(shù),當(dāng)應(yīng)用程序需要創(chuàng)建一個SimpleStyle風(fēng)格的實(shí)例時,插件將會被創(chuàng)建。
?
SimpleStylePlugin Class 實(shí)現(xiàn)
keys()函數(shù)的實(shí)現(xiàn):
QStringList SimpleStylePlugin::keys() const{return QStringList() << "SimpleStyle";}返回值為這個類的名稱SimpleStyle為QStringList類型。
下面是create()函數(shù):
這里要注意大小寫問題,采用key.toLower()這種方式可以有效的解決大小寫。
?
main()函數(shù)
int main(int argv, char *args[]){QApplication app(argv, args);QApplication::setStyle(QStyleFactory::create("simplestyle"));StyleWindow window;window.resize(200, 50);window.show();return app.exec();}當(dāng)QApplication對象被初始化后,Qt將加載style插件。QStyleFactory類能識別所有style并且能生成對象(所有與style有個的接口都可這么做)。
?
The Simple Style Plugin Profile
styleplugin的pro文件如下:
TEMPLATE = libCONFIG += pluginQT += widgetsHEADERS = simplestyle.h \simplestyleplugin.hSOURCES = simplestyle.cpp \simplestyleplugin.cppTARGET = simplestyleplugin這里要注意:
1. template要設(shè)置為lib而不是傳統(tǒng)的app;
2. config設(shè)置為plugin,這樣才能時dll中實(shí)現(xiàn)接口的給功能。
總結(jié)
以上是生活随笔為你收集整理的Qt文档阅读笔记-对Style Plugin Example实例的解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 系统架构师学习笔记-操作系统(三)
- 下一篇: Qt学习笔记-基于QGraphicsSc