Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: voodoo от Апрель 18, 2012, 02:14



Название: Рисование графа
Отправлено: voodoo от Апрель 18, 2012, 02:14
Доброе время суток!

Пишу диплом и появилась задача нарисовать граф. Из произвольной точки, по клику мыши, рисуется линия от этой точки к координатам курсора. В qtcreator выбираю главным классом QDialog, хочу кроме всего накидать ещё разных виджетов. Каким образом это всё реализовать?


Пытался методом тыка и гугления нарисовать хотя бы простую линию, но ничего не вышло :(
Код:
void Dialog::paintEvent()
{

    QPoint point1,point2;
    point1.setX(100);
    point1.setX(100);
    point2.setX(300);
    point2.setX(300);
    QPainter painter(this);
    QPen pen = painter.pen();
    pen.setColor(Qt::red);
    painter.setPen(pen);
    painter.drawLine(point1,point2);

}


Название: Re: Рисование графа
Отправлено: Figaro от Апрель 18, 2012, 04:52
Достаточно странная сигнатура...
Из ассистента:
void QWidget::paintEvent ( QPaintEvent * event ) [virtual protected]


Название: Re: Рисование графа
Отправлено: Bepec от Апрель 18, 2012, 06:56
vodoo - вы создали функцию void paintEvent().
А нужно было переопределить виртуальную функцию void paintEvent ( QPaintEvent * event ).

угум?


Название: Re: Рисование графа
Отправлено: Figaro от Апрель 18, 2012, 07:37
Ага.. сигнатуры то разные, и event не придет...

Что то типа такого:

Код:
void Dialog::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    .....
 }


Название: Re: Рисование графа
Отправлено: Bepec от Апрель 18, 2012, 07:43
Добавлю ещё 5 копеек - эту функцию нужно объявить как слот ;)


Название: Re: Рисование графа
Отправлено: ecspertiza от Апрель 18, 2012, 08:15
Добавлю ещё 5 копеек - эту функцию нужно объявить как слот ;)

Зачем ? :) Очень любопытно стало, всегда определяю ее либо как приватную либо как протектед, не разу не определял слотом, ибо вызвать ее из вне вроде как совсем не просто будет если вообще возможно будет передать нормальный QPaintEvent *.


Название: Re: Рисование графа
Отправлено: Bepec от Апрель 18, 2012, 08:37
Хм. *перекопал мозг, ушёл копать дальше, откуда ж я это взял*


Название: Re: Рисование графа
Отправлено: iroln от Апрель 19, 2012, 14:49
Для рисования графа лучше использовать QGraphicsScene. А ещё лучше сначала почитать книжку по Qt, большинство вопросов должны отпасть. Почитать книжку - это эффективнее чем ждать, пока тебе ответят на форуме в понятном для тебя виде. :)