разоблачение q_property от частного участника

В коде, над которым я работаю, мне нужно показать Q_PROPERTIES от закрытого (ых) члена (ей) через один интегрирующий QWidget. Что-то это было бы неплохо:

class MyWidget: public QWidget{
Q_OBJECT
Q_PROPERTY(QString headerText MEMBER myLabel.text NOTIFY QLabel::notify)

private:
QLabel myLabel
}

Возможно ли это сделать и как? Или мне нужно написать все методы get / set вручную?

2

Решение

Вы должны написать свой собственный метод получения / установки:

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. Эта функция «Работает случайно» и с сегодняшнего дня не поддерживается.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]