Qt Balloon Window от QFrame

Я хотел бы создать свое собственное окно Balloon для подсказок в 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() функция-член. Я получаю это:

введите описание изображения здесь

Как я могу избавиться от этих прямоугольных краев и сделать их прозрачными?

Если вам нужна дополнительная информация, пожалуйста, спросите.

0

Решение

Если мое предположение верно, вы ищете что-то вроде setMask !

По сути, вам нужно нарисовать прямоугольник с желаемым радиусом, а затем преобразовать его в QRegion, чтобы использовать его с setMask. Смотрите ниже один из способов:

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

И это будет результат:

введите описание изображения здесь

Надеюсь, это поможет!

2

Другие решения


По вопросам рекламы [email protected]