crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> [Решено] Рисование во View?, Как нарисовать что-нибудь изменяющееся минуя сцену?
Obey-Kun
  опции профиля:
сообщение 26.3.2010, 22:30
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 96
Регистрация: 24.3.2010
Пользователь №: 1556

Спасибо сказали: 3 раз(а)




Репутация:   0  


Нужно создать класс, который действовал бы аналогично QRubberBand. То есть чтобы его можно было создавать во вьюпорте View и изменять его параметры (размер, позицию), не заботясь о его перерисовке (чтобы он при этом сам перерисовывался).

Можете привести пример для, например, эллписа (и чтоб описывался он, по традиции Qt, как QRect). Использовать хочется по некоторой аналогии с QRubberBand:
В хедере View делается
QPoint m_origin;
AbstractRubberBand m_rubberband;


Использовать хочу так:
 void Widget::mousePressEvent(QMouseEvent *event)
{
     m_origin = event->pos();
     if (m_rubberband == NULL) {
         m_rubberband = new (m_instrument == Ellipse ? EllipseRubberBand(this) : RectangleRubberBand(this) );
     }
     m_rubberband->setGeometry(QRect(origin, QSize()));
     m_rubberband->show();
}

void Widget::mouseMoveEvent(QMouseEvent *event)
{
    if (m_rubberban != NULL) {
       m_rubberband->setGeometry(QRect(origin, event->pos()).normalized());
    }
}

void Widget::mouseReleaseEvent(QMouseEvent *event)
{
    if (m_rubberban != NULL) {
     m_rubberband->hide();
     // делаем что надо с полученной фигурой и удаляем m_rubberband
    }
}


Также нужен инструмент полигональной линии — в него последовательно (сигналами или ещё как) отправляются QPointF'ы или сигналы изменения позиции одного из QPointF, потом удаляем его и получаем shape.

Итак, что наследовать, что переопределять? :)

Опечатка, в хедер хочу делать так
QPoint m_origin;
AbstractRubberBand *m_rubberband;


Сообщение отредактировал Obey-Kun - 28.3.2010, 0:57
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Obey-Kun   [Решено] Рисование во View?   26.3.2010, 22:30
- - Litkevich Yuriy   Obey-Kun, ты вообще имеешь представление как рисую...   26.3.2010, 23:57
- - Obey-Kun   Если честно, демку не осилил (всё в одну кучу сбро...   27.3.2010, 18:29
- - Obey-Kun   Хедер: #pragma once #ifndef MYRECTANGLE_H #define ...   27.3.2010, 19:01
- - Litkevich Yuriy   Цитата(Obey-Kun @ 27.3.2010, 22:01) ...   27.3.2010, 19:10
- - Obey-Kun   нет, никаких артефактов не видно ни при каких усло...   27.3.2010, 19:14
- - Litkevich Yuriy   А объект класса MyRectangle, как используется?   27.3.2010, 19:21
- - Obey-Kun   Я же говорю, в хедере View: MyRectangle *m_recttes...   27.3.2010, 19:28
- - Litkevich Yuriy   Obey-Kun, Т.е. ты положил этот виджет, в другой и ...   27.3.2010, 19:50
- - Obey-Kun   Спасибо! Поправил конструктор: MyRectangle::My...   27.3.2010, 20:12
- - Litkevich Yuriy   Тут всё по-русски: Описание класса QRectЦитатаМы р...   27.3.2010, 20:26
- - Obey-Kun   Цитатаpainter.drawRect(rect().adjusted(0, 0, 1, 1)...   27.3.2010, 21:13
- - Litkevich Yuriy   Цитата(Obey-Kun @ 28.3.2010, 0:13) 0...   27.3.2010, 21:20
- - Obey-Kun   По ходу, последняя проблема осталась. Так как созд...   27.3.2010, 21:44
- - Litkevich Yuriy   Obey-Kun, для инструмента выделения, я бы всё таки...   27.3.2010, 21:58
- - Obey-Kun   В смысле? Стандартный метод выделения — QRub...   27.3.2010, 22:30
- - Litkevich Yuriy   Цитата(Obey-Kun @ 28.3.2010, 1:30) С...   27.3.2010, 23:18
- - Obey-Kun   Странно, и правда рисуют напрямую: http://qt.gitor...   28.3.2010, 0:09


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.4.2024, 5:23