2012-11-02 74 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()使用操作系統來指定打開參數的程序,如其文檔中所述。

可能有一些解決方法,但它們都不能很好地工作,或在所有瀏覽器上工作。只是這種細緻的控制對你來說可能是不可能的。

如果您想要控制瀏覽器中的選項卡,您可以找到該選項卡所代表的窗口,並在打開新窗口之前將其關閉。這個解決方案有點怪異。

另一個解決方法是找到包含URL的編輯框的HWND,並嘗試使用SendMessage()更改其文本。但是,這不適用於Chrome,因爲它不會爲URL窗口使用單獨的控件。它可能適用於Firefox或IE。

更好的解決方案是使用Qt WebKit控制您自己的Web瀏覽器。在其中渲染頁面並更改查看的網址非常簡單。 QWebView是一個易於使用的實施QtWebKit

+0

謝謝phyatt。我寧願不想通過拉入QtWebKit來複制現有的瀏覽器功能。 – Elwood

相關問題