2013-09-25 30 views
28

Jaki jest właściwy sposób inicjowania QList? Chcę, aby ten kod krótszy:Jaki jest właściwy sposób inicjowania QList?

QSplitter splitter; 
QList<int> list; 
list.append(1); 
list.append(1); 
splitter.setSizes(list); 

Ale kiedy używać inicjalizacji z std :: liście, to nie wydaje się działać:

splitter.setSizes(QList<int>::fromStdList(std::list<int>(1, 1))); 

W ostatnim przypadku, rozdzielacz wydaje się podzielić w stosunku 1: 0.

Odpowiedz

37

można użyć następującego kodu:

QList<int> list = QList<int>() << 1 << 1; 

lub inicjator listę C++ 11:

QList<int> list({1, 1}); 

można włączyć drugi z -std = C++ 0x lub - std = C++ 11 opcja dla gcc. Będziesz także potrzebować odpowiedniej wersji Qt, do której dodano obsługę listy inicjalizatorów do konstruktora QList.

+0

Używając Qt 5.2, rzuca 'error: expected expression QList list2 ({1, 1});' –

+0

@ ꜱᴀᴍᴏᴛʜ: potrzebujesz 'CONFIG + = C++ 11'. – lpapp

+0

I chociaż został on automatycznie włączony. Dziękuję Ci ! –

Powiązane problemy