QWeb中的QT Hash标记/链接加载

时间:2013-08-29 21:50:24

标签: c++ qt qwebview

我想问你一个问题。我正在QT Designer中编写应用程序,我制作了一种Web浏览器。我有两个单选按钮。如果选中第一个 - 页面index.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文件中添加了标签,所以例如在谷歌Chrome中它工作正常。我做错了什么?你能帮助我吗?谢谢..

1 个答案:

答案 0 :(得分:0)

执行此操作时:

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

您要求QDir(不知道网址是什么),获取文件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);