35

初始化 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 的比例进行划分。

4

2 回答 2

52

您可以使用以下代码:

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

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

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

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

于 2013-09-25T07:20:26.780 回答
4

永远不要使用QList<int>() << 1 << 1;变体,因为它真的很慢。始终使用list({1, 1})变体。

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

于 2018-07-02T13:35:38.427 回答