2010-01-30 52 views
1

我有6 Button s,標有「_0」到「_5」。我希望在用戶按下相應的數字鍵時按下每個按鈕。現在,他們必須按下Alt +相應的數字鍵。在Gtk中,我可以使按鈕的助記符不需要「alt」掩碼嗎?

我可以通過給每個按鈕一個加速器來解決這個問題,但這不是一回事。對於加速器,只要按下該鍵,便會觸發按鈕的Clicked信號。通過助記符鍵,當按下該鍵時,該按鈕變爲壓下狀態,直到該按鈕被釋放,信號纔會被觸發。我更喜歡這個,因爲它可以幫助用戶看到發生了什麼。

有什麼辦法可以得到助記符的行爲,但不需要Alt鍵?

回答

1

您可以使用窗口類中的事件掩碼設置讓gtk窗口捕獲按鍵事件。因爲我使用GTKmm(C++綁定),所以我不能比使用回調和鍵類型更具體,但方法應該類似。基本上,當您在窗口中捕獲所需的關鍵事件時,您可以調用代碼中的按鈕按鈕。然而,窗口必須被選中(聚焦)。

+0

謝謝。任何想法'Button'使用什麼方法?按()似乎沒有任何作用。 'Click()'起作用,但其行爲與添加加速器時相同。如果你知道如何在GTKmm中做到這一點,我大概可以找出GTK#版本。 – 2010-01-30 21:32:41

+1

查看Gtk :: Widget類的gtkmm文檔。有一個函數調用set_state。按下按鈕時傳遞GTK :: STATE_ACTIVE,發佈時傳遞STATE_NORMAL或STATE_SELECTED。 – 2010-01-31 01:11:39

+0

這很有效。這很混亂,但總比沒有好。 – 2010-01-31 02:58:47