如果我在函数内部设置QList,它可以正常工作
void MainWindow::ReadXML() {
...
QList<QString> list;
list << "alfa" << "beta" << "gamma" << "delta" << "epsilon";
...
}
但是如果尝试在一个块之外编写相同的代码片段(QList必须对整个文件可见),Qt Creator以红色突出显示最后一行告诉我这个错误:“已经完成了声明”
有什么建议吗?
答案 0 :(得分:4)
您可以通过多种方式解决此问题,但其中包括以下方法之一:
static QStringList myStringList = QStringList << "foo" << "bar" << "baz";
void MainWindow::ReadXML()
{
...
useMyStringList(myStringList);
...
}
但是使用这样的静态变量是不好的做法,所以我可能会更多地使用C ++,至少,我会创建一个函数,如下所示:
static QStringList myStringList()
{
static QStringList stringList = QStringList() << "foo" << "bar" << "baz";
return stringList;
}
void MainWindow::ReadXML()
{
...
useMyStringList(myStringList());
...
}
1)请注意,您可以使用QStringList而不是QList。它将为您提供方便的方法,一般来说,感觉更自然。
2)使用C ++ 11和on,你可以使用初始化列表,所以不要写:
QStringList myStringList = QStringList << "foo" << "bar" << "baz";
你可以这样做:
QStringList myStringList{"foo", "bar", "baz"};