QSpinBox
有一个singleStep
属性,该属性确定按下向上/向下步按钮时值的变化程度。我正在寻找类似的行为QTimeEdit
auto t = new QTimeEdit ();
t->setDisplayFormat ("m:ss.zzz");
t->setTime ({0,0,1,234});
如果我按此小部件上的向上/向下箭头,时间一次更改 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();
}