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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: События мыши QGraphicsSceneMouseEvent и рисование QPainter в ответ на событие  (Прочитано 3910 раз)
iukash
Гость
« : Март 23, 2010, 11:26 »

Такая проблема я наследовал класс QGraphicsItem и переопределил виртуальные функции
Цитировать
class MyClass: public QGraphicsItem
{
public:
    virtual QRectF boundingRect() const
    {
        return QRectF(0,0, 60, 60);
    }
    virtual void paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0)
    {
        painter->setPen(QPen(Qt::black));
        painter->setBrush(QBrush(Qt::green));
        painter->drawRect(QRectF(0, 0, 60, 60));
    }
    virtual void mousePressEvent(QGraphicsSceneMouseEvent* pe)
    {
        if(pe->buttons() & Qt::LeftButton)
        {
           // И хочу сюда добавить рисование что нибудь типа
           //  painter->drawLine(0,0,300,300);
           //КАК ЭТО СДЕЛАТЬ???

        }
     }
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Март 23, 2010, 11:35 »

Что-то вроде этого:
Код
C++ (Qt)
class MyClass: public QGraphicsItem
{
public:
   virtual QRectF boundingRect() const
   {
       return QRectF(0,0, 60, 60);
   }
   virtual void paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0)
   {
       painter->setPen(QPen(Qt::black));
       painter->setBrush(QBrush(Qt::green));
 
       if( left_mouse_pressed_ )
       {
           painter->drawLine(0,0,300,300);
           left_mouse_pressed_ = false;
       }  else
       {
           painter->drawRect(QRectF(0, 0, 60, 60));
       }
   }
   virtual void mousePressEvent(QGraphicsSceneMouseEvent* pe)
   {
       if(pe->buttons() & Qt::LeftButton)
       {
          // И хочу сюда добавить рисование что нибудь типа
          //  painter->drawLine(0,0,300,300);
          //КАК ЭТО СДЕЛАТЬ???
          QGraphicsItem::update( 0,0,300,300 );
          left_mouse_pressed_ = true;
       }
    }
 
private:
 
    bool left_mouse_pressed_;
 
};
 
Записан

Qt 5.11/4.8.7 (X11/Win)
iukash
Гость
« Ответ #2 : Март 23, 2010, 12:14 »

GreatSnake СПАСИБИЩЕ ОГРОМНОЕ!!!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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