gpt4 book ai didi

qt - 如何防止 QWebEngineView 将注意力集中在 setHtml(...) 和 load(...) 调用上?

转载 作者:行者123 更新时间:2023-12-04 13:33:01 34 4
gpt4 key购买 nike

我用 QTreeViewQWebEngineView 创建了简单的 Qt 窗口布局:在 TreeView 中选择一些项目后,Web 引擎 View 会显示一些内容。问题是当调用 QWebEngineView::setHtml(...)load(...) 时, TreeView 会失去键盘焦点,而 Web 引擎 View 会得到它。这会导致在 TreeView 中使用键盘选择项目时遇到困难。那么,如何防止 TreeView 焦点丢失呢?

我尝试使用 QTextBrowser 而不是 QWebEngineView。没有这个问题,但是不适合复杂的HTML页面。

最佳答案

假设我们有:

QWebEngineView *webView = new QWebEngineView;

对于 Qt 5.8 和更新版本

这个问题可以通过调整设置来解决:

webView->settings()->setAttribute(QWebEngineSettings::FocusOnNavigationEnabled, false);

示例代码:https://github.com/rmisev/FocusWidget/tree/if-qt-5.8

引用文献:

对于 Qt 5.7 及更早版本

最简单的解决方案(@Netrix 也指出)是调用:

webView->setEnabled(false);

但这会禁用 webView 的键盘输入。

为了解决这个问题,我创建了简单的 FocusWidget 类作为 webView 的父窗口小部件,其工作原理如下:

  1. 最初它会禁用 webView (webView->setEnabled(false)),因此可以防止将注意力集中在 load(...) , setHtml(...) 调用。
  2. FocusWidget 获得焦点时,它启用并将焦点转发到 webView,因此启用键盘输入。
  3. webView 及其子项失去焦点时,FocusWidget 会再次禁用 webView

源代码和示例应用程序:https://github.com/rmisev/FocusWidget

关于qt - 如何防止 QWebEngineView 将注意力集中在 setHtml(...) 和 load(...) 调用上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36609489/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com