增加 Menu Bar 上的功能並不困難
之前已經都把框架都寫好了,這次只要在對的地方填對的東西就可以了
1. 首先到 MainWindow.h
把想要加的 command ID 都寫好
2. 到 MainComponent.h 增加之後要用到的 member variables 以及 member function
3. 因為沒有用到很多 component,所以改變 LookAndFeel 會看不太出來效果
所以為了讓感覺強烈一點,這邊讓背景顏色也會隨著 LookAndFeel 而改變
因此到 MainComponent.cpp 改動一下 paint(),將背景顏色用個member variable
記錄起來,mBkgColor 在 constructor 預設成黑色
4. 依然在 MainComponent.cpp
isLookAndFeelSelected() 是要用來判斷目前使用的 LookAndFeel 是哪一個
因為 JUCE 提供的 LookAndFeel 有三種 LookAndFeel_V1、LookAndFeel_V2、
LookAndFeel_V3
所以這邊用 template 的寫法來解決多型態的問題
首先,新增要顯示在 Menu Bar 上的名字
替 LookAndFeel 這個 Menu 增加功能選項
將 command ID 也新增上去
設定好新增的功能
這邊用 useLookAndFeelV1 為例
首先要去 setInfo()
如果想要有快捷鍵,就用 addDefaultKeypress() 去設定
和之前不一樣的地方是,因為在 UI 上,必須讓使用者知道目前使用的LookAndFeel 是哪個
setTicked() 會在使用中的 LookAndFeel 前面顯示個勾勾,借此讓使用者知道使用中的
LookAndFeel
setTicked() 會接收一個 bool 值為參數,在步驟4 所新增的 isLookAndFeelSelected()
就是在這個時候派上用場
同時也在這邊,設定好 mBkgColor 該要有的顏色
接下來看 native style 這個功能
整體的概念都一樣,只差在要知道現在是否用 native style,必須透過 MainWindow
才能得知
因此用之前寫好的 static class member function : getMainWindow() 來拿到指向
MainWindow 的指標
透過這個指標來詢問目前是否用 native style,並將結果給 setTicked() 即可
最後就是指定各 command ID 相對應要執行的動作
[1] : 和前面一樣,native style 必須透過 MainWindow 才能設定,所以要拿到對應的指標
[2] : LookAndFeel 就直接透過 LookAndFeel::setDefaultLookAndFeel() 去設定就好
6. 成果如下
沒有留言:
張貼留言