timerEvent不响应问题

花了两天时间找我的QObject::startTimer()定时到了之后却不进入void timerEvent(QTimerEvent *event);的问题,很是头大,最终找到了原因,还是自己的Qt学的不到家。

在我的这个文件中还有一个bool event(QEvent* e),我在这个里面的最后返回了return true;所以定时的事件就丢了,上代码看看:

#include "qtimereventtest.h"
#include 

using namespace std;
QTimerEventTest::QTimerEventTest(QWidget *parent, Qt::WFlags flags)
	: QMainWindow(parent, flags)
{
	ui.setupUi(this);
	int tid = startTimer(30);
}

QTimerEventTest::~QTimerEventTest()
{

}

void QTimerEventTest::timerEvent(QTimerEvent *event)
{
	cout << "timerID:" << event->timerId();
	cout << "Retest a:" << ReTest::instance()->a << endl;
	int a = 1;
}

bool QTimerEventTest::event(QEvent* e)
{
    if (e->type() == KEvent::Idle)  //KEvent::Idle这个是公司自己定义的,可以自己换别的实验
	{
	    ...(中间代码不重要)
    }
	return QObject::event(e);  //原来返回的是return true;所以QTimerEvent丢了不处理
}

我的QTimerEvent:

#ifndef QTIMEREVENTTEST_H
#define QTIMEREVENTTEST_H

#include 
#include 
#include "retest.h"
#include "ui_qtimereventtest.h"

class QTimerEventTest : public QMainWindow
{
	Q_OBJECT

public:
	QTimerEventTest(QWidget *parent = 0, Qt::WFlags flags = 0);
	~QTimerEventTest();
    bool event(QEvent* e);

protected:
	void timerEvent(QTimerEvent *event);

private:
	Ui::QTimerEventTestClass ui;
};

#endif // QTIMEREVENTTEST_H

 

你可能感兴趣的:(C++,Qt)