2012-11-02 14 views
5

Qtアプリケーションの中から、同じブラウザのタブ/ウィンドウでURLを繰り返し開いてみたいと思います。特定のブラウザタブ/ウィンドウでURLを開く

QDesktopServices::openUrl(QUrl("http://www.domain.tld")); 

を使用して

を(プログラムでは、このタブを「リフレッシュ」の種類は)すべての呼び出しのための新しいタブ/ウィンドウが開きます。どこかに "target ="パラメータを追加する可能性はありますか?

+0

こんにちはエルウッド、あなたがこの解決策を見つけたのでしょうか?私はまったく同じ問題があります:http://stackoverflow.com/questions/15116760/open-a-web-page-from-a-desktop-app-repeatedly-in-same-window – sipi

+0

Sipickles:申し訳ありません。それはちょうど不可能であるようです。私は ''でローカルHTMLファイルを作成し、必要に応じてこのファイルを上書きすることを考えていました。しかし、私はまだそれを試していないとこのアプローチはおそらくいくつかの欠点があります。 – Elwood

+0

私は同じことを(同じタブで開いていますが)Qt5で探しています。しかし、私はQt4の解決策もとるだろう。 – amenthes

答えて

2

あなたが求めていることは、あなたが想像するようにするのは不可能です。 openUrl()はオペレーティングシステムを使用して、そのドキュメントで説明されているように引数を開くプログラムを指定します。

いくつかの回避策があるかもしれませんが、いずれもうまく動作せず、すべてのブラウザで動作します。この種のきめ細かな制御が不可能になる可能性が高いことだけです。

ブラウザのタブを制御したい場合は、そのタブが表すウィンドウを見つけて、新しいタブを開く前に閉じてください。この解決策は一種のハッキーです。

もう1つの解決策は、URLを保持するエディットボックスのHWNDを見つけて、SendMessage()を使用してそのテキストを変更しようとすることです。ただし、ChromeではURLウィンドウに別のコントロールを使用しないため、この機能は動作しません。 FirefoxやIEで動作するかもしれません。

もっと良い解決策は、Qt WebKitを使用して自分のWebブラウザを制御することです。ページをレンダリングして表示するURLを変更するのはかなり簡単です。 QWebViewは、QtWebKitの使いやすい実装です。

+0

ありがとうphyatt。私はむしろQtWebKitを引っ張って既存のブラウザ機能を複製したくないと思います。 – Elwood

0

たぶん、あなたはこの便利を見つけます

あなたがWebページを開き、アクティブなタブをリロードすることができます。

あなたは、引数として、ブラウザの名前を指定した場合、それは見つけるとリロード現在のページを

https://unix.stackexchange.com/questions/37258/refresh-reload-active-browser-tab-from-command-line

+0

それは興味深いものですが、私が心に留めていたものではありません。一つのこととして、私は 'xdotool'に依存しているので、プラットフォーム間では利用できません。 – amenthes

関連する問題