2016-08-04 93 views
0

我有一個,掩碼設置爲HH:mm考慮一個場景清空丟失焦點時,其中用戶刪除(例如)小時部分是這樣的:QDateTimeEdit - 時/分部分復位

enter image description here

如果用戶清空小時段,然後按下回車鍵,小時段重置爲00(,這是預期行爲,始終爲)。

enter image description here

如果用戶清空小時部分,只要按一下其他地方(當失去它的焦點),小部分爲空,這是我的問題。

enter image description here

誰能暗示我的方式來解決這個問題?

回答

1

interpretText()函數會訣竅。在訪問其文本之前,您必須在setModelData函數中(在您的委託類中)調用QDateTimeEditorinterpretText()

根據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); 
} 
0

我的建議是創建一個動作,連接到信號timeChanged並手動將時間設置爲正確的格式。

+1

檢查我的回答對解決這個問題的一個更好的辦法 – warunanc