2015-04-02 28 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