QWebView не переходит по ссылками
От: pro_gerr  
Дата: 08.10.10 06:28
Оценка:
Добрый день!
Если в QWebView загрузить поисковик, затем в нем сделать поиск, то по результатам поиска не дает переходить, т.е. не открывает те ссылки, которые должны открыться в новом окне.
Пример из поставки QT работает в этом смысле — переходит по ссылкам (в том же окне). Но после того как я в нем комментировал/раскомментировал строки и в конечном итоге привел в первозданный вид, тоже перестал переходить.
LinkDelegationPolicy — не помогает.
В чем дело?
Re: QWebView не переходит по ссылками
От: Murom Россия  
Дата: 08.10.10 06:56
Оценка:
Здравствуйте, pro_gerr, Вы писали:

_>Добрый день!

_>Если в QWebView загрузить поисковик, затем в нем сделать поиск, то по результатам поиска не дает переходить, т.е. не открывает те ссылки, которые должны открыться в новом окне.
_>Пример из поставки QT работает в этом смысле — переходит по ссылкам (в том же окне). Но после того как я в нем комментировал/раскомментировал строки и в конечном итоге привел в первозданный вид, тоже перестал переходить.
_>LinkDelegationPolicy — не помогает.
_>В чем дело?

Точно не уверен, но может быть поможет.
В нашейе конторе народ тоже говорил про неоткрытие страниц в вебвью кутешном.
Оказалось, что не открываются странички "в новом окне", то есть дополнительное окно не открывалось.
Как поборолю не знаю, но может даст идею куда копать.
- Eugeny
Re[2]: QWebView не переходит по ссылками
От: pro_gerr  
Дата: 08.10.10 07:43
Оценка:
Здравствуйте, Murom, Вы писали:

M>Точно не уверен, но может быть поможет.

M>В нашейе конторе народ тоже говорил про неоткрытие страниц в вебвью кутешном.
M>Оказалось, что не открываются странички "в новом окне", то есть дополнительное окно не открывалось.
M>Как поборолю не знаю, но может даст идею куда копать.

Ну я собственно об этом и говорю, если есть у ссылки target="_blank" то не переходит, а из примера поставки переходит (переходил), хотя там кож ничем не отличается, в плане навигации.
Re: QWebView не переходит по ссылками
От: pro_gerr  
Дата: 08.10.10 08:22
Оценка:
В общем, из положения вышел пока таким способом:
сабклассил QNetworkAccessManager:

class CNetworkAccessManager : public QNetworkAccessManager
{
public:
    CNetworkAccessManager(QObject *parent = 0, QUrl url = QUrl())
        : QNetworkAccessManager(parent)
    {m_url = url;}
    void setUrl(QUrl url = QUrl()) { m_url = url;}
private:
    QUrl m_url;
protected:
    QNetworkReply *createRequest()
    {
        QNetworkRequest req;
        req.setRawHeader(QByteArray("User-Agent"), QByteArray("Mozilla"));
        req.setRawHeader(QByteArray("Refer"), m_url.toString().toUtf8());
        return QNetworkAccessManager::createRequest(QNetworkAccessManager::GetOperation, req);
    }

};

отлавливаю QWebView::linkClicked, и в нем подменяю QWebView::QwebPage::QNetworkAccessManager


void MainWindow::onLinkClick(const QUrl &url)
{
    m_accessManager->setUrl(m_browser->url());
    m_browser->page()->setNetworkAccessManager(m_accessManager); // CNetworkAccessManager *m_accessManager
    m_browser->load(url);
}

почему не работает изначально, а в примере работает — хз.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.