2013-09-25 11 views
28

Каков правильный способ инициализации QList? Я хочу, чтобы сделать этот код короче:Каков правильный способ инициализации QList?

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

Но когда я использую инициализацию из станда :: списка, не кажется, что работает:

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

В последнем случае, сплиттер, кажется, разделить в соотношении 1: 0.

ответ

37

Вы можете использовать следующий код:

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

или инициализатора список с C++ 11:

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

Вы можете включить последний с -std = C++ 0x или - std = C++ 11 для gcc. Вам также понадобится соответствующая версия Qt для этого, где поддержка списка инициализаторов была добавлена ​​в конструктор QList.

+0

Использование Qt 5.2 it throws 'error: ожидаемое выражение QList list2 ({1, 1});' –

+0

@ ꜱᴀᴍᴏᴛʜ: вам нужно 'CONFIG + = C++ 11'. – lpapp

+0

Я, хотя он был автоматически включен. Спасибо ! –