Qt:model / view - 定义持有日期的项目的格式

时间:2015-04-07 20:40:34

标签: c++ qt qt5

我的模型的QDate项为Qt::DisplayRole / Qt::EditRole。 它工作正常 - 视图正确呈现这些项目并提供了很好的日期编辑器。唯一的缺点是我想更改显示的日期格式。

是否有比使用自定义绘画+ QItemEditorFactory + QItemEditorCreatorBase等准备委托更简单的方法?

它让我感觉就像形式胜过内容一样。

2 个答案:

答案 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)

感谢所有评论。

总结:如果没有自定义委托

,就无法做到这一点