gpt4 book ai didi

c++ - 附加到 QList 的 QList

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:09:14 25 4
gpt4 key购买 nike

我试图在运行时将项目附加到 QList,但运行时出现错误消息。基本上我想做的是制作一个 QList 的 QList 并向每个内部列表添加一些 customClass 对象。这是我的代码:

小部件.h:

class Widget : public QWidget
{
Q_OBJECT

public:
Widget(QWidget *parent = 0);
~Widget();

public slots:
static QList<QList<customClass> > testlist(){
QList<QList<customClass> > mylist;
for(int w=0 ; w<5 ; w++){
mylist.append(QList<customClass>());
}
for(int z=0 ; z<mylist.size() ; z++){
for(int x=0 ; x<10 ; x++){
customClass co = customClass();
mylist.at(z).append(co);
}
}
return mylist;
}
};

自定义类.h:

class customClass
{
public:
customClass(){
this->varInt = 1;
this->varQString = "hello world";
}
int varInt;
QString varQString;
};

主要.cpp:

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
QList<QList<customClass> > list;
list = w.testlist();
w.show();
return a.exec();
}

但是当我尝试编译应用程序时,它给出了这个错误:

error: passing `const QList<customClass>' as `this' argument of `void List<T>::append(const T&) [with T = customClass]' discards qualifiers

我还尝试使用 foreach 插入对象:

foreach(QList<customClass> list, mylist){
for(int x=0 ; x<10 ; x++){
list.append(customClass());
}
}

错误消失了,但没有附加 customClass 对象,我可以通过在 main 中使用调试循环来验证这一点,该循环将内部 QLists 大小显示为零。我做错了什么?

最佳答案

Qt 引用说:

const T & at ( int i ) const

但不是:

T& at ( int i )

所以没有 at 的非常量版本.你必须使用 operator[]反而。

所以改成:

mylist[z].append(co);

它会起作用的。我什至测试了它。

我认为 foreach 版本不起作用,因为在 foreach(QList<customClass> list, mylist)QList<customClass> list不是引用。但是foreach(QList<customClass>& list, mylist)不编译。所以你必须使用正常的 for(...)版本。

关于c++ - 附加到 QList 的 QList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2493297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com