Название: Создание Q_PROPERTY Отправлено: dr_Begemot от Апрель 16, 2009, 14:20 Прочитав мануал по Qt так ничего и не понял про Q_PROPERTY...
Допустим есть класс: Код: class MyProperty : public QObject И это все что требуется? никаких объявлений bool m_show в приватной части? Дальше... требуется ли реализация функций bool show() const; и void setShow(bool on);??? У меня без них не компилится. пишет "unresolved external symbol" хорошо, написал реализацию, но откуда взять переменную, которую возвращать и которой присваивать новое значение? как должна выглядеть реализация bool show() const; и void setShow(bool on);??? Спасибо) Название: Re: Создание Q_PROPERTY Отправлено: Rcus от Апрель 16, 2009, 14:29 Реализация нужна. Переменная не всегда нужна. Если вы этого не понимаете, то свойства вам не нужны.
Название: Re: Создание Q_PROPERTY Отправлено: dr_Begemot от Апрель 16, 2009, 14:35 Реализация нужна. Переменная не всегда нужна. Если вы этого не понимаете, то свойства вам не нужны. гм... странная связь: если не понимаете - то вам не нужно... Можно было бы и объяснить. Название: Re: Создание Q_PROPERTY Отправлено: -QT- от Апрель 16, 2009, 16:35 Код
Название: Re: Создание Q_PROPERTY Отправлено: dr_Begemot от Апрель 16, 2009, 16:44 Реализация нужна. Переменная не всегда нужна. Если вы этого не понимаете, то свойства вам не нужны. Не могли бы вы пояснить почему переменная не всегда нужна? Что же тогда будет делать setShow? Название: Re: Создание Q_PROPERTY Отправлено: Пантер от Апрель 16, 2009, 16:46 Что захочет, то и будет. Как реализуешь. :)
Название: Re: Создание Q_PROPERTY Отправлено: Rcus от Апрель 16, 2009, 16:53 Не могли бы вы пояснить почему переменная не всегда нужна? Что же тогда будет делать setShow? Это у вас надо спрашивать что он будет делать :) Самый простой случай это запись данных в настройки. Посложнее тоже можно придумать, но сперва нужно понять, нужны ли все-таки свойства :) Название: Re: Создание Q_PROPERTY Отправлено: ритт от Апрель 26, 2009, 02:29 Код: class MyProperty : public QObject переменная оказалась не нужна :) доктор_бегемот, советую обратиться к закреплённой теме о литературе и выбрать книжечку по кутэ на свой вкус. и читать её, читать... Название: Re: Создание Q_PROPERTY Отправлено: pethead от Ноябрь 10, 2010, 17:31 Q_PROPERTY слишком смахивает не дельфовые Published property (для доступа к полям через RTTI на примере Object Inspector)
вот только в Qt почему то нет доступа через q_проперти к полю. Код: class Cloud : public QObject, public QGraphicsItem ругается error C2039: 'Name' : is not a member of 'Cloud' вопрос: qt-шные проперти ограничены использованием только для Объектных Испекторов? или что сделано не так? как сделать что работало свойство как доступ к полю? Название: Re: Создание Q_PROPERTY Отправлено: crackedmind от Ноябрь 10, 2010, 17:50 Дяденька, вы документацию будете читать или нет?
Свойства доступны через функции setProperty & property класса QObject Название: Re: Создание Q_PROPERTY Отправлено: Авварон от Ноябрь 10, 2010, 18:31 Цитировать MyClass *myinstance = new MyClass; QObject *object = myinstance; myinstance->setPriority(MyClass::VeryHigh); object->setProperty("priority", "VeryHigh"); Название: Re: Создание Q_PROPERTY Отправлено: pethead от Ноябрь 10, 2010, 18:39 читал, конечно, просто не понятно каков тогда смысл применения Q_PROPERTY.
это если я захочу написать Object Inspector разве только? просто думал что применение может быть иным. Название: Re: Создание Q_PROPERTY Отправлено: BlackTass от Ноябрь 10, 2010, 18:43 применение различное, начиная от банальной рефлексии и заканчивая использованием в QtScript и QML. Поэтому и спрашивали зачем в данном конкретном случае нужен ку_проперти
Название: Re: Создание Q_PROPERTY Отправлено: xintrea от Февраль 13, 2018, 22:22 читал, конечно, просто не понятно каков тогда смысл применения Q_PROPERTY. Вот небольшая пояснялка по этой теме: Зачем нужен макрос Q_PROPERTY и как им пользоваться (https://webhamster.ru/mytetrashare/index/mtb0/15185467018b3cxfk5fk) Название: Re: Создание Q_PROPERTY Отправлено: Day от Февраль 15, 2018, 13:14 Цитировать Не могли бы вы пояснить почему переменная не всегда нужна? Вот пришел в голову такой (надуманный) пример. Пусть у вас в классе есть переменная Numb и свойство Even (четное ли оно) Метод bool even() очевиден { return Numb%2 == 0; } А вот setEven(bool) можно реализовать по разному (примеры реализации придумайте сам).Итого: Свойство есть - переменной, ему соответствующей нет! Название: Re: Создание Q_PROPERTY Отправлено: Day от Февраль 15, 2018, 13:32 Цитировать каков тогда смысл применения Вообще-то никто не заставляет. Не хочешь (не видишь смысла) - не применяй. Сеттеры - геттеры чаще всего вполне могут заменить property - setProperty. Я вот этой кухни не применяю - не вижу пока резона. Но свойства очень удобно использовать в другом смысле. Их можно СОЗДАВАТЬ. То есть дополнять уже существующий стандартный класс новыми данными (переменными). Если бы этого механизма не было, по каждой ерунде пришлось бы наследоваться. |