Russian Qt Forum

Qt => Qt Script, QtWebKit => Тема начата: PBednyagin от Январь 28, 2011, 12:40



Название: Переход по ссылке QWebView
Отправлено: PBednyagin от Январь 28, 2011, 12:40
Здравствуйте.
Очень надеюсь на Вашу помощь. Необходимо сделать некий локальный браузер и при переходе по ссылкам набивать его нужной информацией. Использую для этих целей QWebView.

Набиваю страницу нужным хтмл кодом
Код:
ui->webView->setHtml(aPage);

Затем разрешаю использование ссылок и линкую сигнал linkClicked к своему методу. При этом пробовал писать как ui->webView, так и ui->webView->page()
Код:
ui->webView->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks);
ui->webView->connect(ui->webView, SIGNAL(linkClicked(QUrl &)), this, SLOT(onLinkClicked(QUrl &)));

В описании слота просто показываю произвольное сообщение
Код:
void MainWindow::onLinkClicked(QUrl &url)
{
        QMessageBox::information(this,"", "Нажата ссылка");
}

При этом все нормально собирается. Но при нажатии на ссылку ничего не происходит.
Прочитал много тем по этому вопросу, но там сделано именно так, как я описал выше...


Название: Re: Переход по ссылке QWebView
Отправлено: Resager от Январь 30, 2011, 18:01
Сообщения сборки или в консоли приложения есть что-нибудь? Может функция слот не совсем соответствует? QTextBrowser можешь использовать вместо webView, или тебе нужен именно webView?


Название: Re: Переход по ссылке QWebView
Отправлено: IGHOR от Март 03, 2011, 12:46
а как отследить нажатия на JavaScript кнопки?


Название: Re: Переход по ссылке QWebView
Отправлено: Пантер от Март 03, 2011, 12:49
Код
C++ (Qt)
connect(webView->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()),
this, SLOT(initJavascript() ));
...........
void MainWindow::initJavascript( )
{
webView->page ()->mainFrame ()->addToJavaScriptWindowObject ("MainWindow",
this );
}
 

Теперь можно в JavaScript вызывать слоты типа
Код
Java
MainWindow.someSlot ();
 


Название: Re: Переход по ссылке QWebView
Отправлено: IGHOR от Март 04, 2011, 22:02
Пантер, спасибо!


Название: Re: Переход по ссылке QWebView
Отправлено: [Matrix] от Сентябрь 16, 2011, 20:51
а если нужно передать строку из java скрипта, тогда как можно сделать?



вопрос решен путем изменения title у mainFrame() из java скрипта, и использования сигнала titleChanged()