![]() |
|
![]() ![]() ![]() |
|
hawk3500 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
Здравствуйте.
Возникла ситуация в которой мне надо отлавливать вводимые с клавиатуры данные в любую из ячеек таблицы QTableWidget. Никакой ни фильтр не установить ни сигнал соединить. Если сказал не ясно то опишу как пример: есть QTableWidget и нужно использовать его как основу для HEX редактора, т.е. количество вводимых символов в ячейку не превышает двух и они соответствуют HEX коду. Заранее благодарен. С уважением, HAWK3500. --------------------
воин dzen'a |
|||
|
||||
spyswamp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
Обрати свой взор в сторону делегатов (в документации искать QItemDelegate и т.п.). Создавай там любой editor и ограничивай его как хочешь.
-------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
_GRIN_ |
|
|||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: 6 Всего: 7 |
и в createEditor() можно возвращать просто QLineEdit - ну а фильтр ему через QValidator задать =)
-------------------- Дорогу осилит идущий |
|||
|
||||
hawk3500 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
т.е. если я Вас правильно понял то Вы предлагаете в каждую ячейку помещать какойто другой ,отличный от того что по умолчанию виджет(например QLineEdit)?
--------------------
воин dzen'a |
|||
|
||||
spyswamp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
Ага. Это делается по уму именно так.
-------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
_GRIN_ |
|
|||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: 6 Всего: 7 |
hawk3500, не совсем верно - ты задаёшь делегат 1 раз для всего вью (QTableWidget - наследник от QTableView - а он наследник от QAbstractItemView) - а уж делегат для каждого айтема при соответствующем действии (например двойной клик по ячейке) создаст редактор (будет вызвана функция createEditor() - ты её переопределяешь в своей имплементации делегата - и возвращаешь например QLineEdit с соответствующим QValidator).
-------------------- Дорогу осилит идущий |
|||
|
||||
hawk3500 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
_GRIN_ спасибо.
Сегодня попробую. --------------------
воин dzen'a |
|||
|
||||
hawk3500 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
Я сделал вот так:
возможно вопрос глупый , но как в TesttextEdited получить QTableWidget родителя и допустим переключится на другую ячейку? Это сообщение отредактировал(а) hawk3500 - 13.1.2012, 10:13 --------------------
воин dzen'a |
|||
|
||||
hawk3500 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
Я так понял что createEditor вызывается каждый раз при активации поля....но если в этом поле уже были данные......как их отобразить в новообразовавшийся QLineEdit?
Добавлено через 10 минут и 6 секунд С последним разобрался....а вот как из делегата обращаться к QTableWidget так и не понял ![]() --------------------
воин dzen'a |
|||
|
||||
_GRIN_ |
|
|||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: 6 Всего: 7 |
ну проще всего явно передавать делегату указатель на вью (в конструкторе, или в отдельной функции), т.к. при задании делегат для вью - вью не становится parent-ом делегата
Так что кастить parent() к вью - не стоит (даже если на самом деле ты в конкнструкторе делега вью указал как parent). А другого апи для данных целей кьют не предоставляет - думаю не без причины =) Добавлено через 5 минут и 12 секунд Кстати, рискну предположить, что тебе не нужен указатель на QTableWidget - я так понимаю, что ты хочешь в таблице данные изменить. Если я прав, то для этого используй QAbstractItemDelegate::setModelData(). P.S. Вообще лучше сразу смотреть в сторону model+view - а не в сторону виджетов - говорю по собственному опыту. Это сообщение отредактировал(а) _GRIN_ - 13.1.2012, 13:57 -------------------- Дорогу осилит идущий |
|||
|
||||
hawk3500 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
Спасибо.
Сделал как Вы рекомендовали. Всё замечательно работает))) --------------------
воин dzen'a |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |