提问的动机
我正在阅读有关 模型视图的教程(使用模型的段落)在 Qt 中使用模型。该示例显示以下代码:
//Header file
class StringListModel : public QAbstractListModel
//main.cpp
QAbstractItemModel *model = new StringListModel(numbers);
用下面的解释。
请注意,StringListModel 被声明为 QAbstractItemModel。这允许我们使用模型的抽象接口,并确保代码仍然有效,即使我们用不同的模型替换字符串列表模型。
我这样解释他们的答案:
您可以开发您的项目model
,如果您需要更改底层数据结构,您只需这样做:
//Header file
class NewStringListModel : public QAbstractListModel
//main.cpp
//QAbstractItemModel *model = new StringListModel(numbers); Stoped using this, old
QAbstractItemModel *model = new NewStringListModel(numbers); //complete model change with just a single line
广义的
这被认为是指针转换吗?
如果子类实现了基类中不存在的方法,那会造成问题吗?
它会是这样的:
pointerToParent->childMethodNotExistingInParent()
- 这是一个不好的做法吗?如果不是,为什么不呢?