In simple words, Q_PROPERTY is a special kind of class member that expose its access to QML.
Once a Q_PROPERTY is defined, QML can access it through setter/getter methods defined by READ/WRITE keywords in Q_PROPERTY declaration.
The Notification of Q_PROPERTY defined the signal will be emitted to QML engine once the value of the property is changed. If the notification is missed then in QML UI the value will not be updated.
Q_PROPERTY can also be inherited like normal class members.