crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> ListView & QMimeData &QClipboard, Копирование, вырезание вставка
enslaver
  опции профиля:
сообщение 6.4.2010, 21:54
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 30
Регистрация: 25.3.2010
Пользователь №: 1565

Спасибо сказали: 0 раз(а)




Репутация:   0  


Как связать все эти вещи?

Имеется QListView связанная с QDirModel.
Как вставить в нее объект типа QMimeData.
Видел там функцию
virtual bool dropMimeData ( const QMimeData * data, Qt::DropAction action, int row, int column, const QModelIndex & parent )

Но так и не разобрался как с ней работать, в частности нужно или нет и откуда вообще брать (int row, int column)....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DIMEDROLL
  опции профиля:
сообщение 6.4.2010, 22:03
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 165
Регистрация: 28.9.2008
Из: Киев
Пользователь №: 304

Спасибо сказали: 23 раз(а)




Репутация:   0  


а что нужно сделать? скопировать файл?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
enslaver
  опции профиля:
сообщение 7.4.2010, 11:06
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 30
Регистрация: 25.3.2010
Пользователь №: 1565

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(DIMEDROLL @ 6.4.2010, 23:03) *
а что нужно сделать? скопировать файл?


копирование, перемещение, вырезание и вставку(файл и папка).
я просто не понимаю как вставить имеющеюся QMimeData через QDirModel.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DIMEDROLL
  опции профиля:
сообщение 7.4.2010, 11:29
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 165
Регистрация: 28.9.2008
Из: Киев
Пользователь №: 304

Спасибо сказали: 23 раз(а)




Репутация:   0  


Цитата(enslaver @ 7.4.2010, 11:06) *
копирование, перемещение, вырезание и вставку(файл и папка).
я просто не понимаю как вставить имеющеюся QMimeData через QDirModel.

помоему QDirModel этим не занимается, он просто отображает данные...
посмотри в сторону QFile::copy() - это для копирования файлов, а для папок вероятно прийдется самому написать код
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.4.2010, 11:47
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9642
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 769 раз(а)




Репутация:   94  


Цитата(DIMEDROLL @ 7.4.2010, 15:29) *
помоему QDirModel этим не занимается, он просто отображает данные
ну в описании не сказано, что это модель "только для чтения". И у неё переопределён метод dropMimeData, стало быть "броски" принимает. А какие именно можно посмотреть с помощью virtual Qt::DropActions supportedDropActions () const

Другое дело - она формально устарела, вместо неё рекомендуют использовать QFileSystemModel
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
enslaver
  опции профиля:
сообщение 7.4.2010, 20:32
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 30
Регистрация: 25.3.2010
Пользователь №: 1565

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 7.4.2010, 12:47) *
Цитата(DIMEDROLL @ 7.4.2010, 15:29) *
помоему QDirModel этим не занимается, он просто отображает данные
ну в описании не сказано, что это модель "только для чтения". И у неё переопределён метод dropMimeData, стало быть "броски" принимает. А какие именно можно посмотреть с помощью virtual Qt::DropActions supportedDropActions () const

Другое дело - она формально устарела, вместо неё рекомендуют использовать QFileSystemModel


Я ставил QFileSystemModel но что то с ним даже представление не отображается а просто пусой виджет... но как факт он тоже имет такую же функцию
bool QFileSystemModel::dropMimeData ( const QMimeData * data, Qt::DropAction action, int row, int column, const QModelIndex & parent )   [virtual]

вообще в QMimeData содержаться имена файлов и папок. вот и как с ними бить?
тобишь имеем имена, и что с ними дальше делать? в какую из функции направить? и не думаю что QDirModel устарел, так как QFileSystemModel появился только в 4.4[quote]This class was introduced in Qt 4.4/quote]
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.4.2010, 5:26
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9642
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 769 раз(а)




Репутация:   94  


Цитата(enslaver @ 8.4.2010, 0:32) *
QDirModel устарел, так как QFileSystemModel
где-то у тролей было обсуждение про него, из которого я сделал вывод, что следует использовать
QNetWorkManager вместо QHttp
QFileSystemModel вместо QDirModel
...
(ещё несколько классов)
вроде как QDirModel медленный

Цитата(enslaver @ 8.4.2010, 0:32) *
Я ставил QFileSystemModel но что то с ним даже представление не отображается а просто пусой виджет
сейчас проверил на примере examples\itemviews\dirview
там нужно такой код написать вместо QDirModel model;:
QFileSystemModel model;
model.setRootPath("");
модель ничего не делает после создания, если для неё этот метод не вызван. Правда описания этого метода я не понял.

enslaver, посмотри примеры по "перетаскиванию" (drag-n-drop), может там что-то найдёшь по своей теме.
Ещё есть статья про MimeData: Как передавать через буфер обмена произвольные типы данных?
Может пригодится
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
enslaver
  опции профиля:
сообщение 8.4.2010, 11:03
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 30
Регистрация: 25.3.2010
Пользователь №: 1565

Спасибо сказали: 0 раз(а)




Репутация:   0  


Литература есть... вот только объяснить некому конкретный случай.
так то по соображениям сделал через QFile::copy() и QDir::mkdir(). но пока что не совсем рабоче...
Использовал как основу функцию удаления файлов и папок....
Как будет код выложи, а пока может кто что лучше предложит...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 16.7.2018, 11:54