1

Webアプリケーションへのアクセスに使用されるqtとqtWebkitを使用してアプリケーションを作成しています。Web アプリケーションには、「myprotocol:var1=1&var2=2」など、処理する必要があるさまざまなカスタム プロトコルがあります。このプロトコルを使用すると、アプリケーションは別のプログラムを開く必要があります。これらのカスタム プロトコルのいずれかがヒットしたことを検出するにはどうすればよいですか?

「QWebPage::acceptNavigationRequest の再実装」に関する同様の質問に対する回答をいくつか見ましたが、これを行う方法がわかりません。

qtWebkit でカスタム プロトコルを処理しなければならなかった人はいますか?

4

1 に答える 1

2

以下のコードを使用してスロットを呼び出す「finished(QNetworkReply *)」シグナルをリッスンすると、応答に含まれるリクエストからプロトコルの URL を取得できます。そこから、起動したいプロトコルであるかどうかを確認できます。そうである場合は、 を使用してアプリケーションを起動できますQDesktopServices::openUrl(reply->request().url());

QString scheme = reply->request().url().scheme();
if (scheme == QLatin1String("mailto")
    || scheme == QLatin1String("myprotocol")) {
        QDesktopServices::openUrl(reply->request().url());
}
于 2012-12-13T14:40:03.367 に答える