如何更改 QTimeEdit 的步长?
How can I change the step size of QTimeEdit?
QSpinBox
有一个 singleStep
属性,它确定按下步骤 up/down 按钮时值的变化量。我正在 QTimeEdit
中寻找类似的行为
auto t = new QTimeEdit ();
t->setDisplayFormat ("m:ss.zzz");
t->setTime ({0,0,1,234});
如果我按此小部件上的 up/down 箭头,时间会每次更改 1 分钟。我想一步一步改为 100 毫秒。
怎么做?
如果您想更改步骤,您必须覆盖 stepBy()
方法。
在下一部分中,如果当前部分是 MSecSection
,我将步长更改为 100ms,在其他部分中,将保持默认步长:
#include <QtWidgets>
class TimeEdit: public QTimeEdit
{
public:
using QTimeEdit::QTimeEdit;
void stepBy(int steps) override{
if(currentSection() == MSecSection){
setTime(time().addMSecs(steps*100));
return;
}
QTimeEdit::stepBy(steps);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
TimeEdit t;
t.setDisplayFormat ("m:ss.zzz");
t.setTime ({0,0,1,234});
t.show();
return a.exec();
}
下一个例子是如果你想要任何部分的步长为 100 毫秒:
#include <QtWidgets>
class TimeEdit: public QTimeEdit
{
public:
using QTimeEdit::QTimeEdit;
void stepBy(int steps) override{
setTime(time().addMSecs(steps*100));
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
TimeEdit t;
t.setDisplayFormat ("m:ss.zzz");
t.setTime ({0,0,1,234});
t.show();
return a.exec();
}
QSpinBox
有一个 singleStep
属性,它确定按下步骤 up/down 按钮时值的变化量。我正在 QTimeEdit
auto t = new QTimeEdit ();
t->setDisplayFormat ("m:ss.zzz");
t->setTime ({0,0,1,234});
如果我按此小部件上的 up/down 箭头,时间会每次更改 1 分钟。我想一步一步改为 100 毫秒。
怎么做?
如果您想更改步骤,您必须覆盖 stepBy()
方法。
在下一部分中,如果当前部分是 MSecSection
,我将步长更改为 100ms,在其他部分中,将保持默认步长:
#include <QtWidgets>
class TimeEdit: public QTimeEdit
{
public:
using QTimeEdit::QTimeEdit;
void stepBy(int steps) override{
if(currentSection() == MSecSection){
setTime(time().addMSecs(steps*100));
return;
}
QTimeEdit::stepBy(steps);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
TimeEdit t;
t.setDisplayFormat ("m:ss.zzz");
t.setTime ({0,0,1,234});
t.show();
return a.exec();
}
下一个例子是如果你想要任何部分的步长为 100 毫秒:
#include <QtWidgets>
class TimeEdit: public QTimeEdit
{
public:
using QTimeEdit::QTimeEdit;
void stepBy(int steps) override{
setTime(time().addMSecs(steps*100));
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
TimeEdit t;
t.setDisplayFormat ("m:ss.zzz");
t.setTime ({0,0,1,234});
t.show();
return a.exec();
}