это называется drag and drop, в букваре всё есть
Ой спасибо что объяснили как называется!!
А если серьезно, то хочется воспользоваться готовым, а не городить DnD с нуля. Флажки я подобрал
C++ (Qt)
#include <QtGui>
int main( int argc, char** argv )
{
QApplication app(argc, argv);
QDialog * dlg = new QDialog();
QListWidget * lst = new QListWidget(dlg);
for (int i = 0; i < 100; ++i)
lst->addItem("item " + QString::number(i + 1));
QVBoxLayout * layout = new QVBoxLayout(dlg);
layout->addWidget(lst);
dlg->resize(320, 240);
lst->setDragDropMode(QAbstractItemView::InternalMove);
lst->setMovement(QListView::Free);
dlg->exec();
return 0;
}
Работает, но выглядит неопрятно
1) таскаемый айтем рисуется так же как и оригигал, (грубый renderToPixmap), а надо только чтобы рамочка.
2) Чего это он вовсю показывается где угодно, я четко сказал флажками что он "местный", никаких планов дропать его куда-то еще не имею
3) autoScroll бычит, но надо попасть в начало/конец листа - слишком интимно
Как это порешать? Перекрывать startDrag и там свой наследник QDrag? Дороговато выходит, нет ли чего попроще?
Спасибо