On 5/14/07, <b class="gmail_sendername">Hans-Peter Jansen</b> &lt;<a href="mailto:hpj@urpla.net">hpj@urpla.net</a>&gt; wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Am Montag, 14. Mai 2007 09:56 schrieb Phil Thompson:<br>&gt; On Sunday 13 May 2Hmm, shouldn&#39;t this code behave in the same way too, than:<br><br> &nbsp; &nbsp;void paintEvent(QPaintEvent* event)<br> &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp;QPainter p(this);
<br> &nbsp; &nbsp; &nbsp; &nbsp;QPen pn=p.pen();<br> &nbsp; &nbsp; &nbsp; &nbsp;pn.setWidth(2);<br><br>[found in qt3/doc/examples/progress/progress.cpp, line 85]007 4:18 pm, Hans-Peter Jansen wrote:<br>&gt; &gt; Hi Phil,<br>&gt; &gt;<br>&gt; &gt; while at PyQt3 issues, could you look into an issue with pens, when
<br>&gt; &gt; fetching them with pen() from a QPainter. When using a QPen() instance,<br>&gt; &gt; all is well, but modifying the fetched pen does not work (a pen with<br>&gt; &gt; default properties will be used, no matter what is set on it).
<br>&gt;<br>&gt; In C++ pen() returns a const reference - and SIP doesn&#39;t support const<br>&gt; except to cast it away. I don&#39;t know what the C++ compiler is supposed to<br>&gt; do in those circumstances - but it looks like it is just discarding any
<br>&gt; attempts to modify the const QPen.<br><br>Hmm, shouldn&#39;t this code behave in the same way too, than:<br><br>&nbsp;&nbsp;&nbsp;&nbsp;void paintEvent(QPaintEvent* event)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QPainter p(this);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QPen pn=p.pen
();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pn.setWidth(2);<br><br>[found in qt3/doc/examples/progress/progress.cpp, line 85]<br><br>&gt; If SIP properly supported const then you would get an exception when you<br>&gt; called setColor().<br>&gt;<br>&gt; The solution is to make a non-const copy of the pen...
<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p = QPainter(self)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pn = QPen(p.pen())<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pn.setColor(Qt.red)<br>&gt;<br>&gt; Phil<br><br>Ahh, I see. Thanks.<br><br>Mind throwing the attached progress.py into examples3? Apart from a bunch of
<br>fixes, a few different default settings and menu shortcuts it much more<br>resembles the current Qt version now (functional and visual wise).<br><br>Cheers,<br>&nbsp;&nbsp;Pete &quot;Retro&quot; Jansen<br></blockquote></div><br>
A bit off-topic, but the reason the C++ version you referenced works is because in C++ this will implicitly make a mutable copy of the const QPen object using QPen&#39;s copy constructor. In python, you apparently have to do that explicitly.
<br><br>Ingmar<br>