QDateTimeEdit - Hour/Minutes 部分在失去焦点时重置为空

QDateTimeEdit - Hour/Minutes sections resets to empty when focus is lost

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

如果用户清空小时部分并随后按回车键,小时部分将重置为 00(这是预期的行为,总是)。

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

任何人都可以提示我解决这个问题的方法吗?

我的建议是创建一个连接到信号 timeChanged 的​​动作,并手动将时间设置为正确的格式。

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

根据 Qt documentation

This function interprets the text of the spin box. If the value has changed since last interpretation it will emit signals.

示例:

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);
}