qTime,检查计时器的值?
我有一个计时器,当时间等于某个时间时,即5秒、10秒、12秒。我想让它做点什么qTime,检查计时器的值?,qt,Qt,我有一个计时器,当时间等于某个时间时,即5秒、10秒、12秒。我想让它做点什么 不断检查计时器值以查看其是否与我的值匹配的最佳方法是什么?轮询QTime的时间是个坏主意。您有用于此的QTimer,它使用您平台的硬件计时器设施。将单发QTimer设置为5秒。将其timeout()信号连接到插槽,并在该插槽中为下一个间隔重新编程QTimer。这方面的一般概念是: int intervals[] = {5000, 10000, 12000}; // Alternative: // int interv
不断检查计时器值以查看其是否与我的值匹配的最佳方法是什么?轮询QTime的时间是个坏主意。您有用于此的QTimer,它使用您平台的硬件计时器设施。将单发QTimer设置为5秒。将其timeout()信号连接到插槽,并在该插槽中为下一个间隔重新编程QTimer。这方面的一般概念是:
int intervals[] = {5000, 10000, 12000};
// Alternative:
// int intervals[] = {5000, 5000, 2000};
int currentInterval = 0;
QTimer timer; // Make sure you set this up a single-shot timer.
// ...
// slot
void handleTimeout()
{
++currentInterval;
// You should probably use a QList<int> instead in your real code and query size().
if (currentInterval >= sizeof(intervals) / sizeof(intervals[0])) {
// We're done.
return;
}
timer.start(intervals[currentInterval] - intervals[currentInterval - 1]);
// Alternative:
// timer.start(intervals[currentInterval]);
}
int区间[]={5000,10000,12000};
//备选方案:
//整数区间[]={5000,5000,2000};
int currentInterval=0;
QTimer计时器;//确保你设置了一个单发计时器。
// ...
//槽
void handleTimeout()
{
++电流间隔;
//您可能应该在实际代码和查询大小()中使用QList。
如果(currentInterval>=sizeof(Interval)/sizeof(Interval[0])){
//我们结束了。
返回;
}
定时器启动(间隔[currentInterval]-间隔[currentInterval-1]);
//备选方案:
//定时器启动(间隔[currentInterval]);
}
轮询QTime的时间是个坏主意。您有用于此的QTimer,它使用您平台的硬件计时器设施。将单发QTimer设置为5秒。将其timeout()信号连接到插槽,并在该插槽中为下一个间隔重新编程QTimer。这方面的一般概念是:
int intervals[] = {5000, 10000, 12000};
// Alternative:
// int intervals[] = {5000, 5000, 2000};
int currentInterval = 0;
QTimer timer; // Make sure you set this up a single-shot timer.
// ...
// slot
void handleTimeout()
{
++currentInterval;
// You should probably use a QList<int> instead in your real code and query size().
if (currentInterval >= sizeof(intervals) / sizeof(intervals[0])) {
// We're done.
return;
}
timer.start(intervals[currentInterval] - intervals[currentInterval - 1]);
// Alternative:
// timer.start(intervals[currentInterval]);
}
int区间[]={5000,10000,12000};
//备选方案:
//整数区间[]={5000,5000,2000};
int currentInterval=0;
QTimer计时器;//确保你设置了一个单发计时器。
// ...
//槽
void handleTimeout()
{
++电流间隔;
//您可能应该在实际代码和查询大小()中使用QList。
如果(currentInterval>=sizeof(Interval)/sizeof(Interval[0])){
//我们结束了。
返回;
}
定时器启动(间隔[currentInterval]-间隔[currentInterval-1]);
//备选方案:
//定时器启动(间隔[currentInterval]);
}
我认为您需要一个计时器5秒,一个计时器10秒,一个计时器12秒间隔。我认为您需要一个计时器5秒,一个计时器10秒,一个计时器12秒间隔。我认为您缺少对handleTimeout函数中的timer.start()
的调用。请记住,默认情况下,QTimer不是很精确。由于间隔列表较长,此解决方案将越来越偏离实际时间。最好将QTime与QTimer结合使用。不要使用“当前间隔”来确定当前时间,而是使用QTime对象进行更精确的读取。我认为您缺少对handleTimeout函数中的timer.start()
的调用。请记住,默认情况下,QTIMER不是非常精确的。由于间隔列表较长,此解决方案将越来越偏离实际时间。最好将QTime与QTimer结合使用。使用QTime对象进行更精确的读取,而不是使用“当前间隔”来确定当前时间。