/**************************************************************************** ** ** Copyright (C) 2015 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** ** This file is part of the documentation of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:FDL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see http://www.qt.io/terms-conditions. For further ** information use the contact form at http://www.qt.io/contact-us. ** ** GNU Free Documentation License Usage ** Alternatively, this file may be used under the terms of the GNU Free ** Documentation License version 1.3 as published by the Free Software ** Foundation and appearing in the file included in the packaging of ** this file. Please review the following information to ensure ** the GNU Free Documentation License version 1.3 requirements ** will be met: http://www.gnu.org/copyleft/fdl.html. ** $QT_END_LICENSE$ ** ****************************************************************************/ /*! \qmlmodule QtQuick 2.7 \title Qt Quick QML Types \ingroup qmlmodules \brief Provides graphical QML types. The \l{Qt Quick} module provides graphical primitive types. These types are only available in a QML document if that document imports the \c QtQuick namespace. The current version of the \c QtQuick module is version 2.7, and thus it may be imported via the following statement: \qml import QtQuick 2.7 \endqml Visit the \l {Qt Quick} module documentation for more information about the concepts which are central to \c QtQuick. \section1 Submodules Qt Quick includes several submodules which contain additional types. \list \li \l{Qt Quick XmlListModel QML Types}{XML List Model} - contains types for creating models from XML data \li \l{Qt Quick Local Storage QML Types}{Local Storage} - a submodule containing a JavaScript interface for an SQLite database \li \l{Qt Quick Particles QML Types}{Particles} - provides a particle system for QML applications \li \l{Qt Quick Window QML Types}{Window} - contains types for creating top-level windows and accessing screen information \li \l{Qt Quick Dialogs QML Types}{Dialogs} - contains types for creating and interacting with system dialogs \li \l{Qt Quick Controls QML Types}{Controls} - provides a set of reusable UI components \li \l{Qt Quick Layouts QML Types}{Layouts} - contains types that are used to arrange items in the user interface \li \l{Qt Quick Test QML Types}{Tests} - types for testing QML applications. \endlist \target basic-types \section1 Basic Types There are a number of basic types that are \l{qtqml-typesystem-basictypes.html#basic-types-provided-by-the-qml-language} {supported by default in the QML language}. In addition, the \c QtQuick import provides the following basic types: \annotatedlist qtquickbasictypes \section1 Object Types All object types provided by the \c QtQuick import are based on the \l{Item} type, which itself derives from \l{QtQml::QtObject}{QtObject}. \l{Qt QML QML Types#Object Types} {QML object types} provided by the Qt QML module (such as \l{QtQml::QtObject}{QtObject} and \l{QtQml::Component}{Component}) are also available when you import \c QtQuick. */ /*! \qmlbasictype color \ingroup qtquickbasictypes \brief an ARGB color value. \target colorbasictypedocs The \c color type refers to an ARGB color value. It can be specified in a number of ways: \list \li By a \l{http://www.w3.org/TR/SVG/types.html#ColorKeywords}{SVG color name}, such as "red", "green" or "lightsteelblue". \li By a hexadecimal triplet or quad in the form \c "#RRGGBB" and \c "#AARRGGBB" respectively. For example, the color red corresponds to a triplet of \c "#FF0000" and a slightly transparent blue to a quad of \c "#800000FF". \li Using the \l{QtQml::Qt::rgba()}{Qt.rgba()}, \l{QtQml::Qt::hsva()}{Qt.hsva()}, \l{QtQml::Qt::hsla()}{Qt.hsla()}, \l{QtQml::Qt::darker()}{Qt.darker()}, \l{QtQml::Qt::lighter()}{Qt.lighter()} or \l{QtQml::Qt::tint()}{Qt.tint()} functions. \endlist Example: \div{float-right} \inlineimage declarative-colors.png \enddiv \snippet qml/colors.qml colors A color type has \c r, \c g, \c b and \c a properties that refer to the red, green, blue and alpha values of the color, respectively. Additionally it has \c hsvHue, \c hsvSaturation, \c hsvValue and \c hslHue, \c hslSaturation, \c hslLightness properties, which allow access to color values in HSV and HSL color models accordingly: \qml Text { color: "red" // prints "1 0 0 1" Component.onCompleted: console.log(color.r, color.g, color.b, color.a) } \endqml To test color values for equality, use the \l{QtQml::Qt::colorEqual()}{Qt.colorEqual()} function. This allows colors to be accurately compared whether they are in property form or in any of the acceptable string specification forms. When integrating with C++, note that any QColor value \l{qtqml-cppintegration-data.html}{passed into QML from C++} is automatically converted into a \c color value, and vice-versa. This basic type is provided by the QtQuick import. \sa {QML Basic Types} */ /*! \qmlbasictype font \ingroup qtquickbasictypes \brief a font value with the properties of QFont. \target fontbasictypedocs The \c font type refers to a font value with the properties of QFont. The most commonly used properties are: \list \li \l string \c font.family \li \l bool \c font.bold \li \l bool \c font.italic \li \l bool \c font.underline \li \l real \c font.pointSize \li \l int \c font.pixelSize \endlist If both \c pointSize and a \c pixelSize are specified, \c pixelSize will be used. The following properties are also available: \list \li \l enumeration \c font.weight \li \l bool \c font.overline \li \l bool \c font.strikeout \li \l enumeration \c font.capitalization \li \l real \c font.letterSpacing \li \l real \c font.wordSpacing \li \l enumeration \c font.hintingPreference \endlist Example: \qml Text { font.family: "Helvetica"; font.pointSize: 13; font.bold: true } \endqml When integrating with C++, note that any QFont value \l{qtqml-cppintegration-data.html}{passed into QML from C++} is automatically converted into a \c font value, and vice-versa. This basic type is provided by the QtQuick import. Font weighting is classified on a scale from 0 to 99, where a weight of 0 is ultralight, and 99 is extremely black. The following values are supported: \table \row \li \c Font.Thin \li 0 \row \li \c Font.ExtraLight \li 12 \row \li \c Font.Light \li 25 \row \li \c Font.Normal \li 50 \row \li \c Font.Medium \li 57 \row \li \c Font.DemiBold \li 63 \row \li \c Font.Bold \li 75 \row \li \c Font.ExtraBold \li 81 \row \li \c Font.Black \li 87 \endtable Capitalization supports the following values: \table \row \li \c Font.MixedCase \li No capitalization change is applied. \row \li \c Font.AllUppercase \li Alters the text to be rendered in all uppercase type. \row \li \c Font.AllLowercase \li Alters the text to be rendered in all lowercase type. \row \li \c Font.SmallCaps \li Alters the text to be rendered in small-caps type. \row \li \c Font.Capitalize \li Alters the text to be rendered with the first character of each word as an uppercase character. \endtable Setting the hinting preference only has an effect when using the "NativeRendering" render type. The property supports the following values: \list \value Font.PreferDefaultHinting - Use the default hinting level for the target platform. \value Font.PreferNoHinting - If possible, render text without hinting the outlines of the glyphs. \value Font.PreferVerticalHinting - If possible, render text with no horizontal hinting, but align glyphs to the pixel grid in the vertical direction. \value Font.PreferFullHinting - If possible, render text with hinting in both horizontal and vertical directions. \endlist \sa {QML Basic Types} */ /*! \qmlbasictype vector2d \ingroup qtquickbasictypes \brief A vector2d type has x and y attributes. A \c vector2d type has \c x and \c y attributes, otherwise it is similar to the \c vector3d type. Please see the documentation about the \c vector3d type for more information. To create a \c vector2d value, specify it as a "x,y" string, or define the components individually, or compose it with the Qt.vector2d() function. The vector2d type has the following idempotent functions which can be invoked in QML: \table 60% \header \li Function Signature \li Description \li Example \row \li real dotProduct(vector2d other) \li Returns the scalar real result of the dot product of \c this vector2d with the \c other vector2d \li \code var a = Qt.vector2d(1,2); var b = Qt.vector2d(3,4); var c = a.dotProduct(b); console.log(c); // 11 \endcode \row \li vector2d times(vector2d other) \li Returns the vector2d result of multiplying \c this vector2d with the \c other vector2d \li \code var a = Qt.vector2d(1,2); var b = Qt.vector2d(3,4); var c = a.times(b); console.log(c.toString()); // QVector2D(3, 8) \endcode \row \li vector2d times(real factor) \li Returns the vector2d result of multiplying \c this vector2d with the scalar \c factor \li \code var a = Qt.vector2d(1,2); var b = 4.48; var c = a.times(b); console.log(c.toString()); // QVector2D(4.48, 8.96) \endcode \row \li vector2d plus(vector2d other) \li Returns the vector2d result of the addition of \c this vector2d with the \c other vector2d \li \code var a = Qt.vector2d(1,2); var b = Qt.vector2d(3,4); var c = a.plus(b); console.log(c.toString()); // QVector2D(4, 6) \endcode \row \li vector2d minus(vector2d other) \li Returns the vector2d result of the subtraction of \c other vector2d from \c this vector2d \li \code var a = Qt.vector2d(1,2); var b = Qt.vector2d(3,4); var c = a.minus(b); console.log(c.toString()); // QVector2D(-2, -2) \endcode \row \li vector2d normalized() \li Returns the normalized form of \c this vector \li \code var a = Qt.vector2d(1,2); var b = a.normalized(); console.log(b.toString()); // QVector2D(0.447214, 0.894427) \endcode \row \li real length() \li Returns the scalar real value of the length of \c this vector2d \li \code var a = Qt.vector2d(1,2); var b = a.length(); console.log(b.toString()); // 2.23606797749979 \endcode \row \li vector3d toVector3d() \li Returns the vector3d result of converting \c this vector2d to a vector3d \li \code var a = Qt.vector2d(1,2); var b = a.toVector3d(); console.log(b.toString()); // QVector3D(1, 2, 0) \endcode \row \li vector4d toVector4d() \li Returns the vector4d result of converting \c this vector2d to a vector4d \li \code var a = Qt.vector2d(1,2); var b = a.toVector4d(); console.log(b.toString()); // QVector4D(1, 2, 0, 0) \endcode \row \li bool fuzzyEquals(vector2d other, real epsilon) \li Returns true if \c this vector2d is approximately equal to the \c other vector2d. The approximation will be true if each attribute of \c this is within \c epsilon of \c other. Note that \c epsilon is an optional argument, the default \c epsilon is 0.00001. \li \code var a = Qt.vector2d(1,2); var b = Qt.vector2d(1.0001, 1.9998); var c = a.fuzzyEquals(b); // default epsilon var d = a.fuzzyEquals(b, 0.005); // supplied epsilon console.log(c + " " + d); // false true \endcode \endtable This basic type is provided by the QtQuick import. \sa {QML Basic Types} */ /*! \qmlbasictype vector3d \ingroup qtquickbasictypes \brief a value with x, y, and z attributes. The \c vector3d type refers to a value with \c x, \c y, and \c z attributes. To create a \c vector3d value, specify it as a "x,y,z" string: \qml Rotation { angle: 60; axis: "0,1,0" } \endqml or with the \l{QtQml::Qt::vector3d()}{Qt.vector3d()} function: \qml Rotation { angle: 60; axis: Qt.vector3d(0, 1, 0) } \endqml or as separate \c x, \c y, and \c z components: \qml Rotation { angle: 60; axis.x: 0; axis.y: 1; axis.z: 0 } \endqml Each attribute of a vector3d value is stored internally as a single-precision floating point number (\c float). When integrating with C++, note that any QVector3D value \l{qtqml-cppintegration-data.html}{passed into QML from C++} is automatically converted into a \c vector3d value, and vice-versa. The vector3d type has the following idempotent functions which can be invoked in QML: \table \header \li Function Signature \li Description \li Example \row \li vector3d crossProduct(vector3d other) \li Returns the vector3d result of the cross product of \c this vector3d with the \c other vector3d \li \code var a = Qt.vector3d(1,2,3); var b = Qt.vector3d(4,5,6); var c = a.crossProduct(b); console.log(c.toString()); // QVector3D(-3, 6, -3) \endcode \row \li real dotProduct(vector3d other) \li Returns the scalar real result of the dot product of \c this vector3d with the \c other vector3d \li \code var a = Qt.vector3d(1,2,3); var b = Qt.vector3d(4,5,6); var c = a.dotProduct(b); console.log(c); // 32 \endcode \row \li vector3d times(matrix4x4 matrix) \li Returns the vector3d result of transforming \c this vector3d with the 4x4 \c matrix with the matrix applied post-vector \li \code var a = Qt.vector3d(1,2,3); var b = Qt.matrix4x4(4,5,6,7,8,9,10,11, 12,13,14,15,16,17,18,19); var c = a.times(b); console.log(c.toString()); // QVector3D(0.774194, 0.849462, 0.924731) \endcode \row \li vector3d times(vector3d other) \li Returns the vector3d result of multiplying \c this vector3d with the \c other vector3d \li \code var a = Qt.vector3d(1,2,3); var b = Qt.vector3d(4,5,6); var c = a.times(b); console.log(c.toString()); // QVector3D(4, 10, 18) \endcode \row \li vector3d times(real factor) \li Returns the vector3d result of multiplying \c this vector3d with the scalar \c factor \li \code var a = Qt.vector3d(1,2,3); var b = 4.48; var c = a.times(b); console.log(c.toString()); // QVector3D(4.48, 8.96, 13.44) \endcode \row \li vector3d plus(vector3d other) \li Returns the vector3d result of the addition of \c this vector3d with the \c other vector3d \li \code var a = Qt.vector3d(1,2,3); var b = Qt.vector3d(4,5,6); var c = a.plus(b); console.log(c.toString()); // QVector3D(5, 7, 9) \endcode \row \li vector3d minus(vector3d other) \li Returns the vector3d result of the subtraction of \c other vector3d from \c this vector3d \li \code var a = Qt.vector3d(1,2,3); var b = Qt.vector3d(4,5,6); var c = a.minus(b); console.log(c.toString()); // QVector3D(-3, -3, -3) \endcode \row \li vector3d normalized() \li Returns the normalized form of \c this vector \li \code var a = Qt.vector3d(1,2,3); var b = a.normalized(); console.log(b.toString()); // QVector3D(0.267261, 0.534522, 0.801784) \endcode \row \li real length() \li Returns the scalar real value of the length of \c this vector3d \li \code var a = Qt.vector3d(1,2,3); var b = a.length(); console.log(b.toString()); // 3.7416573867739413 \endcode \row \li vector2d toVector2d() \li Returns the vector2d result of converting \c this vector3d to a vector2d \li \code var a = Qt.vector3d(1,2,3); var b = a.toVector2d(); console.log(b.toString()); // QVector2D(1, 2) \endcode \row \li vector4d toVector4d() \li Returns the vector4d result of converting \c this vector3d to a vector4d \li \code var a = Qt.vector3d(1,2,3); var b = a.toVector4d(); console.log(b.toString()); // QVector4D(1, 2, 3, 0) \endcode \row \li bool fuzzyEquals(vector3d other, real epsilon) \li Returns true if \c this vector3d is approximately equal to the \c other vector3d. The approximation will be true if each attribute of \c this is within \c epsilon of \c other. Note that \c epsilon is an optional argument, the default \c epsilon is 0.00001. \li \code var a = Qt.vector3d(1,2,3); var b = Qt.vector3d(1.0001, 1.9998, 2.0001); var c = a.fuzzyEquals(b); // default epsilon var d = a.fuzzyEquals(b, 0.005); // supplied epsilon console.log(c + " " + d); // false true \endcode \endtable This basic type is provided by the QtQuick import. \sa {QML Basic Types} */ /*! \qmlbasictype vector4d \ingroup qtquickbasictypes \brief A vector4d type has x, y, z and w attributes. A \c vector4d type has \c x, \c y, \c z and \c w attributes, otherwise it is similar to the \c vector3d type. Please see the documentation about the \c vector3d type for more information. To create a \c vector4d value, specify it as a "x,y,z,w" string, or define the components individually, or compose it with the Qt.vector4d() function. The vector4d type has the following idempotent functions which can be invoked in QML: \table \header \li Function Signature \li Description \li Example \row \li real dotProduct(vector4d other) \li Returns the scalar real result of the dot product of \c this vector4d with the \c other vector4d \li \code var a = Qt.vector4d(1,2,3,4); var b = Qt.vector4d(5,6,7,8); var c = a.dotProduct(b); console.log(c); // 70 \endcode \row \li vector4d times(matrix4x4 matrix) \li Returns the vector4d result of transforming \c this vector4d with the 4x4 \c matrix with the matrix applied post-vector \li \code var a = Qt.vector4d(1,2,3,4); var b = Qt.matrix4x4(4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19); var c = a.times(b); console.log(c.toString()); // QVector4D(120, 130, 140, 150) \endcode \row \li vector4d times(vector4d other) \li Returns the vector4d result of multiplying \c this vector4d with the \c other vector4d \li \code var a = Qt.vector4d(1,2,3,4); var b = Qt.vector4d(5,6,7,8); var c = a.times(b); console.log(c.toString()); // QVector4D(5, 12, 21, 32) \endcode \row \li vector4d times(real factor) \li Returns the vector4d result of multiplying \c this vector4d with the scalar \c factor \li \code var a = Qt.vector4d(1,2,3,4); var b = 4.48; var c = a.times(b); console.log(c.toString()); // QVector3D(4.48, 8.96, 13.44, 17.92) \endcode \row \li vector4d plus(vector4d other) \li Returns the vector4d result of the addition of \c this vector4d with the \c other vector4d \li \code var a = Qt.vector4d(1,2,3,4); var b = Qt.vector4d(5,6,7,8); var c = a.plus(b); console.log(c.toString()); // QVector4D(6, 8, 10, 12) \endcode \row \li vector4d minus(vector4d other) \li Returns the vector4d result of the subtraction of \c other vector4d from \c this vector4d \li \code var a = Qt.vector4d(1,2,3,4); var b = Qt.vector4d(5,6,7,8); var c = a.minus(b); console.log(c.toString()); // QVector4D(-4, -4, -4, -4) \endcode \row \li vector4d normalized() \li Returns the normalized form of \c this vector \li \code var a = Qt.vector4d(1,2,3,4); var b = a.normalized(); console.log(b.toString()); // QVector4D(0.182574, 0.365148, 0.547723, 0.730297) \endcode \row \li real length() \li Returns the scalar real value of the length of \c this vector3d \li \code var a = Qt.vector4d(1,2,3,4); var b = a.length(); console.log(b.toString()); // 5.477225575051661 \endcode \row \li vector2d toVector2d() \li Returns the vector2d result of converting \c this vector4d to a vector2d \li \code var a = Qt.vector4d(1,2,3,4); var b = a.toVector2d(); console.log(b.toString()); // QVector2D(1, 2) \endcode \row \li vector3d toVector3d() \li Returns the vector3d result of converting \c this vector4d to a vector3d \li \code var a = Qt.vector4d(1,2,3,4); var b = a.toVector3d(); console.log(b.toString()); // QVector3D(1, 2, 3) \endcode \row \li bool fuzzyEquals(vector4d other, real epsilon) \li Returns true if \c this vector4d is approximately equal to the \c other vector4d. The approximation will be true if each attribute of \c this is within \c epsilon of \c other. Note that \c epsilon is an optional argument, the default \c epsilon is 0.00001. \li \code var a = Qt.vector4d(1,2,3,4); var b = Qt.vector4d(1.0001, 1.9998, 2.0001, 3.9999); var c = a.fuzzyEquals(b); // default epsilon var d = a.fuzzyEquals(b, 0.005); // supplied epsilon console.log(c + " " + d); // false true \endcode \endtable This basic type is provided by the QtQuick import. \sa {QML Basic Types} */ /*! \qmlbasictype quaternion \ingroup qtquickbasictypes \brief A quaternion type has scalar, x, y, and z attributes. A \c quaternion type has \c scalar, \c x, \c y and \c z attributes. To create a \c quaternion value, specify it as a "scalar,x,y,z" string, or define the components individually, or compose it with the Qt.quaternion() function. This basic type is provided by the QtQuick import. \sa {QML Basic Types} */ /*! \qmlbasictype matrix4x4 \ingroup qtquickbasictypes \brief A matrix4x4 type is a 4-row and 4-column matrix A \c matrix4x4 type has sixteen values, each accessible via the properties \c m11 through \c m44 in QML (in row/column order). Values of this type can be composed with the Qt.matrix4x4() function. Each attribute in a matrix4x4 is stored as a real (single-precision on ARM, double-precision on x86). The matrix4x4 type has the following idempotent functions which can be invoked in QML: \table 70 % \header \li Function Signature \li Description \li Example \row \li matrix4x4 times(matrix4x4 other) \li Returns the matrix4x4 result of multiplying \c this matrix4x4 with the \c other matrix4x4 \li \code var a = Qt.matrix4x4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); var b = Qt.matrix4x4(4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19); var c = a.times(b); console.log(c.toString()); // QMatrix4x4(120, 130, 140, 150, 280, 306, 332, 358, 440, 482, //524, 566, 600, 658, 716, 774) \endcode \row \li vector4d times(vector4d vector) \li Returns the vector4d result of transforming the \c vector according to \c this matrix4x4 with the matrix applied pre-vector \li \code var a = Qt.matrix4x4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); var b = Qt.vector4d(5,6,7,8); var c = a.times(b); console.log(c.toString()); // QVector4D(70, 174, 278, 382) \endcode \row \li vector3d times(vector3d vector) \li Returns the vector3d result of transforming the \c vector according to \c this matrix4x4 with the matrix applied pre-vector \li \code var a = Qt.matrix4x4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); var b = Qt.vector3d(5,6,7); var c = a.times(b); console.log(c.toString()); // QVector3D(0.155556, 0.437037, 0.718518) \endcode \row \li matrix4x4 times(real factor) \li Returns the matrix4x4 result of multiplying \c this matrix4x4 with the scalar \c factor \li \code var a = Qt.matrix4x4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); var b = 4.48; var c = a.times(b); console.log(c.toString()); // QMatrix4x4(4.48, 8.96, 13.44, 17.92, 22.4, 26.88, 31.36, 35.84, // 40.32, 44.8, 49.28, 53.76, 58.24, 62.72, 67.2, 71.68) \endcode \row \li matrix4x4 plus(matrix4x4 other) \li Returns the matrix4x4 result of the addition of \c this matrix4x4 with the \c other matrix4x4 \li \code var a = Qt.matrix4x4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); var b = Qt.matrix4x4(5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20); var c = a.plus(b); console.log(c.toString()); // QMatrix4x4(6, 8, 10, 12, 14, 16, 18, 20, 22, // 24, 26, 28, 30, 32, 34, 36) \endcode \row \li matrix4x4 minus(matrix4x4 other) \li Returns the matrix4x4 result of the subtraction of \c other matrix4x4 from \c this matrix4x4 \li \code var a = Qt.matrix4x4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); var b = Qt.matrix4x4(5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20); var c = a.minus(b); console.log(c.toString()); // QMatrix4x4(-4, -4, -4, -4, -4, -4, -4, -4, -4, // -4, -4, -4, -4, -4, -4, -4) \endcode \row \li vector4d row(int which) \li Returns the vector4d row of \c this specified by \c which. Note: the \c which is 0-based access into the matrix. \li \code var a = Qt.matrix4x4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); var b = Qt.vector4d(a.m21, a.m22, a.m23, a.m24); var c = a.row(2); // zero based access! so not equal to b console.log(b.toString() + " " + c.toString()); // QVector4D(5, 6, 7, 8) QVector4D(9, 10, 11, 12) \endcode \row \li vector4d column(int which) \li Returns the vector4d column of \c this specified by \c which. Note: the \c which is 0-based access into the matrix. \li \code var a = Qt.matrix4x4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); var b = Qt.vector4d(a.m12, a.m22, a.m32, a.m42); var c = a.column(2); // zero based access! so not equal to b console.log(b.toString() + " " + c.toString()); // QVector4D(2, 6, 10, 14) QVector4D(3, 7, 11, 15) \endcode \row \li real determinant() \li Returns the determinant of \c this matrix4x4 \li \code var a = Qt.matrix4x4(1,0,0,0,0,2,0,0,0,0,3,0,100,200,300,1); var b = a.determinant(); console.log(b); // 6 \endcode \row \li matrix4x4 inverted() \li Returns the inverse of \c this matrix4x4 if it exists, else the identity matrix. \li \code var a = Qt.matrix4x4(1,0,0,0,0,2,0,0,0,0,3,0,100,200,300,1); var b = a.inverted(); console.log(b.toString()); // QMatrix4x4(1, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 0.333333, 0, -100, // -100, -100, 1) \endcode \row \li matrix4x4 transposed() \li Returns the transpose of \c this matrix4x4 \li \code var a = Qt.matrix4x4(1,0,0,0,0,2,0,0,0,0,3,0,100,200,300,1); var b = a.transposed(); console.log(b.toString()); // QMatrix4x4(1, 0, 0, 100, 0, 2, 0, 200, 0, 0, 3, 300, 0, 0, 0, 1) \endcode \row \li bool fuzzyEquals(matrix4x4 other, real epsilon) \li Returns true if \c this matrix4x4 is approximately equal to the \c other matrix4x4. The approximation will be true if each attribute of \c this is within \c epsilon of the respective attribute of \c other. Note that \c epsilon is an optional argument, the default \c epsilon is 0.00001. \li \code var a = Qt.matrix4x4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); var b = Qt.matrix4x4(1.0001,2.0001,3.0002,4.0003,5.0001,6.0002, 7.0002,8.0004, 9.0001,10.0003, 11.0003,12.0004,13.0001, 14.0002,15.0003,16.0004); var c = a.fuzzyEquals(b); // default epsilon var d = a.fuzzyEquals(b, 0.005); // supplied epsilon console.log(c + " " + d); // false true \endcode \endtable This basic type is provided by the QtQuick import. \sa {QML Basic Types} */ /*! \qmlmodule QtTest 1.1 \title Qt Quick Test QML Types \brief This module provides QML types to unit test your QML application \ingroup qmlmodules You can import this module using the following statement: \code import QtTest 1.1 \endcode For more information about how to use these types, see \l{Qt Quick Test Reference Documentation}. */