2011-03-25 34 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