我的模型的QDate
项为Qt::DisplayRole
/ Qt::EditRole
。
它工作正常 - 视图正确呈现这些项目并提供了很好的日期编辑器。唯一的缺点是我想更改显示的日期格式。
是否有比使用自定义绘画+ QItemEditorFactory
+ QItemEditorCreatorBase
等准备委托更简单的方法?
它让我感觉就像形式胜过内容一样。
答案 0 :(得分:1)
如果您只需要在特定单元格中显示日期,则应该将QStyledItemDelegate
作为子类并覆盖它QString displayText(const QVariant& value, const QLocale& locale) const;
class DateItemDelegate :
public QStyledItemDelegate
{
public:
DateItemDelegate (QObject* parent) :
QStyledItemDelegate(parent) {};
QString displayText(const QVariant& value, const QLocale& locale) const
{
if (value.type() == QVariant::DateTime)
{
return value.toDateTime().toString(Qt::ISODate);
}
}
};
至于我,你应该使用自定义绘画,以防你想在一个单元格中显示多个数据。
答案 1 :(得分:0)
感谢所有评论。
总结:如果没有自定义委托
,就无法做到这一点