Как правильно инициализировать 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/