大佬教程收集整理的这篇文章主要介绍了CQGUI框架之样式管理,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
大家好,我是IT文艺男,来自一线大厂的一线程序员
今天给大家讲解基于C++/Qt的CQGUI框架的样式管理实现。
在Qt平台,实现窗口/控件美化或者自定义效果,有如下两种方式
对于重绘,我之前实现的一个效果如下图所示::
对于样式,我之前实现的一个效果如下图所示::
因此,有了重绘以及样式,就能实现高级、复杂的、优雅的UI效果;设计部有什么好的UI效果图,程序员就能把它实现。
QSS的主要功能是使界面的表现与界面的元素分离,使得设计成皮肤与界面控件分离的软件成为可能。QSS的概念、术语、语法很大程度上受到了CSS层叠样式表的影响;由于是所见即所得方式,QSS使用很方便
优先推荐使用文件加载方式,与代码脱离
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),观看对应的的视频版讲解;谢谢
以上是大佬教程为你收集整理的CQGUI框架之样式管理全部内容,希望文章能够帮你解决CQGUI框架之样式管理所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。