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