首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为我的QStringList的私有QStringList分配一个新的QStringListModel

为我的QStringList的私有QStringList分配一个新的QStringListModel
EN

Stack Overflow用户
提问于 2014-06-25 12:09:18
回答 2查看 942关注 0票数 0

不好意思问这个问题。我浏览了文档并创建了自己的QStringListModel。我需要做的是将QStringList的所有条目赋值为模型的条目(从而将模型的私有成员设置为新的QStringList)。

我完全按照文档创建了模型,所以我不会在这里列出它。我声明我在hpp文件中使用的模型如下:

代码语言:javascript
复制
QAbstractItemModel *oldFilesModel;

即使我像这样在cpp中创建它:

代码语言:javascript
复制
oldFilesModel = new FileListModel(emptyStringList);

现在,我在派生类(FileListModel -它是从QStringListModel派生的)中添加了一个新的公共函数,如下所示:

在hpp中:

代码语言:javascript
复制
void setStringList(QStringList newList);

在cpp中:

代码语言:javascript
复制
void FileListModel::setStringList(QStringList newList)
{
    this->removeRows(0,this->rowCount());
    fileNames = newList;
}

这应该将名为fileNames的私有fileNames设置为QStringList newList,对吗??(不确定这是否是正确的方法,所以任何其他建议都会受到欢迎)。

我的问题是我不能在cpp文件中调用这个函数,因为我的模型是QAbstractItemModel类型的。如果我的对象被定义为基类的类型,那么如何从子类访问这个函数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-25 12:24:30

还不清楚为什么要首先将oldFilesModel声明为QAbstractItemModel --为什么不将其声明为QStringListModel呢?这将立即消除至少一个方面的问题。

但更大的问题是,您似乎要将自己的QStringList数据成员添加到FileListModel中--但是如果它是从QStringListModel派生的,那么它已经有了它以及塞特吸气剂函数。

因此,解决这个问题需要稍微重写一下。具体来说,在FileListModel中不需要使用您自己版本的这些函数,也不需要使用fileNames--创建QStringListModel正是为了避免您自己编写这些函数的麻烦。但回到第一个问题--如果你必须投,那就这么做:

代码语言:javascript
复制
qobject_cast<QStringListModel*>(oldFilesModel)->setStringList(newList);
票数 2
EN

Stack Overflow用户

发布于 2014-06-25 12:23:15

我认为您的方法至少有一个缺陷:在自定义类中隐藏基类的函数QStringListModel::setStringList(const QStringList &)和另一个函数。这是可以的,如果基类中的函数声明为虚拟的,但它不是。您必须做的是,只需要有另一个函数,比如setMyStringList,它将调用基类函数。例如:

代码语言:javascript
复制
void FileListModel::setMyStringList(QStringList newList)
{
    removeRows(0, this->rowCount());
    setStringList(newList); // Calls the base class function.
}

我看不出有什么理由让fileNames留在你的课堂上。您始终可以通过使用QStringListModel::stringList()函数获得字符串列表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24408295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档