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

What is the right way to initialize a QList?

本文关键字:方法 是什么 QList 初始化      更新时间:2023-10-16

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

您可以使用以下代码:

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

或带有 C++11 的初始值设定项列表:

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

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

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

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