gpt4 book ai didi

c++ - QTimeEdit 如何在分钟递增时递增到下一个小时?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:07:38 27 4
gpt4 key购买 nike

我有一个 QTimeEdit 显示 hh:mm

这个小部件的行为非常烦人:当值为 09:59 时,没有简单的方法可以移动到 10:00。右侧的旋转框控件仅适用于分钟或小时。当您将光标放在分钟上时,如果值为 59,则不允许递增。

要从 09:59 移动到 10:00,您需要将 59 递减到 00 然后将 09 递增到 10...这真的很烦人。

是否没有选项可以让用户使用旋转框控件将分钟递增 1,然后将值从 09:59 更改为 10:00单击一下??

最佳答案

设置wrappingtrue

关于小时部分的自动更改,在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));
}
}

关于c++ - QTimeEdit 如何在分钟递增时递增到下一个小时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47188200/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com