![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
QMainWindow |
![]() ![]()
Сообщение
#1
|
Участник ![]() ![]() Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Привет всем!
Недавно сделал простенький класс для рисования графиков, используя функционал QPainter. Класс общий, хочу использовать его в разных приложениях через #include. Дело обстоит так: не хочет мой класс рисовать. Проблему понял как решать, но как сделать это руками не ясно. Итак, в классе есть такой команда PlotAxisXRight() - нарисовать правую часть оси Х(откуда до куда рисовать считается автоматически). Выглядит так:
p - это QPainter, который я использую в данном классе. Теперь хочу нарисовать ее на каком-нибудь виджете. Создал этот виджет, в нем объект моего класса(Plot2D), в его конструкторе передал все необходимое. В paintEvent виджета пишу: Вот здесь проблема: не знаю как связать painter и p. Думал, сделать как-то так: а затем написать plotter->setPainter(&painter); и вставить эту команду в предыдущий код, но он ругается, мол вновь не активен. Помогите плиз!)
|
|
|
Rocky |
![]()
Сообщение
#2
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: ![]() ![]() ![]() |
Недавно сделал простенький класс для рисования графиков, используя функционал QPainter........... Дело обстоит так: не хочет мой класс рисовать. =))))))))))) Как минимум надо делать так:
Только вот вопрос, а как и где определяются KX и tempMaxX? Их нельзя делать жестко забитыми. Они должны вычисляться на основании viewport-а painter-а. А лучше всего не изобретать ничего и использовать qwt. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#3
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
QMainWindow |
![]()
Сообщение
#4
|
Участник ![]() ![]() Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Свой велосипед лучше двух чужих!
![]() но передавать QPainter *p в каждую подобную функцию глупо. Я изначально хотел сделать мастер-функцию, в которой обозначить передаваемый painter. Присвоение не помогает...
|
|
|
QMainWindow |
![]()
Сообщение
#5
|
Участник ![]() ![]() Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Ну что, никто не знает, как клонировать пейнтер в другом классе. Ну не хочу в качестве аргумента передавать в каждой функции &painter.
Может как-нибудь с помощью функции setRedirected?.. |
|
|
wiz29 |
![]()
Сообщение
#6
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
Ну что, никто не знает, как клонировать пейнтер в другом классе. Ну не хочу в качестве аргумента передавать в каждой функции &painter. Может как-нибудь с помощью функции setRedirected?.. Добрый день, попробуй передавать в свой класс указтель QPaintDevice (это QWidget, QImage и др...) думаю так будет гораздо прозрачней.... |
|
|
QMainWindow |
![]()
Сообщение
#7
|
Участник ![]() ![]() Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Передал, а затем в классе создал: p = new QPainter(*Transmited_PaintDevice); но все равно говорит, что пейнтер не активен...
Короч вот мой класс, может у вас получится)) |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 13.7.2025, 17:30 |