Как дорисовать точку? |
Здравствуйте, гость ( Вход | Регистрация )
Как дорисовать точку? |
phpCoder |
9.1.2015, 14:09
Сообщение
#1
|
Студент Группа: Неактивирован Сообщений: 16 Регистрация: 2.12.2014 Пользователь №: 4289 Спасибо сказали: 0 раз(а) Репутация: 0 |
Есть виджет. По нему тыкают мышью - на экране должна нарисоваться точка в месте, где тыкнули. Как нарисовать там точку?
Смотрел примеры - какие-то они убогие. Везде в paintEvent определяется Qpainter, его настройки и прочее. Это что же получается: миллиард раз этот метод будет вызван, миллиард раз создастся пейнтер и в миллиардный раз в него поставят те же самые настройки? А я хочу определить его в конструкторе класса, запихнуть в него все что нужно - антиалиасинг, ручку и т.д. и уже после этого рисовать. Что для этого нужно? Также не понял, как собственно дорисовать точку. Именно ДОрисовать, а не перерисовать весь экран? |
|
|
lanz |
10.1.2015, 13:23
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Цитата Это что же получается: миллиард раз этот метод будет вызван, миллиард раз создастся пейнтер и в миллиардный раз в него поставят те же самые настройки? Именно так и рисуются все окна, которые вы видите Цитата А я хочу определить его в конструкторе класса, запихнуть в него все что нужно - антиалиасинг, ручку и т.д. и уже после этого рисовать. Что для этого нужно? Запросто, сохраняйте все ручки в полях класса, будете иметь к ним доступ в методе paint Цитата Также не понял, как собственно дорисовать точку. Именно ДОрисовать, а не перерисовать весь экран? Храните список точек и перерисовывайте все. Добавляйте к списку новую точку. Если не хотите перерисовывать лишнего используйте update с параметром прямоугольником - окружающим новую точку. НО, ваш метод paint все равно должен перерисовывать все точки, потому что например если ваше окно свернули-развернули то вам нужно перерисовать весь виджет. Вообще рассмотрите вариант QGraphicsView/Scene для того что вы делаете он может быть удобнее. |
|
|
Текстовая версия | Сейчас: 28.11.2024, 15:00 |