CQGUI框架之样式管理
2021-04-05 17:42
936 查看
大家好,我是IT文艺男,来自一线大厂的一线程序员
今天给大家讲解基于C++/Qt的CQGUI框架的样式管理实现。
在Qt平台,实现窗口/控件美化或者自定义效果,有如下两种方式
- 重绘
- 样式
对于重绘,我之前实现的一个效果如下图所示::
对于样式,我之前实现的一个效果如下图所示::
因此,有了重绘以及样式,就能实现高级、复杂的、优雅的UI效果;设计部有什么好的UI效果图,程序员就能把它实现。
Qt样式(Qt StyleSheet,QSS)
QSS的主要功能是使界面的表现与界面的元素分离,使得设计成皮肤与界面控件分离的软件成为可能。QSS的概念、术语、语法很大程度上受到了CSS层叠样式表的影响;由于是所见即所得方式,QSS使用很方便
样式加载方式
- 在代码中直接嵌入
- 通过文件加载
优先推荐使用文件加载方式,与代码脱离
CQGUI框架样式
- 公共样式
- 插件样式
一、类职责
class StyleSheetManager : public QObject
二、类方法
class StyleSheetManager : public QObject{ Q_OBJECT public: 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),观看对应的的视频版讲解;谢谢
相关文章推荐
- 基础框架平台——基础管理框架——GUI实现设计(一)
- 基础框架平台——基础管理框架——GUI抽象设计(视图)
- 基础框架平台——基础管理框架——GUI抽象设计(布局管理器)
- 在bootstrap ace样式框架上修改的后台管理型模板(Tab页后台管理模板)
- 基础框架平台——基础管理框架——GUI抽象设计(面板)
- 基础框架平台——基础管理框架——GUI抽象设计(工作台)
- 基础框架平台——基础管理框架——GUI抽象设计(工作台窗体)
- Python面向对象和图形用户界面(二)---- GUI的基本框架 & 常用组件 & 布局管理
- vue脚手架项目结合adminLTE框架做单页面应用后台管理项目
- Java基本功练习十七GUI(图形用户界面基础【基本概念及其使用、三种布局管理器实现同样的框架练习】)
- 购物网站17-2:产品action---产品查询----产品样式列表----产品样式管理-----产品控制---产品类型列表----产品类型管理----浏览商品
- ASP.NET通用权限框架 权限管理系统源码jquery 精美UI源码
- Visual WebGui 基于ajax的界面框架
- 企业级Hadoop 2.x入门系列之四HDFS文件系统和YARN资源管理框架简介
- SSM框架之学生信息管理系统(五)
- Asp.net MVC4 ExtJS权限管理系统源码 C#开发框架源码
- springmvc框架下实现文件管理功能
- Winform开发框架中的内容及文档管理模块功能介绍
- android 进程/线程管理(一)----消息机制的框架
- 用户管理权限与BootStrap样式处理,SpringMVC提供的异常处理