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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QWebKit открытие в новой вкладке  (Прочитано 12045 раз)
Elect
Гость
« : Январь 05, 2010, 00:35 »

Попробовал ради интереса создать окошко с QWebView, столкнулся с тем что не переходит по ссылкам которые должны открываться в новых вкладка. Например на яндексе если что либо набрать в поиски, а потом попробовать перейти по какому либо результату поиска, то не чего не произойдет. Полез в примеры, webkit/fancybrowser так поведение точно такое же. Скачал исходники arora но не смог разобраться как там это реализовано. Собственно вопрос, что происходит при клики на такую ссылку? может как то надо отлавливать такие события?
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #1 : Январь 05, 2010, 11:39 »

а как именно ты осуществлял переход? Как вариант выуживать регвырами ссылки и грузить их без перехода с подстановкой нужного рефера.
« Последнее редактирование: Январь 05, 2010, 12:16 от serg_hd » Записан

kubuntu/Win7/x64/NetBeans
Elect
Гость
« Ответ #2 : Январь 05, 2010, 14:15 »

Переход осуществляю, кликом по ссылки. Но как узнать что клик был произведен именно по ссылки и выдернуть ее?
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #3 : Январь 05, 2010, 15:32 »

Переход осуществляю, кликом по ссылки. Но как узнать что клик был произведен именно по ссылки и выдернуть ее?
А, а я думал как-то программно. Скажи что конкретно тебе надо сделать, так проще будет. Найти ссылку можно через findText() вроде бы, после окончания загрузки страницы. Для того указание рефера в заголовке и нужно, чтобы сказать загруженной странице откуда ты пришёл.
Для установки своих заголовков смотри эту тему.
Записан

kubuntu/Win7/x64/NetBeans
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #4 : Январь 05, 2010, 15:34 »

кстати, этот баг насчёт отсутствия реакции на клик по ссылке (у которой target=_blank или сгенеренный яваскриптом) тоже давно заметил.
Записан

kubuntu/Win7/x64/NetBeans
zenden
Гость
« Ответ #5 : Январь 05, 2010, 15:56 »

Цитировать
QWebView * QWebView::createWindow ( QWebPage::WebWindowType type )   [virtual protected]

This function is called from the createWindow() method of the associated QWebPage, each time the page wants to create a new window of the given type. This might be the result, for example, of a JavaScript request to open a document in a new window.

это не подойдет?
Записан
Elect
Гость
« Ответ #6 : Январь 07, 2010, 01:00 »

это не подойдет?
Нет, не подходит.
Пишу
Код
C++ (Qt)
void MainWindow::createWindow(QWebPage::WebWindowType type)
{
   qDebug() << "TEST";
}
 
В консоли не чего не появляется.

кстати, этот баг насчёт отсутствия реакции на клик по ссылке (у которой target=_blank или сгенеренный яваскриптом) тоже давно заметил.
И как это обойти?
Использую qt 4.5 может в 4.6 это поправили.
Записан
zenden
Гость
« Ответ #7 : Январь 07, 2010, 14:33 »

Elect

вы не забыли сабклассить класс QWebView, а уже там переопределить метод QWebView * createWindow ( QWebPage::WebWindowType type ) ?

Похоже, что забыли.
Записан
Elect
Гость
« Ответ #8 : Январь 07, 2010, 20:08 »

Да, действительно я пытался переопределить метод в классе на котором находился qwebview, а надо было создать клаас отнаследованый от qwebview и там переопределить.
Спасибо.
« Последнее редактирование: Январь 07, 2010, 20:19 от Elect » Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #9 : Январь 16, 2010, 18:26 »

Сначала тоже стал так делать, но в результате осуществил по-другому:
Код
Java
this.myWebView.page().setLinkDelegationPolicy(LinkDelegationPolicy.DelegateAllLinks);
this. myWebView.linkClicked.connect(this, "setLink(QUrl)");
 
public void setLink(QUrl url)
{
this.myWebView.load(url);
}
 
Такой способ показался мне удобнее.
« Последнее редактирование: Январь 16, 2010, 20:09 от serg_hd » Записан

kubuntu/Win7/x64/NetBeans
Ignis
Гость
« Ответ #10 : Май 22, 2011, 12:59 »

Подскажите, а что именно должно произойти после следующих действий?

Код:
view->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks);
    connect(view, SIGNAL(linkClicked(QUrl)), SLOT(setLink(QUrl &url)));

Код:
void MainWindow::setLink(QUrl url)
{
    view->load(url);
}
Переход по ссылкам у меня и до этого работал, а новую вкладку создать не получается.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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