質問

私はQSqlTableModelに接続QTableViewを持っている。
最初の列では、このフォーマットでの唯一の日付があります。2010-01-02
私はこのコラムは、この形式で(ただし、実際のデータを変更せずに)日付を表示したい:02.01.2010
私はこの列のQItemDelegateを作成する必要があることを知っているが、私は、既存のデータを読み込み、別の何かでそれを上書きすることができますかわかりません。あなたはそれをどのように管理するかを任意のアイデアを持っている?

役に立ちましたか?

解決

、必ずしもデータを変更しない項目のデリゲートは、それだけでデータをレンダリングします。あなたはQtの4.4以降を使用している場合にも、代わりにQStyledItemDelegateを見て - それは、テーマを意識だと見た目が良くなります。

アイテム代議員の例は、この記事には(であるように思われます今ダウンしているかなくなって公式ドキュメントの鏡)であることを。

あなたが本当にやりたいすべてのテキストをカスタマイズしているので、あなたの代わりにプロキシモデルを使用して、ちょうど日付列のDisplayRoleのためのカスタムのQStringを返すと考えている?

他のヒント

最も簡単な解決策はQStyledItemDelegateサブクラスを作成し、displayText(...)すなわちを再実装することです。

class DateFormatDelegate : public QStyledItemDelegate
{
public:
 DateFormatDelegate (QString dateFormat, QObject *parent = 0) : 
  QStyledItemDelegate(parent),
  m_dateFormat(dateFormat)
 {
 }

 virtual QString displayText(const QVariant & value, const QLocale & locale ) const
 {
  Q_UNUSED(locale);
  return value.toDate().toString(m_dateFormat);
 }

private:
 QString m_dateFormat;
};

次に、あなたのビューで -

setItemDelegateForColumn(/*date column*/, new DateFormatDelegate("MM.dd.yyyy", this));
scroll top