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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGraphicsView и dragEnterEvent  (Прочитано 5250 раз)
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();                   //Работает без сцены, не работает когда есть сцена
}
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Февраль 17, 2011, 15:47 »

Нужно задать размер сцены +
viewport()->setAcceptDrops( true );
Записан

Qt 5.11/4.8.7 (X11/Win)
lenny
Гость
« Ответ #2 : Февраль 17, 2011, 16:03 »

Не получается Непонимающий Может переопределить dragEnterEvent для viewport?
Записан
lenny
Гость
« Ответ #3 : Февраль 17, 2011, 16:14 »

А что такое viewport?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Февраль 17, 2011, 16:21 »

Цитировать
А что такое viewport?
Это видимая часть scrollArea, на которой происходит отрисовка.
Записан

Qt 5.11/4.8.7 (X11/Win)
lenny
Гость
« Ответ #5 : Февраль 17, 2011, 16:25 »

Цитировать
А что такое viewport?
Это видимая часть scrollArea, на которой происходит отрисовка.
А она не перекрывает dragEnterEvent?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #6 : Февраль 17, 2011, 16:41 »

Цитировать
А она не перекрывает dragEnterEvent?
нет.
На самом деле вызывать setAcceptDrops( true ); необязательно, т.к. QGraphicsView сам всё делает.
Записан

Qt 5.11/4.8.7 (X11/Win)
lenny
Гость
« Ответ #7 : Февраль 17, 2011, 16:43 »

А почему не работает?
Записан
lenny
Гость
« Ответ #8 : Февраль 17, 2011, 19:32 »

А как задать размер сцены? Не так: setSceneRect(0,0,500,500);?
« Последнее редактирование: Февраль 17, 2011, 21:39 от lenny » Записан
lenny
Гость
« Ответ #9 : Февраль 17, 2011, 23:51 »

Во жесть, оказалось, что надо и dragMoveEvent определять.
типа того:
Код:
void MyGraphicsView::dragMoveEvent(QDragMoveEvent *event)
{
   event->accept();
}
И как тут догадаешься?
« Последнее редактирование: Февраль 18, 2011, 13:23 от lenny » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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