セットwrappingからtrue
です。時間区間の自動変更について
、このようなのサブクラスQTimeEditにstepBy
を再実装:
MyTimeEdit.h
#ifndef MYTIMEEDIT_H
#define MYTIMEEDIT_H
#include <QTimeEdit>
class MyTimeEdit : public QTimeEdit
{
Q_OBJECT
public:
explicit MyTimeEdit(QWidget *parent = nullptr);
void stepBy(int steps) override;
};
#endif // MYTIMEEDIT_H
MyTimeEdit.cpp
#include "MyTimeEdit.h"
MyTimeEdit::MyTimeEdit(QWidget *parent) : QTimeEdit(parent)
{
setWrapping(true);
}
void MyTimeEdit::stepBy(int steps)
{
QTime cur = time();
QTimeEdit::stepBy(steps);
if (currentSection() == QDateTimeEdit::MinuteSection) {
int m = cur.minute();
if ((m == 0) && (steps < 0))
setTime(time().addSecs(-3600));
else if ((m == 59) && (steps > 0))
setTime(time().addSecs(3600));
}
else if (currentSection() == QDateTimeEdit::SecondSection) {
int s = cur.second();
if ((s == 0) && (steps < 0))
setTime(time().addSecs(-60));
else if ((s == 59) && (steps > 0))
setTime(time().addSecs(60));
}
}
ニース!このコードをすべて記述しなければならないのは残念です。特にこれを秒単位で動作させたい場合は....さらに、 'QDateTimeEdit'(これは深夜の後に自動的に日数を増やすことができる)でスマートに動作させたい場合は... – jpo38
@ jpo38、私は全く同意しますあなたと。これはビルトイン機能でなければなりません。 – scopchanov
提出qtbug:https://bugreports.qt.io/browse/QTBUG-64379 – jpo38