Russian Qt Forum
Ноябрь 01, 2024, 07:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос по QSqlTableModel и QTableView  (Прочитано 4179 раз)
Денис
Гость
« : Февраль 05, 2010, 01:38 »

Доброго времени суток!

Помогите пожалуйста новичку! У меня такой вопрос: В таблице в БД храню значения географических координат типа double, а на QTableView нужно отображать и редактировать значения этих координат в таком формате 090º00.00 N, т.е. тип QString.
Как можно на организовать преобразование типов, чтобы на QTableView отобразить эти координаты в QString, а в базу изменения записывать в double?

Для редактирования использую делегата (QLineEdit). При редактировании ячейки пересчитываю значение и формирую строку, которую помещаю на QLineEdit.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Февраль 05, 2010, 04:37 »

>>Для редактирования использую делегата (QLineEdit).
своего надо написать унаследовавшись от QStandardItemDelegat
Записан

Юра.
Денис
Гость
« Ответ #2 : Февраль 05, 2010, 19:43 »

Своего делегата написал, с редактированием проблем нет, не соображу как установить маску, чтобы координаты после селекции отображались в формате 090º00.00 N ?
Записан
cya-st
Гость
« Ответ #3 : Февраль 05, 2010, 20:44 »

Переопредели класс модели, и в виртуальной функции data опиши как ты будеш отображать число (сделай функцию преобразования в координаты).
Записан
crossly
Гость
« Ответ #4 : Февраль 07, 2010, 21:24 »

раз уж все равно есть делегат... то наверное логичнее было бы переопределить paint у делегата... и отрисовать так как тебе нужно...
Записан
Денис
Гость
« Ответ #5 : Февраль 10, 2010, 17:53 »

переопределил paint и добился желаемого результата! большое спасибо за помощь!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.075 секунд. Запросов: 23.