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