如何触发具有相同值的 ValueListener

How to trigger a ValueListener with the same value

我收听一个包含要加载文件路径的值。我想加载相同的文件,但监听器系统不会做出反应,除非路径与上次事件不同。

如何让 ValueListener 触发相同的数据?

首先,创建一个派生自 Value::ValueSource 的 class,它有自己重写的 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对象时,传入一个指向这个class的新实例的指针,如

Value myValue(new EagerValueSource());

然后使用 Value 对象,完全按照其他方式使用,除了每当调用 myValuesetValue() 方法时都会通知侦听器,无论这实际上是否是一个新值与否。