Russian Qt Forum
Ноябрь 23, 2024, 07:03 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] Перетаскивание выделенных регионов в QTableView  (Прочитано 2791 раз)
schmidt
Гость
« : Март 21, 2013, 09:56 »

Добрый день,

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

Проблема на данный момент заключается в том, что если я в методе flags() модели возвращаю Qt::ItemIsDragEnabled, то становится невозможным "растягивать" выделение, щелкнув по ячейке - QTableView интерпретирует его как начало перетаскивания. Есть ли какой-то способ разрешить перетаскивать только уже выделенные элементы? Или придется учить модель запоминать выделенные элементы и возвращать для них особые флаги?
« Последнее редактирование: Март 21, 2013, 14:50 от Schmidt » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Март 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 );
}
};
 
Записан

Qt 5.11/4.8.7 (X11/Win)
schmidt
Гость
« Ответ #2 : Март 21, 2013, 14:44 »

Спасибо, то что нужно Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.117 секунд. Запросов: 22.