gpt4 book ai didi

qt - 在Windows PyQt中删除虚线边框而不设置NoFocus

转载 作者:行者123 更新时间:2023-12-02 04:33:22 27 4
gpt4 key购买 nike

关于此问题有一些问题,所有这些问题似乎都说删除虚线边框的唯一方法是 to set the focusPolicy on widget/item in question to NoFocus 。虽然这是一个临时修复,但这会阻止在其他必要的 focusEvents 领域中与所述小部件/项目进行进一步交互。

所述边界有问题:

Dotted Focus? Border

下面是一个示例,说明为什么这不起作用。

  • 我有一个非模态窗口小部件弹出窗口,可以将其视为图像的灯箱。
  • 我想检测小部件外部的 mousePressEvent 并因此关闭小部件。为此,我应该 catch the focusOutEvent .
  • 但是,如果我的程序中的绝大多数小部件都设置为 NoFocus(以消除边框问题),那么我无法捕获 focusOutEvent,因为,你猜对了,它们没有焦点策略。

这是另一个例子:

  • 我有一个 QTreeWidget,它是子类化的,因此我可以出于各种原因捕获 keyPressEvents。
  • QTreeWidget也被设置为NoFocus以防止出现边框。然而,正因为如此,小部件永远不会获得焦点,因此无法捕获 keyPressEvents。
  • 解决这个问题的方法(kludgy,我认为)是 use the widget's grabKeyboard class ,如果我稍后忘记释放键盘,这很危险。这不是最佳的。

那么问题是,有没有办法在不关闭应用程序中所有内容的焦点的情况下删除这个奇怪的(大多是丑陋的)虚线边框?提前致谢!

最佳答案

设置所需对象的轮廓:0。请参阅以下示例,将其设置为 QTableView

QTableView
{
outline: 0;
}

适用于QAbstractItemView继承类。 (QTreeWidget、QTableWidget 等)。令人惊讶的是 QT 文档中没有提到这个 CSS 属性。请参阅QT Style Sheet Reference Documenation.

关于qt - 在Windows PyQt中删除虚线边框而不设置NoFocus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9795791/

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