C++ 如何从Qt类继承?

C++ 如何从Qt类继承?,c++,qt,inheritance,C++,Qt,Inheritance,我需要创建一个从QTextEdit继承的对象。问题是,每次我尝试从它继承时,都会出现以下错误: 错误C2248:“QWidget::operator=”:无法从类“QWidget”访问私有声明成员 我试着定义操作符=,但没有任何效果。即使我还定义了一个复制构造函数。我总是遇到这个错误。QWidget类是QObject的子类,它使用Q\u DISABLE\u copy保护宏禁用了复制和分配操作。当您从QObject(或任何派生类)继承时,您定义的复制构造函数或赋值运算符尝试访问基类的计数器部分,但

我需要创建一个从QTextEdit继承的对象。问题是,每次我尝试从它继承时,都会出现以下错误:

错误C2248:“QWidget::operator=”:无法从类“QWidget”访问私有声明成员


我试着定义
操作符=
,但没有任何效果。即使我还定义了一个
复制构造函数
。我总是遇到这个错误。

QWidget
类是
QObject
的子类,它使用
Q\u DISABLE\u copy
保护宏禁用了复制和分配操作。当您从
QObject
(或任何派生类)继承时,您定义的复制构造函数或赋值运算符尝试访问基类的计数器部分,但它们在
QObject
中是私有的,无法访问。这是故意的

作为一个副作用,从
QObject
继承的类的对象不能存储在STL或Qt容器(向量、列表等)中。只能存储指针或引用。因为获取/设置对象需要使用复制构造函数进行复制,这是不可能的


如果您需要从
QWidget
继承和重载
operator=
和/或
copy constructor
,您可以通过为这些任务添加显式方法来实现,如
isEqual
clone
(尽管克隆
QObject
不是一种方法).

QWidget
类是
QObject
的一个子类,它使用
Q\u DISABLE\u copy
保护宏禁用复制和分配操作。当您从
QObject
(或任何派生类)继承时,您定义的复制构造函数或赋值运算符尝试访问基类的计数器部分,但它们在
QObject
中是私有的,无法访问。这是故意的

作为一个副作用,从
QObject
继承的类的对象不能存储在STL或Qt容器(向量、列表等)中。只能存储指针或引用。因为获取/设置对象需要使用复制构造函数进行复制,这是不可能的


如果您需要从
QWidget
继承和重载
operator=
和/或
copy constructor
,您可以通过为这些任务添加显式方法来实现,如
isEqual
clone
(尽管克隆
QObject
不是一种方法).

这个答案可以通过明确说明(或a)修复是什么来改进。现在它只是解释错误发生的原因。您声明每个Qt类都是
QObject
的子类,这是不正确的。并非所有的Qt类都是
QObject
的子类@RakibulHasan它并不是说每个Qt类都是
QObject
的子类。您是否坚持认为,例如
QPixmap
是一个Qt类,是
QObject
的子类?@RakibulHasan在文档的这一部分中,
Qt object
object
的意思不同,后者是一个类的实例。他们使用的术语有点误导。RakibulHasan,AndrewMedico:Qt文档没有被破坏,只是没有正确阅读。Qt类分为多个组。Qt对象类和Qt数据类是两个最大的组。Qt对象类都是从QObject派生的,并采用信号/插槽机制。Qt数据类大多只是专门的数据容器,但几乎所有类都使用隐式共享机制,因此您可以传递值,而不必太担心性能损失。这个答案可以通过明确说明(或a)修复是什么来改进。现在它只是解释错误发生的原因。您声明每个Qt类都是
QObject
的子类,这是不正确的。并非所有的Qt类都是
QObject
的子类@RakibulHasan它并不是说每个Qt类都是
QObject
的子类。您是否坚持认为,例如
QPixmap
是一个Qt类,是
QObject
的子类?@RakibulHasan在文档的这一部分中,
Qt object
object
的意思不同,后者是一个类的实例。他们使用的术语有点误导。RakibulHasan,AndrewMedico:Qt文档没有被破坏,只是没有正确阅读。Qt类分为多个组。Qt对象类和Qt数据类是两个最大的组。Qt对象类都是从QObject派生的,并采用信号/插槽机制。Qt数据类大多只是专门的数据容器,但几乎所有类都使用隐式共享机制,因此您可以传递值,而不必太担心性能损失。