【问题标题】:Is there any way to completely remove the focus border of a wxTextCtrl object on OSX?有没有办法完全删除 OSX 上 wxTextCtrl 对象的焦点边框?
【发布时间】:2015-11-27 00:43:56
【问题描述】:

我正在使用 wxWidgets 3.0.2 在 OSX (Yosemite) 中构建一个项目。

我可以使用 wxBORDER_NONE 移除 wxTextCtrl 窗口周围的蓝色边框。但是当我把它放在一个sizer中时,它有一个我无法摆脱的3像素灰色边框。有 2 个边框有什么意义,其中一个不能删除?肯定人们想要定制的不止于此吗?

有什么办法可以去掉吗?我真的不想破解 wx 源代码,但如果必须的话,我会这样做。

或者是否有另一种不使用大小调整器来控制布局的方法,而不是可能导致边框不出现?


更新:似乎是焦点高亮边框。我不想要。

有什么方法可以禁用焦点 UI 对象周围的边框吗?太令人沮丧了,因为这是一件小事,但如果不能删除它,我的程序就没用了。

【问题讨论】:

  • " 是否有另一种不使用 sizer 来控制布局的方法" 你不必使用 sizer。您可以明确指定每个小部件的位置。它的雪橇很艰难,但并不比在没有大小调整器的框架中更难
  • 你能贴出你创建 wxTextCtrl 的代码并将它添加到 sizer 中吗?
  • 感谢您的输入,但我已经稍微更新了这个问题。这不是尺码器的错,只是尺码器显示了问题。我尝试使用绝对定位,它是一样的。问题纯粹是焦点边界。它是灰色的,大约 3px 宽,它毁了一切。我需要禁用它,或者以某种方式覆盖它。
  • @DaleyPaley 我在 wxTextCtrl 的焦点边框上遇到了同样的问题。你找到解决方案了吗?

标签: macos user-interface wxwidgets wxtextctrl


【解决方案1】:

如果其他人无意中看到这篇文章,这个答案是针对更新后的问题:

更新:似乎是焦点高亮边框。我不想要它。

有什么方法可以禁用焦点 UI 对象周围的边框吗?

使用 wxWidgets API,不,没有办法删除它,因为它是本机 NSTextField 类的行为。我只能通过编辑 wx 源本身将底层 NSTextField 对象的 focusRingType 属性设置为 NSFocusRingTypeNone 来删除它:


文件:core/textctrl.mm
函数:wxWidgetImpl::CreateTextControl

NSTextField* v = nil;
if ( style & wxTE_PASSWORD )
    v = [[wxNSSecureTextField alloc] initWithFrame:r];
else
    v = [[wxNSTextField alloc] initWithFrame:r];

...

// remove glow/border when textfield gets focused 
[v setFocusRingType:NSFocusRingTypeNone];

我还在我的wxTextCtrl 上设置了BORDER_NONE

当然,这会改变标准 OS X 的外观,所以也许这就是为什么它没有作为wxTextCtrl API 公开的原因?还是它破坏了其他东西?但到目前为止,它对我来说工作正常。另外,我的应用需要有自己的自定义主题,与发光边框不匹配。

我正在使用 wxWidgets 3.1.0(从他们的 repo 克隆)和 OS X 10.12。

【讨论】:

    【解决方案2】:

    这对我有用——在 Windows 上——

    首先 --> 将 EVT_SET_FOCUS 绑定到样式方法。

    第二次 --> 将 fg 和 bg 颜色重置为原始设计。

    Python 代码:

    button_1.Bind(wx.EVT_SET_FOCUS, focus_without_border)
    def focus_without_border(evt=None):
        element = evt.GetEventObject()
        element.SetForegroundColour( wx.Colour( 241, 241, 241 ) )
        element.SetBackgroundColour( wx.Colour( 40, 41, 42 ) )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-28
      • 1970-01-01
      • 2022-01-15
      • 2012-12-05
      • 2014-10-15
      • 2017-01-22
      • 2020-07-23
      相关资源
      最近更新 更多