1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2016 The Qt Company Ltd. 4 ** Contact: https://www.qt.io/licensing/ 5 ** 6 ** This file is part of the documentation of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:BSD$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see https://www.qt.io/terms-conditions. For further 15 ** information use the contact form at https://www.qt.io/contact-us. 16 ** 17 ** BSD License Usage 18 ** Alternatively, you may use this file under the terms of the BSD license 19 ** as follows: 20 ** 21 ** "Redistribution and use in source and binary forms, with or without 22 ** modification, are permitted provided that the following conditions are 23 ** met: 24 ** * Redistributions of source code must retain the above copyright 25 ** notice, this list of conditions and the following disclaimer. 26 ** * Redistributions in binary form must reproduce the above copyright 27 ** notice, this list of conditions and the following disclaimer in 28 ** the documentation and/or other materials provided with the 29 ** distribution. 30 ** * Neither the name of The Qt Company Ltd nor the names of its 31 ** contributors may be used to endorse or promote products derived 32 ** from this software without specific prior written permission. 33 ** 34 ** 35 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 36 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 37 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 38 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 39 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 40 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 41 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 42 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 43 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 44 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 45 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." 46 ** 47 ** $QT_END_LICENSE$ 48 ** 49 ****************************************************************************/ 50 51 //! [0] 52 Q_PROPERTY(type name 53 (READ getFunction [WRITE setFunction] | 54 MEMBER memberName [(READ getFunction | WRITE setFunction)]) 55 [RESET resetFunction] 56 [NOTIFY notifySignal] 57 [REVISION int] 58 [DESIGNABLE bool] 59 [SCRIPTABLE bool] 60 [STORED bool] 61 [USER bool] 62 [CONSTANT] 63 [FINAL] 64 [REQUIRED]) 65 //! [0] 66 67 68 //! [1] 69 Q_PROPERTY(bool focus READ hasFocus) 70 Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled) 71 Q_PROPERTY(QCursor cursor READ cursor WRITE setCursor RESET unsetCursor) 72 //! [1] 73 74 75 //! [2] 76 Q_PROPERTY(QDate date READ getDate WRITE setDate) 77 //! [2] 78 79 80 //! [3] 81 QPushButton *button = new QPushButton; 82 QObject *object = button; 83 84 button->setDown(true); 85 object->setProperty("down", true); 86 //! [3] 87 88 89 //! [4] 90 QObject *object = ... 91 const QMetaObject *metaobject = object->metaObject(); 92 int count = metaobject->propertyCount(); 93 for (int i=0; i<count; ++i) { 94 QMetaProperty metaproperty = metaobject->property(i); 95 const char *name = metaproperty.name(); 96 QVariant value = object->property(name); 97 ... 98 } 99 //! [4] 100 101 102 //! [5] 103 class MyClass : public QObject 104 { 105 Q_OBJECT 106 Q_PROPERTY(Priority priority READ priority WRITE setPriority NOTIFY priorityChanged) 107 108 public: 109 MyClass(QObject *parent = 0); 110 ~MyClass(); 111 112 enum Priority { High, Low, VeryHigh, VeryLow }; Q_ENUM(Priority)113 Q_ENUM(Priority) 114 115 void setPriority(Priority priority) 116 { 117 m_priority = priority; 118 emit priorityChanged(priority); 119 } priority() const120 Priority priority() const 121 { return m_priority; } 122 123 signals: 124 void priorityChanged(Priority); 125 126 private: 127 Priority m_priority; 128 }; 129 //! [5] 130 131 132 //! [6] 133 MyClass *myinstance = new MyClass; 134 QObject *object = myinstance; 135 136 myinstance->setPriority(MyClass::VeryHigh); 137 object->setProperty("priority", "VeryHigh"); 138 //! [6] 139 140 141 //! [7] 142 Q_CLASSINFO("Version", "3.0.0") 143 //! [7] 144 145 //! [8] 146 Q_PROPERTY(QColor color MEMBER m_color NOTIFY colorChanged) 147 Q_PROPERTY(qreal spacing MEMBER m_spacing NOTIFY spacingChanged) 148 Q_PROPERTY(QString text MEMBER m_text NOTIFY textChanged) 149 ... 150 signals: 151 void colorChanged(); 152 void spacingChanged(); 153 void textChanged(const QString &newText); 154 155 private: 156 QColor m_color; 157 qreal m_spacing; 158 QString m_text; 159 //! [8] 160 161