在QtCreator中推广小部件会发生什么?

时间:2012-09-09 21:17:42

标签: qt inheritance

假设我拥有将小部件(我将在此示例中使用QLineEdit)推广到名为MyClass的类所需的一切。 MyClass继承自QWidget并定义自己的函数。

当我将QLineEdit提升为MyClass的实例时,幕后会发生什么?我知道QLineEditQWidget的孩子,因此MyClassQLineEdit与该因素相关。但是这些物业会发生什么? QLineEdit是否仍然保留特定于QLineEdit的属性?它如何改变“类型”?

除了QLineEdit仍然保留QWidgetMyClass的属性继承自该类的属性)之外,我不确定此小部件推广背后会发生什么。

2 个答案:

答案 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文件并自己查看。