2015-04-02 32 views
0

我一直在qt中創建一個應用程序。我在其中添加了開放函數,但是當我打開已打開的文件時,它再次打開相同的文件,而不是將其指向已打開的文件。在Qt中打開函數

void MainWindow::actionOpen() 
{ 
    QFileInfo fileInfo = UIUtils::openFile(this); 
    if (!fileInfo.exists()) { 
     return; 
    } 

    if (!MainWindow::mdiMode && !maybeSave()) { 
     return; 
    } 

    openFile(fileInfo.filePath()); 
} 

請幫我解決問題。

回答

0

我不是100%清楚問題是什麼,但如果您不想對先前打開的文件運行openFile函數,則必須保留一條記錄。 例如,在你的頭文件中定義的QList:

QList<QFileInfo> knownFiles; 

然後保持最新,並檢查:

void MainWindow::actionOpen() 
{ 
    QFileInfo fileInfo = UIUtils::openFile(this); 
    if (!fileInfo.exists()) { 
     return; 
    } 

    if (!MainWindow::mdiMode && !maybeSave()) { 
     return; 
    } 

    bool fileIsKnown = false; 
    for(qint64 i=0; i<knownFiles.length(); i++) 
     if(knownFiles.at(i) == fileInfo) 
     { 
     fileIsKnown = true; 
     break; 
     } 
    if(!fileIsKnown) 
    { 
     knownFiles << fileInfo; 
     openFile(fileInfo.filePath()); 
    } 
} 

我不知道你是什麼意思時,你說「,而不是指向已經打開的文件。「

+0

我的意思是說,如果我打開了一個在窗口中打開的新文件。我的應用程序爲同一個文件打開一個新窗口,而不是在前一個窗口中打開同一個文件。 – Gagandeep 2015-04-02 15:20:46

+0

我想防止在我的應用程序中打開兩次文件。 – Gagandeep 2015-04-03 10:52:44

+1

沒有看到你的整個代碼,有點難以預測你應該做什麼。但是,如果爲每個文件打開一個新窗口,只要知道該文件,就可以調用show()。 – Jaciq 2015-04-03 16:58:59