Название: QTableView - не выделяется строка при QAbstractItemView::SelectRows Отправлено: xintrea от Октябрь 25, 2014, 23:27 Есть у меня класс, унаследованный от QTableView. Для него я устанавливаю следующие параметры:
Код: setSelectionMode(QAbstractItemView::SingleSelection); Проблема в том, что не выделяется строка при ЛЕВОМ клике мышкой. Выделение строки ЛЕВЫМ кликом возможно только, если это первый клик на таблице. Все последующие клики не выделяют строку, а выделяют ячейку. На экране происходит вот это: http://i.piccy.info/i9/dd6d85d244c18553e7c6fcb6d95ccdcc/1414267658/48572/597435/scr_362.png Выделенная строка №4 - была выделена при первом ЛЕВОМ клике. А ячейка в строке №2 была выделена позже, при клике ЛЕВОЙ кнопки мыши. Не могу разобраться - у меня еще что-то не настроено в QTableView? Или это могут быть проблемы из-за переназначения сигналов? Исходник: https://github.com/xintrea/mytetra_dev/blob/experimental/src/views/recordTable/RecordTableView.cpp Название: Re: QTableView - не выделяется строка при QAbstractItemView::SelectRows Отправлено: gil9red от Октябрь 26, 2014, 00:32 Проблема явно не в
Код: setSelectionMode(QAbstractItemView::SingleSelection); Я видел, что вы там какие-то манипуляции с выделением делали :) Название: Re: QTableView - не выделяется строка при QAbstractItemView::SelectRows Отправлено: xintrea от Октябрь 26, 2014, 01:11 Проблема явно не в Код: setSelectionMode(QAbstractItemView::SingleSelection); Я видел, что вы там какие-то манипуляции с выделением делали :) Ну вот я закомментировал установку всех сигналов - поставил в начале функции setupSignals() return. И поведение такое же глючное. А это практически чистый QTableView. Название: Re: QTableView - не выделяется строка при QAbstractItemView::SelectRows Отправлено: VPS от Октябрь 26, 2014, 14:25 У Вас проблемы из-за реализации слота:
Код: virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); П.С.: можно в конце этого слота, вызвать метод родительского класса. Название: Re: QTableView - не выделяется строка при QAbstractItemView::SelectRows Отправлено: xintrea от Октябрь 27, 2014, 00:47 У Вас проблемы из-за реализации слота: Код: virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); П.С.: можно в конце этого слота, вызвать метод родительского класса. Ага, спасибо, что-то я ступил. Для отладки отключил все коннекты - не помогло. Тогда для всех обработчиков прописал return в самое начало. Получилось, что selectionChanged() переопределен ничего не делающим методом, а метод базового класса как не вызывался. так и не вызывается. Исправил. Теперь при клике выделяется нормально вся строка. Но осталась проблема. Сейчас при старте программы в этой таблице выделяется одна ячейка, несмотря на то, что я в конструктор перенес настройку Код: setSelectionBehavior(QAbstractItemView::SelectRows); Вообще не могу придумать как исправить. Вызывать искуственно selectionChanged() на ту же самую строку сразу после создания объекта - это как-то вообще криво. Есть стандартное решение? Если быть более точным, то программная установка засветки на нужной строке с номером pos (в первой колонке): Код: QModelIndex selIdx=recordModel->index(pos, 0); вызывает выделение одной ячейки, а не всей строки. Несмотря на настройку setSelectionBehavior(QAbstractItemView::SelectRows). Название: Re: QTableView - не выделяется строка при QAbstractItemView::SelectRows Отправлено: VPS от Октябрь 27, 2014, 13:43 Думаю для того, чтобы выцепить правильное количество выделенных столбцов, необходимо работать с "selectionModel"...
|