讲解基于C++/Qt的CQGUI框架的样式管理实现;QSS的主要功能是使界面的表现与界面的元素分离,使得设计成皮肤与界面控件分离的软件成为可能 。QSS的概念、术语、语法很大程度上受到了CSS层叠样式表的影响;大家好,我是IT文艺男,来自一线大厂的一线程序员
今天给大家讲解基于C++/Qt的CQGUI框架的样式管理实现 。
【CQGUI框架之样式管理】在Qt平台,实现窗口/控件美化或者自定义效果,有如下两种方式
- 重绘
- 样式

文章插图
对于样式,我之前实现的一个效果如下图所示::

文章插图
因此,有了重绘以及样式,就能实现高级、复杂的、优雅的UI效果;设计部有什么好的UI效果图,程序员就能把它实现 。
Qt样式(Qt StyleSheet,QSS)QSS的主要功能是使界面的表现与界面的元素分离,使得设计成皮肤与界面控件分离的软件成为可能 。QSS的概念、术语、语法很大程度上受到了CSS层叠样式表的影响;由于是所见即所得方式,QSS使用很方便
样式加载方式
- 在代码中直接嵌入
- 通过文件加载
CQGUI框架样式
- 公共样式
- 插件样式
class StyleSheetManager : public QObject二、类方法class StyleSheetManager : public QObject{Q_OBJECTpublic:explicit StyleSheetManager(QObject *parent = NULL);void setStyleSheets(int theme, const std::string& font);void setStylesForApp(int theme, const std::string& font);void setStyleSheetForPlugin(const QString& plgName, int theme);};主要提供设置公共样式、插件样式的函数接口;与CQGUI框架的样式逻辑保持一致三、样式文件集合CQGUI框架的样式文件集合如下图所示::

文章插图
四、加载公共样式
QString apppath = QString(":/style/style%1/app.qss").arg(theme);if (QFile::exists(apppath)){QFile fileapp(apppath);if (fileapp.open(QFile::ReadOnly)){qss.append(fileapp.readAll().data());qApp->setStyleSheet(qss.toUtf8());}}五、加载插件样式QString styleSheetPath = QString(":/style/style%1/%2.qss").arg(theme).arg(plgName);if (QFile::exists(styleSheetPath)){QFile file(styleSheetPath);//获取插件QObject* plugin = UIGolbalManager::GetUIGolbalManager()->GetPluginInstanceQt(plgName);if (plugin){auto *plug = dynamic_cast<UIPluginInterface *>(plugin);if (plug){if (file.open(QFile::ReadOnly)){QString qss = QString::fromUtf8(file.readAll());plug->setStyleSheet(qss.toUtf8());}}}}今天就讲解到这里,更详细的代码分析与讲解,请关注微信公众号(itwenyinan),观看对应的的视频版讲解;谢谢- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
