【发布时间】:2012-02-02 22:43:56
【问题描述】:
尝试在基类中创建一个小部件,而根据我们调用的派生类,小部件中唯一会改变的是标题。
class BaseView : public QWidget {
Q_OBJECT
public:
explicit BaseView(QWidget *parent = 0);
protected:
QString title;
virtual QString getTitle() const {
return title;
}
BaseView.cpp:
BaseView::BaseView(QWidget *parent) : QWidget(parent) {
title = "test"
}
void BaseView::createTopWidget() {
QGroupBox *topWidget = new QGroupBox(getTitle());
....
}
派生类头中的:
class DerivedView : public BaseView {
Q_OBJECT
public:
explicit DerivedView(QWidget *parent = 0);
protected:
QString getTitle() const {
return title;
}
在派生的构造函数中,我将标题设置为“正确”。
当我通过创建 DerivedView 运行程序时,标题仍然是“测试”。我该怎么做才能从基类调用并获取派生类值?
【问题讨论】:
-
getTitle和getTopWidgetMessage是什么关系?即,您将getTitle定义为虚拟但从不在任何地方调用它——有什么意义? -
哦,他们应该是一样的。在本例中重命名了它们,但忘记全部重命名。