Название: QtWebKit где вызвано контекстное меню Отправлено: pashazz от Июнь 20, 2009, 16:07 Я делаю браузер, и мне необходимо реализовать свое контекстное меню.
Но я так и не понял, как узнать, на ссылке ли вызвано контекстное меню, или просто на документе. Я вызываю контекстное меню по сигналу QWebView::customContexMenuRequested() Как это узнать? Название: Re: QtWebKit где вызвано контекстное меню Отправлено: denka от Июнь 20, 2009, 17:53 Попробуй ловить вот этот сигнал QWebPage::linkHovered ( const QString & link, const QString & title, const QString & textContent ) и так будешь знать когда курсор над ссылкой, а когда нет.
Название: Re: QtWebKit где вызвано контекстное меню Отправлено: pashazz от Июнь 20, 2009, 19:07 и тогда сразу еще один вопрос - как отловить QWebAction, для, допустим, открытия ссылки в новом окне?
Название: Re: QtWebKit где вызвано контекстное меню Отправлено: denka от Июнь 20, 2009, 19:57 Тут уже как сам захочешь: отловить сигнал от QAction, установить eventFilter, переопределить actionEvent ( QActionEvent * event )
Название: Re: QtWebKit где вызвано контекстное меню Отправлено: pashazz от Июнь 20, 2009, 20:19 Попробуй ловить вот этот сигнал QWebPage::linkHovered ( const QString & link, const QString & title, const QString & textContent ) и так будешь знать когда курсор над ссылкой, а когда нет. Сделал как ты сказал.Ссылка при нажатии правой кнопкой выделяется ( в смысле текст ссылки), а нужно чтобы этого не было. Как избежать выделения текста ссылки (ну кроме хаков типа принудительной очистки выделения)? Название: Re: QtWebKit где вызвано контекстное меню Отправлено: IMPOMEZIA от Июнь 21, 2009, 01:37 Использовать QWebHitTestResult, например так:
Код затем получить QUrl ссылки с помощью QUrl QWebHitTestResult::linkUrl () const В итоге если QUrl получится не пустым значит под курсором ссылка иначе документ. Название: Re: QtWebKit где вызвано контекстное меню Отправлено: pashazz от Июнь 21, 2009, 10:38 Все это конечно хорошо, но текст ссылки выделяется, а нужно, чтобы этого не было
Название: Re: QtWebKit где вызвано контекстное меню Отправлено: Pepelaz от Июль 08, 2009, 19:34 В общем я делал так. Где нибудь, в Mainwindow наример переопределяем метод eventfilter. У него 2 параметра:
1 - Кому прилетает событие 2 - Тип событие Через него теперь все события летят - выбираем те, которые летят к нашему QWebView, сравнивая с параметром 1 Далее, сравнивая с параметром 2 выбираем событие QEvent::ContextMenu. Теперь в этом месте можно сделать что-то свое - например вызвать свое контекстное меню, но обязательно нужно вернуть true чтобы дефолтная обработка этого события не вызвалась. Выделения текста тоже кстати не будет тогда по правой кнопке мыши Название: Re: QtWebKit где вызвано контекстное меню Отправлено: nata267 от Октябрь 13, 2011, 14:50 вот мое решение:
Код: m_view = new QWebView(this); вот слот, с которым связываю сигнал customContextMenuRequested(QPoint): Код: void Webbrowser::showWebViewContextMenu(const QPoint &point) Название: Re: QtWebKit где вызвано контекстное меню Отправлено: nata267 от Октябрь 14, 2011, 10:47 Не пойму только как узнать установлен ли фокус на элементе для ввода или нет?? Никто не знает как это узнать?? Это нужно для проверки в этом месте:
Код: if(!QApplication::clipboard()->text().isEmpty() && ФОКУС_НА_ЭЛЕМЕНТЕ_ВВОДА) |