我有一個,掩碼設置爲HH:mm
考慮一個場景清空丟失焦點時,其中用戶刪除(例如)小時部分是這樣的:QDateTimeEdit - 時/分部分復位
如果用戶清空小時段,然後按下回車鍵,小時段重置爲00(,這是預期行爲,始終爲)。
如果用戶清空小時部分,只要按一下其他地方(當失去它的焦點),小部分爲空,這是我的問題。
誰能暗示我的方式來解決這個問題?
我有一個,掩碼設置爲HH:mm
考慮一個場景清空丟失焦點時,其中用戶刪除(例如)小時部分是這樣的:QDateTimeEdit - 時/分部分復位
如果用戶清空小時段,然後按下回車鍵,小時段重置爲00(,這是預期行爲,始終爲)。
如果用戶清空小時部分,只要按一下其他地方(當失去它的焦點),小部分爲空,這是我的問題。
誰能暗示我的方式來解決這個問題?
interpretText()
函數會訣竅。在訪問其文本之前,您必須在setModelData
函數中(在您的委託類中)調用QDateTimeEditor
的interpretText()
。
根據Qt的documentation
此函數把旋轉框的文本。如果自上次解釋後更改了值 ,它將發出信號。
例子:
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);
}
我的建議是創建一個動作,連接到信號timeChanged並手動將時間設置爲正確的格式。
檢查我的回答對解決這個問題的一個更好的辦法 – warunanc