Сделать скругленные края для QMainWindow
Имеется проблема, что стили (на барьер) не применяются для главного виджета QMainWindow - конкретно
border: 1px solid black;
border-radius: 10px;
Хочу сделать что-то подобно такое:
Что я не так делаю?
Да и возможно ли это c использованием QSS? Если нет, то не особо понимаю, как тогда реализовать кодом на плюсах..
Ответы (2 шт):
Ищя вопрос на данный ответ, я понял что в итоге, это невозможно сделать с помощью QSS для окон верхнего уровня типа MainWindow.
За пределами таких пользовательских окон на самом деле невозможно изменить внешний вид Windows, поскольку этим управляет операционная система. Не Qt.
Чтобы решить данную проблему, воспользуйтесь QPainterPath и маской для создания скругленных углов:
QPainterPath painPath;
painPath.addRoundedRect(rect(), 8, 8, Qt::AbsoluteSize);
this->setMask(painPath.toFillPolygon().toPolygon());
P.S Более сглаженные углы с помощью QPainther:
QPainter pain;
this->setAttribute(Qt::WA_TranslucentBackground); // Ставим прозрачный фон
pain.setRenderHint(QPainter::Antialiasing);
pain.setPen(Qt::NoPen);
pain.drawRoundedRect(rect(), 8, 8, Qt::AbsoluteSize);
Можно сделать как я. Поставить QFrame или любой другой виджет с закруглёнными через QSS краями как фон, а QMainWindow сделать прозрачным.
