Я новичок в Qt.
Итак, у меня есть главное окно с QSlider
и QPixmap
, Я переопределил paintEvent( QPaintEvent* event )
а также
connect( slider, SIGNAL(valueChanged(int)), this, SLOT(centerChange(int)) );
со слотом:
void MainWindow::centerChange(int value)
{
center = value;
update();
}
Поэтому я хотел перекрасить Pixmap, только если значение слайдера изменилось. Но я замечаю, что каждый раз, когда я делаю указатель мыши или указатель мыши на ползунке, происходит перерисовка. Почему это происходит?
Благодарю.
Событие рисования может быть вызвано в любое время базовой системой рисования Qt. Вы не должны предполагать, что событие рисования может быть инициировано только вами. Вам нужно изменить логику в вашем приложении.
Документация говорит:
Событие рисования — это запрос на перерисовку всего или части виджета. Это может произойти по одной из следующих причин:
- repaint () или update () был вызван,
- виджет был скрыт и теперь обнаружен, или
- много других причин.
(акцент мой). В частности, базовая ОС может инициировать событие перерисовки, когда захочет.
Исходя из ваших требований, не переопределять paintEvent
затем. Просто сделай свой QPixmap
обновление при изменении значения ползунка.