![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
++Norton++ |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Столкнулся с такой проблемой, нужно написать программу, которая будет строить определенный график, но в Qt не нашел виджета-плоттера.
![]() Подскажите пожалуйста, есть ли какая-нибудь возможность решить эту проблему? Как отобразить график? Может есть какие-нибудь дополнительные виджеты? |
|
|
![]() |
SABROG |
![]()
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#3
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Столкнулся с такой проблемой, нужно написать программу, которая будет строить определенный график, но в Qt не нашел виджета-плоттера. ![]() Подскажите пожалуйста, есть ли какая-нибудь возможность решить эту проблему? Как отобразить график? Может есть какие-нибудь дополнительные виджеты? Если решишь делать своими руками - помогу. Можно обойтись и без Qwt! Я эту задачу решил и знаю как делать! Сообщение отредактировал AD - 5.3.2009, 0:20 |
|
|
++Norton++ |
![]()
Сообщение
#4
|
Студент ![]() Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
SABROG, спасибо, пробовал, скачивал, только не получилось его в QtDesigner добавить
![]() AD, отлично, с удовольствием хотел бы попробовать, буду очень благодарен за помощь! |
|
|
AD |
![]()
Сообщение
#5
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
SABROG, спасибо, пробовал, скачивал, только не получилось его в QtDesigner добавить ![]() AD, отлично, с удовольствием хотел бы попробовать, буду очень благодарен за помощь! Хорошо. Завтра вечером кое-что из кода выложу. Извини, сегодня спать хочется и голова побаливает! |
|
|
++Norton++ |
![]()
Сообщение
#6
|
Студент ![]() Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Конечно, все отлично, буду ждать!
![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#7
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
++Norton++, про Qwt есть отдельная тема, почитай там было обсуждение проблем со сборкой.
|
|
|
kwisp |
![]()
Сообщение
#8
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
скачивал, только не получилось его в QtDesigner добавить про Qwt есть отдельная тема, почитай там было обсуждение проблем со сборкой. вот |
|
|
Kagami |
![]()
Сообщение
#9
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: ![]() ![]() ![]() |
Я тоже свой виджет для построения графиков делал
![]() |
|
|
AD |
![]()
Сообщение
#10
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Первое. Желательно создать новый проект. Основной класс GraphicWidget, для простоты, лучше унаследовать от QWidget! Затем добавить в этот виджет еще один виджет graphWidget и сделать компоновку с помощью QGridLayout!
Далее, следует добавить новые PlotSettings.cpp и PlotSettings.h файлы. h-файл будет выглядеть так:
В чем-то создание этого виджета будет пересекаться с книгой Жасмина и Бланшета по Qt4! Но будут и отличия. Итак, создали класс, который будет отвечать за масштабирование, перемещение и сетку нашего графика. source
Сообщение отредактировал AD - 7.3.2009, 14:54 |
|
|
++Norton++ |
![]()
Сообщение
#11
|
Студент ![]() Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо, все понятно кроме некоторых деталей:
1) Виджет graphWidget - это имеется ввиду GraphicsView? Или я что-то путаю? 2) На втором листинге исходник PlotSettings.cpp, правильно? Сообщение отредактировал ++Norton++ - 5.3.2009, 12:22 |
|
|
AD |
![]()
Сообщение
#12
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо, все понятно кроме некоторых деталей: 1) Виджет graphWidget - это имеется ввиду GraphicsView? Или я что-то путаю? 2) На втором листинге исходник PlotSettings.cpp, правильно? 1) Нет. Зачем же? ![]() 2) Да. Продолжим. ![]() Вот так приблизительно будет выглядеть исходники основного окна:
В итоге должна появиться сетка графика. В данном случае выглядеть будет так: [attachment=472:graphic.JPG] Позже расскажу про масштабирование и попробуем построить простейший график (y(x) = x) |
|
|
++Norton++ |
![]()
Сообщение
#13
|
Студент ![]() Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Вопрос, конечно ламерский, но все же
![]() |
|
|
AD |
![]()
Сообщение
#14
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Пофигу где. Главное, чтобы ты смог открыть окно, аналогичное дизайнеру. Итак, открываешь окно дизайнер, в нем появляется нужная форма (виджет), в него и вставляешь еще один виджет. Затем нажимаешь на основной виджет, правая клавиша мыши - Lay Out -> Lay Out in Grid. Ну так можно, например.
|
|
|
++Norton++ |
![]()
Сообщение
#15
|
Студент ![]() Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
нужная форма (виджет), в него и вставляешь еще один виджет. Вот как раз в этом то и проблема ![]() ![]() |
|
|
AD |
![]()
Сообщение
#16
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
[attachment=473:disainer.JPG]
Обведенный в овальчик! |
|
|
++Norton++ |
![]()
Сообщение
#17
|
Студент ![]() Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Огромное спасибо! Отлично, все получилось!
Если можно, теперь, как строить графики и про масштабирование ![]() |
|
|
++Norton++ |
![]()
Сообщение
#18
|
Студент ![]() Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
И всетаки, как же строить графики?
![]() |
|
|
AD |
![]()
Сообщение
#19
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
И всетаки, как же строить графики? ![]() Сегодня вечером. Впринципе, уже практически все есть. Вечером покажу! Вот сделал масштабирование. И нажатие на некоторые кнопки: + - масштаб + - - масштаб - ALT+X - выход ALT+Enter - показ на весь экран (и обратно).
Source
Сообщение отредактировал AD - 7.3.2009, 14:53 |
|
|
AD |
![]()
Сообщение
#20
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Добавить в класс 3 функции:
Ну и их описать ![]()
А затем в paintEvent() добавить следующее:
В конструкторе добавить:
Вуаля. График нарисован. Все сделано! ![]() |
|
|
Kagami |
![]()
Сообщение
#21
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: ![]() ![]() ![]() |
Напоминает пример из книжки Жасмин Бланшет
![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#22
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
AD, Оборачивай длинные портянки кода в тэг экспанд
|
|
|
AD |
![]()
Сообщение
#23
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
++Norton++ |
![]()
Сообщение
#24
|
Студент ![]() Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Вроде все сделал так, но при компиляции выдается ошибка
![]()
Я что-то где-то не дописал? |
|
|
AD |
![]()
Сообщение
#25
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Вроде все сделал так, но при компиляции выдается ошибка ![]()
Я что-то где-то не дописал? Его в классе объявить надо ![]() ![]()
Советую слегка подучить С++, а то вопросы иногда в ступор вводят! ![]() Сообщение отредактировал AD - 7.3.2009, 16:21 |
|
|
++Norton++ |
![]()
Сообщение
#26
|
Студент ![]() Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Огромнейшее спасибо! Теперь все отлично работает!
А на счет подучить C++ и вправду надо ![]() ![]() |
|
|
++Norton++ |
![]()
Сообщение
#27
|
Студент ![]() Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Да, хотел только еще один вопрос задать...
Когда нажимаю левой кнопкой мыши на график, программа прекращает свою работу (закрывается). Вроде бы так не должно быть? |
|
|
AD |
![]()
Сообщение
#28
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Да, хотел только еще один вопрос задать... Когда нажимаю левой кнопкой мыши на график, программа прекращает свою работу (закрывается). Вроде бы так не должно быть? Где-то что-то не так ты написал. У меня нет таких глюков. Ищи! |
|
|
BRE |
![]()
Сообщение
#29
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
Да, хотел только еще один вопрос задать... Когда нажимаю левой кнопкой мыши на график, программа прекращает свою работу (закрывается). Вроде бы так не должно быть? Я так думаю, что она не просто закрывается, а падает. Проверь у себя, в конструкторе GraphicWidget объект rubber конструируется? Что-то типа rubber = new QRubberBand( this ); |
|
|
AD |
![]()
Сообщение
#30
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Сообщение отредактировал AD - 7.3.2009, 23:16 |
|
|
++Norton++ |
![]()
Сообщение
#31
|
Студент ![]() Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо! Теперь все работает! Только лента не вырисовывается, а так масштабирование проходит нормально
![]() |
|
|
AD |
![]()
Сообщение
#32
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Только лента не вырисовывается, а так масштабирование проходит нормально ![]() Что значит не вырисовывается? Пытался понять причины ошибки? Притормаживает изображение? Ты сделал тот пример, что я написал или по подобию на своем графике испытывал? У меня все рисовалось прекрасно! |
|
|
asdf |
![]()
Сообщение
#33
|
Студент ![]() Группа: Новичок Сообщений: 12 Регистрация: 6.9.2009 Пользователь №: 1057 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
а подскажите по этому примеру в чём косяк. при добавлении GraphicWidget.h при сборке вылазит ошибка "GraphicWidget.h:39: ошибка: expected class-name before ‘{’ token" указывает на скобку перед объявлением Q_Object . но она вроде как там корректно стоит. в чём косяк??
|
|
|
AD |
![]()
Сообщение
#34
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
а подскажите по этому примеру в чём косяк. при добавлении GraphicWidget.h при сборке вылазит ошибка "GraphicWidget.h:39: ошибка: expected class-name before ‘{’ token" указывает на скобку перед объявлением Q_Object . но она вроде как там корректно стоит. в чём косяк?? Прошу привести кусок кода и полное сообщение об ошибке.
|
|
|
asdf |
![]()
Сообщение
#35
|
Студент ![]() Группа: Новичок Сообщений: 12 Регистрация: 6.9.2009 Пользователь №: 1057 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Прошу привести кусок кода и полное сообщение об ошибке. код:
ошибка: Цитата C:/Other_place/QTProjects/GraphWiget/GraphicWidget.h:39: error: expected class-name before '{' token вроде брал код отсюда, руками особо не ковырял....
Причина редактирования: используй тэг code
|
|
|
ufna |
![]()
Сообщение
#36
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
обычно такая хрень идет по двум причинам:
1. чет не то компилятор наделал, сделай полный ребилд 2. с инклюдами что-то не то (например "зацикливание") |
|
|
AD |
![]()
Сообщение
#37
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Думаю, что ребилд должен помочь!
Цитата 2. с инклюдами что-то не то (например "зацикливание") Нет! Если все скопировать ровно как в примере, то зацикливания не будет. Код проверен и отлажен. |
|
|
AD |
![]()
Сообщение
#38
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Ну... решил выложить еще раз решение. ПОЛНОСТЬЮ!
GraphicWidget
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#39
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
AD, чёто с русскими коментариями бяка какая-то
|
|
|
AD |
![]()
Сообщение
#40
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#41
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо! Теперь все работает! Только лента не вырисовывается, а так масштабирование проходит нормально ![]() Не знаю надо это сейчас или не очень. Но лента не будет вырисовываться, если вместо следующей строки:
делать такую строку:
Надо обязательно брать в качестве родителя тот виджет, на котором рисуется все, а не его родитель! |
|
|
Гость_Гость_* |
![]()
Сообщение
#42
|
Гости ![]() |
Уважаемые, поясните пожалуйста что за файл подключается, ui_GraphicWidget.h, и откуда он должен взяться? (ругается на него компилятор)
ошибка:fatal error C1083: Cannot open include file: 'ui_GraphicWidget.h': No such file or directory |
|
|
AD |
![]()
Сообщение
#43
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Уважаемые, поясните пожалуйста что за файл подключается, ui_GraphicWidget.h, и откуда он должен взяться? (ругается на него компилятор) ошибка:fatal error C1083: Cannot open include file: 'ui_GraphicWidget.h': No such file or directory У Вас должен быть ui-файл. Т.е. файл формы, воспринимаемого дизайнером Qt! ui_GraphicWidget.h - это файл описания виджетов, расположенных на форме. Судя из примера, файл должен быть таким:
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#44
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AlmNeft |
![]()
Сообщение
#45
|
Новичок Группа: Новичок Сообщений: 1 Регистрация: 17.4.2010 Пользователь №: 1637 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
AD, ++Norton++, выложите пожалуйста папку с прогой полностью если сохранилось у кого-нить?
|
|
|
AD |
![]()
Сообщение
#46
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Fitz |
![]()
Сообщение
#47
|
Студент ![]() Группа: Новичок Сообщений: 13 Регистрация: 22.11.2010 Пользователь №: 2207 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Уважаемые, поясните пожалуйста что за файл подключается, ui_GraphicWidget.h, и откуда он должен взяться? (ругается на него компилятор) ошибка:fatal error C1083: Cannot open include file: 'ui_GraphicWidget.h': No such file or directory Тоже очень долго не мог собрать из-за этой ошибки проект. Проблема в том, что при создании нового проекта в QtCreator'е, при задании ему имени GraphicWidget (как писал в начале AD) создаются следующие файлы: - GraphicWidget.pro - GraphicWidget.h - GraphicWidget.cpp - GraphicWidget.ui и в файле формы GraphicWidget.ui основной(родительский) виджет имеет название GraphicWidget(!), впоследствии утилита uac генерирует из .ui класс
а в листинге AD необходим класс
Следовательно идем в дизайнер форм и переименовываем основной виджет из GraphicWidget в GraphicWidgetClass. ![]() Пересобираем, любуемся. По сути получилась ошибка зависимостей(как показывает компилятор), но не совсем. |
|
|
Fitz |
![]()
Сообщение
#48
|
Студент ![]() Группа: Новичок Сообщений: 13 Регистрация: 22.11.2010 Пользователь №: 2207 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Ошибка в вычислении смещения. dx = sx - settings.maxX; Исправление:
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 4.5.2025, 3:09 |