Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: lenny от Февраль 17, 2011, 15:38



Название: QGraphicsView и dragEnterEvent
Отправлено: lenny от Февраль 17, 2011, 15:38
Здравствуйте! Нужен drop на весь QGraphicsView, возникла проблема, event->accept(); работает только если не установлена сцена.
Код:
//-----------------------------------------------------------------------
ShemEditorWindow::ShemEditorWindow(QWidget *parent) :
    QGraphicsView(parent)
{
    setMinimumSize(200, 300);
    scene = new QGraphicsScene;
    setScene(scene);                       //Если сцену не установить все работает
    setAcceptDrops(true);
}

//-----------------------------------------------------------------------
void ShemEditorWindow::dragEnterEvent(QDragEnterEvent *event)
{
        event->accept();                   //Работает без сцены, не работает когда есть сцена
}


Название: Re: QGraphicsView и dragEnterEvent
Отправлено: GreatSnake от Февраль 17, 2011, 15:47
Нужно задать размер сцены +
viewport()->setAcceptDrops( true );


Название: Re: QGraphicsView и dragEnterEvent
Отправлено: lenny от Февраль 17, 2011, 16:03
Не получается ??? Может переопределить dragEnterEvent для viewport?


Название: Re: QGraphicsView и dragEnterEvent
Отправлено: lenny от Февраль 17, 2011, 16:14
А что такое viewport?


Название: Re: QGraphicsView и dragEnterEvent
Отправлено: GreatSnake от Февраль 17, 2011, 16:21
Цитировать
А что такое viewport?
Это видимая часть scrollArea, на которой происходит отрисовка.


Название: Re: QGraphicsView и dragEnterEvent
Отправлено: lenny от Февраль 17, 2011, 16:25
Цитировать
А что такое viewport?
Это видимая часть scrollArea, на которой происходит отрисовка.
А она не перекрывает dragEnterEvent?


Название: Re: QGraphicsView и dragEnterEvent
Отправлено: GreatSnake от Февраль 17, 2011, 16:41
Цитировать
А она не перекрывает dragEnterEvent?
нет.
На самом деле вызывать setAcceptDrops( true ); необязательно, т.к. QGraphicsView сам всё делает.


Название: Re: QGraphicsView и dragEnterEvent
Отправлено: lenny от Февраль 17, 2011, 16:43
А почему не работает?


Название: Re: QGraphicsView и dragEnterEvent
Отправлено: lenny от Февраль 17, 2011, 19:32
А как задать размер сцены? Не так: setSceneRect(0,0,500,500);?


Название: Re: QGraphicsView и dragEnterEvent
Отправлено: lenny от Февраль 17, 2011, 23:51
Во жесть, оказалось, что надо и dragMoveEvent определять.
типа того:
Код:
void MyGraphicsView::dragMoveEvent(QDragMoveEvent *event)
{
   event->accept();
}
И как тут догадаешься?