我收听一个包含要加载的文件路径的值。我想加载相同的文件,但除非路径与上一个事件不同,否则侦听器系统不会做出反应。
如何让 ValueListener 触发相同的数据?
首先,创建一个派生自它的类,Value::ValueSource
它有自己的重写实现,setValue()
如下所示:
void setValue (const var& newValue) override
{
// base class version checks for equality first. Skip that
// and always set the value and notify of changes.
value = newValue;
sendChangeMessage (false);
}
其次,在创建Value
对象时,传入一个指向这个类的新实例的指针,比如
Value myValue(new EagerValueSource());
然后Value
完全按照您本来的方式使用该对象,除了每当调用myValue
'setValue()
方法时都会通知侦听器,无论这实际上是否是一个新值。