繁体   English   中英

包含像素图的QLabel的圆角

[英]Rounded corners of a QLabel containing a pixmap

我正在尝试在QT表单上的QLabel中显示图像。 我需要该标签仅使左上角和右上角变圆,而底部2保持矩形。

使用样式表,我给border-radius一个值,它起作用了。 但是,该标签内的图像仍为矩形。 (图像的角隐藏在QLabel的圆角处)。

到处搜索,我发现为图像(像素图)设置蒙版并在其上绘制RoundRect会导致角变为圆形。

可以,但是使图像的所有四个角都是圆形的。

有没有办法使顶部只有圆形?

这就是我使像素图的边缘变为圆形的方式:

QBitmap map(100,100);     //my pixmap is 100x100
map.fill(Qt::color0);
QPainter painter( &map );
painter.setBrush(Qt::color1);
painter.drawRoundRect(0,0,100,100,20,20);
p.setMask(map);
ui->image1->setPixmap(p);

这就是我使QLabel左上角和右上角圆形的方式

QString style = "border: 4px solid; \n";
style += "border-top-left-radius: 20px;\n";
style += "border-top-right-radius: 20px;";
ui->image1->setStyleSheet(style);

您对口罩的想法还不错。 您只需要对蒙版进行一些合成绘图,例如

QPainter painter(&map);
painter.setBrush(Qt::color1);
painter.drawRoundedRect(0, 0, 100, 40, 20, 20);
painter.drawRect(0, 20, 100, 100);
p.setMask(map);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM