0

我想问你一个问题。我正在 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 文件中添加了标签,因此例如在 Google Chrome 中它工作正常。我做错了什么?你能帮我吗?谢谢..

4

1 回答 1

0

当你这样做时:

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

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

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

QString filename = QString(sDir) + ui->pageComboBox->currentText() + ".html";
QUrl urlWithoutHash = QUrl::fromLocalFile(QDir::current().absoluteFilePath(filename));
ui->logView->load(urlWithoutHash.toString() + showAt);
于 2013-08-30T01:29:14.143 回答