Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: pacmanoid от Сентябрь 15, 2006, 06:28



Название: Qt-4.1.4 Как задать региональные стандарты в приложении
Отправлено: pacmanoid от Сентябрь 15, 2006, 06:28
Использую QT-4.1.4.

Написал программу. Всебы хороше, но пользователь привык к национальным стандатрам, то есть вместо точек при вводе чисел он привык набирать запятые.

Также немогу поменять формат отображения даты в таблицах (В QTableView + QSqlQueryModel ). Поля отображающие даты, отображают их в английском формате представления, например 2006-09-06. А мне недо чтобы они представлялись в русском типа 06.09.2006.

Пожалуста, кто знает подскажите!!!!


Название: Qt-4.1.4 Как задать региональные стандарты в приложении
Отправлено: Alexei от Сентябрь 15, 2006, 07:23
Для отображения даты можно использовать свой делегат:

Код:

class SqlDelegate : public QItemDelegate
{
public:
  SqlDelegate(QObject* parent = 0);
  void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
};

void SqlDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option,
  const QModelIndex& index) const
{
  if (index.data().type() == QVariant::Date || index.data().type() == QVariant::DateTime)
  {
    QStyleOptionViewItem opt = option;
    QDate dt = index.data().toDate();
    QString s = dt.toString("dd.MM.yyyy");
    QVariant value = index.data(Qt::TextColorRole);
    if (value.isValid() && qvariant_cast<QColor>(value).isValid())
      opt.palette.setColor(QPalette::Text, qvariant_cast<QColor>(value));
    opt.displayAlignment = Qt::AlignVCenter | Qt::AlignHCenter;
    drawDisplay(painter, opt, opt.rect, s);
    drawFocus(painter, opt, opt.rect);
    return;
  }
  QItemDelegate::paint(painter, option, index);
}