zoukankan      html  css  js  c++  java
  • QT 窗体控件的透明度设置(三种方法)

    1. 整个窗体

    当设置QT的窗体(QMainWindow, QDialog)时,直接用

    [cpp] view plain copy
     
    1. targetForm->setWindowOpacity()  
     

    函数即可实现,效果为窗体及窗体内所有控件都透明化了。

    二、自定义页面或控件

    当设置一个QWidget(一般自定义页面或控件时用QWidget)时,直接设置其窗体透明度无法实现透明效果,目前找到的方法是将整个QWidget当做图形元素,对该图形元素进行设置透明度效果,

    [cpp] view plain copy
     
    1. QGraphicsOpacityEffect *opacityEffect=new QGraphicsOpacityEffect;  
    2. targetElement->setGraphicsEffect(opacityEffect);  
    3. opacityEffect->setOpacity(0.7);  

    这样处理后就能实现透明化效果。

    三、用颜色中的透明度值设置

    如果需要将自己画的形状,控件背景,边框,文字等可以用颜色上色的地方进行透明化,只需要将该部位的颜色设置一个透明度即可。

    [cpp] view plain copy
     
    1. // 画一个半透明圆角矩形  
    2. QPainter *painter = new QPainter(this);  
    3. painter->setPen(Qt::NoPen);  
    4. painter->setBrush(QColor(0,170,255,100)); // 最后一项为透明度  
    5. painter->setOpacity(0.6);  
    6. painter->drawRoundRect(0,0,100,100,10,10);// 画圆角矩形  
    [cpp] view plain copy
     
    1. // 设置某控件的背景颜色为半透明  
    2. QWidget *widget = new QWidget;// QWidget可以是任意QWidget派生的控件  
    3. widget->setAutoFillBackground(true);  
    4.     
    5. QPalette palette;  
    6. palette.setColor(QPalette::Background, QColor(192,253,123,100)); // 最后一项为透明度  
    7. //palette.setBrush(QPalette::Background, QBrush(QPixmap(":/background.png")));  
    8. widget>setPalette(palette);  
    9.    
    10. // 如果背景图片需要透明化,直接用一张半透明的png图片做背景或者用方法二将整个控件都半透明化。  

    这种用法一般用于需要设置透明的位置不多时才这样处理,如果自绘内容比较复杂,还是直接设置整体的透明度效果比较简单。

    http://blog.csdn.net/jelly_chen_zo/article/details/45538755

  • 相关阅读:
    js 数组分解 解构
    js math 对数和指数处理 expm1 log1p
    highcharts 坐标轴 数值 格式化
    libvirt-qemu-虚拟机设备热插拔
    Linux设备驱动程序加载/卸载方法 insmod和modprobe命令
    mount、umount、fuser命令使用小结
    Linux安全策略配置-pam_tally2身份验证模块
    python处理时间相关的方法
    python中命令行参数
    linux---(6/27)tr命令和sed命令详解
  • 原文地址:https://www.cnblogs.com/findumars/p/7270685.html
Copyright © 2011-2022 走看看