PopupMenuのカスタマイズ

日本語

#1

こんにちは。

PopupMenuを使用したメニュー表示で
フォントをカスタムのフォントに変更したいのですが、
PopupMenu::LookAndFeelMethodsが呼ばれません。
カスタム方法など間違っているのでしょうか?

.hファイル(一部抜粋)

class CustomPopupMenu : public juce::Component,
public juce::PopupMenu::LookAndFeelMethods
{
public:
    explicit CustomPopupMenu();
    virtual ~CustomPopupMenu();
    
    Font getPopupMenuFont() override;
    
private:
    juce::PopupMenu *menu;
};

.cppファイル(一部抜粋)

#include "CMP4PopupMenuBaseJuce.h"

//==============================================================================
CustomPopupMenu::CustomPopupMenu()
{
    this->menu = new juce::PopupMenu();
    this->menu->setLookAndFeel(&getLookAndFeel());
}

CustomPopupMenu::~CustomPopupMenu()
{
    
}

Font CustomPopupMenu::getPopupMenuFont()
{
    // ★呼ばれない
    juce::Font font = juce::Font(juce::Typeface::createSystemTypefaceFor(BinaryData::CustomFont_ttf,
                                                                         BinaryData::CustomFont_ttfSize));
    font.setHeight(10.0f);
    
    return font;
}

どの様にしたらカスタムできるのか、ご回答いただけますと幸いです。


#2

このようなもの

class YourPopupMenuLookAndFeel : public LookAndFeel_V2
{
public:
    
    Font getPopupMenuFont() override
    {
        return Font (13.0f);
    }
};

class CustomPopupMenu : public PopupMenu
{
public:

    CustomPopupMenu()
    {
    setLookAndFeel (&m_Look);
    }

    ~ CustomPopupMenu()
    {
    setLookAndFeel (nullptr);
    }

private:

    YourPopupMenuLookAndFeel   m_Look;

    JUCE_LEAK_DETECTOR (CustomPopupMenu)
}

好きなように使う

CustomPopupMenu  yourMenu;

または

    YourPopupMenuLookAndFeel   m_Look;
    PopupMenu                  m_Menu;

として使用して

 m_Menu.setLookAndFeel (&m_Look);

Rail


#3

ご回答ありがとうございます。
ご回答いただいた内容で無事にPopupMenuの見た目をカスタマイズできました!
ありがとうございました。