我有这样的课
class GUI : public QWidget, public QThread
当我执行上述操作时,我收到有关连接信号的错误。The error says Reference to "connect" is ambiguous
. 有没有办法从两者继承?
谢谢
你不能。两者都QWidget
继承QThread
(非虚拟地)从QObject
. 因此,您没有虚拟派生,因此没有两个副本QObject
,这会使编译器感到困惑。QObject
是专门这样设计的。看:
据称有些人绕过了这个(现在找不到链接,但它在谷歌上,两周前我遇到了同样的麻烦),但充其量是不安全的。
编辑:最好的方法可能是让另一个对象继承自 QThread 并将该对象保留为GUI
类中的成员。这是大多数人在这件事上所做的解决方法。
QWidgets
和 GUI 相关的对象不能位于与应用程序主线程不同的线程中。你不应该同时继承它们。你也不能调用moveToThread()
一个小部件的功能。
您不能从多个 QObject 继承。
您可以从一个继承并使另一个成为成员变量并从那里工作。
class GUI : public QWidget
{
QThread myThread;
};
你已经命名了你的类 GUI——这是你程序的主 GUI 吗?请参阅 Qt 示例文件夹中的示例 - 它们在GUI和Threads上都有示例程序。