2011-03-25 33 views
1

所以我在这里做了一个简单的设置,在这里我创建一个按钮,放置一个位图和一些文本,然后连接一个事件处理程序。StaticText/StaticBitmap on Button blocking events

@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的默认行为?

回答

0

它看起来相关的蜡质::工具提示,好像目前还没有回答这个 - 包含的文本元素将阻止鼠标事件。一个有点令人费解的解决方案是制作一个位图按钮,其中包含一个位图,该位图在位图中嵌入了所需的文本。这只适用于文本是静态的并且永远不会改变的情况。

1

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

对于“暗示”我会用与@scanButton http://wxruby.rubyforge.org/doc/tooltip.html

+0

位图需要左对齐,文本放在靠近它。 Wx :: BitmapButton有一个左对齐选项,但这只适用于Windows(根据文档),我需要保持平台不可知。我也尝试过使用工具提示,但它在这种情况下无法工作,因为我在Google Sketchup上留下了一个'留在顶部'窗口,它并不总是有焦点,所以工具提示不会触发。我担心有些特殊情况。 – James 2011-03-29 15:43:15