crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как дорисовать точку?
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  


Цитата
Это что же получается: миллиард раз этот метод будет вызван, миллиард раз создастся пейнтер и в миллиардный раз в него поставят те же самые настройки?

Именно так и рисуются все окна, которые вы видите :lol:

Цитата
А я хочу определить его в конструкторе класса, запихнуть в него все что нужно - антиалиасинг, ручку и т.д. и уже после этого рисовать. Что для этого нужно?

Запросто, сохраняйте все ручки в полях класса, будете иметь к ним доступ в методе paint

Цитата
Также не понял, как собственно дорисовать точку. Именно ДОрисовать, а не перерисовать весь экран?

Храните список точек и перерисовывайте все. Добавляйте к списку новую точку. Если не хотите перерисовывать лишнего используйте update с параметром прямоугольником - окружающим новую точку.

НО, ваш метод paint все равно должен перерисовывать все точки, потому что например если ваше окно свернули-развернули то вам нужно перерисовать весь виджет.

Вообще рассмотрите вариант QGraphicsView/Scene для того что вы делаете он может быть удобнее.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2024, 4:48