Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: alex-v от Февраль 22, 2011, 17:40



Название: Tab в QTableWidget
Отправлено: alex-v от Февраль 22, 2011, 17:40
Есть таблица QTableWidget с количеством столбцов и строк [N x M].
Когда на клаве нажимаем Tab, то фокус бегает слева направо по ячейкам строки и затем сверху вниз по следующим строкам.

Как сделать, чтобы при нажатии на Tab фокус перемещался строго по одной колонке сверху вниз?


Название: Re: Tab в QTableWidget
Отправлено: Пантер от Февраль 22, 2011, 17:44
Читай в ассистенте про installEventFilter


Название: Re: Tab в QTableWidget
Отправлено: alex-v от Февраль 22, 2011, 17:52
Почитал. Разобрался.
Тока, получается, мне фильтровать ничего не нужно. Мне надо перенаправить фокус сверху вниз (по одному столбцу), а не как сейчас - слева направо по горизонтали.


Название: Re: Tab в QTableWidget
Отправлено: alex-v от Февраль 22, 2011, 18:02
т.е. как запретить фокус для одних ячеек таблицы, и разрешить их для других?


Название: Re: Tab в QTableWidget
Отправлено: Kolobok от Февраль 22, 2011, 18:19
Как сделать, чтобы при нажатии на Tab фокус перемещался строго по одной колонке сверху вниз?

Можно наследоваться от QTableWidget и переопределить moveCursor(...).

т.е. как запретить фокус для одних ячеек таблицы, и разрешить их для других?

QTableWidgetItem::setFlags ( Qt::ItemFlags flags )


Название: Re: Tab в QTableWidget
Отправлено: alex-v от Февраль 22, 2011, 18:27
Можно наследоваться от QTableWidget и переопределить moveCursor(...).

Думал об этом. При этом таблицу придётся создавать программно. А нужно бы иметь возможность её редактировать в дизайнере.


QTableWidgetItem::setFlags ( Qt::ItemFlags flags )

Смотрел. Нету там флага для запрета фокуса.


Название: Re: Tab в QTableWidget
Отправлено: alex-v от Февраль 22, 2011, 19:02
хм... видимо больше нету выхода, кроме как создать таблицу программно....


Название: Re: Tab в QTableWidget
Отправлено: Kolobok от Февраль 22, 2011, 19:38
Можно наследоваться от QTableWidget и переопределить moveCursor(...).

Думал об этом. При этом таблицу придётся создавать программно. А нужно бы иметь возможность её редактировать в дизайнере.

Связи не вижу.

Смотрел. Нету там флага для запрета фокуса.

Qt::ItemIsSelectable разве не оно?


Название: Re: Tab в QTableWidget
Отправлено: alex-v от Февраль 22, 2011, 19:58
Цитировать
Связи не вижу.
эх :) ... оказывается в дизайнере есть функция "Преобразовать в...". Это в корне меняет дело.

Цитировать
Qt::ItemIsSelectable разве не оно?
Не. Пробовал. На фокус это не влияет. Тока на то - будет ли ячейка выделена синим фоном или нет в фокусе.

Вообщем проблема решена путём:
Цитировать
Можно наследоваться от QTableWidget и переопределить moveCursor(...).

Всем спасибо.