我正在使用 Qt 4.7。我有一个类是 QAbstractTableModel 的子类。我需要一个名为 intlist 的本地 QList 来跟踪标题为特定值的任何列。这些 header 存储在名为 headerNames 的 QStringList 中。现在我有这个:
QVariant myTableClass::data(const QModelIndex &index, int role) const
{
if(headerNames[index.column()] == "TriggerText")
{
this->intlist.append(index.column();
}
return QVariant;
}
当我尝试构建它时,它给了我错误“C2663:‘QList::append’:2 个重载没有‘this’指针的合法转换”。根据我在网上找到的类似问题的提示,我尝试了几种不同的方法,包括:仅使用 intlist 而不是 this->intlist;将 int 设置为 index.column() 的值,然后在 append 中使用该 int 代替;并创建一个单独的非常量函数来调用附加值。他们都给出了同样的错误。我完全不知道该怎么做。有人可以帮忙吗?谢谢!
最佳答案
如果您绝对需要从 const
成员函数中修改成员,您可以将 mutable
添加到您要修改的成员的声明中。
该成员可能应该是私有(private)的,并且该成员的状态不应影响公开给您类的用户的公共(public)状态,他们希望您的成员函数对该对象没有影响。
参见 this page on MSDN ,或者 Bjarne Stroustrup 的 The C++ Programming Language Fourth Edition
中的第 16.2.9.3 节。 mutable
在 C++11 之前可用。
关于c++ - Qt - 如何从 const 函数追加到本地列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22233353/