![]() |
|
![]() ![]() ![]() |
|
TimberWolf |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 6.1.2007 Где: Тула Репутация: нет Всего: нет |
Здравствуйте!
Имеется следующий вопрос. Есть свой виджет, наследованный от QLineEdit. Виджет представляет из себя собственно QLineEdit над которым появляется калькулятор при получении фокуса ввода. При нажатии на кнопки калькулятора, цифры вводятся в QLineEdit. Калькулятор унаследован от QDialog. Калькулятор немодальный, но всегда находится поверх QMainWindow.
Далее. Есть QTableView в котором данный виджет является виджетом редактирования(отдается делегатом). Но отредактировать значение в таблице с использованием данного виджета не получается из-за того, что при создании виджета, калькулятор автоматически получает фокус
, а при потере фокуса ввода QTableView считает, что редактирование закончено и закрывает виджет редактирования. Получается, что калькулятор создается и тут же закрывается. Можно ли как-то решить эту проблему? Можно ли унаследоваться от QTableView и запретить прерывать редактирование при потере фокуса ввода? Либо, возможно, есть более элегантное решение? Это сообщение отредактировал(а) TimberWolf - 26.3.2012, 18:23 |
||||
|
|||||
_GRIN_ |
|
|||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: 6 Всего: 7 |
я не уверен, но может стоит покопать в сторону setFocusProxy() ?
-------------------- Дорогу осилит идущий |
|||
|
||||
TimberWolf |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 6.1.2007 Где: Тула Репутация: нет Всего: нет |
Решение: необходимо унаследоваться от QTableView и перегрузить метод.
После чего QDialog перестанет пропадать, а при нажатии кнопки Закрыть в диалоге можно закрывать редактирование. Это сообщение отредактировал(а) TimberWolf - 26.3.2012, 20:21 |
|||
|
||||
TimberWolf |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 6.1.2007 Где: Тула Репутация: нет Всего: нет |
Вопрос вдогонку. Как внутри класса-потомка QTableView законнектить сигнал от виджета, который отдается делегатом, на свой слот? Не могу добраться до виджета, который отдается из метода createEditor() делегата.
Это сообщение отредактировал(а) TimberWolf - 27.3.2012, 00:25 |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Можно посмотреть на исходники Qt как там сделан QComboBox и QDateEdit с календарём - нужно сделать аналогично.
|
|||
|
||||
TimberWolf |
|
||||||||||||||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 6.1.2007 Где: Тула Репутация: нет Всего: нет |
Спасибо.
В итоге помог. Изначально идея была следующая: сделать ввод в QLineEdit, используя либо калькулятор, который появляется над QLineEdit при клике на QLineEdit, либо обычную клавиатуру. Столкнулся с проблемой. При редактировании данных в таблице, кальтулятор получал фокус, и QTableView расценивал это как окончание редактирования и убивал калькулятор вместе с QLineEdit ( QLineEdit+калькулятор далее будем называть виджет-редактор. он отдается делегатом в QTableView). Варианты решений:
Это сообщение отредактировал(а) TimberWolf - 27.3.2012, 18:54 |
||||||||||||||
|
|||||||||||||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, 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. |