Russian Qt Forum
Ноябрь 26, 2024, 10:06 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Переход по ссылке QWebView  (Прочитано 7966 раз)
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,"", "Нажата ссылка");
}

При этом все нормально собирается. Но при нажатии на ссылку ничего не происходит.
Прочитал много тем по этому вопросу, но там сделано именно так, как я описал выше...
« Последнее редактирование: Январь 28, 2011, 12:44 от PBednyagin » Записан
Resager
Гость
« Ответ #1 : Январь 30, 2011, 18:01 »

Сообщения сборки или в консоли приложения есть что-нибудь? Может функция слот не совсем соответствует? QTextBrowser можешь использовать вместо webView, или тебе нужен именно webView?
Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #2 : Март 03, 2011, 12:46 »

а как отследить нажатия на JavaScript кнопки?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Март 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 ();
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #4 : Март 04, 2011, 22:02 »

Пантер, спасибо!
Записан
[Matrix]
Гость
« Ответ #5 : Сентябрь 16, 2011, 20:51 »

а если нужно передать строку из java скрипта, тогда как можно сделать?



вопрос решен путем изменения title у mainFrame() из java скрипта, и использования сигнала titleChanged()
« Последнее редактирование: Сентябрь 16, 2011, 22:16 от [Matrix] » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.099 секунд. Запросов: 23.