web-dev-qa-db-ja.com

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で分割するようです。

30
msgmaxim

次のコードを使用できます。

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

またはC++ 11を使用した初期化子リスト:

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

後者は、gccの-std = c ++ 0xまたは-std = c ++ 11オプションで有効にできます。また、初期化リストのサポートがQListコンストラクターに追加されている場合は、関連するQtバージョンが必要になります。

47
lpapp

QList<int>() << 1 << 1;バリアントを使用しないでください。本当に遅いので。常にlist({1, 1})バリアントを使用してください。

ソース: https://www.angrycane.com.br/en/2018/06/19/speeding-up-cornercases/

1
Tomaz Canabrava