QListview & DropEvent, QListView использует QDirModel |
Здравствуйте, гость ( Вход | Регистрация )
QListview & DropEvent, QListView использует QDirModel |
enslaver |
25.3.2010, 17:00
Сообщение
#1
|
Студент Группа: Участник Сообщений: 30 Регистрация: 25.3.2010 Пользователь №: 1565 Спасибо сказали: 0 раз(а) Репутация: 0 |
Я начинающий Чайник на QT.
Делать вот мне нечего пишу Файловый браузер, за основу взял Долфин. Столкнулся с проблемой. перетаскиваю объект(любой) хоть на папку хоть на файл, получаю
то бишь точку в которой остановился курсор. !!!И тут вот она и проблема!!!! пытаюсь получить имя объекта на котором остановился курсор
но он понимает только верхнюю левую точку области выделения объекта, а внутри области он их не видит, и следовательно ничего не возвращает. для понимания проблемы привету вам модель проблемы: (x1,y1)----------(x2,y1) |****************| |****************| |****(x0.5,y0.5)****| |****************| |****************| (x1,y2)--------------(x2,y2)
координаты (x0.5,y0.5); А функция ниже может обрабатывать только точки с координатами(x1,y1);
нужно что бы при любых (x0.5,y0.5) он возвращал нужное значение(x1,y1); сурц всего этого дела прикреплю. file_comander.tar.gz ( 5,33 килобайт ) Кол-во скачиваний: 435 Нужно реализовать перемещение в папку. А вот как это сделать толком так нигде и не видел, может кто поможет, а то уже не первый день сижу голову ломаю.... |
|
|
Litkevich Yuriy |
25.3.2010, 17:36
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
// возвращает QPoin где остановился курсор А в чьих координатах? Виджета (QListview), его области просмотра или вовсе в глобальных. Я оперативно в доке не увидел подобной оговорки.... то бишь точку в которой остановился курсор. (x0.5,y0.5) не понял этой записи, может (1.5x, 1.5y) ?
|
|
|
enslaver |
25.3.2010, 20:47
Сообщение
#3
|
Студент Группа: Участник Сообщений: 30 Регистрация: 25.3.2010 Пользователь №: 1565 Спасибо сказали: 0 раз(а) Репутация: 0 |
да (x1.5,y1.5)
координаты локальные для QListView. А насчет примера знаю что нету, и как с подобным быть не знаю... неужели никто не пытался написать свой файловый браузер? |
|
|
MoPDoBoPoT |
25.3.2010, 20:57
Сообщение
#4
|
Участник Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: 9 |
Ты QDropEvent обрабатываешь в главном окошке, из-за этого, по-моему, координаты, получаемые из event->pos(), являются относительными к главному окну. Надо сделать что-то вроде этого:
Если координаты все-таки глобальные, то использовать mapFromGlobal() (из доки что-то не ясно). Еще, возможно, надо будет приводить к коодинатам вьюпорта:
|
|
|
enslaver |
26.3.2010, 18:53
Сообщение
#5
|
Студент Группа: Участник Сообщений: 30 Регистрация: 25.3.2010 Пользователь №: 1565 Спасибо сказали: 0 раз(а) Репутация: 0 |
Спасибо, это помогло использовал 2 вариант.
ListView->viewport()->mapFrom(this,event->pos()) Работает именно так как должно, огромное спасибо ))) теперь могу хоть дальше работу продолжить.... Оста лось только меню реализовать (копировать или переместить) и контекстное меню, а то тоже немного не понял как оно риализовывается... |
|
|
Текстовая версия | Сейчас: 22.12.2024, 5:53 |