我有一个与QSqlTableModel连接的QTableView。
在第一列中,只有这种格式的日期: 2010-01-02
我希望这一列以这种格式显示日期(但不改变实际数据): 02.01.2010
我知道我必须为这一列创建一个QItemDelegate,但我不知道如何读取现有的数据并用其他内容覆盖它。你有什么想法如何管理它吗?
我有一个与QSqlTableModel连接的QTableView。
在第一列中,只有这种格式的日期: 2010-01-02
我希望这一列以这种格式显示日期(但不改变实际数据): 02.01.2010
我知道我必须为这一列创建一个QItemDelegate,但我不知道如何读取现有的数据并用其他内容覆盖它。你有什么想法如何管理它吗?
最简单的解决方案是创建一个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));