[PyKDE] QCanvasView C++/PyQt differences?

Phil Thompson phil at river-bank.demon.co.uk
Fri Jun 29 00:36:18 BST 2001


Lawrence Chai wrote:
> 
> Hello:
> 
> I was working with PyQt and was having trouble getting the QCanvasView
> widget to resize properly.  I thought it was a problem with the widget,
> so I wrote a small C++ program to demonstrate it to Trolltech.  However,
> when I ran the C++ version, everything seemed to work fine.  I was
> wondering what possible differences there might be and if there was
> anything I could do to get the same behavior in the PyQt version as in
> the C++ version.  I've attached a small python script as well as the
> equivalent C++ source code.  When running, you'll notice that in the C++
> version, the QCanvasWidget is the same height as the QLabel and the
> QLineEdit, whereas in the python version, the QCanvas widget is much
> taller.  Any insight into this would be much appreciated.  Thanks!

Compare the Python call to the ColorSwatchCanvasView ctor...

> class ColorSwatch(QWidget):
>     def __init__(self, parent):
>         QWidget.__init__(self, parent)
>         self.colorSwatchCanvasView = ColorSwatchCanvasView(parent)
>         self.hSize = self.width() - 4
>         self.vSize = self.height() - 4
>         self.canvas = QCanvas(self.hSize, self.vSize)
>         self.colorSwatchCanvasView.setCanvas(self.canvas)
>         self.pixmap = QPixmap(self.hSize, self.vSize)

...with the C++ version...

> ColorSwatch::ColorSwatch(QWidget * parent) : QWidget(parent)
> {
>     colorSwatchCanvasView = new ColorSwatchCanvasView(this);
>     hSize = width() - 4;
>     vSize = height() - 4;
>     canvas = new QCanvas(hSize, vSize);
>     colorSwatchCanvasView->setCanvas(canvas);
>     pixmap = new QPixmap(hSize, vSize);
> }

In other words, use "self" instead of "parent".

Phil




More information about the PyQt mailing list