初始化QList的正确方法是什么?

时间:2013-09-25 07:12:19

标签: c++ qt 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 个答案:

答案 0 :(得分:47)

您可以使用以下代码:

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

或使用C ++ 11的初始化列表:

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

您可以使用-std = c ++ 0x或-std = c ++ 11选项为gcc启用后者。您还需要相关的Qt版本,其中初始化列表支持已添加到QList构造函数中。

答案 1 :(得分:1)

请不要使用QList<int>() << 1 << 1;变体,因为它确实很慢。 始终使用list({1, 1})变体。

来源:https://www.angrycane.com.br/en/2018/06/19/speeding-up-cornercases/