![]() |
|
![]() ![]() ![]() |
|
Programister0 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 28.5.2007 Репутация: нет Всего: нет |
вот и весь вопрос !
|
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
Насчёт выделения строки копай в setSelectionModel().
Получение текущей позиции курсора - modelIndex() |
|||
|
||||
Programister0 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 28.5.2007 Репутация: нет Всего: нет |
спасибо вроде с выделением строк разобрался:
setSelectionBehavior( QAbstractItemView::SelectRows ); а вот с определением позиции курсора нет, надо определять позицию при её изменении методы: activated, entered, pressed, clicked - неподходят - они срабатывают на enter или click а надо на реагировать на перемещение курсора. |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
похоже, действительно, что встроенного события на "просто перемещение" с клавиатуры нет. Попробуй на всякий случай половить "entered", если нет, тогда, наверное, придётся самому ловить события клавиатуры влево-вправо/вверх-вниз. |
|||
|
||||
Programister0 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 28.5.2007 Репутация: нет Всего: нет |
все keyPressEvent ( QKeyEvent * event ) в секции и [virtual protected] как можно ещё отловить эти события? |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
||||
|
||||
Programister0 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 28.5.2007 Репутация: нет Всего: нет |
блин для этого придется создавать свой класс от QTableView, можно как нибудь по другому?
Это сообщение отредактировал(а) Programister0 - 2.12.2007, 20:08 |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 11 Всего: 93 |
Гхм, Programister0, а чем не подходят слоты selectionChanged и currentChanged? Местоположения курсора можно изменить многими способами(в т.ч. вообще программно) и, мне кажется, что лучше не использовать такие ограниченные решения, как перехват "всех" возможных способов изменения.
Добавлено через 2 минуты и 5 секунд Можно создать свой класс, унаследованный от QTableView, вывести наружу сигналы, и потом пользоваться им как-будто ничего для него писать и не приходилось ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Наследуемся от QTableView, переопределяем void QAbstractItemView::currentChanged (const QModelIndex & current, const QModelIndex & previous) (протектед слот).
|
|||
|
||||
Programister0 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 28.5.2007 Репутация: нет Всего: нет |
да варианты с selectionChanged и currentChanged намного привлекательнее, но все равно требуют написания своего класса от QTableView, это накладно и неудобно, было-бы проще что-то что не требует создания класса
|
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 11 Всего: 93 |
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Programister0 |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 28.5.2007 Репутация: нет Всего: нет |
спасибо, все работает
но, тот вариант который вы написали моему компилятору непонравился:
но после удаления строк:
все пошло как по часам, я соединил сигнал и свою функцию:
теперь itemChange вызывается всегда когда курсор меняет положение, но теперь я непонимаю как и откуда это все берется? ведь сигнал currentChanged нигде не описан, только в Protected Slots; и где можно узнать какие ещё функции можно записать в signals? |
||||||
|
|||||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
||||
|
||||
SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
В Qt Assistant, обычно раздел называется "List of All Members for [имя_класса]". Для твоего: "List of All Members for QTableWidget". Обычно в описании каждого класса есть ссылка типа "List of all members, including inherited members". А вообще currentChanged слот унаследованного класса QAbstractItemView и этот класс используется не только в QTableWidget. Т.ч. можно спокойно ничего не наследовать и использовать простой вариант, скажем для model based контролов:
|
||||
|
|||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 11 Всего: 93 |
Ну, да, не надо было с одним и тем же именем делать... Одного я правда не понял: т.е. после удаления ключевых строк у тебя всё заработало? ![]() Кто-нибудь из знатоков Qt может объяснить это(к сожалению, сейчас нет времени разбираться)? -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |