0
我想存儲和更新QFileDialog::getOpenFileName
和QFileDialog::getSaveFileName
使用的默認目錄路徑。爲此,我創建包裝函數的兩個第三常見功能周圍:傳遞一個靜態成員函數作爲參數
QString GetSaveFile (QWidget *parent, const QString &title, const QString &desc)
{
return GetFile (&QFileDialog::getSaveFileName, parent, title, desc);
}
QString GetOpenFile (QWidget *parent, const QString &title, const QString &desc)
{
return GetFile (&QFileDialog::getOpenFileName, parent, title, desc);
}
QString GetFile (std::function <QString (QWidget *, const QString&, const QString&, const QString&, QString*, QFileDialog::Options)> func,
QWidget *parent, const QString &title, const QString &desc)
{
// this produces C2064
QString path = func (parent, title, CurrentDir, desc, 0, 0);
if (!path.isEmpty())
UpdateCurrentDir (QFileInfo (path).absoluteDir().path());
return path;
}
然而,在編譯過程中,我得到
error C2064: term does not evaluate to a function taking 6 arguments
但我的第一個參數是一個函數,它接受6參數。我究竟做錯了什麼?
你爲什麼不使用'QFileDialog :: saveState和()'和'QFileDialog :: restoreState()'的功能呢? – vahancho 2014-09-02 11:57:55
你的代碼看起來很好,你確定這行是產生錯誤的行嗎? – 2014-09-02 11:59:54
** vahancho **:因爲在這種情況下,我無法使用靜態函數QFileDialog :: getOpenFileName和QFileDialog :: getSaveFileName。我可以手動創建一個QFileDialog,但我想知道爲什麼我在這種情況下得到一個錯誤。 ** Marco A. **:當我雙擊MSVC中的錯誤通知時,光標跳轉到該行。行號也匹配。 – 2014-09-02 12:03:24