Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何使用QPaint::drawPolyLine绘制圆角_Qt_Qpainter - Fatal编程技术网

Qt 如何使用QPaint::drawPolyLine绘制圆角

Qt 如何使用QPaint::drawPolyLine绘制圆角,qt,qpainter,Qt,Qpainter,目前,我正在尝试使用QGroupBox作为基础创建一个自定义容器小部件,并在paint事件中绘制新的框架,使用drawPolyLine创建框架效果良好,但我希望使用圆角绘制框架。是否有人想到了一种使用drawPolyLine的方法,或者我需要重写代码来实现它们?当涉及到自定义灵活形状时,它是其中最强大的一类。例如,您可以使用以绘制单个圆角,但绘制完整形状可能需要一些数学知识 另一种可能性是定义单个形状,并使用intersected()或subtracted()合并它们,正如cbamber85在注

目前,我正在尝试使用QGroupBox作为基础创建一个自定义容器小部件,并在paint事件中绘制新的框架,使用drawPolyLine创建框架效果良好,但我希望使用圆角绘制框架。是否有人想到了一种使用drawPolyLine的方法,或者我需要重写代码来实现它们?

当涉及到自定义灵活形状时,它是其中最强大的一类。例如,您可以使用以绘制单个圆角,但绘制完整形状可能需要一些数学知识


另一种可能性是定义单个形状,并使用
intersected()
subtracted()
合并它们,正如cbamber85在注释中所建议的那样

QPen有一个Qt::RoundCap的“Cap Style”选项,它可能会根据笔的宽度产生圆角。

void QPainter::drawRoundedRect(const qrect&rect,qreal xRadius,qreal yRadius,Qt::SizeMode模式)
?它不是一个完整的矩形,想象一下形状的活页夹分隔符。因为它是不规则的,您可以使用
QPainterPath
将简单形状“分层”到彼此的顶部,从而从简单形状中创建复杂形状。您应该可以通过使用适当的joinStyle()设置一个QPen来实现这一点。@cbamber85:这是一个选项,它只意味着交换QPen以“擦除”顶部部分。啊,我还没有看到过交叉方法,这可能会很好。我希望我可以得到圆角免费,但我只是围绕它工作!