Qt: model/view - 定义项目持有日期的格式
Qt: model/view - defining format of items holding date
我有一个模型,其中的项目 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);
}
}
};
对于我来说,如果你想在一个单元格中显示多个数据,你应该使用自定义绘画。
感谢所有评论。
总结:没有自定义委托是没办法的
我有一个模型,其中的项目 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);
}
}
};
对于我来说,如果你想在一个单元格中显示多个数据,你应该使用自定义绘画。
感谢所有评论。
总结:没有自定义委托是没办法的