Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Модель/Представление _ ListView & QMimeData &QClipboard

Автор: enslaver 6.4.2010, 21:54

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

Имеется 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

а что нужно сделать? скопировать файл?

Автор: enslaver 7.4.2010, 11:06

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


копирование, перемещение, вырезание и вставку(файл и папка).
я просто не понимаю как вставить имеющеюся QMimeData через QDirModel.

Автор: DIMEDROLL 7.4.2010, 11:29

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

помоему QDirModel этим не занимается, он просто отображает данные...
посмотри в сторону QFile::copy() - это для копирования файлов, а для папок вероятно прийдется самому написать код

Автор: Litkevich Yuriy 7.4.2010, 11:47

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

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

Автор: enslaver 7.4.2010, 20:32

Цитата(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

Цитата(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: http://www.prog.org.ru/topic_8180_0.html
Может пригодится

Автор: enslaver 8.4.2010, 11:03

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

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)