Qt TableView 日期格式转换:将日期格式转换为 yyyy-MM-dd
在 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'的格式显示和保存。请根据你自己的实际需求进行适当的修改和调整。
原文地址: https://www.cveoy.top/t/topic/TTd 著作权归作者所有。请勿转载和采集!