0

ユーザーが次のような時間セクションを削除するシナリオQDateTimeFieldを考えてみましょう:HH:mm

ここに画像の説明を入力

ユーザーが時間セクションを空にしてから Enter キーを押すと、時間セクションは 00 にリセットされます (これは常に予期される動作です)。

ここに画像の説明を入力

ユーザーが時間セクションを空にして別の場所をクリックした場合 (QDateTimeFieldフォーカスを失った場合)、時間セクションは空のままです。これが私の問題です。

ここに画像の説明を入力

この問題に取り組む方法を教えてくれる人はいますか?

4

2 に答える 2

1

interpretText()関数がそのトリックを行います。そのテキストにアクセスする前に、関数内 (デリゲート クラス内) でを呼び出す必要interpretText()があります。QDateTimeEditorsetModelData

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);
}
于 2016-08-04T11:42:06.313 に答える
0

私の提案は、信号 timeChanged に接続し、手動で時刻を正しい形式に設定するアクションを作成することです。

于 2016-08-04T09:08:42.430 に答える