Qt 绘制只有两个圆角的矩形

Qt 绘制只有两个圆角的矩形,qt,Qt,我正在开发一个应用程序,需要使用Painter为Pixmap填充颜色。Pixmap类型为矩形(底边)2个圆角。顶部的两个角是平的/正常的 我尝试使用Qt的drawRoundedRect()API,但它使矩形的所有角都变圆。我需要画只有两个圆角和其他两个平面的矩形 如果有人遇到这种情况,请向我建议解决办法 谢谢您可以使用QPainterPath进行以下操作: QPainterPath path; path.setFillRule( Qt::WindingFill ); pa

我正在开发一个应用程序,需要使用Painter为Pixmap填充颜色。Pixmap类型为矩形(底边)2个圆角。顶部的两个角是平的/正常的

我尝试使用Qt的drawRoundedRect()API,但它使矩形的所有角都变圆。我需要画只有两个圆角和其他两个平面的矩形

如果有人遇到这种情况,请向我建议解决办法


谢谢

您可以使用QPainterPath进行以下操作:

    QPainterPath path;
    path.setFillRule( Qt::WindingFill );
    path.addRoundedRect( QRect(50,50, 200, 100), 20, 20 );
    path.addRect( QRect( 200, 50, 50, 50 ) ); // Top right corner not rounded
    path.addRect( QRect( 50, 100, 50, 50 ) ); // Bottom left corner not rounded
    painter.drawPath( path.simplified() ); // Only Top left & bottom right corner rounded
您可以使用样式表(在运行时或加载文件qss)。您可以很容易地做到这一点:

QString str = "bottom-right-radius: 10px; top-right-radius: 0px....";
box->setStylesheet(str);
我假设这个框是QLabel中的一个pixmap(label->setPixmap(…)

将对象名称设置为某物(标签),然后使用

QLabel#name{右下半径:10px…}

在您加载的样式表中

查看此网站。它有助于:
扩展罗姆哈·科雷夫的答案。这里是一个仅具有圆角顶角(左上角、右上角)的长方体示例。角点中的矩形是基于主矩形计算的

qreal left = 5;
qreal top = 10;
qreal width = 100;
qreal height = 20;
QRectF rect(left, top, width, height);

QPainterPath path;
path.setFillRule( Qt::WindingFill );
path.addRoundedRect(rect, 5, 5 );
qreal squareSize = height/2;
path.addRect( QRect( left, top+height-squareSize, squareSize, squareSize) ); // Bottom left
path.addRect( QRect( (left+width)-squareSize, top+height-squareSize, squareSize, squareSize) ); // Bottom right
painter->drawPath( path.simplified() ); // Draw box (only rounded at top)

你发现有任何答案是正确的吗?