2012-11-02 68 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

相关问题