gpt4 book ai didi

html - Qt:让QWebview返回一个完整的URL

转载 作者:可可西里 更新时间:2023-11-01 14:48:35 28 4
gpt4 key购买 nike

我的应用程序中有一个类显示基于 HTML 的文档,这些文档作为一组 HTML 文件存储在用户的硬盘上。

我的文档模块有一个功能,可以记住最近查看的页面。我目前正在使用 QWebView::url() 来获取当前页面的 URL,以便我可以将它存储在配置中。下次激活文档查看器时,将从配置中提取 URL,进行适当处理,然后将其发送回 QWebView。这样,用户可以从他/她离开的地方继续。

QWebView::url 是获取当前 URL 的好方法,只是它不像我需要的那样精确。它只捕获没有任何额外内容的基本 URL。例如,我的文档中的每个标题都附加了一个 id 属性,我用它来制作一个可浏览的目录。例如,用户可以单击 TOC 中的任何项目以跳转到适当的标题。

但是,当我需要 file:///Z:/doc 时,QWebKit::url 只会返回类似这样的内容:file:///Z:/doc/foo.html/foo.html#heading,其中 #heading 是目录中最后单击的项目。我怎样才能让它在 URL 字符串中包含那些内部链接(不太确定它们的正确名称是什么)?

在理想情况下,QWebView 会自动知道用户何时滚动浏览当前文档中的每个标题,并会自动更新 URL 字符串。这将允许在 session 之间几乎无缝地阅读。我不希望它以这种方式工作,但这有可能吗?

最佳答案

这对我来说就像一个魅力。

main.cpp

#include <QWebView>
#include <QDebug>
#include <QApplication>

int main(int argc, char **argv)
{
QApplication application(argc, argv);
QWebView view;
view.load(QUrl("http://qt-project.org/doc/qt-5/QWebView.html"));
view.show();
QObject::connect(&view, &QWebView::urlChanged, [&view]() {
qDebug() << "Url being viewed:" << view.url().toString();
});
return application.exec();
}

主程序

TEMPLATE = app
TARGET = main
QT += widgets webkit webkitwidgets
CONFIG += c++11
SOURCES += main.cpp

构建并运行

qmake && make && main

然后尝试点击右侧的详细信息。

输出

Changed url being viewed: "http://qt-project.org/doc/qt-5/QWebView.html"
Changed url being viewed: "http://qt-project.org/doc/qt-5/QWebView.html#details"
Changed url being viewed: "http://qt-project.org/doc/qt-5/QWebView.html#details"

即使信号发出两次,您也可以看到 url 访问器方法返回了正确的 url。

关于html - Qt:让QWebview返回一个完整的URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24855057/

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