QObject::startTimer: QTimer can only be used with threads&nbs
(2015-01-13 14:24:22)
标签:
itqtstarttimeronlyqthread |
分类: Qt |
运行Qt程序时,可能会有这样的打印:
Command()
// 这里书写方法,实现放在类中了
{
m_pThread = new MyThread;
m_pThread->start();
}
MyThread
*m_pThread;
static Command
cmd;
return
&cmd;
static Command *pCmd =
new Command;
return pCmd;
QObject::startTimer: QTimer can only be used with threads
started with QThread
网上看了很多种解决方法,但发现都不能解决我的问题,所以本文说的解决方法不一定能解决您的问题,但一定可以解决相同情况的问题。
我的代码是这样的:
class MyThread : public QThread
...
class Command : public QObject
{
public:
private:
};
Command* GetCommand()
{
}
Command没有使用单例的模式,但为了都能获得全局唯一的实例,定义了GetCommand函数,函数中用static的方法,保证每次调用都返回的是同一个指针。
思路没有问题,编译也正常通过,也可以运行,但关闭程序后就会打印标题中所示的错误。
网上的方法并没有解决我的问题,经过逐行检查后发现是GetCommand函数除了问题,只要把该函数的实现改为:
Command* GetCommand()
{
}
这样问题就结局了。
问题解决了,原因是什么呢,这和还有待各位大神指教,但我怀疑static的实例是放在不同线程中的,地址段也不同,造成无法访问或机制上的问题。好了,就到这吧!看到这篇文字的童鞋,希望能解决您的问题!

加载中…