Trouble with QList

Trouble with QList

本文关键字:QList with Trouble      更新时间:2023-10-16

如果我在函数中设置了QList,它会正常工作

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

但是如果尝试在块之外编写相同的代码(QList必须对整个文件可见),Qt Creator在最后一行用红色下划线告诉我这个错误:"预期声明"

任何建议吗?

您可能有几种方法来解决这个问题,但这里是其中之一:

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。它将为您提供方便的方法,总的来说,感觉更自然。

在c++ 11及以后的版本中,你可以使用初始化列表,而不是写:
QStringList myStringList = QStringList << "foo" << "bar" << "baz";

你可以这样做:

QStringList myStringList{"foo", "bar", "baz"};