静态QStringList的未定义引用

Undefined reference for a static QStringList

本文关键字:引用 未定义 QStringList 静态      更新时间:2023-10-16

因此,我想在电子表格应用程序的"文件菜单"中创建一个"最近的文件"部分。在构建应用程序时,本应更新recentFileActions QStringList的函数会生成以下错误/home/axel/QtSDK/Code/QMainWindow/mainwindow.cpp:-1: error: undefined reference to 'MainWindow::recentFiles'

所以从错误中我得到recentFiles没有定义?因为我在标题的私人部分有这个:QStringList static recentFiles;

这就是整个updateRecentFileActions()功能:

void MainWindow::updateRecentFileActions(){
  QMutableStringListIterator i(recentFiles);
  while (i.hasNext()) {
    if (!QFile::exists(i.next()))
        i.remove();
  }
  for (int j = 0; j < MaxRecentFiles; ++j) {
    if (j < recentFiles.count()) {
        QString text = tr("&%1 %2")
        .arg(j + 1)
        .arg(strippedName(recentFiles[j]));
        recentFileActions[j]->setText(text);
        recentFileActions[j]->setData(recentFiles[j]);
        recentFileActions[j]->setVisible(true);
    } else {
        recentFileActions[j]->setVisible(false);
    }
  }
  separatorAction->setVisible(!recentFiles.isEmpty());
}

我会添加任何缺失的信息。

谢谢。

QStringList static recentFiles;

这只是声明。您需要在源文件中定义静态变量:

QStringList MainWindow::recentFiles;

如果你不明白为什么你需要这样做,看看看看这个常见问题。