题
我有一堂这样的课
class GUI : public QWidget, public QThread
当我执行上述操作时,我收到有关连接信号的错误。 The error says Reference to "connect" is ambiguous
. 。有没有办法同时继承两者?
谢谢
解决方案
你不能。两个都 QWidget
和 QThread
(非虚拟地)继承自 QObject
. 。因此,您没有虚拟派生,因此有两个副本 QObject
, ,这会让编译器感到困惑。 QObject
是专门这样设计的。看:
- http://lists.trolltech.com/qt-interest/2006-10/msg00711.html
- http://www.qtforum.org/article/23295/problem-opening-the-qfiledialog.html
据称有些人绕过了这个(现在找不到链接,但它在谷歌上,我两周前也遇到了同样的麻烦),但它充其量是不安全的。
编辑:最好的方法可能是让另一个对象继承自 QThread 并将该对象保留为您的成员中的成员 GUI
班级。这是大多数人在这件事上采取的解决方法。
其他提示
和QWidgets
GUI相关对象CON不会在不同的线程不是应用主线程。你不应该继承他们两个。你不能也称小部件的moveToThread()
功能。
您不能从多个的QObject继承。
可以从一个继承和使从那里其他成员变量和工作。
class GUI : public QWidget
{
QThread myThread;
};
您已经命名你的类GUI - 这是你的程序的主界面?见Qt的例子例子文件夹 - 它们在两个 GUI示例程序的一>和线程。
不隶属于 StackOverflow