QSpinBox
具有singleStep
属性,该属性确定在按下逐步上/下按钮时值会改变多少。我正在QTimeEdit
auto t = new QTimeEdit ();
t->setDisplayFormat ("m:ss.zzz");
t->setTime ({0,0,1,234});
如果我按此小部件上的上/下箭头,则时间每次更改1分钟。我想一步一步改为100ms。
如何?
答案 0 :(得分:0)
如果要更改步骤,则必须覆盖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 ms:
#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();
}