@NameRakes
Absolutely. The updates work in two directions:
When the bound value in the model changes, the widget is updated accordingly.
When the user (interactively) changes the widget's value, the bound value in the model is updated accordingly.
I would not have necessarily known that calling QLineEdit::setText() does not alter the model value. I am taking your word for that. That would emit QLineEdit::textChanged() signal. But there are also textEdited() & editingFinished() signals, and those are only emitted when the user interactively changes the text, not via setText(). So at a guess the model update happens on one of those instead. One would have to look at the code. If you wanted to test, you might force those to be emitted (by calling them directly) and see if that did cause the model to change.
Other widgets do not have this distinction between programmatic and user interaction signals. For example, QComboBox::currentIndexChanged() is emitted whenever the user or code causes setCurrentIndex() to be called. I imagine that one would cause the model value to be updated if called from code.
As a general rule if you want to change a value on a bound widget I would suggest/expect you to do so by altering the model, and letting that reflect back to the widget.