假设我拥有将小部件(我将在此示例中使用QLineEdit
)推广到名为MyClass
的类所需的一切。 MyClass
继承自QWidget
并定义自己的函数。
当我将QLineEdit
提升为MyClass
的实例时,幕后会发生什么?我知道QLineEdit
是QWidget
的孩子,因此MyClass
和QLineEdit
与该因素相关。但是这些物业会发生什么? QLineEdit
是否仍然保留特定于QLineEdit
的属性?它如何改变“类型”?
除了QLineEdit
仍然保留QWidget
(MyClass
的属性继承自该类的属性)之外,我不确定此小部件推广背后会发生什么。
答案 0 :(得分:2)
由于MyClass
以公开方式扩展QLineEdit
,因此它会继承所有属性,并且能够完全替换QLineEdit
。 Qt Creator只是改变了实现。这正是多态性“是为了”。 Qt Creator对您的其他方法一无所知,也不需要,它将MyClass
视为QLineEdit
。这可行,因为MyClass
是-a QLineEdit
。
答案 1 :(得分:2)
当您从QLineEdit升级到MyClass时,如果有:
QLineEdit *lineedit=new QLineEdit(centralWidget);
你将拥有:
MyClass * lineedit=new MyClass(centralWidget);
你可以通过正常的方式从MyClass调用你的函数,你可以打开ui.h文件并自己查看。