Не могу получить текущую выделенную строку, QTableWidget и класс наследник QTableWidget |
Здравствуйте, гость ( Вход | Регистрация )
Не могу получить текущую выделенную строку, QTableWidget и класс наследник QTableWidget |
RazrFalcon |
11.3.2011, 20:49
Сообщение
#1
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
.cpp
.h
Вывод консоли: При клике:
При нажатии клавиши:
Задача: получить номер текущей выделенной строки и передать ее в on_cellClicked Сообщение отредактировал RazrFalcon - 11.3.2011, 20:52 |
|
|
abc |
12.3.2011, 0:20
Сообщение
#2
|
Участник Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: 4 |
Это я ничего не понял) Только что создал окошко, посадил туда таблицу. При нажатиях клавиш, выделение двигается - остаётся только соединить сигнал
void currentCellChanged ( int currentRow, int currentColumn, int previousRow, int previousColumn ) со своим слотом, и ты в этом слоте получишь все эти значения: int currentRow, int currentColumn, int previousRow, int previousColumn не нужно тебе наследование от QTableWidget и KeyPressEvent Ну, и поясню, что я до этого городил. Если у тебя есть класс А, член класса Б, то ты не можешь нуждаться в методах класса Б в классе А. Б использует А, а не наоборот. Жутко формулирую?( Тем более ты не можешь создавать в А объект Б! У тебя это чудом вышло - потому что оба класса разрабатываются в одном файле. А если бы было два заголовочника, и ты бы их друг в друге заинклудил, то компилятор бы с тобой поговорил) Ты дошёл до жизни такой, видимо, потому, что нуждался в слоте on_currentRowIndexChanged() из класса MainWindow, но на самом деле это не так. И в любом случае ты неверно работал в keyPressEvent(QKeyEvent *event). Ты не использовал переменную event, а значит обрабатывал нажатия на любые клавиши. А суть этого метода в том, чтобы получить нажатие конкретной клавиши, и это нажатие оригинально обработать. Сообщение отредактировал abc - 12.3.2011, 1:09 |
|
|
RazrFalcon |
12.3.2011, 1:41
Сообщение
#3
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
void currentCellChanged ( int currentRow, int currentColumn, int previousRow, int previousColumn ) вот так я решил свою проблему, класс tableWidget удалил вообще. Ну, и поясню, что я до этого городил. Если у тебя есть класс А, член класса Б, то ты не можешь нуждаться в методах класса Б в классе А. Б использует А, а не наоборот. Жутко формулирую?( Тем более ты не можешь создавать в А объект Б! У тебя это чудом вышло - потому что оба класса разрабатываются в одном файле. А если бы было два заголовочника, и ты бы их друг в друге заинклудил, то компилятор бы с тобой поговорил) Ты дошёл до жизни такой, видимо, потому, что нуждался в слоте on_currentRowIndexChanged() из класса MainWindow, но на самом деле это не так. И в любом случае ты неверно работал в keyPressEvent(QKeyEvent *event). Ты не использовал переменную event, а значит обрабатывал нажатия на любые клавиши. А суть этого метода в том, чтобы получить нажатие конкретной клавиши, и это нажатие оригинально обработать. Конкретные клавиши я обрабатывал сначала, но толку было столько же, по этому сделал что бы на любую реагировало. Я уже и сам, вроде, понял, что намудрил с классами. |
|
|
Текстовая версия | Сейчас: 11.12.2024, 11:00 |