最近遇到一个问题,就是关于QTimer设置了10ms,结果不生效,很头疼啊,查了快一天了,终于知道为什么了?
先说下QTimer的使用方法:
m_delayHideTimer这是QTimer的对象。
connect(&m_delayHideTimer, SIGNAL(timeout()), this, SLOT(slotHideMenu())); //时间耗尽就会响应后面的回调函数。
m_delayHideTimer.setInterval(100) //重新设置定时器的时间。
m_delayHideTimer.stop(); //停掉定时器
m_delayHideTimer.start(50);//开始定时器
其他的用法,查看QT asssistant就知道了不多啰嗦 上重点:
为什么10ms的精度不生效:
这里说下QT的源码,里面关于定时器的实现:
在QT的qeventdispatcher_win.cpp 文件里,有个函数具体如下:
void QEventDispatcherWin32Private::registerTimer(WinTimerInfo *t)
{
Q_ASSERT(internalHwnd);
Q_Q(QEventDispatcherWin32);
int ok = 0;
calculateNextTimeout(t, qt_msectime());
uint interval = t->interval;
if (interval == 0u)