QT scrollArea控件背景透明,但不影响子控件的方法

直接放我的最终解决方案:

 

       QPalette pa = ui->scrollArea->palette();

       pa.setBrush(QPalette::Window, Qt::transparent);

       ui->scrollArea->setPalette(pa);

网上清一色的使用西面这两句,但我使用样式表并没有解决问题。反而被误导了,使用这种“广为流传”

的方法会让scrollArea中的子空间背景也变成透明的。

ui->scrollArea->setStyleSheet("QScrollArea{background-color:transparent;}");
ui->scrollArea->viewport()->setStyleSheet("background-color:transparent;}");

这个恶毒的方法困扰了我很久,效果图如下。

 

(我按钮呢?这就是你形容的不会影响子控件背景?)


 


如果上面使用 QPalette调色板的方法无效,还可以在界面上添加样式表。但是需要在每个scrollArea控件上,右键,更改样式,有点麻烦。

需要注意的是,scrollArea是由两个 窗口组成的,外部窗口为滑块,内部窗口理解为放控件的幕布

因此放入scrollArea控件中的子控件,其实是在它的子窗口scrollAreaWidgetContents中的,添加样式表时需要加在scrollAreaWidgetContents上。

QWidget#scrollAreaWidgetContents{
    background:transparent;
}

 scrollAreaWidgetContentsscrollArea子窗口控件的对象名称

 另外附设置窗口标题栏、窗口背景透明的方法:

//设置窗口背景颜色为蓝色
setPalette(QPalette(Qt::blue));
setAutoFillBackground(true);

//隐藏标题栏
this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowMinimizeButtonHint);

//隐藏窗口背景
setAttribute(Qt::WA_TranslucentBackground, true);

在单独使用隐藏窗口背景,而没有隐藏标题栏时,窗口背景会呈现出黑色

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值