0

我想为 Qt 中的提示创建自己的气球窗口。我首先创建一个带圆角的窗口。

我正在使用从 QFrame 继承的类。该类的构造函数包含:

this->setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
Pal.setColor(QPalette::Background, Qt::yellow);
this->setAutoFillBackground(true);
this->setPalette(Pal);
this->setStyleSheet("QFrame {border-style: solid; border-width: 10px;"
                    "border-radius: 100px;"
                    "min-width: 10em; background-clip: padding; background-origin: content;}");

show()但这在使用成员函数显示时不会创建圆角。我得到这个:

在此处输入图像描述

我怎样才能摆脱那些矩形边缘并让它们透明着色?

如果您需要任何其他信息,请询问。

4

2 回答 2

2

如果我的猜测是正确的,您正在寻找类似的东西setMask

基本上你需要做的是用你想要的半径绘制一个矩形,然后将其转换为 QRegion 以将它与 setMask 一起使用。请参阅下面的一种方式:

QPainterPath path;
path.addRoundedRect(rect(), 100, 100);
QRegion region = QRegion(path.toFillPolygon().toPolygon());
setMask(region);

这将是结果:

在此处输入图像描述

希望有帮助!

于 2015-04-19T08:53:16.883 回答
0
auto frame = new QWidget(parent, Qt::Popup); 
frame->setStyleSheet("background-color: red; border: 1px solid green; border-radius: 6px;");

QPainterPath path; 
path.addRoundedRect(frame->rect(), 6, 6); 
frame->setMask(path.toFillPolygon().toPolygon());

frame->show();
于 2019-09-11T05:33:16.970 回答