• 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

  • 相关阅读:
    今天面试一些程序员(新,老)手的体会
    UVA 10635 Prince and Princess
    poj 2240 Arbitrage
    poj 2253 Frogger
    poj 2485 Highways
    UVA 11258 String Partition
    UVA 11151 Longest Palindrome
    poj 1125 Stockbroker Grapevine
    poj 1789 Truck History
    poj 3259 Wormholes
  • 原文地址:https://www.cnblogs.com/findumars/p/7270685.html
Copyright © 2020-2023  润新知