我有一个模型,它有QDate
作为Qt::DisplayRole
/Qt::EditRole
的项。它工作得很好-视图正确地渲染了这些项目,并提供了很好的日期编辑器。唯一的缺点是我想更改显示的日期格式。
有没有比用自定义绘画+QItemEditorFactory
+QItemEditorCreatorBase
等准备代理更简单的方法?
在我看来,这就像是形式对内容的胜利。
如果只需要在特定单元格中显示日期,则应将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);
}
}
};
对我来说,如果你想在一个单元格中显示多个数据,你应该使用自定义绘制。
Thx用于所有注释。
总结:没有自定义委托是不可能做到的