Qt中使用线程时的注意事项(线程没起作用的原因)
2017-01-17 17:29
357 查看
今天偶然发现,运行程序时程序输出窗口中有如下提示:
QObject::startTimer: Timers can only be used with threads started with QThread
也就是当对象有父对象时,是不可以移到其他线程当中去的。
代码如下:m_Flower为自定义对象,flowerThead为线程。
**不起作用的代码:
**修改后起作用的代码:
注意:因m_Flower没有指定父对象,需要在析构函数中删除此m_Flowe对象
QObject::startTimer: Timers can only be used with threads started with QThread
也就是当对象有父对象时,是不可以移到其他线程当中去的。
代码如下:m_Flower为自定义对象,flowerThead为线程。
**不起作用的代码:
m_Flower=new DispatchFlower(this); flowerThread=new QThread(); m_Flower->moveToThread(flowerThread); connect(this,SIGNAL(sendQuery_GetRTSheetList(QString)),m_Flower,SLOT(getRTDispatchSheetList(QString))); connect(m_Flower,SIGNAL(haveGotDispatchSheetList(QList<DispatchSheet>&)),this,SLOT(editMultiSheets(QList<DispatchSheet>&))); flowerThread->start();
**修改后起作用的代码:
m_Flower=new DispatchFlower(); flowerThread=new QThread(); m_Flower->moveToThread(flowerThread); connect(this,SIGNAL(sendQuery_GetRTSheetList(QString)),m_Flower,SLOT(getRTDispatchSheetList(QString))); connect(m_Flower,SIGNAL(haveGotDispatchSheetList(QList<DispatchSheet>&)),this,SLOT(editMultiSheets(QList<DispatchSheet>&))); flowerThread->start();
注意:因m_Flower没有指定父对象,需要在析构函数中删除此m_Flowe对象
相关文章推荐
- QT 线程中使用子线程操作注意事项
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
- Qt中使用show函数的注意事项。
- Qt中如何使用样式表QPalette以及相关注意事项
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet)good
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
- QT 使用注意事项
- Qt中如何使用样式表QPalette以及相关注意事项
- 检测Qt for symbian前后台切换 以及 信号槽使用的注意事项
- Qt 多线程与数据库操作需要注意的几点问题(QSqlDatabase对象只能在当前线程里使用)
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
- Qt中如何使用样式表QPalette以及相关注意事项
- Qt StyleSheet使用的一些注意事项
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
- qt使用QWT注意事项
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
- Qt中如何使用样式表QPalette以及相关注意事项
- Qt中如何使用样式表QPalette以及相关注意事项
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())