0

我有一个QDateTimeField掩码设置为HH:mm考虑一个用户删除(例如)小时部分的场景,如下所示:

在此处输入图像描述

如果用户清空小时部分并随后按 Enter,则小时部分将重置为 00(这是预期的行为,始终)。

在此处输入图像描述

如果用户清空小时部分并单击其他地方(当QDateTimeField失去焦点时),小时部分仍然是空的,这是我的问题。

在此处输入图像描述

谁能提示我解决这个问题的方法?

4

2 回答 2

1

interpretText()功能可以解决问题。interpretText()在访问其文本之前,您必须调用函数QDateTimeEditor中的setModelData(在您的委托类中)。

根据 Qt文档

此函数解释旋转框的文本。如果自上次解释以来该值发生了变化,它将发出信号。

例子:

void SpinBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
                                   const QModelIndex &index) const
{
    QDateTimeEdit *dateTime = static_cast<QDateTimeEdit*>(editor);
    dateTime->interpretText();
    model->setData(index, dateTime->text(), Qt::EditRole);
}
于 2016-08-04T11:42:06.313 回答
0

My suggestion is to create a action which connect to the signal timeChanged and manually set the time to the correct format.

于 2016-08-04T09:08:42.430 回答