2016-08-04 8 views
0

フォーカスが失われたときに空にリセットする場合、(例えば)ユーザの削除、このような時間区間:QDateTimeEdit - 時間/分のセクションでは、私はシナリオを検討し<code>HH:mm</code>として設定されたマスクとを有する

enter image description here

場合ユーザーは時間セクションを空にしてEnterキーを押し、時間セクションは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

関連する問題