Автор: 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(). но пока что не совсем рабоче...
Использовал как основу функцию удаления файлов и папок....
Как будет код выложи, а пока может кто что лучше предложит...