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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QTreeWidget - как отследить завершение Event'а?  (Прочитано 11931 раз)
Guk
Гость
« Ответ #15 : Март 23, 2009, 11:37 »

Спасибо большое.
Заработало
Записан
Danila_Bagrofff
Гость
« Ответ #16 : Апрель 06, 2009, 15:25 »

Возникла похожая проблема.

Есть класс наследованный от QTableWidget. На который переносится класс, наследованный от QWidget.
Переопределяю событие drop Event. Но оно не сработывает.
Где-то раньше перехватывается событие. Причем на QLabel'е перехватывается, а на таблице - нет.

viewport()->instalEventFilter(this) не помог.

В чем еще может быть проблема. setAcceptDrops(true) сделал.
« Последнее редактирование: Апрель 06, 2009, 15:52 от Danila_Bagrofff » Записан
Danila_Bagrofff
Гость
« Ответ #17 : Апрель 07, 2009, 09:01 »

Нашел решение. Почитав форум. И немного поплясав с бубном.

надо обязательно переопределить событие QEvent::DragMove

В конструктор класса, в который перебрасывется что-либо у меня это наследованный класс от QTableWidget, нужно установить:
Код:
MyClassTableWidget::MyClassTableWidget(QWidget *parent) : QTableWidget(parent)
{
     setAcceptDrops(true);
     viewport()->installEventFilter(this);
}

А также нужно переопределить eventFilter:
Код:
bool MyClassTableWidget::eventFilter(QObject *obj, QEvent *event)
{
    if(event->type() == QEvent::DragMove) return true;
    else return QObject::eventFilter(obj, event);
}

И, cобственно переопределим методы drag-drop:
Код:
void MyClassTableWidget::dragEnterEvent(QDragEnterEvent *event)
{
    if(event->mimeData()->hasFormat("qwert/asdf"))
{
    //your code
    event->accept();
}
}

void MyClassTableWidget::dropEvent(QDropEvent *event)
{
     //your code
}


То есть фактически, мы разрешили нами обработку событий drag/drop.

Надеюсь, кому-то поможет.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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