我有一个QDateTimeField
掩码设置为HH:mm
考虑一个用户删除(例如)小时部分的场景,如下所示:
如果用户清空小时部分并随后按 Enter,则小时部分将重置为 00(这是预期的行为,始终)。
如果用户清空小时部分并单击其他地方(当QDateTimeField
失去焦点时),小时部分仍然是空的,这是我的问题。
谁能提示我解决这个问题的方法?
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);
}
My suggestion is to create a action which connect to the signal timeChanged and manually set the time to the correct format.