Здравствуйте, гость ( Вход | Регистрация )
RazrFalcon | Дата 12.3.2011, 1:41 |
void currentCellChanged ( int currentRow, int currentColumn, int previousRow, int previousColumn ) вот так я решил свою проблему, класс tableWidget удалил вообще. Ну, и поясню, что я до этого городил. Если у тебя есть класс А, член класса Б, то ты не можешь нуждаться в методах класса Б в классе А. Б использует А, а не наоборот. Жутко формулирую?( Тем более ты не можешь создавать в А объект Б! У тебя это чудом вышло - потому что оба класса разрабатываются в одном файле. А если бы было два заголовочника, и ты бы их друг в друге заинклудил, то компилятор бы с тобой поговорил) Ты дошёл до жизни такой, видимо, потому, что нуждался в слоте on_currentRowIndexChanged() из класса MainWindow, но на самом деле это не так. И в любом случае ты неверно работал в keyPressEvent(QKeyEvent *event). Ты не использовал переменную event, а значит обрабатывал нажатия на любые клавиши. А суть этого метода в том, чтобы получить нажатие конкретной клавиши, и это нажатие оригинально обработать. Конкретные клавиши я обрабатывал сначала, но толку было столько же, по этому сделал что бы на любую реагировало. Я уже и сам, вроде, понял, что намудрил с классами. |
|
abc | Дата 12.3.2011, 1:12 |
я там подправил кое-что, перечитай сижу тут правлю формулирую уже полчаса, не зная, какой аспект фэйла и осветить-то)) | |
RazrFalcon | Дата 12.3.2011, 0:40 |
ппц, это просто эпикфэйл! Спасибо, разобрался! |
|
abc | Дата 12.3.2011, 0:20 |
Это я ничего не понял) Только что создал окошко, посадил туда таблицу. При нажатиях клавиш, выделение двигается - остаётся только соединить сигнал 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, а значит обрабатывал нажатия на любые клавиши. А суть этого метода в том, чтобы получить нажатие конкретной клавиши, и это нажатие оригинально обработать. |
|
RazrFalcon | Дата 12.3.2011, 0:12 |
Слот изменяющий строку должен быть методом класса таблицы, не MainWindow А можно пример кода, а то я ничего не понял. |
|
abc | Дата 12.3.2011, 0:04 |
Таблице ничего не нужно знать о MainWindow Слот изменяющий строку должен быть методом класса таблицы, не MainWindow |
|
RazrFalcon | Дата 11.3.2011, 23:55 |
Так я пытался обратится к таблице. Она в MainWindow определена и используется. | |
abc | Дата 11.3.2011, 23:49 |
Объясни, что у тебя делает MainWindow my; в tableWidget::keyPressEvent? |
|
RazrFalcon | Дата 11.3.2011, 23:23 |
onCellClicked - говорит само за себя, а мне нужно получать номер строки при использовании клавиш вниз и вверх. Для этого использовал класс перехвата нажатий клавиатуры. Он понимает что я нажал вниз, выделение спустилось на одну строку ниже, а индекс -1. Вот в чем проблема. | |
abc | Дата 11.3.2011, 21:46 |
ты создал окно в KeyPressed, но никакую строку, конечно, не выделил, и currentRow возвращает -1 за неимением текущей строки а onCellClicked сама даёт тебе номер строки, в чём недопонимание? моё или твоё?) |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 24.4.2024, 0:29 |