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

背景:

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

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

【Qt样式(qss)-3】几套配色方案_qt配色方案

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

【Qt样式(qss)-5】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);
}
/*这里的意思,我是让它变透明,颜色与主窗体浑然一体。当然你可以做成其它样式。*/

结果就解决问题了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值