Название: Визуализация типа Numeric Отправлено: Whiplash от Сентябрь 09, 2011, 16:06 Коллеги, подскажите по небольшой проблеме.
Использую БД FireBird 2.5, через драйвер QSqlFirebird. Qt 4.7.4. При выводе в TableView полей типа numeric(18,2) незначащие нули обрезаются. Как этого избежать? К примеру, вот такое поле: Код: "10:" QSqlField("SS_SUMM", qlonglong, length: 8, precision: 2, generated: yes, typeID: 8) Вариант есть - кастовать на стороне сервера в строку ( cast(summ as varchar(18)) ), но это, так-то, бяка. Не только потому, что это костыль, но и потому, что в зависимости от типа поля у меня автоматически выбирается TextAligment для ячейки - числа выравниваются по правому краю, а строки - по левому. Название: Re: Визуализация типа Numeric Отправлено: Пантер от Сентябрь 09, 2011, 16:28 Свой делегат заюзать.
Название: Re: Визуализация типа Numeric Отправлено: Странник от Сентябрь 09, 2011, 19:47 унаследоваться от QStyledItemDelegate и переопределить QString displayText(const QVariant &value, const QLocale &locale) const
Название: Re: Визуализация типа Numeric Отправлено: Whiplash от Сентябрь 10, 2011, 10:47 Точно, спасибо, так и поступлю.
Название: Re: Визуализация типа Numeric Отправлено: Whiplash от Сентябрь 12, 2011, 13:55 Унаследовался, переопределил... displayText почему-то вообще не вызывается :(
Вот так унаследовался и переопределил: Код: class MoneyDelegate : public QStyledItemDelegate Код: QString MoneyDelegate::displayText(const QVariant &value, const QLocale &locale) Вот так ставлю делегат: Код: QList<QTableView*> list=findChildren <QTableView*>(); Название: Re: Визуализация типа Numeric Отправлено: Странник от Сентябрь 12, 2011, 15:21 у меня реализовано так:
Код: QString QFloatItemDelegate::displayText(const QVariant &value, const QLocale &locale) const попробуйте устанавливать делегат так: Код: list[i]->setItemDelegateForColumn(it.key(),new MoneyDelegate(it.value(), list.at(i))); Название: Re: Визуализация типа Numeric Отправлено: Whiplash от Сентябрь 12, 2011, 16:39 Ну, реализация displayText почти такая же...
Спасибо за совет, но не помогло :( Название: Re: Визуализация типа Numeric Отправлено: Whiplash от Сентябрь 12, 2011, 16:43 Может это быть из-за того, что у меня в модели переопределён data?
Код: QVariant QSqlQueryModelXVis::data(const QModelIndex &item, int role) const Но для DisplayRole всегда QSqlQueryModel::data вызывается... Попробую проверить в это мнаправлении. Название: Re: Визуализация типа Numeric Отправлено: Whiplash от Сентябрь 12, 2011, 16:45 Сделал так:
Код: QVariant QSqlQueryModelXVis::data(const QModelIndex &item, int role) const Непомогло. |