亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

3.JUCE——Menus菜單控件(1)

2019-11-11 05:11:55
字體:
供稿:網(wǎng)友

一:程序效果

菜單6為自定義菜單。

二:菜單程序

2.1 新建JUCE GUI空項目,添加模版 MainWindow.h , MainWindow.cpp 和 Main.cpp。

2.2 新建MenusDemo.h 和 MenusDemo.cpp文件。

MenusDemo.h:

/*  ==============================================================================    MenusDemo.h    Created: 6 Feb 2017 3:21:45pm    Author:  magewell  ==============================================================================*/#ifndef MENUSDEMO_H_INCLUDED#define MENUSDEMO_H_INCLUDED#include "../JuceLibraryCode/JuceHeader.h"enum CommandIDs{	//menu1	menuDemoOneOne = 0x2000,	menuDemoOneTwo = 0x2001,	menuDemoOneThree = 0x2002,	//menu2	menuDemoTwoOne = 0x2003,	menuDemoTwoTwo = 0x2004,	menuDemoTwoThree = 0x2005,	menuDemoTwoFour = 0x2006,	//menu3	menuDemoThreeOne = 0x2007,	menuDemoThreeTwo = 0x2008,	menuDemoThreeThree = 0x2009,	menuDemoThreeFour = 0x200a,	//menu4	menuDemoFourOne = 0x200b,	menuDemoFourTwo = 0x200c,	menuDemoFourThree = 0x200d,	//menu5	menuDemoFiveOne = 0x2100,	menuDemoFiveTwo = 0x2101,	menuDemoFiveThree = 0x2102};class MenusDemo : public Component,	public MenuBarModel,	public Button::Listener{public:	MenusDemo();	~MenusDemo();	//======================================override	void resized() override;	StringArray getMenuBarNames() override;	PopupMenu getMenuForIndex(int menuIndex, const String& /*menuName*/) override;	void menuItemSelected(int menuItemID, int /*topLevelMenuIndex*/) override;	void buttonClicked(Button* button) override;PRotected:	PopupMenu getDummyPopupMenu();private:	TextButton popupButton;	ScopedPointer<MenuBarComponent> menuBar;	//==============================================================================	JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(MenusDemo)};#endif  // MENUSDEMO_H_INCLUDEDCommandIDs 為定義的菜單項ID,當(dāng)菜單被點擊時返回這個值。

JUCE基于MVC架構(gòu)設(shè)計,因此實現(xiàn)菜單需要繼承 MenuBarModel 。

菜單類主要完成對以下幾個功能的重寫:

void resized() override; 對Component類的重寫,大小改變時調(diào)用,一般在內(nèi)部重繪子組件(例如本例的TextButton)。StringArray getMenuBarNames() override;  對MenuBarModel 類的重寫,返回菜單名稱。PopupMenu getMenuForIndex(int menuIndex, const String& /*menuName*/) override; 對 MenuBarModel類的重寫,返回菜單子項。void menuItemSelected(int menuItemID, int /*topLevelMenuIndex*/) override; 對 MenuBarModel類的重寫,菜單選擇事件響應(yīng)。 void buttonClicked(Button* button) override;對 Button::Listener類的重寫,TextButton的點擊事件響應(yīng)。

MenusDemo.cpp:

/*  ==============================================================================    MenusDemo.cpp    Created: 6 Feb 2017 3:21:45pm    Author:  magewell  ==============================================================================*/#include "MenusDemo.h"//Construct/DeConstructMenusDemo::MenusDemo(){	menuBar = new MenuBarComponent(this);	addAndMakeVisible(menuBar);	popupButton.setButtonText("Show Popup Menu");	popupButton.setTriggeredOnMouseDown(true);	popupButton.addListener(this);	addAndMakeVisible(popupButton);}MenusDemo::~MenusDemo(){	PopupMenu::dismissAllActiveMenus();	popupButton.removeListener(this);}//overridevoid MenusDemo::resized(){	Rectangle<int> area(getLocalBounds());	menuBar->setBounds(area.removeFromTop(LookAndFeel::getDefaultLookAndFeel().getDefaultMenuBarHeight()));	area.removeFromTop(20);	area = area.removeFromTop(33);	popupButton.setBounds(area.removeFromLeft(200).reduced(5));}StringArray MenusDemo::getMenuBarNames(){	const char* const names[] = { "Menu1", "Menu2", "Menu3", "Menu4", "Menu5", "Menu6", nullptr };	return StringArray(names);}PopupMenu MenusDemo::getMenuForIndex(int menuIndex, const String& /*menuName*/){	PopupMenu menu;	if (menuIndex == 0)	{		menu.addItem(menuDemoOneOne,"menuDemoOneOne");		menu.addItem(menuDemoOneTwo,"menuDemoOneTwo");		menu.addSeparator();		menu.addItem(menuDemoOneThree,"menuDemoOneThree");	}	else if (menuIndex == 1)	{		menu.addItem(menuDemoTwoOne,"menuDemoTwoOne");		menu.addItem(menuDemoTwoTwo,"menuDemoTwoTwo");		menu.addItem(menuDemoTwoThree,"menuDemoTwoThree");		menu.addSeparator();		menu.addItem(menuDemoTwoFour,"menuDemoTwoFour");	}	else if (menuIndex == 2)	{		menu.addItem(menuDemoThreeOne,"menuDemoThreeOne");		menu.addItem(menuDemoThreeTwo,"menuDemoThreeTwo");		menu.addItem(menuDemoThreeThree,"menuDemoThreeThree");		menu.addItem(menuDemoThreeFour,"menuDemoThreeFour");	}	else if (menuIndex == 3)	{		menu.addItem(menuDemoFourOne,"menuDemoFourOne");		menu.addItem(menuDemoFourTwo,"menuDemoFourTwo");		menu.addItem(menuDemoFourThree,"menuDemoFourThree");	}	else if (menuIndex == 4)	{		menu.addItem(menuDemoFiveOne,"menuDemoFiveOne");		menu.addItem(menuDemoFiveTwo,"menuDemoFiveTwo");		menu.addItem(menuDemoFiveThree,"menuDemoFiveThree");	}	else if (menuIndex == 5)	{		return getDummyPopupMenu();	}	return menu;}void MenusDemo::menuItemSelected(int menuItemID, int /*topLevelMenuIndex*/){	//every command enter this...	printf("commands .../n");}void MenusDemo::buttonClicked(Button* button){	if (button == &popupButton)		getDummyPopupMenu().showMenuAsync(PopupMenu::Options().withTargetComponent(&popupButton), nullptr);}//protectedPopupMenu MenusDemo::getDummyPopupMenu(){	PopupMenu m;	m.addItem(1, "Normal item");	m.addItem(2, "Disabled item", false);	m.addItem(3, "Ticked item", true, true);	m.addColouredItem(4, "Coloured item", Colours::green);	m.addSeparator();	for (int i = 0; i < 8; ++i)	{		PopupMenu subMenu;		for (int s = 0; s < 8; ++s)		{			PopupMenu subSubMenu;			for (int item = 0; item < 8; ++item)				subSubMenu.addItem(1000 + (i * s * item), "Item " + String(item + 1));			subMenu.addSubMenu("Sub-sub menu " + String(s + 1), subSubMenu);		}		m.addSubMenu("Sub menu " + String(i + 1), subMenu);	}	return m;}當(dāng)菜單被點擊時進入 menuItemSelected 消息響應(yīng)。

三:將MenusDemo加入主Component:

class MainContentComponent : public Component{public:	MainContentComponent()	{		menusDemo = new MenusDemo;		addAndMakeVisible(menusDemo);	}	~MainContentComponent()	{		menusDemo = nullptr;	}	//=================================================override	void paint(Graphics &g) override	{		g.fillAll(Colour(0xff001F36));		//g.setFont(Font(16.0f));		//g.setColour(Colours::white);		//g.drawText("Hello World!", getLocalBounds(), Justification::centred, true);	}	void resized() override	{		Rectangle<int> area(getLocalBounds());		menusDemo->setBounds(area);	}private:	ScopedPointer<MenusDemo> menusDemo;	JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(MainContentComponent);};


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
久久久国产影院| 人妻激情偷乱视频一区二区三区| 成人欧美亚洲| 四虎成人影院网址| 国产一二三四在线视频| 亚洲桃花岛网站| 亚洲黄色在线视频| 国产视频亚洲视频| 欧美freesex黑人又粗又大| 三年片大全在线观看大全有哪些| 久久久精品成人| 美女网站视频久久| 97色在线观看免费视频| 女人在下体塞跳蛋在线观看| 99热都是精品| 日韩欧美一中文字暮专区| 国产超碰精品在线观看| 福利视频理论电影| 亚洲狼人国产精品| 亚洲成人网在线播放| 成年人免费高清视频| 日本一级片在线播放| wwwwww.色| 日本久久精品电影| 国产高潮在线| 久精品免费视频| 国产十八熟妇av成人一区| 欧美一区二区精品在线| 在线播放精品视频| free性护士videos欧美| 国产精品一二二区| 午夜诱惑痒痒网| 中文字幕一区电影| 成人综合专区| 销魂美女一区二区三区视频在线| 国产鲁鲁视频在线观看免费| 亚洲色成人一区二区三区小说| 亚洲伦理在线精品| 五月天av在线| 精品少妇一区二区三区在线播放| 婷婷综合在线| 欧美激情一级二级三级在线视频| 黄色av网址在线播放| 国产乱码精品一区二区| 深夜视频在线免费| 亚洲男人天堂2023| 亚洲天堂男人| 91在线免费视频| 日本十八禁视频无遮挡| 国产精品v日韩精品v欧美精品网站| 91视视频在线直接观看在线看网页在线看| 欧美承认网站| 欧美一区二区三区视频免费播放| av在线成人| 精品国产99久久久久久宅男i| 69xxxx欧美| 国产精品视频看| 国产白丝精品91爽爽久久| 青青草视频在线免费直播| 日韩欧美国产午夜精品| 精品国产乱码久久久久久果冻传媒| 国产主播一区二区三区| 欧美乱xxxxxxxxx| 国产免费不卡| 亚洲乱码久久| 久久久久国产精品区片区无码| 久久精品噜噜噜成人av农村| 波多野结衣家庭教师在线播放| 桃色一区二区| 国产手机精品视频| 男人的天堂99| 成人高潮片免费视频| 亚洲电影第三页| 欧美日韩最好看的视频| 亚洲精品a区| 国产又粗又长又硬| 免费成人看片| 国产精品毛片在线| ga∨成人网| av成人综合| 亚洲欧洲动漫| 国产精品福利在线观看| 国产在线拍偷自揄拍精品| 91麻豆国产在线| 亚洲一区二区三区中文字幕在线| 全程偷拍露脸中年夫妇| 国产喷白浆一区二区三区| 天堂中文av在线| 欧美一区二区三区免费看| 欧美日韩一卡二卡三卡| 久久五月情影视| 91国产视频在线观看| 亚洲视频狠狠| 欧美a级在线观看| 亚洲一区二区三区四区在线| 免费看成人哺乳视频网站| 亚洲午夜久久久久久久久电影网| 伊人精品在线视频| 国产一区二区91| 日产精品99久久久久久| 91福利区一区二区三区| 午夜精品久久久久久久无码| 在线播放日韩专区| 中文字幕在线观看网站| 国产一级二级三级| 69堂精品视频| 2021中文字幕一区亚洲| 色综合久久综合网| 国产精品进线69影院| 亚洲人成无码www久久久| 美女视频网站在线观看| 波多野结衣黄色网址| 五月花成人网| 一级毛片在线看| 精品久久福利| 国模私拍视频一区| 蜜芽在线免费观看| 中文日产幕无线码一区二区| 国产一区二区三区电影在线观看| 久久久久久综合网天天| 蜜桃av网站| 九九热最新地址| 中文字幕久久一区| 豆花视频一区二区| 久久久精彩视频| 欧美日韩一区二区三区高清| 亚洲欧洲专区| av天天在线| 性xxxxfreexxxxx欧美丶| 97久久精品人人爽人人爽蜜臀| 国产日韩欧美一区二区三区乱码| 日本精品久久久久中文字幕| 麻豆网站在线免费观看| 中文字幕不卡的av| 国产变态拳头交视频一区二区| 日韩天堂av| 免费欧美一级片| 久青草视频在线观看| 日韩黄色一区二区| 免费亚洲精品视频| 国外男同性恋在线看| 久久高清内射无套| 4hu永久免费入口| 国产免费又粗又猛又爽| 91av在线看| 99热这里有精品| 日韩a级作爱片一二三区免费观看| 国产黄人亚洲片| 久久综合九色综合久99| 欧美精品一区二区高清在线观看| 日韩综合中文字幕| 久久精品国产一区二区三区肥胖| 国产精品成人网站| 成人日韩在线| 欧美亚洲二区| 色综合 综合色| 高清一区在线观看| 四虎永久免费网站| www视频在线观看免费| 伊人久久大香线蕉成人综合网| 日韩专区一区二区| 国产麻豆综合视频在线观看| 精久久久久久| 日韩一二三区在线观看| 精品一区二区三区毛片| 老太脱裤让老头玩ⅹxxxx| 国产亚洲精品一区二区| 婷婷5月激情5月| 国产在线一二三区| 国产3p露脸普通话对白| 国产精品传媒| 欧美极品少妇全裸体| 国产精品国产亚洲精品看不卡15| 国产精品免费播放| 亚洲国产高清福利视频| 国产精品欧美精品| 在线免费观看不卡av| 国内精品久久久久久久久蜜桃| 宅男宅女性影片资源在线1| 色丁香婷婷综合久久| 免费观看黄色网| 国模无码视频一区二区三区| 精品午夜电影| 91久久伊人青青碰碰婷婷| 国产激情综合五月久久| 亚洲综合在线电影| 国产精品高潮呻吟久久久久| 国产精品欧美激情| 91精品国模一区二区三区| 九九在线免费视频| 波多野结衣一区二区三区免费视频| 日韩三级不卡| 在线丨暗呦小u女国产精品| 羞羞视频在线免费国产| 成人直播在线| 中文在线天堂网www| 青青草综合视频| 老汉av免费一区二区三区| 亚洲欧美日韩国产综合| 国产又大又粗又爽的毛片| 男人天堂亚洲天堂| 亚洲一区在线| 欧美亚洲愉拍一区二区| 在线观看日韩中文字幕| 国产精品19乱码一区二区三区| 影音先锋中文在线视频| 99热在线成人| 亚洲国产精品一区二区久久| 性猛交ⅹ×××乱大交| 免费黄色国产视频| 国产亚洲精品v| 久久青青草原| y111111国产精品久久婷婷| 97人人香蕉| 精品国产乱码一区二区三| 欧美视频一区二区三区四区| 性少妇xx生活| 婷婷久久综合九色综合99蜜桃| 欧美hentaied在线观看| 少妇荡乳情欲办公室456视频| av电影免费在线| 国产精品久久久久高潮| 国产欧美日韩一区二区三区在线观看| 制服.丝袜.亚洲.中文.综合懂| 蜜臀av一级做a爰片久久| 欧美sm精品调教视频| 高清视频国产| 青青操在线观看| 亚洲伊人久久综合| 视频一区视频二区国产精品| 日韩有码在线播放| 日韩大片在线观看视频| 午夜精品久久99蜜桃的功能介绍| 亚洲av无码乱码国产精品fc2| 136导航精品福利| 在线视频中文亚洲| 91亚洲午夜精品久久久久久| 六月婷婷综合| chien国产乱露脸对白| 日韩一卡二卡三卡| 国产成人拍精品视频午夜网站| 中文字幕一区二区久久人妻网站| 亚洲国产精品高清久久久| 久热精品视频在线播放| www.麻豆av| 91精品国产91久久久| 日韩欧美久久| 满满都是荷尔蒙韩剧在线观看| 麻豆精品久久久久久久99蜜桃| 星空无限传媒在线| 国产精品麻豆视频| 在这里有精品| 欧美日韩免费看片| 成人蜜桃视频网站网址| 国产美女久久久| 亚洲国产精品电影| 国产美女视频一区二区三区| 人妻精品一区二区三区| 一本色道久久综合狠狠躁篇的优点| 四虎电影网址| av动漫在线免费观看| 国产精选一区二区三区不卡催乳| 日韩精品视频观看| 免费成人高清| 91日韩欧美| 亚洲国产精品久久久男人的天堂| 亚洲综合小说图片| 亚洲欧美制服第一页| 欧美熟妇交换久久久久久分类| 国产免费拔擦拔擦8x高清在线人| 天堂av在线| av三级在线观看| 亚洲伊人精品酒店| 日本黄色中文字幕| 97av在线视频免费播放| 久久99精品久久久久久园产越南| 欧美精品www在线观看| 夜夜嗨av一区二区三区四区| 日韩亚洲国产精品| 日韩亚洲欧美在线| 粉嫩av一区二区三区在线播放| 天天色天天综合| 三级在线观看视频| 国产精品亚洲无码| 91美女在线| 成人黄色大片在线免费观看| 国产视频在线一区二区| 午夜电影福利网| 亚洲成av人片乱码色午夜| 国产视频一区二区在线播放| 国产三级在线| 国产传媒在线视频| 亚洲精品v日韩精品| 国产麻豆视频免费观看| 日韩电影免费在线观看网站| 青青视频一区二区| 亚洲一区中文字幕| 潘金莲一级淫片aaaaaaa| 亚洲高清不卡在线| 美国做受三级的视频播放| 欧美日韩视频网站| 欧美日韩国产精选| 伊人色在线视频| av大全在线免费看| 中文字幕男人天堂| 国产二区精品| 日本黄色中文字幕| 一区二区三区高清国产| 欧美群妇大交群的观看方式| 亚洲国产日韩美| 日韩在线观看免费全| 三级中文字幕在线观看| 久本草在线中文字幕亚洲| 日韩欧美aⅴ综合网站发布| 大胆国模一区二区三区| 青青草av专区| 国产精品国产三级国产普通话99| 欧美乱妇15p| 一区二区三区在线影院| 91九色鹿精品国产综合久久香蕉| 亚洲一区二区中文在线| 99久久久久国产精品| 狠狠久久亚洲欧美专区| 亚洲精品中文在线影院| 日本在线视频免费观看| 最新日韩免费视频| 黄色影院一级片| 国产一区二区三区不卡视频网站|