Полная версия этой страницы:
не рисуется точка
В моем проекте в QPaintEvent не рисуется точка, хотя линия чертится нормально:
......
pDown.setX(pUp.x());
pDown.setY(0);
// painter.drawPoint(xyTouv(pUp,scale));
painter.drawLine(xyTouv(pUp,scale),xyTouv(pDown,scale));
......
xyTouv это функция перехода из нормальной системы координат в экранную(начало координат в центре экрана)
Причем у меня 2 QPaintEvent для разных классов.В первом точки чертятся а во 2 нет.Единственная существенная разница - Один пэйнтивент прорисовывает виджет на обратной стороне QTabWidget а другой на лицевой.
Алексей1153
8.11.2010, 21:11
а каким образом сюда QPaintEvent отнеслось
Что-то недоговариваешь.
А насчёт функции xyTouv - если это твоя самописная функция, то, значит, она возвращает косячные значения. А что есть "нормальньная система координат" ? Подозреваю, что легко заменяется нужной функцией из серии QWidget::map....
Цитата
а каким образом сюда QPaintEvent отнеслось Что-то недоговариваешь.
Я переопределил QPaintEvent в QWidget. В это пэйнтивенте я рисую не только точку, но это не важно.
Цитата
А насчёт функции xyTouv - если это твоя самописная функция, то, значит, она возвращает косячные значения.
Да, это моя самописная.
Я ведь писал, что в том то и дело, что эта функция правильные значения возвращает.Как я это понял?Я пробовал вместо точки выводить линию, которая начинается из данной точки и опускается на ось.
Цитата
А что есть "нормальньная система координат" ?
Нормальная это декартова прямоугольная.
Цитата
Подозреваю, что легко заменяется нужной функцией из серии QWidget::map....
Я про это не знаю
Алексей1153
8.11.2010, 22:04
если у тебя преобразование из декартовой в другую, не декартовую, то map... тебе не поможет, согласен.
А с остальным всё равно ничего не понятно. Особенно действия с QPaintEvent
Алексей1153
9.11.2010, 10:01
voipp, при каких условиях можно попасть в отладке на строчку
painter.drawPoint(xyTouv(pUp,scale));
я не смог ))
а у меня заходит на эту строчку. И в том и в другом PaintEvent'е.Заходит при мне в строчку,почещает функцию xyTouv выходит из нее и нифига не рисует. Темболее вы же понимаете, если эту строчку закомментировать и раскомментировать строку ниже, то все нормально нарисуется.Загадочно это.Функция xyTouv ведь возвращает правильный результат
Алексей1153
9.11.2010, 18:44
а вот так рисуется ?
painter.drawLine(xyTouv(pUp,scale),xyTouv(pUp/*pDown*/,scale));
а вот так?
painter.drawPoint(QPoint(10,10));
а вот так рисуется ?
painter.drawLine(xyTouv(pUp,scale),xyTouv(pUp/*pDown*/,scale));
В том то и дело, что да.
а вот так?
painter.drawPoint(QPoint(10,10));
Нет, не работает.Ни в первом, ни во втором QPaintEvent'е.
У меня складывается впечатление, что программы живут своей собственной жизнью.
Алексей1153
10.11.2010, 8:35
voipp, да пусть живут ) А мы их скальпелем
продожим телепатические догадки (я думал, ты сам это сделаешь) :
painter.drawLine(QPoint(10,10),QPoint(10,10));
painter.drawLine(QPoint(30,30),QPoint(30,30));
painter.drawLine(QPoint(50,50),QPoint(50,50));
painter.drawLine(QPoint(70,70),QPoint(70,70));
так точки видны?
Гость_voipp_*
10.11.2010, 11:37
Да, видны любые линии.Точки видны только на первом виджете, но не на втором
Алексей1153
10.11.2010, 13:41
что значит "любые линии"? Я нарисовал 4 точки же
допустим, эта точки вывелась и видна
painter.drawLine(QPoint(10,10),QPoint(10,10));
тогда должна быть видна и
painter.drawPoint(QPoint(10,10));
Если последнее не выполняется, остаётся :
1) проверить, какой цвет пиксела выводится
2) проверить, какой тип пера используется
1)цвет черный(причем тут это?)
2) что значит тип пера?
Litkevich Yuriy
14.11.2010, 1:38
Цитата(voipp @ 14.11.2010, 4:33)
1)цвет черный(причем тут это?)
может сливаться с фоном, но в твоём случае это бы сразу вылезло
Цитата(voipp @ 14.11.2010, 4:33)
2) что значит тип пера?
тыц
Гость_voipp_*
14.11.2010, 18:45
pen.setStyle(Qt::SolidLine);
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.