QPainter не хочет рисовать точки с шириной пера более 1 |
Здравствуйте, гость ( Вход | Регистрация )
QPainter не хочет рисовать точки с шириной пера более 1 |
Andrewshkovskii |
9.4.2010, 15:08
Сообщение
#1
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
Раскрывающийся текст
Код выше, суть такая : на лейбле стоит эвент фильтр, он обрабатывает события нажатия/перемешения мышки, и соотвественно : На левый клик рисует точку черную , на правый белую. На левый клик и перетаскивание рисует линию черную, на правый белую. Так вот, если установить статично(в коде) , или же через spinbox редактор толщины линии, и менять её, то при толщине 1 - все Ок, при большей - не рисует точки, только линии. С чем это может быть связано?
Причина редактирования: поправил заголовок *ручка*->*перо*
|
|
|
Rocky |
12.4.2010, 11:26
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Непонял вот это:
? me это что? |
|
|
Andrewshkovskii |
12.4.2010, 11:41
Сообщение
#3
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
|
|
|
Rocky |
12.4.2010, 11:49
Сообщение
#4
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Повторюсь...
Цитата const QPoint & QMouseEvent::pos () const Returns the position of the mouse cursor, relative to the widget that received the event. If you move the widget as a result of the mouse event, use the global position returned by globalPos() to avoid a shaking motion. See also x(), y(), and globalPos().
Это так и задумано? |
|
|
Andrewshkovskii |
12.4.2010, 12:11
Сообщение
#5
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
Да, так и задумано.У меня стоит фильтр на этом виджете, который обрабатывает собития мышки, и координата pos() будет относительно этого виджета(там лейбл и в нем пикспам). globalPos() это будет относительно координат винды позиция , разве нет?И я не передвигаю виджет, я полчаю координату нажатия мышки, относительно виджета, на котором стоит фильтр.
Сообщение отредактировал Andrewshkovskii - 12.4.2010, 12:11 |
|
|
Rocky |
12.4.2010, 12:41
Сообщение
#6
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
хм... а как именно толщина линии задается?
|
|
|
Гость_Гость_Andrewshkovskii_*_* |
12.4.2010, 13:59
Сообщение
#7
|
Гости |
Толщина линии задается через самописный слот , который вызывается сигналом от слайдера/спинбокса valueChanged(int), в слоте просто ставиться drawPen.seetWidth(width)..
|
|
|
Rocky |
12.4.2010, 14:51
Сообщение
#8
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Имхо быстрее всего будет проставить брэйкпоинты в нужных местах и продебажить. Сразу станет понятно какой код отрабатывает, какой реально параметр width приходит и пр.
|
|
|
Andrewshkovskii |
12.4.2010, 16:03
Сообщение
#9
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
Да проблема в том, что при изменении ширины пера, точки- не рисуются, а линии - да, вот что меня удивило.сейчас пофикшено путем изменения координаты ивента на +1.
|
|
|
Litkevich Yuriy |
12.4.2010, 16:04
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
у меня тут вопрос возник, а должна ли точка быть больше точки (пикселя)?
|
|
|
Текстовая версия | Сейчас: 29.3.2024, 14:50 |