Windows で Qt ダウンローダー アプリ用のカスタム URI スキームを登録しました。アプリは問題なく動作し、必要なことを正確に実行します。唯一の問題は、指定された形式の新しい 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 の間に次の 4 行を追加することで、アプリの複数のインスタンスを開く問題を解決するのに役立ちました。
QApplication app(argc, argv);
QSharedMemory shared("75d3863a-1e79-43d5-97a3-ea7ffd67d02a");
if( !shared.create( 512, QSharedMemory::ReadWrite) ){
exit(0);
}
MainWindow window;
しかし、今では、アプリをクリックしても新しいファイルがダウンロード リストに追加されません。addFilesToApp() 関数が FileOpen イベントによってトリガーされるためだと思います。