MyGUI 学习笔记(三)——MyGUI sample3——13.02.07
2013-03-07 15:42
281 查看
先阅读MyGUI sample 记录并总结
主要内容如下:
1、创建窗口,并相应按钮
2、响应各种事件的详细方法
3、窗口的创建、查找和删除
-------------------------------
创建窗口:
动作响应:(函数为啥有2个参数,传参数怎么弄的)
定义事件信号:
委托函数在相同类中(委托函数中只有一个参数):
其他还可以:
——委托函数在不同的类中:
——委托函数是全局函数:
——委托函数是静态函数:
——创建一个没有父窗口的窗口
——创建一个有父窗口的窗口
其中:
align的值在align table中可以找到。
layer_name 在standard layers.中可以找到。
二、查找
——查找一个窗口(例如按钮)
——不关心窗口类型的查找
三、删除窗口
删除窗口需要从widget_ptr中获得的指针,然后代码:
如果没有指针,需要通过窗口名称查找:
主要内容如下:
1、创建窗口,并相应按钮
2、响应各种事件的详细方法
3、窗口的创建、查找和删除
-------------------------------
HowTo add buttons in window skin
创建窗口的skin:<Child type="Button" skin="WindowCaption" offset = "3 0 -6 30" align = "HStretch Top" name = "Caption"> <Property key="Scale" value = "1 1 0 0"/> </Child>
创建窗口:
MyGUI::WindowPtr window = MyGUI::Gui::getInstance().createWidget<MyGUI::Window>("WindowCSX", x, y, 390, 300, MyGUI::Align::Default, "Overlapped"); window->eventWindowButtonPressed += MyGUI::newDelegate(this, &DemoKeeper::notifyWindowPressed);
动作响应:(函数为啥有2个参数,传参数怎么弄的)
void DemoKeeper::notifyWindowPressed(MyGUI::Window* _widget, const std::string& _name) { MyGUI::WindowPtr window = _widget->castType<MyGUI::Window>(); if (_name == "close") window->destroySmooth(); else if (_name == "minimized") { // hide window and show button in your taskbar } else if (_name == "maximized") { // maximized window } }
HowTo use delegates
应用委托,必须有一个信号。( 特殊窗口已经定义的信号,需要查询说明文档。)定义事件信号:
/** Event : Mouse button pressed and released.\n signature : void method(MyGUI::Widget* _sender) @param _sender widget that called this event */ EventHandle_WidgetVoid eventMouseButtonClick;
委托函数在相同类中(委托函数中只有一个参数):
class Test { public: void mousePressed(MyGUI::Widget* _widget) { // ... } void main() { MyGUI::Button* button = mGUI->createWidget<MyGUI::Button>("Button", 10, 10, 300, 26, MyGUI::Align::Default, "Main"); button->eventMouseButtonClick = MyGUI::newDelegate(this, &Test::mousePressed); } }
其他还可以:
——委托函数在不同的类中:
button->eventMouseButtonClick = MyGUI::newDelegate(this, &Child::mousePressed);
——委托函数是全局函数:
button->eventMouseButtonClick = MyGUI::newDelegate(mousePressed);
——委托函数是静态函数:
button->eventMouseButtonClick = MyGUI::newDelegate(Test::mousePressed);
HowTo control widgets [create, find, destroy, etc.]
一、创建(手动的):——创建一个没有父窗口的窗口
MyGUI::Gui::getInstance().createWidget<MyGUI::widget_type>("skin_name", x, y, w, h, MyGUI::Align, "layer_name"[, "widget_name"]); MyGUI::Gui::getInstance().createWidgetReal<MyGUI::widget_type>("skin_name", x_r, y_r, w_r, h_r, MyGUI::Align, "layer_name"[, "widget_name"]);
——创建一个有父窗口的窗口
parent_ptr->createWidget<MyGUI::widget_type>("skin_name", x, y, w, h, MyGUI::Align [, "widget_name"]); parent_ptr->createWidgetReal<MyGUI::widget_type>("skin_name", x_r, y_r, w_r, h_r, MyGUI::Align [, "widget_name"]);
其中:
align的值在align table中可以找到。
layer_name 在standard layers.中可以找到。
二、查找
——查找一个窗口(例如按钮)
MyGUI::Button* button = MyGUI::Gui::getInstance().findWidget<MyGUI::Button>("button_name");
——不关心窗口类型的查找
MyGUI::Widget* any_widget = MyGUI::Gui::getInstance().findWidgetT("widget_name");
三、删除窗口
删除窗口需要从widget_ptr中获得的指针,然后代码:
MyGUI::Gui::getInstance().destroyWidget(widget_ptr);
如果没有指针,需要通过窗口名称查找:
MyGUI::Widget* widget = MyGUI::Gui::getInstance().findWidgetT("widget_name"); MyGUI::Gui::getInstance().destroyWidget(widget);
相关文章推荐
- MyGUI 学习笔记(二)——MyGUI sample2——13.01.23
- MyGUI 学习笔记(四)——MyGUI sample 4——13.03.11
- MyGUI 学习笔记(一)——MyGUI sample1——13.01.23
- MyGUI 学习笔记(五)——MyGUI 中其他文件1——13.03.12
- QT之GUI学习笔记---二进制文件读写
- (50)Java学习笔记——GUI
- 【OpenCV学习笔记3】OpenCV GUI 之 搭建MFC+OpenCV開發環境
- QT之GUI学习笔记(十一)----QColorDialog
- Matlab学习笔记 (一)GUI用户图形界面编程
- Myslqdump命令使用说明(学习笔记)超级详细
- Java基础班学习笔记(15)GUI图形界面编程
- 2011斯坦福大学iOS应用开发教程学习笔记(第二课)My First iOS App
- 【Unity 3D】学习笔记十:GUI Skin(图形用户界面皮肤)
- QT之GUI学习笔记(八)----菜单和工具条的优化
- Python学习笔记-简单GUI开发
- Vijava 学习笔记之 CustomizationSysprep、CustomizationGuiRunOnce、CustomizationGuiUnattended
- RT-Thread 学习笔记(十二)--- 开启基于RTGUI的LCD显示功能(2)<编译测试>
- Python2学习笔记之gui和安装demjson库
- Python学习笔记:GUI基本框架
- perl学习笔记---my和our