Название: Перерисовка виджетов в KDE Отправлено: rost от Май 04, 2013, 14:12 В KDE под линукс столкнулся с тем, что как-то не бодро идет отображение производного от QAbstractItemView виджета.
Как оказалось, paintEvent вызывалось до 12 раз при первом отображении. Собственно, это касается и родных виджетов типа QTableWidget, QTextEdit. Код: class TableWidget : public QTableWidget Вывод: Код: QRect(0,0 394x394) В win7 этот же код вызывает paintEvent при первом отображении 1 раз. Кто-нибудь натыкался на такое? Как избежать ненужных перерисовок? Название: Re: Перерисовка виджетов в KDE Отправлено: Bepec от Май 04, 2013, 15:58 Ищите, смотрите что вызывает перерисовку.
Название: Re: Перерисовка виджетов в KDE Отправлено: rost от Май 04, 2013, 18:41 Вроде, нашел.
Добавил eventFilter, обнаружил 4 вызова ChildPolished от четырех разных (но безымянных) Oxygen::SunkenFrameShadow. Запустил со стилями plastique, cde, cleanlooks - paintEvent вызывается один раз. Такая вот особенность Oxygen-а :( Название: Re: Перерисовка виджетов в KDE Отправлено: _OLEGator_ от Май 04, 2013, 19:39 Возможно там какая-то анимация имеется?
Название: Re: Перерисовка виджетов в KDE Отправлено: Командор от Май 05, 2013, 20:07 Вроде, нашел. Добавил eventFilter, обнаружил 4 вызова ChildPolished от четырех разных (но безымянных) Oxygen::SunkenFrameShadow. Запустил со стилями plastique, cde, cleanlooks - paintEvent вызывается один раз. Такая вот особенность Oxygen-а :( Была похожая проблема. При этом paintEvent вызывался один раз, но область перерисовки event0>region() все время была равна размеру виджета в скроле. Т.е. при прокрутке виджета нужно было его перерисовывать полностью. При замене стиля на пластик все было нормально - вызывалась перерисовка только части виджета. Так что Oxygen в плане производительности хромает. |