0

paintEvent中实现圆角窗口

kievc
2022-12-9 1509 0

去掉窗口边框,设置窗口透明

{
	setWindowFlags(Qt::FramelessWindowHint);
	setAttribute(Qt::WA_TranslucentBackground);
}

重写paintEvent方法

void QtTest::paintEvent(QPaintEvent* event)
{
	QPainter painter(this);
	painter.setRenderHint(QPainter::Antialiasing);	// 反锯齿;
	painter.setBrush(QBrush(Qt::red));
	painter.setPen(Qt::transparent);
	QRect rect = this->rect();
	rect.setWidth(rect.width() - 1);
	rect.setHeight(rect.height() - 1);
	painter.drawRoundedRect(rect, 15, 15);
	//也可用QPainterPath 绘制代替 painter.drawRoundedRect(rect, 15, 15);
	//{
	//	QPainterPath painterPath;
	//	painterPath.addRoundedRect(rect, 15, 15);
	//	painter.drawPath(painterPath);
	//}
	QWidget::paintEvent(event);
}
void QtTest::paintEvent(QPaintEvent* event)
{
   //绘制背景图
    QPixmap pixmap(":/1.png");
    QPainter painter(this);
    painter.drawPixmap(0,0,pixmap.scaled(this->size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)); // 绘制不规则背景
}
Qt
最新回复 (0)
    无评论

    暂无评论

返回