zoukankan      html  css  js  c++  java
  • Qt设置创建部分半透明,上面控件不透明

    //头文件
    #pragma
    once #include <QWidget> #include "ui_widgetFullAD.h" class widgetFullAD : public QWidget { Q_OBJECT public: widgetFullAD(QWidget *parent = Q_NULLPTR); ~widgetFullAD(); protected: virtual bool eventFilter(QObject *watched, QEvent *event); void paintEvent(QPaintEvent *event); virtual void mousePressEvent(QMouseEvent *event); private: Ui::widgetFullAD ui; };
    #include "widgetFullAD.h"
    #include <qpainter.h>
    widgetFullAD::widgetFullAD(QWidget *parent)
        : QWidget(parent)
    {
        ui.setupUi(this);
        setAttribute(Qt::WA_TranslucentBackground, true);
        setWindowFlags(Qt::ToolTip | Qt::FramelessWindowHint);
        //ui.widget->installEventFilter(this);
        //installEventFilter(this);
    }
    
    widgetFullAD::~widgetFullAD()
    {
        int xx = 343;
    }
    
    bool widgetFullAD::eventFilter(QObject * watched, QEvent * event)
    {
    
        return QWidget::eventFilter(watched, event);
    }
    
    void widgetFullAD::paintEvent(QPaintEvent * event)
    {
        QPainter painter(this);
        painter.fillRect(this->rect(), QColor(0, 0, 0, 150));  //QColor最后一个参数80代表背景的透明度
    }
    
    void widgetFullAD::mousePressEvent(QMouseEvent * event)
    {
        QRect rt = ui.widget->geometry();
        QPoint pt= this->mapFromGlobal(QCursor::pos());//将显示器坐标转换成窗口坐标
        if (ui.widget->geometry().contains(this->mapFromGlobal(QCursor::pos())))
        {
    
        }
        else
        {
            hide();
        }
    }

    今天遇到一种情况,设置Qt窗口半透明的时候,会把其他的控件全部边半透明了,还有一种情况是透明部分鼠标点击不了。所以找了一个最简单的处理,既然不影响鼠标点击事件,也就可以把背景变成半透明。

  • 相关阅读:
    软件工程评分表
    评论
    团队成员介绍
    第九天冲刺
    第八天冲刺
    第七天冲刺
    第六天冲刺
    第五天冲刺
    第四天冲刺
    第三天冲刺
  • 原文地址:https://www.cnblogs.com/qq702368956/p/10117263.html
Copyright © 2011-2022 走看看