• 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. }   

    效果:
    绘制区域全透明。如果绘制区域有控件不会影响控件。
  • 相关阅读:
    全选和选项交互
    无法将类型为excel.applicationclass的com 强制转换为接口类型的解决方法[转]
    SilverLight搭建WCF聊天室详细过程[转]
    进程与线程的一个简单解释
    Visiual Studio CLR20r3
    C#注册表操作类--完整优化版
    cmd注册外部命令
    C# Dsofile.dll无法注册运行问题解决
    .net版,微信免充值代金卷业务开通验收代码
    C#十进制与任意进制的转换
  • 原文地址:https://www.cnblogs.com/lzh-Linux/p/3773768.html
Copyright © 2020-2023  润新知