我有一个连接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));
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top