[Qt-interest] Problem with QPainter in paintEvent

BaH woollybah at gmail.com
Wed Jul 29 00:20:12 CEST 2009


Hi list,
I'm in the process of writing a Qt language binding for BlitzMax, which
appeared to be going very well. Current testing is on OS X, latest Qt source
release, cocoa build. But I appear to have hit a wall when it comes to using
a QPainter inside a paintEvent of a subclassed QWidget.

Everything in the code looks fine, but I get this output on the console :

QPainter::begin: A paint device can only be painted by one painter at a
time.

So, I assume I've done something wrong somewhere...

Here's some of the relevant code :


class MaxQWidget : public QWidget

{

Q_OBJECT


public:

MaxQWidget(BBObject * handle, QWidget * parent, Qt::WindowFlags flags);

~MaxQWidget();


protected:

void paintEvent(QPaintEvent * event);

 private:

BBObject * maxHandle;

};


and paintEvent() is implemented as this :


void MaxQWidget::paintEvent(QPaintEvent * event) {

_qt_qwidget_QWidget__OnPaintEvent(maxHandle, event);

}


which simply passes the event up into the BlitzMax framework, causing the
BlitzMax paintEvent() method to be called.
In this method, I create a new instance of a QPainter, of which the glue
looks like this :


QPainter * bmx_qt_qpainter_create() {

return new QPainter();

}


I then call painter->begin() passing in the QWidget pointer.
At this point, the error is output on the console.
begin() returns 0, which is expected, due to the error.

I can't see anything obvious that I may have missed.

paintEvent() is called every tick of a QTimer, and anytime I resize the
window, so there's nothing wrong there. But for some reason, the QWidget
appears to already be painting when my paintEvent() is called.

Have I completely overlooked something?
I've basically implemented a direct port of the analogclock example in
BlitzMax, which is pretty much line-for-line the same as the C++ example.

Any guidance would be greatly appreciated.

cheers,

Brucey
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20090728/a38ced30/attachment.html 


More information about the Qt-interest-old mailing list