Загрузка хэш-тега/ссылки QT в QWebView

Я хотел бы задать вам вопрос. Я пишу приложение в QT Designer и сделал что-то вроде веб-браузера. У меня есть две радиокнопки. Если отмечен первый - страница 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 он работает нормально. Что я делаю неправильно? Не могли бы вы мне помочь? Спасибо..


person pablo7890    schedule 29.08.2013    source источник


Ответы (1)


Когда вы делаете это:

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);
person Boris Dalstein    schedule 30.08.2013
comment
Большое спасибо! Я не подумал о такой простой вещи. Действительно, еще раз спасибо! :D - person pablo7890; 30.08.2013