Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: рисование мышью в Qt на QGraphicsScene  (Прочитано 5160 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн katejim

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
рисование мышью в Qt на QGraphicsScene
« : 20 Апреля 2012, 10:49:15 »
Доброго времени суток!
пожалуйста, можете кинуть кусочек кода, отвечающий за рисование мышью в Qt на QGraphicsScene!
наверняка уже многие это реализовывали, а я новичок, очень новичок, пока что-т только точка по щелчку получается.
ПОЖАЛУЙСТА!!!
« Последнее редактирование: 20 Апреля 2012, 17:54:46 от katejim »

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: рисование мышью в Qt на QGraphicsScene
« Ответ #1 : 20 Апреля 2012, 13:50:06 »
man QMouseMoveEvent
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн katejim

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: рисование мышью в Qt на QGraphicsScene
« Ответ #2 : 20 Апреля 2012, 17:44:46 »
говорит, что нет такого мануала)
в принципе, мне бы кусок кода. так лучше

Оффлайн Maestro79

  • Новичок
  • *
  • Сообщений: 10
  • UbuntuStudio 12.04
    • Просмотр профиля
Re: рисование мышью в Qt на QGraphicsScene
« Ответ #3 : 23 Апреля 2012, 00:48:13 »
Держи.

main.cpp
#include <QtGui/QApplication>
#include <QtGui/QWidget>
#include <QtGui/QGridLayout>

#include "gv.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w;                  //виждет окна
    gv *vid = new gv();         //наш графикс вью
    QGridLayout gl;             //простой лэйаут
    gl.addWidget(vid);
    w.setLayout(&gl);
    w.show();
   
    return a.exec();
}

gv.h
#ifndef GV_H
#define GV_H


#include <QtGui/QGraphicsView>

class gv : public QGraphicsView
{
    Q_OBJECT
   
public:
    gv(QWidget *parent = 0);
    void mousePressEvent(QMouseEvent *event);       //переопредиляем нужные эвенты
    void mouseMoveEvent(QMouseEvent *event);

    ~gv();
};

#endif // GV_H


gv.cpp
#include "gv.h"
#include <QtGui/QGraphicsPathItem>
#include <QtGui/QGraphicsScene>
#include <QtGui/QPainterPath>
#include <QtGui/QPen>
#include <QtGui/QColor>
#include <QtGui/QMouseEvent>
#include <QtCore/QPointF>

// координаты мыша через mapToScene сохраняем
// в QPainterPath который толкаем в QGraphicsPathItem
// который создан QGraphicsScene которая подключена к
// нашему class gv : public QGraphicsView

QGraphicsPathItem * pi;
QPainterPath * pp;

gv::gv(QWidget *parent)
    : QGraphicsView(parent)
{
    pp = new QPainterPath();
    QGraphicsScene *scene = new QGraphicsScene(this);
    scene->setSceneRect(-200, -200, 400, 400);
    setScene(scene);
    setRenderHint(QPainter::Antialiasing,true);
    pi = scene->addPath(*pp,QPen(QColor(Qt::green),5));

}

gv::~gv()
{
    delete pi;
    delete pp;
}
void gv::mouseMoveEvent(QMouseEvent *event)
{
    if (event->buttons() & Qt::LeftButton){
        pp->lineTo(event->posF());
        pi->setPath(mapToScene(*pp));
    }
}
void gv::mousePressEvent(QMouseEvent *event)
{
    if (event->buttons() & Qt::LeftButton){//левый батон создает
        pp->moveTo(event->posF());         //новый сегмент   
    }else if (event->buttons() & Qt::RightButton){
        delete pp;                         // правый очищает
        pp = new QPainterPath();
        pi->setPath(mapToScene(*pp));
       
    }

}

Оффлайн VlaoMao

  • Активист
  • *
  • Сообщений: 308
  • ArchLinux - eMachines e725 && Nokia N950
    • Просмотр профиля
Re: рисование мышью в Qt на QGraphicsScene
« Ответ #4 : 23 Апреля 2012, 09:24:55 »
if (event->buttons() & Qt::LeftButton)От руки чтоль писалось?

Оффлайн katejim

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: рисование мышью в Qt на QGraphicsScene
« Ответ #5 : 23 Апреля 2012, 09:28:37 »
спасибо огромное!!

Оффлайн Maestro79

  • Новичок
  • *
  • Сообщений: 10
  • UbuntuStudio 12.04
    • Просмотр профиля
Re: рисование мышью в Qt на QGraphicsScene
« Ответ #6 : 23 Апреля 2012, 09:51:01 »
if (event->buttons() & Qt::LeftButton)От руки чтоль писалось?

Научите писать силой мысли:)

 

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