crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> QFileSystemModel+QListView, не работает Drop
bn11
  опции профиля:
сообщение 22.1.2013, 16:11
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 22.1.2013
Пользователь №: 3685

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




Репутация:   0  


Доброго времени суток!
Столкнулся со следующей проблемой: невозможно отпустить элемент(папку или файл) QFileSystemModel
на QListView. Чтобы было ясно о чем я приведу код:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
QFileSystemModel *model;
QTreeView *tree;
QListView *mylist;

model=new QFileSystemModel();
tree=new QTreeView();

model->setRootPath("/");

tree->setModel(model);
tree->show();
tree->setDragEnabled(true);

mylist=new QListView();
mylist->setAcceptDrops(true);
mylist->show();

//w.show();
return a.exec();
}


Пробуем перетащить файл или папку на листвью - не получается, ОС выставляет значок запрета.
С чем это связано и как это обойти?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Авварон
  опции профиля:
сообщение 22.1.2013, 17:30
Сообщение #2


Студент
*

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

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




Репутация:   0  


QFileSystemModel::setReadOnly
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bn11
  опции профиля:
сообщение 22.1.2013, 19:34
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 22.1.2013
Пользователь №: 3685

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




Репутация:   0  


Цитата
model->setReadOnly(false);

ничего не меняет(да и не должно, я ведь не меняю исходную модель)
проблема в том, что не хочет переносится именно на лист, на некоторые системные окна переносится нормально.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bn11
  опции профиля:
сообщение 23.1.2013, 11:43
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 22.1.2013
Пользователь №: 3685

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




Репутация:   0  


Задача решена, нужно было переопределить dragMoveEvent у QListView примерно так
void FileList::dragMoveEvent(QDragMoveEvent *e)
{
e->acceptProposedAction();
}

обработчик по умолчанию запрещает дроп. После переопределения метода вызывается dropEvent, в него добавляем код для того чтобы отобразить в листе новый элемент.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Авварон
  опции профиля:
сообщение 23.1.2013, 15:13
Сообщение #5


Студент
*

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

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




Репутация:   0  


facepalm.

QAbstractItemView::setDragDropMode
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 2.12.2024, 1:47