從我的Qt應用程序中,我想在同一個瀏覽器選項卡/窗口中反覆打開URL。 (一種「耳目一新」這個標籤編程的)在某個瀏覽器選項卡/窗口中打開一個URL
使用
QDesktopServices::openUrl(QUrl("http://www.domain.tld"));
打開每次調用一個新的標籤/窗口。是否有可能在某處添加「target =」參數?
從我的Qt應用程序中,我想在同一個瀏覽器選項卡/窗口中反覆打開URL。 (一種「耳目一新」這個標籤編程的)在某個瀏覽器選項卡/窗口中打開一個URL
使用
QDesktopServices::openUrl(QUrl("http://www.domain.tld"));
打開每次調用一個新的標籤/窗口。是否有可能在某處添加「target =」參數?
你所要求的是不可能以你想象的方式去做的。 openUrl()使用操作系統來指定打開參數的程序,如其文檔中所述。
可能有一些解決方法,但它們都不能很好地工作,或在所有瀏覽器上工作。只是這種細緻的控制對你來說可能是不可能的。
如果您想要控制瀏覽器中的選項卡,您可以找到該選項卡所代表的窗口,並在打開新窗口之前將其關閉。這個解決方案有點怪異。
另一個解決方法是找到包含URL的編輯框的HWND,並嘗試使用SendMessage()
更改其文本。但是,這不適用於Chrome,因爲它不會爲URL窗口使用單獨的控件。它可能適用於Firefox或IE。
更好的解決方案是使用Qt WebKit控制您自己的Web瀏覽器。在其中渲染頁面並更改查看的網址非常簡單。 QWebView是一個易於使用的實施QtWebKit。
謝謝phyatt。我寧願不想通過拉入QtWebKit來複制現有的瀏覽器功能。 – Elwood
也許你會發現這個有用:
您可以打開網頁和重新加載活動標籤。
如果提供了瀏覽器的名稱作爲參數,它會找到並重新加載當前頁面
https://unix.stackexchange.com/questions/37258/refresh-reload-active-browser-tab-from-command-line
這是一個有趣的事情,但並不完全是我想到的。首先,我依賴於'xdotool',所以它不能跨平臺使用。 – amenthes
埃爾伍德嗨,你有沒有找到一個解決這個?我有完全相同的問題:http://stackoverflow.com/questions/15116760/open-a-web-page-from-a-desktop-app-repeatedly-in-same-window – sipi
Sipickles:抱歉,沒有。看來這是不可能的。我正在考慮創建一個帶有'的本地HTML文件,然後根據需要覆蓋這個文件。但我還沒有嘗試過,這種方法可能有一些缺點。 – Elwood
我正在尋找相同的東西(在同一個標籤中打開),但最好在Qt5中。但我也會採用Qt4解決方案。 – amenthes