On 5/14/07, Hans-Peter Jansen <[EMAIL PROTECTED]> wrote:

Am Montag, 14. Mai 2007 09:56 schrieb Phil Thompson:
> On Sunday 13 May 2Hmm, shouldn't this code behave in the same way too,
than:

   void paintEvent(QPaintEvent* event)
   {
       QPainter p(this);
       QPen pn=p.pen();
       pn.setWidth(2);

[found in qt3/doc/examples/progress/progress.cpp, line 85]007 4:18 pm,
Hans-Peter Jansen wrote:
> > Hi Phil,
> >
> > while at PyQt3 issues, could you look into an issue with pens, when
> > fetching them with pen() from a QPainter. When using a QPen()
instance,
> > all is well, but modifying the fetched pen does not work (a pen with
> > default properties will be used, no matter what is set on it).
>
> In C++ pen() returns a const reference - and SIP doesn't support const
> except to cast it away. I don't know what the C++ compiler is supposed
to
> do in those circumstances - but it looks like it is just discarding any
> attempts to modify the const QPen.

Hmm, shouldn't this code behave in the same way too, than:

    void paintEvent(QPaintEvent* event)
    {
        QPainter p(this);
        QPen pn=p.pen();
        pn.setWidth(2);

[found in qt3/doc/examples/progress/progress.cpp, line 85]

> If SIP properly supported const then you would get an exception when you
> called setColor().
>
> The solution is to make a non-const copy of the pen...
>
>         p = QPainter(self)
>         pn = QPen(p.pen())
>         pn.setColor(Qt.red)
>
> Phil

Ahh, I see. Thanks.

Mind throwing the attached progress.py into examples3? Apart from a bunch
of
fixes, a few different default settings and menu shortcuts it much more
resembles the current Qt version now (functional and visual wise).

Cheers,
  Pete "Retro" Jansen


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's copy constructor. In python, you apparently have to do
that explicitly.

Ingmar
_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to