[Qt-interest] how to make sure wait cursor displays while all QGraphicsItem are being set to visible
Murphy, Sean M.
sean.murphy at gd-ais.com
Thu Apr 9 22:56:57 CEST 2009
You might want to look into
QGraphicsView::setViewportUpdateMode(ViewportUpdateMode mode) and turn
off updates *before* you iterate through your items, then turn it back
on after you've finished toggling the visibility of each item.
Something like:
QGraphicsView::ViewportUpdateMode currMode =
myGraphicsView->viewportUpdateMode(); // get current mode
myGraphicsView->setViewportUpdateMode(QGraphicsView::NoViewportUpdate);
// iterate through items here
myGraphicsView->setViewportUpdateMode(currMode);
myGraphicsView->repaint();
This is completely untested (and written in Outlook!), but the idea is
to not allow the QGraphicsView to redraw each item's change in
visibility until their all turned on/off.
Sean
-----Original Message-----
From: qt-interest-bounces at trolltech.com
[mailto:qt-interest-bounces at trolltech.com] On Behalf Of Cecilia Castillo
Sent: Thursday, April 09, 2009 3:43 PM
To: qt-interest at trolltech.com
Subject: [Qt-interest] how to make sure wait cursor displays while all
QGraphicsItem are being set to visible
I have a qt application which contains a QGraphicsView and many, many
QGraphicsItems. I have a toggle switch which allows the user to
hide/display a large number of the QGraphicsItems. Sometimes it
takes a few minutes to display all the QGraphicsItems if there are a
lot (thousands) of items. To implement the hide/show of these
items I simply iterate over all the QGraphicsItems in the View and
call setVisible().
I have attempted to set the wait cursor until the items are
displayed...but it seems that the setVisible() function takes no
time. What takes all the time is the QGraphicsItems paint events
which are queued. However, I cannot seem to figure out how to insure
that the clock cursor is active until all the paint events have been
processed. I have tried calling QGraphicsView::repaint() but it does
not seem to ensure that the QGraphicsItems paint events to be
processed. In fact, there does not seem to be a repaint() method on
QGraphicsItem leading me to believe that you cannot force the paint
event to be processed and must let them be queued.
Can anyone give me advice on how I can tell when all the
QGraphicsItem paint events have been processed.
Thanks,
Cecilia
_______________________________________________
Qt-interest mailing list
Qt-interest at trolltech.com
http://lists.trolltech.com/mailman/listinfo/qt-interest
More information about the Qt-interest-old
mailing list