Я хотел бы создать свое собственное окно 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()
функция-член. Я получаю это:
Как я могу избавиться от этих прямоугольных краев и сделать их прозрачными?
Если вам нужна дополнительная информация, пожалуйста, спросите.
Если мое предположение верно, вы ищете что-то вроде setMask
!
По сути, вам нужно нарисовать прямоугольник с желаемым радиусом, а затем преобразовать его в QRegion, чтобы использовать его с setMask. Смотрите ниже один из способов:
QPainterPath path;
path.addRoundedRect(rect(), 100, 100);
QRegion region = QRegion(path.toFillPolygon().toPolygon());
setMask(region);
И это будет результат:
Надеюсь, это поможет!