zoukankan      html  css  js  c++  java
  • QMenu,contextmenuevent,窗体透明

    void  MainWindow::contextMenuEvent(QContextMenuEvent  *event)
    {
    QMenu  *menu=newQMenu;
    menu->addAction(tr("设置"),this,SLOT(setSlot()));
    menu->addSeparator();
    menu->addAction(tr("退出"),this,SLOT(close()));
    menu->exec(event->globalPos());
    }

    setWindowFlags(Qt::FramelessWindowHint|Qt::Tool|Qt::WindowStaysOnTopHint);

    1、设置窗体的背景色
    在构造函数里添加代码,需要添加头文件qpalette或qgui 

     
    1. QPalette pal = palette();   
    2. pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));   
    3. setPalette(pal);  


    通过设置窗体的背景色来实现,将背景色设置为全透。
    效果:
    窗口整体透明,但窗口控件不透明,QLabel控件只是字显示,控件背景色透明;
    窗体客户区完全透明。
    2、在MainWindow窗口的构造函数中使用如下代码 
    1. this->setAttribute(Qt::WA_TranslucentBackground, true);   
    2. 窗口变透明,label也变透明,看不到文字,但是其它控件类似textEdit、comboBox就不会透明,实现了窗口背景透明。 

    、在MainWindow窗口的构造函数中使用如下代码 
        this->setWindowOpacity(level);其中level的值可以在0.0~1.0中变化。 
       效果:
    窗口变成透明的,但是所有控件也是一样变成透明。 
    4.窗口整体不透明,局部透明:
    在Paint事件中使用Clear模式绘图。

     
    1. void TestWindow::paintEvent( QPaintEvent* )  
    2. {   
    3.     QPainter p(this);  
    4.     p.setCompositionMode( QPainter::CompositionMode_Clear );  
    5.     p.fillRect( 10, 10, 300, 300, Qt::SolidPattern );   
    6. }   

    效果:
    绘制区域全透明。如果绘制区域有控件不会影响控件。
  • 相关阅读:
    第四周总结&实验报告二
    第三周实验总结
    2019秋第二周总结
    2019春期末总结
    C语言第四次实验报告
    第三次设计报告
    2019第二次实验设计报告
    2019第一次实验设计报告
    2019第十二周作业
    第五周课程总结&试验报告(三)
  • 原文地址:https://www.cnblogs.com/lzh-Linux/p/3773768.html
Copyright © 2011-2022 走看看