To repro, add the following bit to houseplant.cpp in materials-cpp example, at the end of the constructor:
QObject::connect(m_plantMaterial, &Qt3DRender::QNormalDiffuseMapAlphaMaterial::textureScaleChanged,
[](float foobar){qDebug() << "new m_plantMaterial scale:" << foobar;});
QObject::connect(m_plantMaterial, &Qt3DRender::QNormalDiffuseMapAlphaMaterial::shininessChanged,
[](float foobar){qDebug() << "new m_plantMaterial shininess:" << foobar;});
QObject::connect(m_coverMaterial, &Qt3DRender::QNormalDiffuseMapMaterial::textureScaleChanged,
[](float foobar){qDebug() << "new m_coverMaterial scale:" << foobar;});
QObject::connect(m_coverMaterial, &Qt3DRender::QNormalDiffuseMapMaterial::shininessChanged,
[](float foobar){qDebug() << "new m_coverMaterial shininess:" << foobar;});
m_plantMaterial->setTextureScale(33);
m_coverMaterial->setTextureScale(55);
qDebug() << "scales are:" << m_plantMaterial->textureScale() << m_coverMaterial->textureScale();
m_plantMaterial->setShininess(33);
m_coverMaterial->setShininess(55);
qDebug() << "shininesses are:" << m_plantMaterial->shininess() << m_coverMaterial->shininess();
The m_plantMaterial is QNormalDiffuseMapAlphaMaterial while m_coverMaterial is QNormalDiffuseMapMaterial. The output is following:
new m_coverMaterial scale: 55 scales are: 33 55 new m_coverMaterial shininess: 55 shininesses are: 33 55 ...
As can be seen from the trace, change notifications come only for the m_coverMaterial, although the values are set properly for both materials when queried later.