Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: jurtal от Август 04, 2011, 12:34



Название: DnD курсор
Отправлено: jurtal от Август 04, 2011, 12:34
Здравствуйте!
Есть виджет на который можно дропать. Соответственно когда на него начинаем "затаскивать" что-либо, то курсор меняется на крестик - разрешающий дропать. Вопрос в том, можно ли отображать курсор разрешающий дропать в определенной части этого виджета (известны координаты), а в остальных местах показывать Qt::ForbiddenCursor?


Название: Re: DnD курсор
Отправлено: GreatSnake от Август 04, 2011, 12:39
Код
C++ (Qt)
void QWidget::dragMoveEvent ( QDragMoveEvent * event ) [virtual protected]
void QDragMoveEvent::accept ( const QRect & rectangle )
 


Название: Re: DnD курсор
Отправлено: jurtal от Август 04, 2011, 13:06
Поробовал сделать так:
Код
C++ (Qt)
void Widget::dragMoveEvent (QDragMoveEvent * event)
{
   QRect rect(50,50,50,50);
   event->accept(rect);
}
 
void Widget::dragEnterEvent(QDragEnterEvent* event)
{
   event->accept();
}
 
Но сразу при затаскивании на виджет курсор разрешает дропать, а не в заданной области...


Название: Re: DnD курсор
Отправлено: jurtal от Август 04, 2011, 13:23
Сделал так...
Код
C++ (Qt)
void EditorWidget::dragMoveEvent(QDragMoveEvent *event)
{
QRect rect(100,50,100,50);
 
    if ( event->answerRect().intersects(rect))
 
        event->acceptProposedAction();
else
event->ignore();
}
 
Thanks to GreatSnake...