我一直在用qt创建一个应用程序。我在其中添加了open函数,但是当我打开一个已经打开的文件时,它再次打开相同的文件,而不是将其指向已经打开的文件。
void MainWindow::actionOpen()
{
QFileInfo fileInfo = UIUtils::openFile(this);
if (!fileInfo.exists()) {
return;
}
if (!MainWindow::mdiMode && !maybeSave()) {
return;
}
openFile(fileInfo.filePath());
}
请帮我解决问题。
答案 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());
}
}
当你说“而不是指向已打开的文件时,我不知道你的意思。”。