Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: QCasper от Сентябрь 25, 2007, 09:59



Название: QTreeWidget and Drag'n'Drop
Отправлено: QCasper от Сентябрь 25, 2007, 09:59
Имеем QTreeWidget. В нем есть item1 и item2:

- item1
- item2

Перетаскиваю item1 в item2. item1 становится дочерним итемом item2:

- item2
    |
     -- item1

Задача - определить программно, что я перетащил именно item1 в именно item2. То есть нужно сделать так, чтобы после выполнения операции переноса я имел данные (например текст) по обоим итемам.


Название: Re: QTreeWidget and Drag'n'Drop
Отправлено: denka от Сентябрь 25, 2007, 11:08
Думаю для этих целей можно воспользоваться защищенной ф-цией:
Код:
void rowsInserted ( const QModelIndex & parent, int start, int end )


Название: Re: QTreeWidget and Drag'n'Drop
Отправлено: QCasper от Сентябрь 25, 2007, 11:55
Допустим. А если предположить, что операция драг-н-дропа не прошла, и первый итем не стал подитемом второго, но все-таки необходимо определить, с какими же итемами была попытка?


Название: Re: QTreeWidget and Drag'n'Drop
Отправлено: denka от Сентябрь 25, 2007, 13:32
Тогда прийдеться заюзать вот эту ф-ции:
Код:
bool QTreeWidget::dropMimeData ( QTreeWidgetItem * parent, int index, const QMimeData * data, Qt::DropAction action ) 
И пошаманить с QMimeData. По крайней мере лучше ниче в голову пока не приходит :)


Название: Re: QTreeWidget and Drag'n'Drop
Отправлено: QCasper от Сентябрь 25, 2007, 14:11
Почти похоже. Только этот метод не вызывается, если предварительно было

Код:
setDragDropMode(QAbstractItemView::InternalMove)