Russian Qt Forum

Qt => Model-View (MV) => Тема начата: schmidt от Март 21, 2013, 09:56



Название: [Решено] Перетаскивание выделенных регионов в QTableView
Отправлено: schmidt от Март 21, 2013, 09:56
Добрый день,

Хочу реализовать в таблице возможность перетаскивания выделенных строк/столбцов/регионов - функционал аналогичный тому, что представлен в Excel/OpenOffice Calc.

Проблема на данный момент заключается в том, что если я в методе flags() модели возвращаю Qt::ItemIsDragEnabled, то становится невозможным "растягивать" выделение, щелкнув по ячейке - QTableView интерпретирует его как начало перетаскивания. Есть ли какой-то способ разрешить перетаскивать только уже выделенные элементы? Или придется учить модель запоминать выделенные элементы и возвращать для них особые флаги?


Название: Re: Перетаскивание выделенных регионов в QTableView
Отправлено: GreatSnake от Март 21, 2013, 12:08
Вот workaround:
Код
C++ (Qt)
#include <QTableView>
#include <QMouseEvent>
 
class TableView : public QTableView
{
public:
TableView( QWidget* parent = 0 )
: QTableView( parent ) {}
protected:
void mousePressEvent( QMouseEvent* e )
{
setDragEnabled( selectionModel()->isSelected( indexAt( e->pos() ) ) );
QTableView::mousePressEvent( e );
}
};
 


Название: Re: Перетаскивание выделенных регионов в QTableView
Отправлено: schmidt от Март 21, 2013, 14:44
Спасибо, то что нужно :)