<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Qml Extension and QPainter clipping]]></title><description><![CDATA[<p dir="auto">Hi everybody, I'm creating a Qml extension, but I'm having problems with the QPainter setClipRegion. The clipping is not being antialiased, look:</p>
<p dir="auto">!<a href="http://img802.imageshack.us/img802/6485/uglyclipping.jpg" target="_blank" rel="noopener noreferrer nofollow ugc">http://img802.imageshack.us/img802/6485/uglyclipping.jpg</a>(ugly clipping)!</p>
<p dir="auto">And here is my paint code:</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/void">@<bdi>void</bdi></a> Bola::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)<br />
{<br />
QRegion regiao(boundingRect().x(), boundingRect().y(), boundingRect().width(), boundingRect().height(), QRegion::Ellipse);</p>
<pre><code>painter-&gt;setRenderHints(QPainter::Antialiasing, true);

painter-&gt;setClipRegion(regiao);
painter-&gt;drawImage(boundingRect(), QImage("../ParesQml/" + imagem()));
</code></pre>
<p dir="auto">}<br />
@</p>
<p dir="auto">Antialiasing is working for anything outside the clipping, so to workarround this, I'm drawing a big gray border to hide the ugly clipping, look:</p>
<p dir="auto">!<a href="http://img52.imageshack.us/img52/7313/uglyclippinghack.jpg(hack)" target="_blank" rel="noopener noreferrer nofollow ugc">http://img52.imageshack.us/img52/7313/uglyclippinghack.jpg(hack)</a>!</p>
<p dir="auto">Code of the workarround:</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/void">@<bdi>void</bdi></a> Bola::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)<br />
{<br />
QRegion regiao(boundingRect().x(), boundingRect().y(), boundingRect().width(), boundingRect().height(), QRegion::Ellipse);</p>
<pre><code>QPen pen(m_color, 3);
painter-&gt;setPen(pen);

painter-&gt;setRenderHints(QPainter::Antialiasing, true);

painter-&gt;setClipRegion(regiao);
painter-&gt;drawImage(boundingRect(), QImage("../ParesQml/" + imagem()));

painter-&gt;setClipping(false);
painter-&gt;drawEllipse(boundingRect());
</code></pre>
<p dir="auto">}@</p>
<p dir="auto">Does anyone has a better fix for this?</p>
]]></description><link>https://forum.qt.io/topic/2022/qml-extension-and-qpainter-clipping</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Apr 2026 22:57:39 GMT</lastBuildDate><atom:link href="https://forum.qt.io/topic/2022.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 01 Dec 2010 13:29:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Qml Extension and QPainter clipping on Thu, 02 Dec 2010 12:36:43 GMT]]></title><description><![CDATA[<p dir="auto">This seems to be a bug right. Antialiasing should have been working right.</p>
]]></description><link>https://forum.qt.io/post/61744</link><guid isPermaLink="true">https://forum.qt.io/post/61744</guid><dc:creator><![CDATA[kamalakshantv]]></dc:creator><pubDate>Thu, 02 Dec 2010 12:36:43 GMT</pubDate></item><item><title><![CDATA[Reply to Qml Extension and QPainter clipping on Wed, 01 Dec 2010 20:21:36 GMT]]></title><description><![CDATA[<p dir="auto">You could create now image containing the original masked to be round. This masking should be possible with proper anti aliasing.</p>
<p dir="auto">That way you would further avoid having to do the clipping again and again for whenever you need to paint.</p>
]]></description><link>https://forum.qt.io/post/61558</link><guid isPermaLink="true">https://forum.qt.io/post/61558</guid><dc:creator><![CDATA[tobias.hunger]]></dc:creator><pubDate>Wed, 01 Dec 2010 20:21:36 GMT</pubDate></item></channel></rss>