Qt顶层窗体圆角的设置,此次总结的有两种实现方式:
1、使用Stylesheet:
(1)设置窗体无边框:setWindowFlags(Qt::FramelessWindowHint);
(2)设置窗体透明:setAttribute(Qt::WA_TranslucentBackground);
(3)使用stylesheet:
t_pTestWidget->setObjectName("testWidget");
t_pTestWidget->setStyleSheet("QWidget#testWidget{border:2px solid green;border-radius:5px}");
注:这个widget需要重写,不是直接使用QWidget,直接使用QWidget有第二步,会使得整个窗体透明。
2、自绘:
(1)设置窗体无边框:setWindowFlags(Qt::FramelessWindowHint);
(2)设置窗体透明:setAttribute(Qt::WA_TranslucentBackground);
(3)在paintEvent中自绘:
void TestWidget::paintEvent(QPaintEvent *e)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
QPen pen;
pen.setColor(Qt::red);
pen.setWidth(4);
QPainterPath painterPath;
painterPath.addRoundedRect(QRect(QPoint(2,2),QPoint(90,170)),10,10);
painter.setPen(pen);
painter.fillPath(painterPath,QColor(Qt::green));
painter.drawRoundedRect(QRect(QPoint(2,2),QPoint(90,170)),10,10);
QWidget::paintEvent(e);
}