9

我有这样的课

class GUI : public QWidget, public QThread

当我执行上述操作时,我收到有关连接信号的错误。The error says Reference to "connect" is ambiguous. 有没有办法从两者继承?

谢谢

4

3 回答 3

13

你不能。两者都QWidget继承QThread(非虚拟地)从QObject. 因此,您没有虚拟派生,因此没有两个副本QObject,这会使编译器感到困惑。QObject是专门这样设计的。看:

据称有些人绕过了这个(现在找不到链接,但它在谷歌上,两周前我遇到了同样的麻烦),但充其量是不安全的。

编辑:最好的方法可能是让另一个对象继承自 QThread 并将该对象保留为GUI类中的成员。这是大多数人在这件事上所做的解决方法。

于 2010-04-07T20:59:56.097 回答
0

QWidgets和 GUI 相关的对象不能位于与应用程序主线程不同的线程中。你不应该同时继承它们。你也不能调用moveToThread()一个小部件的功能。

于 2014-01-22T14:57:09.637 回答
-1

您不能从多个 QObject 继承。

您可以从一个继承并使另一个成为成员变量并从那里工作。

class GUI : public QWidget 
{
  QThread myThread;
};

你已经命名了你的类 GUI——这是你程序的主 GUI 吗?请参阅 Qt 示例文件夹中的示例 - 它们在GUIThreads上都有示例程序。

于 2010-04-07T21:07:22.710 回答