<br><br><div><span class="gmail_quote">On 1/7/08, <b class="gmail_sendername">Phil Thompson</b> &lt;<a href="mailto:phil@riverbankcomputing.co.uk">phil@riverbankcomputing.co.uk</a>&gt; wrote:</span><blockquote class="gmail_quote" style="margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 0; margin-left: 0.80ex; border-left-color: #cccccc; border-left-width: 1px; border-left-style: solid; padding-left: 1ex">
On Monday 07 January 2008, Arve Knudsen wrote:<br>&gt; Hello<br>&gt;<br>&gt; I&#39;ve run into what looks like a bug in PyQt. When changing the font of a<br>&gt; QLabel at runtime, it doesn&#39;t update its appearance unless I call its
<br>&gt; update() method. I&#39;ve verified that this problem doesn&#39;t occur when using<br>&gt; Qt directly from C++. Even after calling update(), something isn&#39;t right<br>&gt; however, as the containing QGridLayout isn&#39;t adjusted to account for the
<br>&gt; label&#39;s changed dimensions.<br>&gt;<br>&gt; The attached program showcases the problem. Uncomment line 20 to see the<br>&gt; layout problem.<br><br>Change the first line of changeFont() to...<br><br>&nbsp;&nbsp;&nbsp;&nbsp;f = QFont(self.__lab.font())
<br><br>...so that it is closer to what C++ would do.</blockquote><div><br>Ah,&nbsp;this&nbsp;semantic&nbsp;detail&nbsp;escaped&nbsp;me.&nbsp;The&nbsp;typical&nbsp;C++&nbsp;way&nbsp;is&nbsp;to say&nbsp;QFont&nbsp;f&nbsp;=&nbsp;label.font()&nbsp;. What I didn&#39;t  notice however is that this makes a copy of the returned reference.
</div><br><blockquote class="gmail_quote" style="margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 0; margin-left: 0.80ex; border-left-color: #cccccc; border-left-width: 1px; border-left-style: solid; padding-left: 1ex">
SIP doesn&#39;t enforce &quot;const&quot;. I&#39;ve been mulling over this for a while. SIP<br>could enforce &quot;const&quot; so that the call to setBold() would raise an exception.<br>The disadvantage is that existing apps may break - but, then again, they are
<br>broken anyway.</blockquote><br><blockquote class="gmail_quote" style="margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 0; margin-left: 0.80ex; border-left-color: #cccccc; border-left-width: 1px; border-left-style: solid; padding-left: 1ex">
An alternative might be to automatically make a copy under the covers so that<br>wrapped C++ instances are never const.<br></blockquote></div><br>A soft warning (as opposed to an exception) is perhaps also a third alterantive, so that the programmer knows he&#39;s doing something wrong?
<br><br>Thanks,<br>Arve<br>