В коде, над которым я работаю, мне нужно показать Q_PROPERTIES от закрытого (ых) члена (ей) через один интегрирующий QWidget. Что-то это было бы неплохо:
class MyWidget: public QWidget{
Q_OBJECT
Q_PROPERTY(QString headerText MEMBER myLabel.text NOTIFY QLabel::notify)
private:
QLabel myLabel
}
Возможно ли это сделать и как? Или мне нужно написать все методы get / set вручную?
Вы должны написать свой собственный метод получения / установки:
QString getText()const{ return myLabel.text();}
void setText( const QString& s){ myLabel.setText(s);}
И после вы можете определить для него Q_PROPERTY:
Q_PROPERTY( QString headerText READ getText WRITE setText)
Примечание: для некоторых версий Qt вы можете обнаружить, что некоторые приемы работают, но они могут перестать работать в следующей версии. По этой причине, вероятно, лучше придерживаться обычного / стандартного поведения.
Редакция:
Чтобы добавить немного формализма к этому ответу, вот связанная ошибка:
https://bugreports.qt.io/browse/QTBUG-47695?jql=text%20~%20%22Q_PROPERTY%20member%22
Подведение итогов: в Qt<= 5.4 можно было использовать элементы структуры в параметре Q_PROPERTY MEMBER. Эта функция «Работает случайно» и с сегодняшнего дня не поддерживается.
Других решений пока нет …