QWebView отключить выделение текста по правому клику - PullRequest
4 голосов
/ 17 ноября 2011

Щелчок правой кнопкой мыши по любому тексту на веб-странице, просматриваемой с помощью QWebView в Windows, выделяет слово под курсором.Я хочу отключить это поведение, но не могу найти ссылки в документации.

Ответы [ 2 ]

5 голосов
/ 17 ноября 2011

Похоже, что это предпочтение глубоко в Webkit (движок, который поддерживает QWebView и Google Chrome среди многих других). Существует ошибка Webkit , которая включает в себя небольшую дискуссию о желаемом поведении при щелчке правой кнопкой мыши по некоторому тексту, но эта дискуссия (и последующие изменения) произошла после Webkit был разветвлен для создания QtWebkitRelease20 (версия, выпущенная с Qt 4.7.x ) - я думаю, именно поэтому нужное вам поведение отображается в Chrome , но не Qt . Есть еще одна предстоящая ветка, QtWebkitRelease22 , которая будет включена как часть Qt 4.8 - я думаю, что изменения, которые вы после, будут реализованы в этом выпуске.

Таким образом, ваши варианты, как я вижу их:

  • Чтобы прикусить пулю и перейти на Qt 4.8.0 RC
  • Чтобы дождаться стабильной версии Qt 4.8 и найти обходной путь:
    • Сработает ли для вас возможность полностью отключить контекстное меню? QWidget::setContextMenuPolicy(Qt::NoContextMenu) выполнят эту работу, если это так.
    • Вы можете подключиться к QWebView::selectionChanged() signal и затем использовать findText("") для принудительного отмены выбора.
1 голос
/ 28 января 2012

Мы можем использовать функцию JavaScript, чтобы отключить выбор текста в нескольких браузерах следующим образом

<script type="text/javascript">

function disableSelection(target){
if (typeof target.onselectstart!="undefined") //For IE 
    target.onselectstart=function(){return false}
else if (typeof target.style.MozUserSelect!="undefined") //For Firefox
    target.style.MozUserSelect="none"
else //All other route (For Opera)
    target.onmousedown=function(){return false}
target.style.cursor = "default"
}
 </script>

Вызов этой функции

<script type="text/javascript">
   disableSelection(document.body)
</script>
...