zeljko wrote> I was explaining how Qt class qrect is used in binding. By using a
> pascal record with the same binary layout as the QRect Qt Class.
> Only when a qrect is returned by any qt call, the binding first
!! read this again :-)
Show quoted text 7 lines
> calls the copy...rect... functions to fix for the +1/-1 and different OsX
> binary layout.
> If you use the topleft (and other functions of qrect), they
> return the coordinates in the struct/record (w/o the +1/-1).
> In most cases this is what you want.
I don't use any function of QRect I'm using QWidget_rect() from bindings
procedure QWidget_rect(handle: QWidgetH; retval: PRect);
http://doc.trolltech.com/4.5/qwidget.html#rect-prop
What the binding tries to do is make your life easier. By far not as easy as PyQt, but hey. So QWidget::rect returns an instance of the class QRect. If I didn't do anything special, you would have to create a class instance of Qrect using something like QRect_create and pass it to a binding function QWidget_rect(handle, retval QRectH). As to avoid that constructor part, every QRect that is a parameter or a return value of any qt method, gets replaces with a PRect and uses the copy..rect.. functions. So here you have the method rect of the class the qwidget that normally returns a qrect -> well now it returns a PRect.
which returns PRect , which comes from CopyQRectToPRect() and that one
doesnt assign any value to PRect^.TopLeft.
?
TRect = record
case Integer of
0: (Left,Top,Right,Bottom : Longint);
1: (TopLeft,BottomRight : TPoint);
end;
So when assigning to left/top etc -> you also assign to TopLeft
(overlapping records)
In case of QWidget_rect()
> QRect.topLeft() is filled with viewport offset.
Better ? :)
http://doc.trolltech.com/4.5/qwidget.html#rect-prop not that documentation says it is always (0,0,w,h)
Show quoted text 6 lines
> > QAbstractScrollArea->viewport() uses TopLeft for information about
> > viewport origin when we ask QWidget_rect(viewport, @R);
> > When we move scrollbar , viewport moves, QWidget_rect() is always same,
> > but viewport is changing QRect topLeft value (according to qt code).
> >
> > If we move viewport (eg. by scrolling) qt code says that TopLeft = (0,
where does that qt code say that (might help me understand)
> > -20) in qt bindings it says TopLeft = (0,0).
just like qt doc says.
>
> I am not sure what you mean by qt code and qt binding.
I am still confused, but we will get there :-)
> perhaps you should adapt a small fpc qt4 demo and add
kind regards,
Den Jean