Russian Qt Forum
Сентябрь 27, 2024, 14:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Виджет для рисования  (Прочитано 8054 раз)
bitwise
Гость
« : Март 11, 2010, 22:49 »

Подскажите пожалуйста, если я хочу нарисовать 2D-диаграмму, в каком виджете это можно/нужно делать?
Пытаюсь использовать QGraphicsView и рисовать на нем, но ничего не получается... Непонимающий
Записан
BRE
Гость
« Ответ #1 : Март 11, 2010, 22:58 »

Посмотри в примерах на Chart Example.
Записан
bitwise
Гость
« Ответ #2 : Март 11, 2010, 23:18 »

а в QGraphicsView это возможно? Для моей задачи мне достаточно было бы ломаную линию изобразить - так проще.
Записан
BRE
Гость
« Ответ #3 : Март 11, 2010, 23:29 »

а в QGraphicsView это возможно? Для моей задачи мне достаточно было бы ломаную линию изобразить - так проще.
Ну тогда смотри Diagram Scene Example.  Улыбающийся
Записан
bitwise
Гость
« Ответ #4 : Март 11, 2010, 23:32 »

Ok. Спасибо Улыбающийся
Записан
ieroglif
Гость
« Ответ #5 : Март 12, 2010, 00:52 »

Код:
// wgt.h
class wgt : public QWidget {
...
private:
    void paintEvent(QPaintEvent *);
...
};

//wgt.cpp

void wgt::paintEvent(QPaintEvent *) {
    QPainter painter(this);
    painter.setPen( QPen(Qt::green,1,Qt::DashLine) );
    painter.drawLine(0,0,10,10);
    painter.drawLine(10,10,10,20);
    painter.drawLine(10,20,100,15);
}
Записан
bitwise
Гость
« Ответ #6 : Март 12, 2010, 22:09 »

Код:
// wgt.h
class wgt : public QWidget {
...
private:
    void paintEvent(QPaintEvent *);
...
};

//wgt.cpp

void wgt::paintEvent(QPaintEvent *) {
    QPainter painter(this);
    painter.setPen( QPen(Qt::green,1,Qt::DashLine) );
    painter.drawLine(0,0,10,10);
    painter.drawLine(10,10,10,20);
    painter.drawLine(10,20,100,15);
}

если я правильно понимаю, чтобы рисовать в дочернем виджете, например в QGraphicsView, код должен выглядеть как-то так:
Код:
QPainter painter(ui->graphicsView);
ui->graphicsView->update();

все верно?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #7 : Март 13, 2010, 11:59 »

bitwise, принципиально рисовать можно только на самом себе. Т.е. в обработчике события paintEvent данного виджета. Рисование на чужом виджете задача не тривиальная.

Графическое представление (Graphics View Framework) имеет несколько иную идею:
Ты создаёшь элементы и помещаешь их на сцену, а представление (QGraphicsView) отображает содержимое сцены.
На мой взгляд графики и Графическое представление неудачная пара.

Просто создай наследника от QWidget и в его paintEvent рисуй. Или воспользуйся готовой библиотекой Qwt
Записан

Юра.
ieroglif
Гость
« Ответ #8 : Март 19, 2010, 20:36 »

в paintEvent ты создаёшь QPainter(this) - вот указатель на него можешь кидать кому и куда угодно - в любые другие классы и функции - тогда код рисования будет осуществляться в других классах, а само рисование - на твоём виджете.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 23.