在Qt中打开功能

时间:2015-04-02 08:29:41

标签: c++ qt

我一直在用qt创建一个应用程序。我在其中添加了open函数,但是当我打开一个已经打开的文件时,它再次打开相同的文件,而不是将其指向已经打开的文件。

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

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

    openFile(fileInfo.filePath());
}

请帮我解决问题。

1 个答案:

答案 0 :(得分: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());
    }
}

当你说“而不是指向已打开的文件时,我不知道你的意思。”。