我听一个包含要加载的文件路径的Value。我想加载相同的文件,但是除非路径与上一个事件不同,否则侦听器系统不会做出反应。
如何让ValueListener触发相同的数据?
答案 0 :(得分:1)
首先,创建一个派生自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
的{{1}}方法时通知监听器,不管这实际上是否为新值或不。