I re-implement QGraphicsView::event( QEvent* ) trying to print out the geometry as follows:
virtual bool event
( QEvent * evnt
) { qDebug() << "event type =" << evnt->type() << ", size =" << geometry().size();
return result;
}
virtual bool event ( QEvent * evnt ) {
bool result = QGraphicsView::event( evnt );
qDebug() << "event type =" << evnt->type() << ", size =" << geometry().size();
return result;
}
To copy to clipboard, switch view to plain text mode
Here is what I got
event type = 109 , size = QSize(100, 30)
event type = 69 , size = QSize(100, 30)
event type = 69 , size = QSize(100, 30)
event type = 100 , size = QSize(100, 30)
event type = 170 , size = QSize(100, 30)
event type = 97 , size = QSize(100, 30)
event type = 39 , size = QSize(100, 30)
event type = 70 , size = QSize(100, 30)
event type = 70 , size = QSize(100, 30)
event type = 70 , size = QSize(100, 30)
event type = 75 , size = QSize(100, 30)
event type = 69 , size = QSize(100, 30)
event type = 39 , size = QSize(100, 30)
event type = 97 , size = QSize(100, 30)
event type = 97 , size = QSize(100, 30)
event type = 39 , size = QSize(100, 30)
event type = 100 , size = QSize(100, 30)
event type = 68 , size = QSize(100, 30)
event type = 68 , size = QSize(150, 75)
event type = 13 , size = QSize(150, 75)
event type = 14 , size = QSize(150, 75)
event type = 17 , size = QSize(150, 75)
event type = 26 , size = QSize(150, 75)
event type = 18 , size = QSize(150, 75)
event type = 8 , size = QSize(150, 75)
event type = 68 , size = QSize(150, 75)
event type = 68 , size = QSize(1169, 817)
event type = 14 , size = QSize(1169, 817)
event type = 17 , size = QSize(1169, 817)
event type = 9 , size = QSize(1169, 817)
event type = 67 , size = QSize(1169, 817) // <---- ChildInsertedRequest for QT3_SUPPORT
event type = 12 , size = QSize(1169, 817) // <---- QPaintEvent
event type = 74 , size = QSize(1169, 817)
event type = 43 , size = QSize(1169, 817)
event type = 43 , size = QSize(1169, 817)
event type = 71 , size = QSize(1169, 817)
event type = 71 , size = QSize(1169, 817)
event type = 43 , size = QSize(1169, 817)
event type = 43 , size = QSize(1169, 817)
event type = 76 , size = QSize(1169, 817)
event type = 71 , size = QSize(1169, 817)
event type = 71 , size = QSize(1169, 817)
event type = 43 , size = QSize(1169, 817)
event type = 43 , size = QSize(1169, 817)
The correct size is QSize(1169, 817) . The event that gets this size in first time is type 67. But I look at Qt codes, it is defined as
#ifdef QT3_SUPPORT
ChildInsertedRequest = 67, // send ChildInserted compatibility events to receiver
ChildInserted = 70, // compatibility child inserted
LayoutHint = 72, // compatibility relayout request
#endif
#ifdef QT3_SUPPORT
ChildInsertedRequest = 67, // send ChildInserted compatibility events to receiver
ChildInserted = 70, // compatibility child inserted
LayoutHint = 72, // compatibility relayout request
#endif
To copy to clipboard, switch view to plain text mode
Next is type 12, which is QPaintEvent.
So it looks like I will have to intercept paintEvent( QPaintEvent* ) to set the scene size, but then ocasionally I got recursive painting warning...
if ( m_firstTime ) {
fitView(); // call fitView to set the scene size to fit the view
m_firstTime = false;
}
}
virtual void paintEvent( QPaintEvent* event ) {
if ( m_firstTime ) {
fitView(); // call fitView to set the scene size to fit the view
m_firstTime = false;
}
QGraphicsView::paintEvent( event );
}
To copy to clipboard, switch view to plain text mode
Bookmarks