web-dev-qa-db-fra.com

Quelle est la bonne façon d'initialiser une QList?

Quelle est la bonne façon d'initialiser QList? Je veux raccourcir ce code:

QSplitter splitter;
QList<int> list;
list.append(1);
list.append(1);
splitter.setSizes(list);

Mais quand j'utilise l'initialisation de std :: list, cela ne semble pas fonctionner:

splitter.setSizes(QList<int>::fromStdList(std::list<int>(1, 1)));

Dans ce dernier cas, le séparateur semble se diviser dans un rapport 1: 0.

30
msgmaxim

Vous pouvez utiliser le code suivant:

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

ou liste d'initialisation avec C++ 11:

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

Vous pouvez activer ce dernier avec l'option -std = c ++ 0x ou -std = c ++ 11 pour gcc. Vous aurez également besoin de la version Qt appropriée pour celle où la prise en charge de la liste d'initialisation a été ajoutée au constructeur QList.

47
lpapp

N'utilisez jamais la variante QList<int>() << 1 << 1;, car elle est vraiment lente. utilisez toujours la variante list({1, 1}).

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

1
Tomaz Canabrava