当前位置: 首页 > news >正文

Qt样式(qss)应用到QMdiArea不生效的解决

背景:

之前写记录过几篇qss相关内容:

Qt样式(qss)手册小结(附例:软件深色模式)

Qt样式(qss)使用小结(软件换肤,比如暗黑模式)

Qt样式(qss)的几套配色方案

今天偶然想改一下QMdiArea的背景颜色,突然发现不好用。于是着手处理。

网上查了很多,基本轻描淡写,也许这问题对于大家都太简单了,不屑一顾。但这里我要记录下来,以备之后查询。

解决:

我是这样解决的:先打开主窗体,选中那个mdiArea部件,按F1看帮助手册。或者从cpp文件里找到“ui_”开头的头文件点进去,或者从主窗体构造函数的setupUi函数点进去也一样。总之就是找到QMdiArea这个类相关的地方,再按F1。主要目的是看手册。

手册中找到“List of all members, including inherited members”看看它都支持那些函数。其实我原本想找到setStyleSheet来着,原本想看看它有什么不一样。

结果我找到了setStyle(QStyle *),感觉心头一凉,让我想起了画笔机制与qss不兼容的问题。难怪它不生效。之前我也记录过,qt画笔绘图走的是另外一套机制,它直接从根本上赋予部件颜色和样式,这不是后期qss能左右的。虽然手册中提到过,可能在以后的版本中兼容这个问题。但总归还是不要主动去挑战它,毕竟做软件要考虑尽可能的兼容。

接着我找到了另外一个函数setBackground(const QBrush &)。说实话,因为上述的不兼容问题,我在用qss时,挺腻歪这些跟画笔绘图有关的字样的。于是我在主窗体加载样式之前,加了一句代码:

ui->mdiArea->setBackground(QBrush());

我的想法是,遇到这类问题,在不是非要使用画笔绘图的情况下,就让它初始化为不介入的状态,后期让qss来控制全局。

/*QMdiArea*/
QMdiArea {
    background-color: rgba(0, 0, 0, 0);
}
/*这里的意思,我是让它变透明,颜色与主窗体浑然一体。当然你可以做成其它样式。*/

结果就解决问题了。

相关文章:

  • 做网站主流技术/南京百度提升优化
  • 如何查网站有无备案/2345网址大全设主页
  • 2024年住建部最新消息/百度搜索关键词排名人工优化
  • wordpress建手机版目录/花钱推广的网络平台
  • wordpress 同类文章/网站快速收录教程
  • 做文案的网站有些什么软件/搭建个人网站
  • Go语言基础语法
  • Wisej.NET 3.1.6 Crack
  • DevOps 实战概述
  • 如何帮助管理者改进 1:1 面谈和绩效考核
  • 计讯物联数字乡村解决方案赋能乡村振兴
  • 装修--避坑--乳胶漆
  • Ubuntu18 sqlyog配置mysql5.7远程连接
  • Android | Service
  • CTP开发(2)行情模块的开发
  • python中split()函数的用法详解
  • 基于keras构建lstm模型自动生成音乐
  • 构建测试平台与对应的组织架构需要哪些能力?