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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Разные варианты выделения мышью в QTableView  (Прочитано 2927 раз)
retif
Гость
« : Декабрь 07, 2012, 20:51 »

На форме находится QTableView, у него выставлены свойства:
  • selectionMode: MultiSelection;
  • selectioBehavior: SelectRows.

Пример таблицы:
1|2|3
---------
4|5|6

Выделение строк мышью (порядок считывания индексов) происходит двумя способами (это не я сделал, это так на стандартных классах):
  • при выделении строк мышью поштучно (один клик - одна строка), индексы в модель выделения попадают в одном порядке (1, 2, 3, 4, 5, 6);
  • если же нажать кнопку мыши, протянуть по строкам и отпустить, то индексы в модель выделения попадут в другом порядке (1, 4, 2, 5, 3, 6). В таком же порядке они туда попадают, если выделить все записи в таблице нажатием на угловую кнопку (cornerButton).

Как можно отличать, каким именно способом произошло выделение? Мне нужно записать выделенные строки в файл, но я могу учесть только один из вариантов. Мне требуется записывать построчно, как при первом варианте (выделено зелёным цветом).

Саму запись в файл делаю так (опуская подробности):
Код:
QModelIndexList indexes = _model->selectedIndexes();
for (int x = 0; x < indexes.count(); x++)
    exportFile.write(indexes.at(x).data().toString().toAscii());
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Декабрь 08, 2012, 00:48 »

в фильтре событий или в наследнике вью проверять зажата ли постоянно кнопка мыши в mouse*Event()
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
retif
Гость
« Ответ #2 : Декабрь 08, 2012, 07:58 »

И если зажата, то не давать выделять? Но ещё остаётся угловая кнопка, которая всё равно будет осуществлять выделение в отличном от нужного мне порядке. Непонятно, почему вообще такое происходит - два разных порядка добавления индексов в список выделенных.

- - -

По-видимому, это никак не регулируется. Нашёл почти-решение своей проблемы тут.
« Последнее редактирование: Декабрь 09, 2012, 09:01 от retif » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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