Здравствуйте, господа форумчане. Начал я тут разбираться с виджетом QTextBrowser. Для начала решил реализовать возможность чтения html-страниц и переход по ссылкам. Для этого в папку своего проекта скинул папку с html-справкой, и с нее уже решил
грузить html-страницы и ходить по ним.
Первую страницу (index.html) удалось загрузить в QTextBrowser без проблем с помощью метода setSource(QUrl). Для перехода по ссылкам на другие страницы решил ловить сигнал anchorClicked(QUrl), и уже получив c него QUrl посылать его в setSource(QUrl).
Но так как в самой html-странице ссылки на новые страницы указаны не полным путем(каталог/html-файл) от главного каталога папки , переход по полученном QUrl не выполнялся. Поэтому решил к главному каталогу папки прибавлять полученный QUrl и уже его посылать в метод setSource(QUrl(полученный путь)).
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
readLink(QUrl("../help/index.html"));
connect(ui->exit_but, SIGNAL(clicked()), this, SLOT(close()));
connect(ui->textBrowser, SIGNAL(anchorClicked(QUrl)), this, SLOT(startLink(QUrl)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::startLink(QUrl link)
{
QString temp = "../help/" + link.toString();
readLink(QUrl(temp));
}
void MainWindow::readLink(QUrl name_file)
{
ui->textBrowser->setSource(QUrl(name_file));
}
Но и это тоже не решило проблему, так как каталог справки вмещает в себе вложенные каталоги, поэтому переход по ссылкам не всегда осуществляется (если ссылка в html указана как document/doc1.html, а полный путь ../help/teory/document/doc1.html). В то же время, если грузить эту справку с любого web-браузера, все работает.
Как можно решить эту проблему? Интересует именно работа с QTextBrowser, а не QWebView.