2013-09-25 174 views
28

什么是正确的方式来初始化QList?我想使这个代码更短:什么是初始化QList的正确方法?

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

但是当我使用从初始化的std ::列表,它似乎并没有被工作:

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

在后一种情况下,分离器似乎分裂比例为1:0。

回答

37

你可以使用以下代码:

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

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

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

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

+0

使用Qt 5.2它抛出'错误:预期表达的QList list2中({1,1});' –

+0

@ꜱᴀᴍᴏᴛʜ:你需要'CONFIG + = C++ 11'。 – lpapp

+0

虽然它是自动启用的。谢谢 ! –

相关问题