2013-09-25 16 views
28

Qual è il modo corretto per inizializzare QList? Voglio fare questo codice più corto:Qual è il modo giusto per inizializzare una QList?

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

Ma quando io uso l'inizializzazione da std :: list, non sembra funzionare:

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

In quest'ultimo caso, lo splitter sembra dividere in rapporto 1: 0.

risposta

37

è possibile utilizzare il seguente codice:

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

o inizializzazione lista con C++ 11:

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

È possibile attivare quest'ultima con la -std = C++ 0x o - std = C++ 11 opzione per gcc. Sarà inoltre necessaria la versione di Qt pertinente per quello in cui il supporto dell'elenco di inizializzazione è stato aggiunto al costruttore QList.

+0

Usando Qt 5.2 gira 'errore: espressione attesa QList lista2 ({1, 1});' –

+0

@ ꜱᴀᴍᴏᴛʜ: è necessario 'CONFIG + = C++ 11'. – lpapp

+0

Anche se è stato abilitato automaticamente. Grazie ! –

Problemi correlati