QList有问题

时间:2014-03-12 00:10:50

标签: c++ qt qstring qtcore qlist

如果我在函数内部设置QList,它可以正常工作

void MainWindow::ReadXML() {
    ...
    QList<QString> list;
    list << "alfa" << "beta" << "gamma" << "delta" << "epsilon";
    ...
}

但是如果尝试在一个块之外编写相同的代码片段(QList必须对整个文件可见),Qt Creator以红色突出显示最后一行告诉我这个错误:“已经完成了声明”

有什么建议吗?

1 个答案:

答案 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"};