sho-6ren">
gpt4 book ai didi

qt - QWebView 不会在新窗口中打开链接,也不会启动外部应用程序来处理 pdf

转载 作者:行者123 更新时间:2023-12-02 03:51:15 25 4
gpt4 key购买 nike

我以这种方式使用 QWebView:

QWebView *window = new QWebView();
window->setUrl(QString("my url"));
window->show();

而且它有效。我可以看到我想要的html页面。问题是这样的。默认情况下,如果我在链接上“右键单击”,则会显示“在新窗口中打开”操作,但如果我单击它,则不会发生任何情况。如果我在同一个链接上“左键单击”,它就会起作用。所以问题是QWebView没有打开新窗口。有谁知道为什么吗?

我还有一个问题。有些链接是 pdf 文件,所以我希望 QWebView 要求我下载它或运行应用程序来打开它。但什么也没发生。我认为问题与 QWebView 不允许打开新窗口以及 pdf 上不允许打开新窗口有关。

显然我用网络浏览器测试了该页面,一切正常,所以问题出在 QWebView 的某些设置上。

有人知道如何让 QWebView 在需要时打开新窗口吗?

注释:

  • 所有链接都是本地资源。

  • html 链接使用此语法(并且它们有效):

 <a href="./something.htm" TARGET="_parent">Some link</a>
  • pdf 链接使用此语法(单击时没有任何反应):
<a href="./pdf/mydoc.pdf" TARGET="pdfwin">Some pdf</a>

最佳答案

尝试自己处理蜱虫。这是一个可以指导您的示例。不过我还没有编译它。

    QWebView *window = new QWebView();
window->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks);//Handle link clicks by yourself
window->page()->setContextMenuPolicy(Qt::NoContextMenu); //No context menu is allowed if you don't need it
connect( window, SIGNAL( linkClicked( QUrl ) ),
this, SLOT( linkClickedSlot( QUrl ) ) );

window->setUrl(QString("my url"));
window->show();

//This slot handles all clicks
void MyWindow::linkClickedSlot( QUrl url )
{
if (url.ishtml()//isHtml does not exist actually you need to write something like it by yourself
window->load (url);
else//non html (pdf) pages will be opened with default application
QDesktopServices::openUrl( url );
}

请注意,如果您显示的 HTML 可能包含指向其自身其他部分的相对/内部链接,那么您应该使用 QWebPage::DelegateExternalLinks 而不是 QWebPage::DelegateAllLinks >.

关于qt - QWebView 不会在新窗口中打开链接,也不会启动外部应用程序来处理 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6951199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com