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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не работают события D&D под Linux  (Прочитано 4414 раз)
Stuart
Гость
« : Января 16, 2010, 16:23 »

Имеется класс, наследуемый от QMainWindow. В секции protected, как и полагается, переопределены виртуальные функции dragEnterEvent, dragMoveEvent и dropEvent. Отлавливаю перемещение узлов QTreeWidgetItem внутри виджета QTreeWidget. В Windows функции вызываются и корректно работают. В Linux вообще никакие события Drag&Drop не отлавливаются на том же самом коде. Почему? Где подводные камни и в чём может быть косяк?

В Windows Qt 4.5.0, компилятор MS C++ 2008 SP1. Под Linux пробовал под Qt 4.4.3 и 4.5.3 на gcc 3.4.6 и 4.4.1.
Записан
BlackTass
Гость
« Ответ #1 : Января 16, 2010, 16:54 »

Минимально компилябельный код можете выложить?
Записан
Stuart
Гость
« Ответ #2 : Января 16, 2010, 18:08 »

Да, немного переделал. Требуется срабатывание метода void ISConfigurator::dragEnterEvent(QDragEnterEvent * event). Он должен вызываться при перемещении узлов дерева внутри виджета QTreeWidget с целью информирования пользователя о сохранённых изменениях. Но в Linux это не происходит, в венде проблем нет.
Записан
Павел_F.
Гость
« Ответ #3 : Января 16, 2010, 18:26 »

У QTableWidget тоже самое было. Добавьте :
Код
C++ (Qt)
bool MyTableWidget::eventFilter( QObject *obj, QEvent *event)
{
   if( event->type() == QEvent::DragMove || event->type() == QEvent::DragEnter) return true;
   else return QObject::eventFilter( obj, event);
}
Ну и
Код
C++ (Qt)
MyTableWidget::MyTableWidget( QWidget *parent) : QTableWidget( parent)
{
   viewport()->installEventFilter( this);
}
Для QTableWidget все начало работать.
« Последнее редактирование: Января 16, 2010, 18:28 от Павел_F. » Записан
Stuart
Гость
« Ответ #4 : Января 16, 2010, 19:44 »

Не получится: класс наследуется от QMainWindow, от QTreeWidget нельзя. Грустный
Записан
Павел_F.
Гость
« Ответ #5 : Января 16, 2010, 20:01 »

Раз используется QTreeWidget в чем проблема сделать свой TreeWidget с измененным фильтром и использовать его вместо QTreeWidget???
Записан
Stuart
Гость
« Ответ #6 : Января 16, 2010, 21:17 »

Немного не представляю, как это сделать, когда класс завязан с UI Qt, да и переписывать много придётся...
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #7 : Января 16, 2010, 22:33 »

в смысле класс на ui-шке? в дизайнере есть promote to...
Записан
Павел_F.
Гость
« Ответ #8 : Января 16, 2010, 23:20 »

да и переписывать много придётся...
Про ui ничего не скажу... У меня без них. Всех переделок, у меня, на 30 сек.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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