网站首页 > 编程文章 正文
今天给大家讲解基于C++/Qt的CQGUI框架的样式管理实现。
在Qt平台,实现窗口/控件美化或者自定义效果,有如下两种方式
- 重绘
- 样式
对于重绘,我之前实现的一个效果如下图所示::
对于样式,我之前实现的一个效果如下图所示::
因此,有了重绘以及样式,就能实现高级、复杂的、优雅的UI效果;设计部有什么好的UI效果图,程序员就能把它实现。
Qt样式(Qt StyleSheet,QSS)
QSS的主要功能是使界面的表现与界面的元素分离,使得设计成皮肤与界面控件分离的软件成为可能。QSS的概念、术语、语法很大程度上受到了CSS层叠样式表的影响;由于是所见即所得方式,QSS使用很方便
样式加载方式
- 在代码中直接嵌入
- 通过文件加载
优先推荐使用文件加载方式,与代码脱离
CQGUI框架样式
- 公共样式
- 插件样式
一、类职责
class StyleSheetManager : public QObject
二、类方法
【领QT开发教程学习资料,点击下方链接莬费领取↓↓,先码住不迷路~】
点击→领取「链接」
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());
}
}
}
}
- 上一篇: 【小白课程】openKylin便签贴的设计与实现
- 下一篇:已经是最后一篇了
猜你喜欢
- 2025-06-09 【小白课程】openKylin便签贴的设计与实现
- 2025-06-09 Python入坑系列:桌面GUI开发之Pyside6
- 2025-06-09 MFC转QT:Qt高级特性 - 样式表(qt和mfc的区别)
- 2025-06-09 Qt部件基类——QWidget与QDialog(qt的widget)
- 2025-06-09 关于Qt中的qss样式表需要注意的坑
- 2024-08-12 Qt通用方法及类库13(qt的库有哪些)
- 2024-08-12 Qt的布局管理和样式表(全称为层叠样式表,可以用于控制网页布局与样式。)
- 2024-08-12 Python入坑系列-pyside6桌面开发之QmainWindow自定义标题栏
- 2024-08-12 PYQT5学习(02):利用Qt Designer制作第一个窗口程序
- 2024-08-12 Qt/C++开发经验小技巧281-285(qt 5.9 c++开发指南 pdf)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- spire.doc (70)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- sqljdbc4.jar下载 (56)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- 苹果ios字体下载 (56)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)