Comments 41
Согласен QT — это здорово и просто. Сам никогда не писал ГУИ-приложения под линукс, а тут торкнуло написать(курсовую по распределенным вычислениям) на питоне, да и с гуем, написал за несколько часов, всё крайне юзабельно.
Честно говоря не очень нравится этот Qwt, во первых он часто не собирается с новыми версиями Qt, у меня такое было один раз под Windows, а во вторых API осталось ещё со времен Qt3 и в целом по подходу устарело.
А не знаете ли каких-нибудь альтернатив связке Qt+Qwt для решения задач, подобных моей?
К слову, Qwt у меня успешно собрался и под Windows, и под Linux с Qt 4.6.0 и Qt 4.6.1.
Правда в Windows (как я упомянул в тексте) пришлось собирать статическую библиотеку, а не DLL.
К слову, Qwt у меня успешно собрался и под Windows, и под Linux с Qt 4.6.0 и Qt 4.6.1.
Правда в Windows (как я упомянул в тексте) пришлось собирать статическую библиотеку, а не DLL.
Для построения графиков попробуйте биндинги plplot к Qt.
А как де gnuplot? Ничего лучше для построения графиков я не видел. Многие программы используют его.
Qwt попроще будет. Сел и поехал. +разработан поверх Qt.
gnuplot — это мощная stand-alone программа, которая, правда, для моей задачи не очень подходит.
У меня речь идет о построении графика в рамках приложения с GUI: нажал кнопку — построился некоторый предопределенный график, нажал другую — построился другой график.
Конкретнее, задача была такая. На лекции рассматривается численный метод для решения краевой задачи для ОДУ 1-го порядка. Нужно изобразить численное решение и погрешность для разных значений сеток. На форме приложения две области рисования и несколько кнопок, отвечающих разным сеткам. Демонстратор нажимает кнопки в том порядке, в котором просит лектор :-)
У меня речь идет о построении графика в рамках приложения с GUI: нажал кнопку — построился некоторый предопределенный график, нажал другую — построился другой график.
Конкретнее, задача была такая. На лекции рассматривается численный метод для решения краевой задачи для ОДУ 1-го порядка. Нужно изобразить численное решение и погрешность для разных значений сеток. На форме приложения две области рисования и несколько кнопок, отвечающих разным сеткам. Демонстратор нажимает кнопки в том порядке, в котором просит лектор :-)
>А не знаете ли каких-нибудь альтернатив связке Qt+Qwt для решения задач, подобных моей?
QGraphicsScene? Но ежели честно, то других либ специально для рисования графиков то и нет на Qt.
QGraphicsScene? Но ежели честно, то других либ специально для рисования графиков то и нет на Qt.
Ошибка сборки под версию 4.6 там по вине Qt, а не Qwt. В общем-то правится одной строкой, там один каст убрать надо.
А с подходом не совсем понятно. Что именно устарело?
А с подходом не совсем понятно. Что именно устарело?
Ну подождите QML.
Я лишь в самых общих чертах представляю, что такое QML.
Потому не очень понимаю, почему его нужно подождать? :-)
Потому не очень понимаю, почему его нужно подождать? :-)
Вот когда там будет нечто вроде canvas'а тогда можно будет сделать и на QML рисовалку графиков
qt.nokia.com/doc/qml-snapshot/qmlelements.html
А пока QML скорее занимается управлением уже готовыми элементами.
qt.nokia.com/doc/qml-snapshot/qmlelements.html
А пока QML скорее занимается управлением уже готовыми элементами.
Я сам когда начал изучать Qt, то первое для чего он был мне нужен — построения вот таких простых графиков. Как и вы, изначально, я начал искать готовые решения, и конечно же нашел QWT, но чето я тогда отказался ставить qwt и решил для опыта программирования на qt написать свою небольшую програмку.
Так вот, прочитал вашу статью, и появилась идея все-таки глянуть как же реализовано все тут) спасибо.
И да, мое маленькое пожелание по коду, так это то, что кусок:
const double pi = 4.0 * atan(1.0);
double L = 2;
double h = L / N;
можно вынести за цикл :)
Так вот, прочитал вашу статью, и появилась идея все-таки глянуть как же реализовано все тут) спасибо.
И да, мое маленькое пожелание по коду, так это то, что кусок:
const double pi = 4.0 * atan(1.0);
double L = 2;
double h = L / N;
можно вынести за цикл :)
Спасибо за комментарий. Конечно, вы правы — упомянутый кусок следует вынести за цикл. Mea culpa.
> const double pi = 4.0 * atan(1.0);
по моему лучше использовать M_PI из :)
да и смысл писать L/2, если L==2 как-то не очевиден, быстрее же будет работать просто написание 1.0
по моему лучше использовать M_PI из :)
да и смысл писать L/2, если L==2 как-то не очевиден, быстрее же будет работать просто написание 1.0
Опыт показывает, что константа M_PI доступна не на всех системах.
Что касается L/2, то так писать мне кажется более логичным.
Традиционно задачи решаются на отрезке длины L: либо на (-L/2, +L/2), либо на (0, L).
Кроме того, компиляторы сейчас достаточно умны, чтобы самостоятельно пронести все константы на этапе компиляции.
Наконец, появление в коде магического числа 1.0 не самым лучшим образом скажется на его читабельности и возможности поддержки.
Что касается L/2, то так писать мне кажется более логичным.
Традиционно задачи решаются на отрезке длины L: либо на (-L/2, +L/2), либо на (0, L).
Кроме того, компиляторы сейчас достаточно умны, чтобы самостоятельно пронести все константы на этапе компиляции.
Наконец, появление в коде магического числа 1.0 не самым лучшим образом скажется на его читабельности и возможности поддержки.
Хочется заметить изрядную корявость в алгоритмах шкалирования и центровки. Автоматических разумеется.
Юзаю qwt в своих приложениях. Есть ряд претензий, но все же очень доволен (тем более что лучшего-то и нет). Жалко что проект не развивает в данный момент…
Вы очень кстати с этой статьей=) Я как раз недавно собирался использовать Qwt для своей работы курсовой в вузе… Но столкнулся тогда с проблемой в виде зависимости Qwt исходников от хидерфайла, которого не нашел ни в самом Qt ни в Qwt… Тогда решил отложить и пока не возвращался =) а щас прочту статейку на досуге и посмотрю где недосмотрел и где затупил=)
Спасиб… плюс к статье и карме=)
Спасиб… плюс к статье и карме=)
Подождите, так эта библиотека не парсит функции, а просто строит по готовому массиву данных? Я думал, что пост про разбор функций будет в том числе. Это в софте, строящем графики — самое главное, сложное и вкусное. :) Мне эта тема с графиками самому очень нравится. Где-то год назад я создал приложение для соц. сети на букву «В» (не буду называть полностью, а то НЛО автоматически заминусует). Оно умеет по-умному разбирать введённую формулу и строить (правда, пока что только одну функцию за раз). Этой весной очень многое там поменяю, сделаю отдельный веб-сервис, а потом, может быть, тоже напишу чего-нибудь про это. :)
спасибо за статью, есть такой вопрос: у меня стоит задача динамической отрисовки графиков, т.е. не сразу отрисовать весь график, а как бы постепенно, как такое сделать в QWT? Перегенерировать массив точек и перерисовывать весь график? Имхо — достаточно неэффективно. Может быть есть какие-то готовые решения моей проблемы, полезные ссылки?
Заранее спасибо за ответы
Заранее спасибо за ответы
Не подскажите новичку: сделал всё как описано(установка qwt) в итоге получаю папку c:\qwt-5.2.1, при попытке собрать ваш проект — не находит qwt`шные библиотеки.
Если добавить их все непосредственно в папку с проектом, заменив в программе на "". Все библиотеки читает, но в итоге выдаёт
c:/qt/2010.02.1/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe: cannot find -lqwt
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\QwtBeginner.exe] Error 1
mingw32-make: *** [debug] Error 2
Очень расчитываю на вашу помощь. Весь день провозился в попытках связать Qt и Qwt.
Если добавить их все непосредственно в папку с проектом, заменив в программе на "". Все библиотеки читает, но в итоге выдаёт
c:/qt/2010.02.1/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe: cannot find -lqwt
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\QwtBeginner.exe] Error 1
mingw32-make: *** [debug] Error 2
Очень расчитываю на вашу помощь. Весь день провозился в попытках связать Qt и Qwt.
«заменив в программе на „“ „
имел ввиду, что скобки, которые отправляют на поиски библиотек в стандартных библиотечных папках, заменил на “» посылающие компилятор за библиотеками в папку с самим проектом.
имел ввиду, что скобки, которые отправляют на поиски библиотек в стандартных библиотечных папках, заменил на “» посылающие компилятор за библиотеками в папку с самим проектом.
в .pro путь к библиотеке qwt переписал как положено
вобщем поправил все пути, проблема с библиотеками решилась, но ошибка осталась
c:/qt/2010.02.1/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe: cannot find -lqwt
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\QwtBeginner.exe] Error 1
mingw32-make: *** [debug] Error 2
c:/qt/2010.02.1/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe: cannot find -lqwt
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\QwtBeginner.exe] Error 1
mingw32-make: *** [debug] Error 2
решилось заменой -lqwt на -l Qwt5
но запускать полученный екзешник не хочет
Запускается C:\QwtBeginner\release\QwtBeginner.exe…
C:\QwtBeginner\release\QwtBeginner.exe завершился с кодом -1073741515
Если запускать из папки, то говорит, что qtcore4.dll не может найти точку входа в процедуру
но запускать полученный екзешник не хочет
Запускается C:\QwtBeginner\release\QwtBeginner.exe…
C:\QwtBeginner\release\QwtBeginner.exe завершился с кодом -1073741515
Если запускать из папки, то говорит, что qtcore4.dll не может найти точку входа в процедуру
Проблему решил, спасибо за внимание :)
Начал писать от безысходности — весь день провозился, ничего не получалось. Сейчас заново начал перебирать все нагугленные ссылки, и, наконец, получилось.
Как бы то ни было, ваша заметка по установке и запуску qwt для новичков подходит с трудом) не всё так просто как оказалось
Начал писать от безысходности — весь день провозился, ничего не получалось. Сейчас заново начал перебирать все нагугленные ссылки, и, наконец, получилось.
Как бы то ни было, ваша заметка по установке и запуску qwt для новичков подходит с трудом) не всё так просто как оказалось
Sign up to leave a comment.
Библиотека Qwt: как построить график функции на плоскости?