В KDE под линукс столкнулся с тем, что как-то не бодро идет отображение производного от QAbstractItemView виджета.
Как оказалось, paintEvent вызывалось до 12 раз при первом отображении. Собственно, это касается и родных виджетов типа QTableWidget, QTextEdit.
class TableWidget : public QTableWidget
{
protected:
virtual void paintEvent ( QPaintEvent * e)
{
qDebug() << e->rect();
QTableWidget::paintEvent(e);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
TableWidget w;
w.resize(400, 400);
w.show();
return a.exec();
}
Вывод:
QRect(0,0 394x394)
QRect(0,0 394x394)
QRect(0,0 394x394)
QRect(0,0 394x394)
QRect(0,0 394x394)
QRect(0,0 394x394)
QRect(0,0 394x394)
QRect(0,0 394x394)
QRect(0,0 394x394)
QRect(0,0 394x394)
QRect(0,0 394x394)
В win7 этот же код вызывает paintEvent при первом отображении 1 раз. Кто-нибудь натыкался на такое? Как избежать ненужных перерисовок?