3

假设我拥有将一个小部件(我将QLineEdit在本例中使用 a)提升到一个名为MyClass. MyClass继承QWidget并定义了自己的功能。

当我将 提升QLineEdit为 的实例时MyClass,幕后会发生什么?我知道 ,QLineEditQWidget, 所以MyClassQLineEdit在那个因素中是相关的。但是属性会发生什么?是否QLineEdit仍然保留特定于 a 的属性QLineEdit?它如何改变“类型”?

除了QLineEdit仍然保留QWidgetMyClass从类继承)的属性这一事实之外,我不确定小部件的这种提升背后会发生什么。

4

2 回答 2

2

由于以公共方式MyClass扩展QLineEdit,它继承了所有属性并能够完全替换QLineEdit. Qt Creator 只是改变了实现。这正是多态性的“目的”。Qt Creator 对您的其他方法一无所知,也不需要,MyClass它将QLineEdit. 之所以有效,是因为MyClass is-a QLineEdit

于 2012-09-09T21:24:45.737 回答
2

当您从 QLineEdit 提升到 MyClass 时,如果有:

QLineEdit *lineedit=new QLineEdit(centralWidget);

你将会有:

MyClass * lineedit=new MyClass(centralWidget);

您可以以正常方式从 MyClass 调用您的函数,您可以打开 ui.h 文件并亲自查看。

于 2012-09-10T01:25:34.810 回答