1

所以我在这里有一个简单的设置,我制作一个按钮,在上面放置一个位图和一些文本,然后连接一个事件处理程序。

@scanButton = Wx::Button.new(self, -1, '', @@SCAN_BUTTON_POS, :size => @@SCAN_BUTTON_SIZE)
@scanBitmap = Wx::StaticBitmap.new(@scanButton, -1, bitmap, @@SCAN_BITMAP_POS)
@scanHint = Wx::StaticText.new(@scanButton, -1, 'Scan', @@SCAN_HINT_POS, :style => Wx::ALIGN_CENTER)

您会认为这里的默认行为是在按钮上的任意位置单击,即使它是在文本或位图上(因为它们是静态/不可聚焦的),也会将事件转发到父级(按钮)并且该按钮将被单击。

相反,单击静态文本/静态位图边界之外的按钮是单击按钮的唯一方法。单击位图或文本无效。我尝试将位图/文本中的事件转发到父级,但这也无法正常工作。有没有人有什么建议?也许有一些我不知道的 wxWidgets 的默认行为?

4

2 回答 2

1

为什么不使用 Wx::BitmapButton?http://wxruby.rubyforge.org/doc/bitmapbutton.html

对于“提示”,我将使用与@scanButton http://wxruby.rubyforge.org/doc/tooltip.html关联的 Wx::ToolTip

于 2011-03-29T02:57:52.760 回答
0

看起来目前似乎没有答案 - 包含的文本元素将阻止鼠标事件。一个有点骇人听闻的解决方案是制作一个包含位图的单个位图按钮,该位图将所需的文本嵌入位图中。这仅适用于文本是静态且永不更改的情况。

于 2011-08-01T20:22:53.417 回答