Здравствуйте!
Я сделал себе виджет, унаследованный от QWidget. Его рисую сам, в paintEvent(). Виджет чем-то похож на QSlider, на нём есть несколько "движков".
При клике по движку и движении мышкой, движок должен двигаться за мышкой. В консоль у меня сыпятся дебаг-сообщения, что движок зацеплен и двигается, меняются его координаты. А на экране ничего не двигается.
При каждом выводе дебаг-сообщения, что у движка новые координаты, я пробовал вызывать
update();
repaint();
QWidget::update();
QWidget::repaint();
emit update();
emit repaint();
Но на экране ничего не обновляется.
Всё сделано практически как в примере examples/widgets/analogclock. Только в примере обновление происходит через таймер
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
а у меня - когда координаты движка изменены. Вот и немогу понять, почему в примере работает обновление, а у меня - нет.
Подобный вопрос уже возникал в теме "Класс, унаследованный от QTextEdit. Не могу обновить изображение текста"
http://www.prog.org.ru/index.php?topic=9810.msg56703#msg56703. Там посоветовали использовать
но в классе QWidget метода viewport() нет. Да и пример AnalogClock замечательно обновляет свой вид без viewport().
Вопрос - что делаю не так?
Заголовок
http://paste.org.ru/?xgxis0Реализация
http://paste.org.ru/?kip82qВызов обновления происходит в методе mouseMoveEvent().