Qt QFrame圆形边框透明背景

Qt QFrame圆形边框透明背景,qt,transparent,qwidget,qtstylesheets,qframe,Qt,Transparent,Qwidget,Qtstylesheets,Qframe,我正在使用QFrame创建一个圆形上下文菜单。为了制作圆角,我使用了Qt样式表。这是我的CSS this->setStyleSheet("QFrame#ShareContextMenu{background-color:rgb(255,255,255); border-width:1px; border-color :rgb(0,0,0); border-radius:10px; border-style:solid;} QPus

我正在使用QFrame创建一个圆形上下文菜单。为了制作圆角,我使用了Qt样式表。这是我的CSS

    this->setStyleSheet("QFrame#ShareContextMenu{background-color:rgb(255,255,255);
    border-width:1px;
    border-color :rgb(0,0,0);
    border-radius:10px;
    border-style:solid;}

    QPushButton{background-color:rgba(255,255,255,0);}
    QPushButton::hover{background-color:rgba(125,125,125,50); border-radius:5px;}");
如何删除此图片中带有红色圆圈的白色背景

编辑:

下面是使用QWidget::setMask()的解决方案。在构造函数中添加以下代码

    QPixmap px(this->size()); //Create pixmap with the same size of current widget
    px.fill(Qt::transparent); //Fill transparent
    QPainter p(&px);
    QBrush brush;
    brush.setStyle(Qt::SolidPattern); //For fill
    p.setBrush(brush);
    p.drawRoundedRect(this->rect(), 15.0, 15.0); //Draw filled rounded rectangle on pixmap
    this->setMask(px.mask()); //The the mask for current widget.

我认为使用样式表无法解决此问题
QMenu
是一个矩形顶级小部件

这是您的
QMenu
?如果是,请尝试以下方法:

this->setWindowFlags(this->windowFlags() | Qt::FramelessWindowHint);
this->setAttribute(Qt::WA_TranslucentBackground);
用实例化的
QMenu
对象替换

当然,您也可以使用隐藏所需的区域。例如:

QRegion region (menu->x(),
                menu->y(),
                menu->sizeHint().width(),
                menu->sizeHint().height(),
                QRegion::Ellipse);
menu->setMask(region);

上下文菜单框是由图像生成还是由图像组成的?如果它是使用图像制作的,只需使用带有角透明度的图像。该关联菜单框是使用QFrame创建的,我不使用任何图像。好的,还有一些没有帮助的事情吗?你能为
QFrame
共享你的CSS吗?@AlexanderSorokin:CSS添加。谢谢。我现在不使用QMenu。setMask方法适合我。@sng好极了!:)快乐编码!:)