QWebView 中的 QT 哈希标签/链接加载

QT Hash tag/link loading in QWebView

本文关键字:链接 加载 标签 哈希 中的 QT QWebView      更新时间:2023-10-16

>我想问你一个问题。我正在QT Designer中编写一个应用程序,并制作了一种Web浏览器。我有两个单选按钮。如果选中第一个 - 页面索引.html正常加载到我的 QWebView。我正在使用这个:

string url = sDir + ui->pageComboBox->currentText().toStdString() + ".html";
ui->logView->load(QUrl::fromLocalFile(QDir::cleanPath(QDir::current().absoluteFilePath(QString::fromStdString(url)))));

它工作正常。但是我为用户提供了加载页面的第二个选项 - 如果选中第二个单选按钮,则它会激活DateEdit,用户必须选择一个日期。所选日期存储在 QString 中。现在,我想加载向下滚动到此日期的同一页面:

string url = sDir + ui->pageComboBox->currentText().toStdString() + ".html" + showAt.toStdString();
ui->logView->load(QUrl::fromLocalFile(QDir::cleanPath(QDir::current().absoluteFilePath(QString::fromStdString(url)))));

因此,请求的站点链接如下所示:index.html#29082013。这里它不起作用,没有加载任何站点:(仍然有空白页。我在html文件中添加了标签,因此例如在谷歌浏览器中它工作正常。我做错了什么?你能帮我吗?谢谢。。

当你这样做时:

QDir::current().absoluteFilePath(QString::fromStdString(url))

您要求QDir(不知道 url 是什么(获取文件index.html#29082013的文件路径,这当然不存在。

解决方案是首先从index.html获取文件路径,然后从中获取一个 url,然后才添加哈希#29082013。试试这个:

QString filename = QString(sDir) + ui->pageComboBox->currentText() + ".html";
QUrl urlWithoutHash = QUrl::fromLocalFile(QDir::current().absoluteFilePath(filename));
ui->logView->load(urlWithoutHash.toString() + showAt);