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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值