3

我在 Windows 上为我的 Qt 下载器应用程序注册了一个自定义 URI-Scheme。该应用程序运行良好,并且完全符合我的需要。唯一的问题是,每次我单击具有指定格式的新 URL 时,它都会打开一个新的应用程序实例,而不是将新项目添加到以前打开的应用程序中。我怎样才能避免这个问题?每次我打开一个新的应用程序时,我是否需要检查已经打开的应用程序?有这样做的Qt方法吗?

这是处理将新文件添加到应用程序的代码部分。

if (event->type() == QEvent::FileOpen){  
 QFileOpenEvent* fileEvent = static_cast<QFileOpenEvent*>(event);
 if (!fileEvent->url().isEmpty()){
  addFilesToApp(fileEvent->url().toString(), argument_list);
 }
}

更新 我找到了这篇文章,它通过在 QAplication 和 MainWindow 之间添加这四行来帮助我解决打开应用程序的多个实例的问题:

QApplication app(argc, argv);
QSharedMemory shared("75d3863a-1e79-43d5-97a3-ea7ffd67d02a");
if( !shared.create( 512, QSharedMemory::ReadWrite) ){
  exit(0);
 }
MainWindow window;

但是现在当我单击一个时,该应用程序不会将新文件添加到下载列表中。我认为这是因为 addFilesToApp() 函数由 FileOpen 事件触发。

4

0 回答 0