Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Amidomaru от Июль 10, 2009, 08:21



Название: Не знаю с чего начать!!!
Отправлено: Amidomaru от Июль 10, 2009, 08:21
Доброго всем времени суток!!! Передомной встала задача нарисовать на форме график синуса с вознможностью изменниеня масштаба, и отображением координат курсора. В QT  Я не просто новичок я тут скорее ламер  :'())) Приэтом нельзя использовать Qpainter. Подскажите с чего начать. Спасибо.


Название: Re: Не знаю с чего начать!!!
Отправлено: BRE от Июль 10, 2009, 08:25
Приэтом нельзя использовать Qpainter.
Хочу рисовать, но рисовальщиком пользоваться нельзя.  ???
Странное ограничение, с чем оно связано?


Название: Re: Не знаю с чего начать!!!
Отправлено: Amidomaru от Июль 10, 2009, 08:38
Короче Задание было выдано так чтобы в последствии из это заготовки мона было сделать осцилограф)
Ну или типа того) Вообще мне сказали что мол есть такой QГафик или вроде того, мол у Qpaintera на осцилогаф быстроты не хватит. Но пока надо просто Синус построить.


Название: Re: Не знаю с чего начать!!!
Отправлено: lit-uriy от Июль 10, 2009, 13:27
2 Amidomaru, рисуй QPainter'ом. А вот когда увидишь, что быстроты не хватает,  так и отпишишся на форуме.


Название: Re: Не знаю с чего начать!!!
Отправлено: kamre от Июль 10, 2009, 16:04
рисуй QPainter'ом. А вот когда увидишь, что быстроты не хватает,  так и отпишишся на форуме.

+1

QPainter c OpenGL pipeline очень быстро и достаточно качественно рисует на современных видеокарточках.


Название: Re: Не знаю с чего начать!!!
Отправлено: Amidomaru от Июль 14, 2009, 07:31
Так, Объясните что он от меня хочет?
#include <QtGui/QApplication>
#include "traning.h"
#include <Qpainter>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Traning w;
    w.show();
    return a.exec();
  QLineF line(40,40,60,60);     
  QPainter(QPoint);   
  painter.drawLine(line);
         painter.show;

}
 Вывод компилятора:
mingw32-make[1]: Entering directory `C:/QT_Progect/Traning'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\Qt\2009.03\qt\include\QtCore" -I"..\..\Qt\2009.03\qt\include\QtGui" -I"..\..\Qt\2009.03\qt\include" -I"..\..\Qt\2009.03\qt\include\ActiveQt" -I"debug" -I"." -I"..\..\Qt\2009.03\qt\mkspecs\win32-g++" -o debug\main.o main.cpp
main.cpp: In function `int qMain(int, char**)':
main.cpp:12: error: `painter' was not declared in this scope
mingw32-make[1]: Leaving directory `C:/QT_Progect/Traning'
mingw32-make: Leaving directory `C:/QT_Progect/Traning'
mingw32-make[1]: *** [debug/main.o] Error 1
mingw32-make: *** [debug] Error 2
Exited with code 2.
Error while building project Traning
When executing build step 'Make'


Название: Re: Не знаю с чего начать!!!
Отправлено: BRE от Июль 14, 2009, 07:49
Так, Объясните что он от меня хочет?
Он хочет, что бы ты почитал assistant.  ;)


Название: Re: Не знаю с чего начать!!!
Отправлено: Amidomaru от Июль 14, 2009, 07:52
Гм...
Это я и без него знаю. Но как говорится Май инглиш вери бед.)))  ;D


Название: Re: Не знаю с чего начать!!!
Отправлено: BRE от Июль 14, 2009, 07:54
Гм...
Это я и без него знаю. Но как говорится Май инглиш вери бед.)))  ;D
Ну так а примеров сколько....  ::)


Название: Re: Не знаю с чего начать!!!
Отправлено: Amidomaru от Июль 14, 2009, 07:57
Может кто-нибудь скинуть код проги где просто нарисованна прямая линия и всё.


Название: Re: Не знаю с чего начать!!!
Отправлено: Amidomaru от Июль 14, 2009, 07:59
Для BRE У меня ассистента нет только Help и усё))


Название: Re: Не знаю с чего начать!!!
Отправлено: BRE от Июль 14, 2009, 08:01
Может кто-нибудь скинуть код проги где просто нарисованна прямая линия и всё.
Не забывай, что есть поиск по форуму.  :)
http://www.prog.org.ru/topic_8143_0.html


Название: Re: Не знаю с чего начать!!!
Отправлено: Amidomaru от Июль 14, 2009, 08:08
Эту тему я уже видал. Но правда я наверно еще тупее чем кажусь)
И всё же что ему в моём коде не навиться?


Название: Re: Не знаю с чего начать!!!
Отправлено: BRE от Июль 14, 2009, 09:43
И всё же что ему в моём коде не навиться?
Компилятору не нравиться, то что он не знает QPainter -> #include <QPainter>.
Следующее что ему не понравиться будет QPainter(QPoint) -> не знаю что ты хотел этим сказать.
Дальше все что в main после слова return выполняться не будет -> return выход из функции main.
Использовать QPainter можно в определенном месте, точнее в событии paintEvent или функциях которые вызываются из него -> рисовать можно в определенные моменты.


Название: Re: Не знаю с чего начать!!!
Отправлено: Amidomaru от Июль 14, 2009, 13:29
 :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'(
Исправляю!!!
Так вот что я исправил:
#include <QtGui/QApplication>
#include "traning.h"
#include <QPainter>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Traning w;
    w.show();
    QLineF line(100,140,160,160);
  QPainter(m);
  m.drawLine(line);
m.end();
    return a.exec();
}
Компилятор не ругается но выводит просто форму.


Название: Re: Не знаю с чего начать!!!
Отправлено: denka от Июль 14, 2009, 13:41
В твоем случае это должен быть виджет на котором ты рисуешь


Название: Re: Не знаю с чего начать!!!
Отправлено: denka от Июль 14, 2009, 13:43
:'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'(
Исправляю!!!
Так вот что я исправил:
#include <QtGui/QApplication>
#include "traning.h"
#include <QPainter>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Traning w;
    w.show();
    QLineF line(100,140,160,160);
  QPainter(m);
  m.drawLine(line);
m.end();
    return a.exec();
}
Компилятор не ругается но выводит просто форму.
Так тебе ведь сказали что нужно рисовать только в определенных местах
Отнаследуйся от QWidget и переопредели там paintEvent


Название: Re: Не знаю с чего начать!!!
Отправлено: BRE от Июль 14, 2009, 13:59
Компилятор не ругается но выводит просто форму.

А вот на эту фразу та внимание наверное не обратил?
Цитировать
Использовать QPainter можно в определенном месте, точнее в событии paintEvent или функциях которые вызываются из него -> рисовать можно в определенные моменты.
Поэтому, нужно наследоваться например от QWidget. Переопределять paintEvent и в нем рисовать то, что хочешь. Или рисовать на QPixmap, а потом в paintEvent выводить его на виджет.


Название: Re: Не знаю с чего начать!!!
Отправлено: Amidomaru от Июль 16, 2009, 06:57
Всё У меня получилось.
Теперь вопрос такой! Я посмотрел на форуме но внятного ответа на вопрос как нарисовать поростую функцию синуса (например) не нашел. В одной статье написано что методом последовательного приближения или аппроксимацией. Но вроде есть и более простой вариант. Подскажите??? :-[ :-[ :-[


Название: Re: Не знаю с чего начать!!!
Отправлено: lit-uriy от Июль 16, 2009, 07:33
возьми стандартную библиотечную функцию синуса, да получай значения


Название: Re: Не знаю с чего начать!!!
Отправлено: Amidomaru от Июль 16, 2009, 07:37
библиотека??? Её подключать надо? Или она в главном модуле уже подключена?


Название: Re: Не знаю с чего начать!!!
Отправлено: lit-uriy от Июль 16, 2009, 07:46
>>Может кто-нибудь скинуть код проги где просто нарисованна прямая линия и всё.
Есть пример посложнее, но может сильно пригодится:
<QTDIR>\examples\painting\basicdrawing\


Название: Re: Не знаю с чего начать!!!
Отправлено: lit-uriy от Июль 16, 2009, 07:55
библиотека??? Её подключать надо? Или она в главном модуле уже подключена?
это стандартная библиотека Си
Код:
#include <math.h>
или в стиле С++:
Код:
#include <cmath>

Подробнее... (http://ru.wikipedia.org/wiki/Math.h)


Название: Re: Не знаю с чего начать!!!
Отправлено: Amidomaru от Июль 20, 2009, 06:19
Огромное спасибо всем тем, кто помогал в моём не лёгком деле.
Считаю эту тему закрытой.