870920 Menu

JUCE常规控件之ProgressBar

JUCE原生两种形式的进度条,一种是简单的、无需显式动用后台线程的ProgressBar,适用于数据处理不占资源、出现在内容组件界面内、轻量级的进度显示,作为常规控件使用即可。另一种是数据处理使用后台线程,前台弹出模态窗口专门来显示进度条和文本消息的重量级进度窗ThreadWithProgressWindow(使用时需派生子类并实现run()函数)。

轻量级的ProgressBar继承了ComponentTimer,其使用流程是:创建本类对象时需指定所关联的double值,该值为处理进度的百分比(有效范围:0.0到1.0),只要本类对象调用了setVisible (true)使自己可见,则自动获取所关联的数据的最新值并重绘自身(内部原理是:启动计时器,开始不停的回调timerCallback()函数,在该函数中不停的获取所关联的数据并触发重绘)。而本类对象不可见时(setVisible (false);),则进度条停止前进(内部机制是停止回调计时器)。使用轻量级的ProgressBar具体步骤有4:

1、内容组件类声明对象:

2、构造函数中创建之,创建的同时绑定所关联的double数据:

3、内容组件类的resized()函数中布局定位。

4、类的析构函数中销毁进度条的堆对象(此处仅是演示传统方式下,完整使用控件的流程。实际编程时,类中的控件指针变量往往声明为ScopedPointer作用域指针,此时就无需显式销毁了。其他控件同理,不再赘述):

ProgressBar所关联的double值通常需在继承自Timer类的timerCallback()函数中不断改变。需注意,一定要确保参与运算的操作数和结果均是double。C++整型算术运算是不保留余数的,如操作数不显式转换为double值,则结果不正确(很可能永远为0),此时无法更新进度条。

ProgressBar的成员函数
 ProgressBar (所关联的double) 构造函数
 setPercentageDisplay () 是否显示当前进度的百分比文本(比如65%)。默认显示
 setTextToDisplay () 设置进度条上所显示的字符串文本