870920 Menu

JUCE_LIVE_CONSTANT宏详解

组件类的paint()中绘制各类UI元素时,往往需要反复设置并确定某些数值和颜色,编译运行,不断调整,耗时费力。JUCE_LIVE_CONSTANT()宏专用来简化此流程,可将其称为“实时调整与获取常量”宏。在对付较复杂的GUI界面时,使用该宏能大大提高编码效率,非常方便。


该宏的参数(单参)为C++内置类型或Colour、String等常量。亦即:paint()中所用到的常量用此宏包裹起来。编译并运行程序后,自动弹出一个额外的窗口:常量数值调整对话框。该对话框的左侧为调整控件(推子用于调整该宏所包裹的常量数值、颜色块用于调整Colour值、文本块可设置所显示的String)。该对话框右侧则是该常量所在的源码。调整左侧的控件,神奇的一幕出现了:程序界面的UI元素实时发生变化,同时,对话框右侧源代码中JUCE_LIVE_CONSTANT()宏所包裹的常量也实时发生变化。将调至合适的数值复制下来,IDE中粘贴替换先前的值即可。

下图是使用该宏、编译代码并运行后所自动弹出的常量调整对话框。

47908640

上图的源代码(位于某个GUI类的paint()函数中):

注意

1. 使用该宏的前提:Projucer的模块设置中启用juce_gui_extra子模块(每次新建GUI项目总是默认启用该子模块的),并且不得禁用JUCE_ENABLE_LIVE_CONSTANT_EDITOR。选择默认或开启,这两者的区别是:
– 默认:该宏仅在Debug模式下参与编译并在程序运行后自动弹出常量调整对话框。Release模式下则不参与编译,代码中仅保留该宏所包裹的常量。
– 开启:Release模式下也参与编译,即:Release版本的程序在运行后也会自动弹出常量调整对话框。

2. 代码中,每行最多只能有一个该宏。

3. 编译运行并弹出常量对话框之后,如果关闭该窗口,则在本次运行期内无法再次打开。