在 Qt 中,将输入的 TableView 中的日期格式转换为'yyyy-MM-dd'的格式,可以使用代理(Delegate)来自定义表格单元格的显示方式。下面是一个示例代码:

首先,创建一个自定义的代理类,继承自 QStyledItemDelegate,并重写 createEditor() 和 setEditorData() 函数。

#include <QStyledItemDelegate>
#include <QDateEdit>

class DateDelegate : public QStyledItemDelegate
{
public:
    QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override
    {
        // 创建一个日期编辑器
        QDateEdit *editor = new QDateEdit(parent);
        editor->setDisplayFormat("yyyy-MM-dd");
        
        return editor;
    }

    void setEditorData(QWidget *editor, const QModelIndex &index) const override
    {
        // 获取单元格的日期值
        QDate date = index.model()->data(index, Qt::EditRole).toDate();
        
        // 设置日期编辑器的值
        QDateEdit *dateEdit = static_cast<QDateEdit*>(editor);
        dateEdit->setDate(date);
    }

    void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override
    {
        // 获取日期编辑器的值
        QDateEdit *dateEdit = static_cast<QDateEdit*>(editor);
        QDate date = dateEdit->date();
        
        // 将日期转换为指定的格式
        QString formattedDate = date.toString("yyyy-MM-dd");
        
        // 设置模型中的数据
        model->setData(index, formattedDate, Qt::EditRole);
    }
};

然后,在你的 TableView 所在的类中,设置代理并应用到需要转换格式的列:

DateDelegate *delegate = new DateDelegate();
tableView->setItemDelegateForColumn(columnIndex, delegate);

在示例代码中,我们创建了一个自定义的代理类DateDelegate,在 createEditor() 函数中创建了一个 QDateEdit 作为编辑器,并使用 setDisplayFormat() 设置日期显示格式为'yyyy-MM-dd'。在 setEditorData() 函数中,我们将单元格的日期值设置到日期编辑器中。在 setModelData() 函数中,我们获取日期编辑器的值,并将日期转换为'yyyy-MM-dd'的格式,然后设置到模型中。

通过这样的方式,你可以将输入的 TableView 中的日期格式转换为'yyyy-MM-dd'的格式显示和保存。请根据你自己的实际需求进行适当的修改和调整。

Qt TableView 日期格式转换:将日期格式转换为 yyyy-MM-dd

原文地址: https://www.cveoy.top/t/topic/TTd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录