我在互联网上看到说子类化(即从QThread派生一个类),然后重写run函数来执行所需任务不是使用QThread的正确方式。但我在一些书籍和Qt文档中读到要使用子类化的方式?
你能告诉我为什么不应该使用子类化的方式吗?对我来说,子类化QThread是使用线程的简单方法(因为我是初学者)。
谢谢。
你能告诉我为什么不应该使用子类化的方式吗?对我来说,子类化QThread是使用线程的简单方法(因为我是初学者)。
谢谢。
moveToThread
使对象在不同的线程中具有不同的事件循环。"while(true)"
类型的线程,这种方法无法奏效,但在Qt中通常可以避免这种情况。QThread被设计并且旨在作为操作系统线程的接口或者控制点而使用,而不是放置想要在线程中运行的代码的地方。我们面向对象的程序员使用子类是因为我们想要扩展或者专门化基类的功能。我能够想到唯一合理的子类化QThread的原因是添加QThread没有的功能,例如提供一个指针来用作线程栈的内存,或者可能添加实时接口/支持。下载文件的代码,或者查询数据库的代码,或者进行任何其他处理的代码都不应该被添加到QThread的子类中;它应该被封装在自己的对象中。
更多细节请查看此处...