I have a few QSpinBox and QDoubleSpinBox within a form which I use the signal "valueChanged()" in order to tell if the user changed the value in the spinbox. I noticed however that this signal also fires if I change the value within my program.

Is there a way to differentiate between the user changing the value, and the program changing the value itself?

for instance on a QLineEdit, I can use the "textEdited()" signal, which does not fire when the program sets the text, or on a QComboBox I can use "activated()" which doesn't fire unless the user changes the value.