Qt paintEvent () запущен ненормально

Я новичок в Qt.

Итак, у меня есть главное окно с QSlider и QPixmap, Я переопределил paintEvent( QPaintEvent* event ) а также

connect( slider, SIGNAL(valueChanged(int)), this, SLOT(centerChange(int)) );

со слотом:

void MainWindow::centerChange(int value)
{
center = value;
update();
}

Поэтому я хотел перекрасить Pixmap, только если значение слайдера изменилось. Но я замечаю, что каждый раз, когда я делаю указатель мыши или указатель мыши на ползунке, происходит перерисовка. Почему это происходит?

Благодарю.

0

Решение

Событие рисования может быть вызвано в любое время базовой системой рисования Qt. Вы не должны предполагать, что событие рисования может быть инициировано только вами. Вам нужно изменить логику в вашем приложении.

2

Другие решения

Документация говорит:

Событие рисования — это запрос на перерисовку всего или части виджета. Это может произойти по одной из следующих причин:

  • repaint () или update () был вызван,
  • виджет был скрыт и теперь обнаружен, или
  • много других причин.

(акцент мой). В частности, базовая ОС может инициировать событие перерисовки, когда захочет.

1

Исходя из ваших требований, не переопределять paintEvent затем. Просто сделай свой QPixmap обновление при изменении значения ползунка.

0
По вопросам рекламы [email protected]