Ber*_*chi 6 c++ qt qt4 qtableview qitemdelegate
我有一个QTableView与QSqlTableModel连接.
在第一列中,只有这种格式的日期:2010-01-02
我希望此列以此格式显示日期(但不更改实际数据):02.01.2010
我知道我必须为此列创建一个QItemDelegate,但我不知道我知道如何读取现有数据并用不同的东西覆盖它.你知道如何管理它吗?
小智 15
最简单的解决方案是创建一个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;
};
Run Code Online (Sandbox Code Playgroud)
然后在你看来 -
setItemDelegateForColumn(/*date column*/, new DateFormatDelegate("MM.dd.yyyy", this));
Run Code Online (Sandbox Code Playgroud)