从我的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