1
因此,我想在我的电子表格应用程序的“文件”菜单中创建“最近的文件”部分。在构建应用程序时,应该更新recentFileActions QStringList的函数会生成以下错误/home/axel/QtSDK/Code/QMainWindow/mainwindow.cpp:-1: error: undefined reference to 'MainWindow::recentFiles'
未定义的静态QStringList引用
那么从错误中得到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 MainWindow :: recentFiles;'在.cpp中的某个地方?或者我需要改变'QStringList static recentFiles;'''QStringList MainWindow :: recentFiles;''?因为如果我尝试添加'QStringList MainWindow :: recentFiles;'到我的.cpp中的构造函数或在创建问题的函数中,我得到一个无效的限定名称错误使用:(....对不起,我是new to C++ – Axel 2012-03-10 20:31:33
@Axel如果你在头文件中声明了成员变量static,那么你需要在源文件(.cpp)中定义,如果你没有声明为static,那么你就不需要这样做,参见[ faq 10.12](http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.12) – 2012-03-10 20:34:05
理想情况下,我想将recentFiles声明为static,这意味着我需要在.cpp。为了定义recentFiles,我想我需要复制'QStringList MainWindow :: recentFiles;'在.cpp? – Axel 2012-03-10 20:38:31