在显示与QTableView中其他QItemDelegate数据
-
19-09-2019 - |
题
我有一个连接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));
不隶属于 StackOverflow