Próbuję dołączyć elementy do QList w czasie wykonywania, ale jestem uruchomiony komunikat o błędzie. Zasadniczo próbuję zrobić QList QLists i dodać kilka obiektów customClass do każdej z wewnętrznych list. Oto mój kod:Dołączanie do QList z QList
widget.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;
}
};
customclass.h:
class customClass
{
public:
customClass(){
this->varInt = 1;
this->varQString = "hello world";
}
int varInt;
QString varQString;
};
main.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();
}
Ale gdy próbuję skompilować aplikację to wydziela ten błąd:
error: passing `const QList<customClass>' as `this' argument of `void List<T>::append(const T&) [with T = customClass]' discards qualifiers
że próbował również wkładania obiektów za pomocą foreach:
foreach(QList<customClass> list, mylist){
for(int x=0 ; x<10 ; x++){
list.append(customClass());
}
}
Błąd zniknęło, lecz obiekty CustomClass nie zostały dołączone, może zweryfikować, że dzięki zastosowaniu pętli w debugowania głównego, które pokazuje wewnętrzne QLists rozmiary jak zero. Co ja robię źle?
Może powinieneś powiedzieć: "Ale kiedy próbuję skompilować aplikację" zamiast: "Ale kiedy próbuję uruchomić aplikację". Uruchamianie i kompilowanie to dwie różne rzeczy, o ile wiem. –
Edytowane w celu naprawienia tej części. –
Usuń słowo kluczowe static z definicji listy testowej() lub przenieś listę testową do publicznej z publicznych gniazd. Nie sądzę, że Qt obsługuje statyczne sloty. – erelender