если вы не хотите, чтобы он был изменен из QML, не объявляйте WRITE и создайте метод, который при каждом изменении свойства выдает сигнал, метод setter может быть опубликован c или закрытым, но к нему нельзя получить доступ в QML
class C: public QObject{
Q_OBJECT
Q_PROPERTY(QString ro_text READ ro_text NOTIFY ro_textChanged)
public:
C(QObject *parent=nullptr): QObject(parent){
}
QString ro_text() const {
return m_ro_text;
}
Q_SIGNALS:
void ro_textChanged();
private:
void setRo_text(const QString & text){
if(m_ro_text == text)
return;
m_ro_text = text;
Q_EMIT ro_textChanged();
}
QString m_ro_text;
};