Как правильно инициализировать QList?

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

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

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

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

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

2 ответов


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

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

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

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

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


никогда не используйте QList<int>() << 1 << 1; вариант, так как он очень медленно. используйте list({1, 1}) вариант.

источник: https://www.angrycane.com.br/en/2018/06/19/speeding-up-cornercases/