diff options
Diffstat (limited to 'src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src')
33 files changed, 1567 insertions, 0 deletions
diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/TestCPP b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/TestCPP new file mode 100644 index 000000000..4ed786108 --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/TestCPP @@ -0,0 +1,5 @@ +#include "testcpp.h" + +#ifdef test_template +# include "testtemplate.h" +#endif diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/classlists.qdoc b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/classlists.qdoc new file mode 100644 index 000000000..2954e5beb --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/classlists.qdoc @@ -0,0 +1,51 @@ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +/*! + \page obsolete-classes.html + \title Obsolete Classes + + \section1 Classes with obsolete members + \generatelist obsoletecppmembers + + \section2 TestQDoc +*/ + +/*! + \page autolinking.html + \title Autolinking + + //! a section title that qualifies for autolinking + \section1 TestQDoc + + The string TestQDoc links to the C++ namespace unless linking explicitly, + \l {#TestQDoc}{like this}, or \l {TestQDoc}{this}. Also, + + Autolinks: + + \list + \li TestQDoc::TestDerived + \endlist + + Explicit links: + + \list + \li \l [CPP] {TestQDoc::TestDerived} + \li \l {Obsolete Classes#TestQDoc} + \endlist + + //! a section title shadowing a known property name + \section1 someProp +*/ + +/*! + \group cpptypes + \title Test C++ Types + + \generatelist testgroup +*/ + +/*! + \externalpage https://doc.qt.io/qt/17-qdoc-commands-thread.html#reentrant-command + \title reentrant +*/ diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/dont.cpp b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/dont.cpp new file mode 100644 index 000000000..39be5bbbf --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/dont.cpp @@ -0,0 +1,22 @@ +// Copyright (C) 2020 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +#include "dont.h" + +/*! + \class UnseenClass + \inmodule TestCPP + \brief A public but undocumented class. +*/ +UnseenClass::UnseenClass() +{ +} + +/*! + \class SeenClass + \inmodule TestCPP + \brief A public but undocumented class. +*/ +SeenClass::SeenClass() +{ +} diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/dont.h b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/dont.h new file mode 100644 index 000000000..0614c713e --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/dont.h @@ -0,0 +1,16 @@ +// Copyright (C) 2020 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +#pragma once + +class UnseenClass +{ +public: + UnseenClass(); +}; + +class SeenClass : public UnseenClass +{ +public: + SeenClass(); +}; diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/demo/demo.cpp b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/demo/demo.cpp new file mode 100644 index 000000000..906c6292f --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/demo/demo.cpp @@ -0,0 +1,11 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +bool isOverThousand(int n) +{ +//! [integer literal with separator] + if (n > 1'000) + return true; +//! [integer literal with separator] + return false; +} diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/demo/demo.pro b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/demo/demo.pro new file mode 100644 index 000000000..dbe8ff3c0 --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/demo/demo.pro @@ -0,0 +1,2 @@ +TEMPLATE = aux +message("Nothing to see here.") diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/demo/doc/src/demo.qdoc b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/demo/doc/src/demo.qdoc new file mode 100644 index 000000000..21ebc5588 --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/demo/doc/src/demo.qdoc @@ -0,0 +1,11 @@ +// Copyright (C) 2020 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +/*! + \example demos/demo + \title Demo + \image leonardo-da-vinci.png + //! Icon made by Smashicons from www.flaticon.com + + \snippet demos/demo/demo.cpp integer literal with separator +*/ diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/demo/dontxclude/CMakeLists.txt b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/demo/dontxclude/CMakeLists.txt new file mode 100644 index 000000000..d29157aad --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/demo/dontxclude/CMakeLists.txt @@ -0,0 +1,2 @@ +cmake_minimum_required(VERSION 3.16) +project (DONTXCLUDEDIRS_QDOCTEST) diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/demo/excludes/CMakeLists.txt b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/demo/excludes/CMakeLists.txt new file mode 100644 index 000000000..09b447642 --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/demo/excludes/CMakeLists.txt @@ -0,0 +1,2 @@ +cmake_minimum_required(VERSION 3.16) +project (EXCLUDEDIR_QDOCTEST) diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/hidden/doc/src/hidden.qdoc b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/hidden/doc/src/hidden.qdoc new file mode 100644 index 000000000..dddcbc074 --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/hidden/doc/src/hidden.qdoc @@ -0,0 +1,11 @@ +// Copyright (C) 2020 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +/*! + \example demos/hidden + \title Hidden Demo + \meta tag broken + \brief Tagged 'broken', does not appear in examples-manifest.xml. + + Also missing an image, but that's OK as it's broken anyway. +*/ diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/hidden/hidden.pro b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/hidden/hidden.pro new file mode 100644 index 000000000..dbe8ff3c0 --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/examples/demos/hidden/hidden.pro @@ -0,0 +1,2 @@ +TEMPLATE = aux +message("Nothing to see here.") diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/images/01.png b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/images/01.png Binary files differnew file mode 100644 index 000000000..d73ab969b --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/images/01.png diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/images/leonardo-da-vinci.png b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/images/leonardo-da-vinci.png Binary files differnew file mode 100644 index 000000000..854acb4ca --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/images/leonardo-da-vinci.png diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/properties.qdoc b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/properties.qdoc new file mode 100644 index 000000000..1370f813b --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/properties.qdoc @@ -0,0 +1,55 @@ +// Copyright (C) 2020 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +/*! + \property TestQDoc::TestDerived::bindableProp + Some property. + + \sa someProp +*/ + +/*! + \property TestQDoc::TestDerived::someProp + Another property. +*/ + +/*! + \property TestQDoc::TestDerived::name + \brief a name. +*/ + +/*! + \property TestQDoc::TestDerived::intProp + An integer property. +*/ + +/*! + \property TestQDoc::TestDerived::boolProp + A boolean property. +*/ + +/*! + \fn TestQDoc::TestDerived::invokeMe() const + \brief Something invokable. +*/ + +/*! + \qmlmodule TheModule +*/ + +/*! + \qmltype TheType + \nativetype TestQDoc::TestDerived + \inqmlmodule TheModule +*/ + +/*! + \qmlproperty string TheType::name + \brief Read-only status of this property is resolved from Q_PROPERTY. +*/ + +/*! + //! avoid link warnings for auto-generated links to QProperty + \externalpage https://wiki.qt.io/QProperty + \title QProperty +*/ diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/DocTest.qml b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/DocTest.qml new file mode 100644 index 000000000..dfae6f13d --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/DocTest.qml @@ -0,0 +1,86 @@ +// Copyright (C) 2019 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +import QtQuick 2.0 + +/*! + \qmltype DocTest + \inherits Test + \inqmlmodule QDoc.Test + \brief Represents a doc test case. + \since QDoc.Test 0.9 + + \section1 Introduction + + A documentation test case, itself documented inline in \DocTest.qml. +*/ +Item { + id: testCase + + /*! + \qmlsignal QDocTest::completed + */ + signal completed + + /*! + \qmlsignal DocTest::test(var bar) + Signal with parameter \a bar. + */ + signal foo(var bar) + + /*! + Signals that something is \a really happening. + */ + signal itsHappening(bool really) + + /*! + \qmlproperty string DocTest::name + + Name of the test. + \qml + DocTest { + name: "test" + // ... + } + \endqml + */ + required property string name + + /*! + Whether the test is active. + \default true + + \sa name + */ + property bool active: true + + /*! \internal */ + property int doctest_internal: -1 + + /*! + \qmlmethod DocTest::fail(message = "oops") + \since QDoc.Test 1.0 + + Fails the current test case, with the optional \a message. + */ + function fail(msg) { + if (msg === undefined) + msg = "oops"; + } + + /*! \internal */ + function doctest_fail(msg) { + if (msg === undefined) + msg = ""; + } + + /*! + \brief Fails the current test case, hard. + \list + \li Prints out \a msg. + \li Accepts a random \a option. + \endlist + */ + function fail_hard(msg = "facepalm", option = 123) { + } +} diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/cmaketest/CMakeLists.txt b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/cmaketest/CMakeLists.txt new file mode 100644 index 000000000..89eafa300 --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/cmaketest/CMakeLists.txt @@ -0,0 +1,2 @@ +cmake_minimum_required(VERSION 3.16) +project (QDOCTEST) diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/cmaketest/doc/src/cmaketest.qdoc b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/cmaketest/doc/src/cmaketest.qdoc new file mode 100644 index 000000000..0e8a2ab3c --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/cmaketest/doc/src/cmaketest.qdoc @@ -0,0 +1,9 @@ +// Copyright (C) 2020 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +/*! + \example cmaketest + \title CMake Example Project + \image leonardo-da-vinci.png + //! Icon made by Smashicons from www.flaticon.com +*/ diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/cmaketest/main.cpp b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/cmaketest/main.cpp new file mode 100644 index 000000000..68d71eb71 --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/cmaketest/main.cpp @@ -0,0 +1 @@ +void main(){} diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/ProgressBar.qml b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/ProgressBar.qml new file mode 100644 index 000000000..633a3ff5d --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/ProgressBar.qml @@ -0,0 +1,98 @@ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick 1.0 + +/*! + \qmltype ProgressBar + \inqmlmodule UIComponents + \brief A component that shows the progress of an event. + + A ProgressBar shows the linear progress of an event as its \l value. + The range is specified using the \l {minimum} and the \l{maximum} values. + + The ProgressBar component is part of the \l {UI Components} module. + + This documentation is part of the \l{componentset}{UIComponents} example. +*/ +Item { + id: progressbar + + /*! + The minimum value of the ProgressBar range. + The \l value must not be less than this value. + */ + property int minimum: 0 + + /*! + The maximum value of the ProgressBar range. + The \l value must not be more than this value. + */ + property int maximum: 100 + + /*! + The value of the progress. + */ + property int value: 0 + + /*! + \qmlproperty color ProgressBar::color + The color of the ProgressBar's gradient. Must bind to a color type. + + \omit + The "\qmlproperty <type> <property name>" is needed because + property alias need to have their types manually entered. + + QDoc will not publish the documentation within omit and endomit. + \endomit + + \sa secondColor + */ + property alias color: gradient1.color + + /*! + \qmlproperty color ProgressBar::secondColor + The second color of the ProgressBar's gradient. + Must bind to a color type. + + \omit + The "\qmlproperty <type> <property name>" is needed because + property alias need to have their types manually entered. + + QDoc will not publish the documentation within omit and endomit. + \endomit + + \sa color + */ + property alias secondColor: gradient2.color + + width: 250; height: 23 + clip: true + + Rectangle { + id: highlight + + /*! + An internal documentation comment. The widthDest property is not + a public API and therefore will not be exposed. + */ + property int widthDest: ((progressbar.width * (value - minimum)) / (maximum - minimum) - 6) + + width: highlight.widthDest + Behavior on width { SmoothedAnimation { velocity: 1200 } } + + anchors { left: parent.left; top: parent.top; bottom: parent.bottom; margins: 3 } + radius: 1 + gradient: Gradient { + GradientStop { id: gradient1; position: 0.0 } + GradientStop { id: gradient2; position: 1.0 } + } + + } + Text { + anchors { right: highlight.right; rightMargin: 6; verticalCenter: parent.verticalCenter } + color: "white" + font.bold: true + text: Math.floor((value - minimum) / (maximum - minimum) * 100) + '%' + } +} diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/Switch.qml b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/Switch.qml new file mode 100644 index 000000000..123e86468 --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/Switch.qml @@ -0,0 +1,105 @@ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick 1.0 + +/*! + \qmltype ToggleSwitch + \inqmlmodule UIComponents + \brief A component that can be turned on or off. + + A toggle switch has two states: an \c on and an \c off state. The \c off + state is when the \l on property is set to \c false. + + The ToggleSwitch component is part of the \l {UI Components} module. + + This documentation is part of the \l{componentset}{UIComponents} example. + +*/ +Item { + id: toggleswitch + width: background.width; height: background.height + + /*! + Indicates the state of the switch. If \c false, then the switch is in + the \c off state. + + \omit + The \qmlproperty <type> <propertyname> is not necessary as QDoc + will associate this property to the ToggleSwitch + + QDoc will not publish the documentation within omit and endomit. + \endomit + */ + property bool on: false + + + /*! + A method to toggle the switch. If the switch is \c on, the toggling it + will turn it \c off. Toggling a switch in the \c off position will + turn it \c on. + */ + function toggle() { + if (toggleswitch.state == "on") + toggleswitch.state = "off"; + else + toggleswitch.state = "on"; + } + + + /*! + \internal + + An internal function to synchronize the switch's internals. This + function is not for public access. The \internal command will + prevent QDoc from publishing this comment in the public API. + */ + function releaseSwitch() { + if (knob.x == 1) { + if (toggleswitch.state == "off") return; + } + if (knob.x == 78) { + if (toggleswitch.state == "on") return; + } + toggle(); + } + + Rectangle { + id: background + width: 130; height: 48 + radius: 48 + color: "lightsteelblue" + MouseArea { anchors.fill: parent; onClicked: toggle() } + } + + Rectangle { + id: knob + width: 48; height: 48 + radius: width + color: "lightblue" + + MouseArea { + anchors.fill: parent + drag.target: knob; drag.axis: Drag.XAxis; drag.minimumX: 1; drag.maximumX: 78 + onClicked: toggle() + onReleased: releaseSwitch() + } + } + + states: [ + State { + name: "on" + PropertyChanges { target: knob; x: 78 } + PropertyChanges { target: toggleswitch; on: true } + }, + State { + name: "off" + PropertyChanges { target: knob; x: 1 } + PropertyChanges { target: toggleswitch; on: false } + } + ] + + transitions: Transition { + NumberAnimation { properties: "x"; easing.type: Easing.InOutQuad; duration: 200 } + } +} diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/TabWidget.qml b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/TabWidget.qml new file mode 100644 index 000000000..57808c1a5 --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/TabWidget.qml @@ -0,0 +1,146 @@ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick 1.0 + +/*! + \qmltype TabWidget + \inqmlmodule UIComponents + \brief A widget that places its children as tabs. + + A TabWidget places its children as tabs in a view. Selecting + a tab involves selecting the tab at the top. + + The TabWidget component is part of the \l {UI Components} module. + + This documentation is part of the \l{componentset}{UIComponents} example. + + \section1 Adding Tabs + + To add a tab, declare the tab as a child of the TabWidget. + + \code + TabWidget { + id: tabwidget + + Rectangle { + id: tab1 + color: "red" + //... omitted + } + Rectangle { + id: tab2 + color: "blue" + //... omitted + } + + } + \endcode + +*/ +Item { + id: tabWidget + + /*! + \internal + + Setting the default property to stack.children means any child items + of the TabWidget are actually added to the 'stack' item's children. + + See the \l{"Property Binding in QML"} + documentation for details on default properties. + + This is an implementation detail, not meant for public knowledge. Putting + the \internal command at the beginning will cause QDoc to not publish this + documentation in the public API page. + + Normally, a property alias needs to have a + "\qmlproperty <type> <propertyname>" to assign the alias a type. + + */ + default property alias content: stack.children + + + /*! + The currently active tab in the TabWidget. + */ + property int current: 0 + + /*! + A sample \c{read-only} property. + A contrived property to demonstrate QDoc's ability to detect + read-only properties. + + The signature is: + \code + readonly property int sampleReadOnlyProperty: 0 + \endcode + + Note that the property must be initialized to a value. + + */ + readonly property int sampleReadOnlyProperty: 0 + + /*! + \internal + + This handler is an implementation + detail. The \c{\internal} command will prevent QDoc from publishing this + documentation on the public API. + */ + onCurrentChanged: setOpacities() + Component.onCompleted: setOpacities() + + /*! + \internal + + An internal function to set the opacity. + The \internal command will prevent QDoc from publishing this + documentation on the public API. + */ + function setOpacities() { + for (var i = 0; i < stack.children.length; ++i) { + stack.children[i].opacity = (i == current ? 1 : 0) + } + } + + Row { + id: header + + Repeater { + model: stack.children.length + delegate: Rectangle { + width: tabWidget.width / stack.children.length; height: 36 + + Rectangle { + width: parent.width; height: 1 + anchors { bottom: parent.bottom; bottomMargin: 1 } + color: "#acb2c2" + } + BorderImage { + anchors { fill: parent; leftMargin: 2; topMargin: 5; rightMargin: 1 } + border { left: 7; right: 7 } + source: "tab.png" + visible: tabWidget.current == index + } + Text { + horizontalAlignment: Qt.AlignHCenter; verticalAlignment: Qt.AlignVCenter + anchors.fill: parent + text: stack.children[index].title + elide: Text.ElideRight + font.bold: tabWidget.current == index + } + MouseArea { + anchors.fill: parent + onClicked: tabWidget.current = index + } + } + } + } + + Item { + id: stack + width: tabWidget.width + anchors.top: header.bottom; anchors.bottom: tabWidget.bottom + } +} diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/componentset.pro b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/componentset.pro new file mode 100644 index 000000000..5b44737c2 --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/componentset.pro @@ -0,0 +1,5 @@ +SOURCES = componentset.pro \ + ProgressBar.qml \ + Switch.qml \ + TabWidget.qml \ + uicomponents.qdoc diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/componentset.qml b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/componentset.qml new file mode 100644 index 000000000..18b25884a --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/componentset.qml @@ -0,0 +1,7 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +import QtQuick 2.0 + +Item { +} diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/examples.qdoc b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/examples.qdoc new file mode 100644 index 000000000..1069c55fd --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/examples.qdoc @@ -0,0 +1,82 @@ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only + +/*! + \example componentset + \title QML Documentation Example + \brief Example for documenting QML types. + + \testnoautolist + + \meta tags {test,sample} + \meta tag {application} + \meta category {Application Example} + \meta installpath tutorials + + This example demonstrates one of the ways to document QML types. It also + generates a warning about a missing example image, on purpose. + + In particular, there are sample types that are documented with QDoc + commands comments. There are documentation comments for the QML types + and their public interfaces. The types are grouped into a module, the + \l{UI Components} module. + + The uicomponents.qdoc file generates + the overview page for the \l{UI Components} module page. + + The generated documentation is available in the \l{UI Components} module. + + \section1 QML Class + + The QML types use the \\qmltype to document the + type. In addition, they have the \\inmodule + command in order for QDoc to associate them to the \c UIComponents module. + + QDoc uses the \\brief command to place a basic + description when listing the types. + + \section1 Properties, Signals, Handlers, and Methods + + The types have their properties, signals, handlers, and methods + defined in their respective QML files. QDoc associates the properties and + methods to the types, therefore, you only need to place the + documentation above the property, method, or signal. + + To document the type of a \e {property alias}, you must use the + \\qmlproperty command to specify the data type. + + \code + \qmlproperty int anAliasedProperty + An aliased property of type int. + \endcode + + \section2 Internal Documentation + + You may declare that a documentation is for internal use by placing the + \\internal command after the beginning QDoc comment + \begincomment. QDoc will prevent the internal documentation from appearing + in the public API. + + If you wish to omit certain parts of the documentation, you may use the + \\omit and \\endomit command. + + \section1 QML Types with C++ Implementation + + This example only demonstrates the documentation for types in QML + files, but the regular QML commands may be placed + inside C++ classes to define the public API of the QML type. + +*/ + + +/*! + \qmlmodule UIComponents 1.0 + \title UI Components + \brief Basic set of UI components. + + This is a listing of a list of UI components implemented by QML types. These + files are available for general import and they are based on the + Qt Quick Code Samples. + + This module is part of the \l{componentset}{UIComponents} example. +*/ diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/uicomponents.qdoc.sample b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/uicomponents.qdoc.sample new file mode 100644 index 000000000..efbcd9511 --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/componentset/uicomponents.qdoc.sample @@ -0,0 +1,14 @@ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only + +/*! + \qmlmodule UIComponents 1.0 + \title UI Components + \brief Basic set of UI components + + This is a listing of a list of UI components implemented by QML types. These + files are available for general import and they are based off the \l{Qt + Quick Code Samples}. + + This module is part of the \l{componentset}{UIComponents} example. +*/ diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/doctest/DocTest.qml b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/doctest/DocTest.qml new file mode 100644 index 000000000..07201403f --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/doctest/DocTest.qml @@ -0,0 +1,11 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +import QtQuick + +/*! + //! omit the \qmltype command, file name (base) is the type name. + \inqmlmodule Test.NoVer + \brief Shadows the type name in QDoc.Test module. +*/ +Item {} diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/modules.qdoc b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/modules.qdoc new file mode 100644 index 000000000..3b17b5d92 --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/modules.qdoc @@ -0,0 +1,19 @@ +// Copyright (C) 2020 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +/*! + \page qmlmodules.html + \title QML Modules + + \generatelist qml-modules + + \section1 QML types + + \generatelist qmltypesbymodule QDoc.Test + + \section1 QML value types + + \generatelist qmlvaluetypes + + \generatelist qmlvaluetypesbymodule QDoc.Test +*/ diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/parent.qdoc b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/parent.qdoc new file mode 100644 index 000000000..d6bbb5738 --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/parent.qdoc @@ -0,0 +1,87 @@ +// Copyright (C) 2019 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +/*! + \qmltype AbstractParent + \inqmlmodule QDoc.Test + \qmlabstract + \brief Abstract base QML type. +*/ + +/*! + \qmlproperty list<Child> AbstractParent::children + \qmldefault + \brief Children of the type. +*/ + +/*! + \qmlmethod void AbstractParent::rear(Child child, var method = Strict) + \brief Do some abstract parenting on \a child using a specific \a method. +*/ + +/*! + \qmlproperty string AbstractParent::name + \brief Name of this parent. +*/ + +/*! + \qmlmethod void AbstractParent::name(Child child, name) + \brief Name a \a child using \a name. + +*/ + +/*! + \qmlmethod void AbstractParent::name() + \brief Name all children with random names. +*/ + +/*! + \qmltype Child + \inqmlmodule QDoc.Test + \inherits AbstractParent + \brief A Child inheriting its parent. +*/ + +/*! + //! override from abstract base + \qmlproperty string Child::name + \brief Name of this child. +*/ + +/*! + //! override from abstract base + \qmlmethod void Child::name(Child child, name) + \brief Name a \a child of this child using \a name. +*/ + +/*! + \qmlvaluetype int + \inqmlmodule QDoc.Test + + \brief An integer value type. +*/ + +/*! + \qmlmethod int int::abs() + Returns the absolute value of this integer. +*/ + +/*! + \qmltype InternParent + \inqmlmodule QDoc.Test + \internal + \qmlabstract + \brief Internal abstract base QML type. +*/ + +/*! + \qmlproperty int InternParent::prop + \brief Propagated to inheriting type docs. +*/ + +/*! + \qmltype YetAnotherChild + \inherits InternParent + \inqmlmodule QDoc.Test + \brief A type inheriting from internal abstract parent. +*/ diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/type.cpp b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/type.cpp new file mode 100644 index 000000000..956616ed7 --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/qml/type.cpp @@ -0,0 +1,133 @@ +// Copyright (C) 2019 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +#include "testcpp.h" + +/*! + \qmlmodule QDoc.Test \QDocTestVer + \title QDoc.Test QML Module + \brief QML Types for the Test module. + \since 1.1 + \preliminary + + \testnoautolist +*/ + +/*! + \qmlmodule Test.Empty 1.0 + \title No QML Types Here + \brief A QML module with no member types. +*/ + +/*! + \qmlmodule Test.NoVer + \title Versionless QML Module + \brief QML Types for the Test module without version. + \since 1.1 + \modulestate Tech Preview +*/ + +/*! + \qmltype Type + \nativetype TestQDoc::Test + \inqmlmodule QDoc.Test + \brief A QML type documented in a .cpp file. + \meta status { <Work In Progress> } +*/ + +/*! + \qmltype TypeNoVersion + \inqmlmodule Test.NoVer + \brief Another QML type documented in a .cpp file. +*/ + +/*! + \qmltype OldType + \inqmlmodule QDoc.Test + \brief Deprecated old type. + \deprecated [1.0] +*/ + +/*! + \qmlproperty int Type::id + \readonly + \brief A read-only property. +*/ + +/*! + \qmlproperty string QDoc.Test::Type::name + \required + \brief Name of the Test. +*/ + +/*! + \qmlattachedproperty enumeration Type::type + \default Type.NoType + + \value Type.NoType + Nothing + \value Type.SomeType + Something +*/ + +/*! + \qmlproperty int Type::group.first + \qmlproperty int Type::group.second + \qmlproperty int Type::group.third + + \brief A property group. +*/ + +/*! + \qmlsignal Type::group.created + + This signal is prefixed with \e group. +*/ + +/*! + \qmlproperty int Type::fourth + \qmlproperty int Type::fifth + + \brief A group of properties sharing a documentation comment. +*/ + +/*! + \qmlmethod Type Type::copy(a) + + Returns another Type based on \a a. +*/ + +/*! + \qmlmethod Type::enable() + \qmlmethod Type::disable() + + Enables or disables this type. +*/ + +/*! + \qmlsignal Type::completed(int status) + + This signal is emitted when the operation completed with \a status. +*/ + +/*! + \qmlattachedsignal Type::configured() + + This attached signal is emitted when the type was configured. +*/ + +/*! + \qmlmethod Type::deprecatedMethod() + + \deprecated [6.2] This method has no replacement. + + This is a method that should include information about being deprecated + and that it has been so since 6.2 in its docs. +*/ + +/*! + \qmlmethod Type::futureDeprecated() + \deprecated [6.3] Use something else instead. + + This is a method that's marked for deprecation in a future version. +*/ diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/snippets/snippet_testcpp.cpp b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/snippets/snippet_testcpp.cpp new file mode 100644 index 000000000..1660fbc2b --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/snippets/snippet_testcpp.cpp @@ -0,0 +1,3 @@ +//! [random tag] +You're not supposed to see this. +//! [random tag] diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/testcpp.cpp b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/testcpp.cpp new file mode 100644 index 000000000..b14270e45 --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/testcpp.cpp @@ -0,0 +1,418 @@ +// Copyright (C) 2019 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +#include "testcpp.h" + +namespace TestQDoc { + +/* +//! [random tag] +\note This is just a test. +//! [random tag] + +//! [args] +\1\2 \3 \2\1 +//! [args] +*/ + +/*! + \module TestCPP + \qtvariable testcpp + \qtcmakepackage QDocTest + \title QDoc Test C++ Classes + \brief A test module page. + \since 2.0 + + \testnoautolist + + \include testcpp.cpp random tag + \include testcpp.cpp {args} {/} {*} {Look, Ma! {I'm made of arguments!}} + +\if defined(test_nestedmacro) + \versionnote {module} {\ver 5.15.0} + \ver 1.0.0 +\endif + + \section1 Linking to function-like things + + \list + \li \l {TestQDoc::Test::someFunctionDefaultArg} + {someFunctionDefaultArg()} + \li QDOCTEST_MACRO2() + \li \l {TestQDoc::Test::}{QDOCTEST_MACRO2(int &x)} + \li \l {section()} + \li \l {section()} {section() is a section title} + \li \l {TestQDoc::Test::Test()} {open( parenthesis} + \li \l {https://en.cppreference.com/w/cpp/utility/move} + {C++11 added std::move(T&& t)} + \endlist + + \section2 section() +*/ + +/*! + \namespace TestQDoc + \inheaderfile TestCPP + \inmodule TestCPP + \brief A namespace. + + \section1 Usage + This namespace is for testing QDoc output. +*/ + +/*! + \class TestQDoc::Test + \inmodule TestCPP + \brief A class in a namespace. + +\if defined(test_ignoresince) + //! omitted by ignoresince + \since 1.1 +\endif + \ingroup testgroup + \ingroup cpptypes + \reentrant +*/ + +/*! + \fn TestQDoc::Test::Test() + + The constructor is deleted. +*/ + +/*! + \fn Test &Test::operator=(Test &&other) + \ingroup testgroup + + The move assignment operator is deleted. \a other cannot be moved from. +*/ + +/*! + \class TestQDoc::TestDerived + \inmodule TestCPP + \brief A class in a namespace, derived from \l [CPP] Test. +*/ + +/*! + \macro QDOCTEST_MACRO + \relates TestQDoc +\if defined(test_ignoresince) + //! omitted by ignoresince.Test + \since Test 0.9 +\endif +*/ + +/*! + \macro QDOCTEST_MACRO2(int &x) + \relates TestQDoc::Test + \since Test 1.1 + \brief A macro with argument \a x. + \ingroup testgroup +*/ + +/*! +\if defined(test_properties) + \property Test::id +\else + \nothing +\endif +*/ + +/*! + \deprecated [6.0] Use someFunction() instead. +*/ +void Test::deprecatedMember() +{ + return; +} + +/*! + \obsolete + + Use someFunction() instead. +*/ +void Test::obsoleteMember() +{ + return; +} + +/*! + \obsolete Use obsoleteMember() instead. +*/ +void Test::anotherObsoleteMember() +{ + return; +} + +/*! + \nonreentrant + Function that takes a parameter \a i and \a b. +\if defined(test_ignoresince) + \since 2.0 +\endif + \ingroup testgroup +*/ +void Test::someFunctionDefaultArg(int i, bool b = false) const +{ + return; +} + +/*! + \fn void Test::func(bool) + \internal +*/ + +/*! + \fn [funcPtr] void (*funcPtr(bool b, const char *s))(bool) + + Returns a pointer to a function that takes a boolean. Uses \a b and \a s. +*/ + +/*! + \fn [op-inc] Test::operator++() + \fn [op-dec] Test::operator--() + \deprecated +*/ + +/*! + This method has en dashes in its documentation -- as you'll find + represented by \c{--} in the sources -- here and there. The important bit + to note is that when passed e.g. to the \\c command, the two hyphens are + processed as input to the command and not replaced by an en dash. This also + applies to code blocks, where otherwise, the decrement operator would get + completely borked: + + \code + for (int i = 42; i > 0; --i) + // Do something cool during countdown. + \endcode + + ...as it would be silly if this would output --i instead of \c {--i}. + + ----------------------------------------------------------------------- + + It still allows people to add a bunch of dashes, though, without replacing + them all with a series of en dashes. Of course, they might want to use the + \\hr command instead, like this: + \hr + + -- You can also start a new paragraph with an en dash, if you want to. + + //! Self-referencing \sa-command for tests. + \sa methodWithEnDashInItsDocs +*/ +void Test::methodWithEnDashInItsDocs() +{ + // Nothing to see here. +} + +/*! + This method has em dashes in its documentation---as you'll find + represented by \c{---} in the sources---here and there. The important bit + to note is that when passed e.g. to the \\c command, the three hyphens are + processed as input to the command and not replaced by an em dash. + + ----------------------------------------------------------------------- + + People can still add a bunch of dashes, though, without QDoc replacing + them all with a series of em dashes. + + ---You can also start a new paragraph with an em dash, if you want to. + + \sa methodWithEnDashInItsDocs + +*/ +void Test::methodWithEmDashInItsDocs() +{ + // Woah! Look at that! +} + +// Documented below with an \fn command. Unnecessary but we support it, and it's used. +int Test::someFunction(int, int v) +{ + return v; +} + +/*! + \fn void TestQDoc::Test::inlineFunction() + + \brief An inline function, documented using the \CMDFN QDoc command. +*/ + +/*! + \fn int Test::someFunction(int, int v = 0) + + Function that takes a parameter \a v. + Also returns the value of \a v. +\if defined(test_ignoresince) + \since Test 1.0 +\endif +*/ + +/*! + Function that must be reimplemented. +*/ +void Test::virtualFun() +{ + return; +} + +/*! + \fn bool Test::operator==(const Test &lhs, const Test &rhs) + + Returns true if \a lhs and \a rhs are equal. +*/ + +/*! + \typedef TestQDoc::Test::SomeType + \brief A typedef. +*/ + +/*! + \reimp +*/ +void TestDerived::virtualFun() +{ + return; +} + +/*! + \fn TestQDoc::Test::overload() + \fn Test::overload(bool b) + //! The second overload should match even without the fully qualified path + + Overloads that share a documentation comment, optionally taking + a parameter \a b. +*/ + +/*! + \fn Test::overload(bool b) + \since Test 1.2 +*/ + +/*! + \typealias TestQDoc::TestDerived::DerivedType + An aliased typedef. +*/ + +/*! + \typedef TestQDoc::TestDerived::NotTypedef + I'm an alias, not a typedef. +*/ + +/*! + \obsolete + + Static obsolete method. +*/ +void TestDerived::staticObsoleteMember() +{ + return; +} + +/*! +\if defined(test_properties) + \fn void TestDerived::emitSomething() + Emitted when things happen. +\else + \nothing +\endif +*/ + +/*! +\if defined(test_properties) + \reimp +\else + \nothing +\endif +*/ +int TestDerived::id() +{ + return 1; +} + +/*! + Returns a value using an aliases type. +*/ +TestDerived::NotTypedef TestDerived::someValue() +{ + return 0; +} + +/*! +\if defined(test_template) + \fn template <typename T1, typename T2> void TestQDoc::Test::funcTemplate(T1 a, T2 b) + \brief Function template with two parameters, \a a and \a b. +\else + \nothing +\endif +*/ + +/*! +\if defined(test_template) + \struct TestQDoc::Test::Struct + \inmodule TestCPP + \brief Templated struct. +\else + \nothing +\endif +*/ + +/*! +\if defined(test_template) + \typealias TestQDoc::Test::Specialized +\else + \nothing +\endif +*/ + +/*! +\if defined(test_template) + \class TestQDoc::Vec + \inmodule TestCPP + \brief Type alias that has its own reference. +\else + \nothing +\endif +*/ + +/*! +\if defined(test_template) + \macro Q_INVOKABLE + \relates TestQDoc::Test + + This is a mock Q_INVOKABLE for the purpose of ensuring QDoc autolink to it + as expected. +\else + \nothing +\endif +*/ + +} // namespace TestQDoc + + +/*! + \namespace CrossModuleRef + \inmodule TestCPP + \brief Namespace that has documented functions in multiple modules. + \since 3.0 +*/ +namespace CrossModuleRef { + +/*! + Document me! +*/ +void documentMe() +{ +} + +} // namespace CrossModuleRef + +/*! + \class DontLinkToMe + \inmodule TestCPP + \brief Class that does not generate documentation. +*/ + +/*! + \dontdocument (DontLinkToMe) +*/ diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/testcpp.h b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/testcpp.h new file mode 100644 index 000000000..a72367b24 --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/testcpp.h @@ -0,0 +1,140 @@ +// Copyright (C) 2019 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +#pragma once + +#ifdef test_properties +#include <QtCore/qmetaobject.h> +#include <QtCore/qproperty.h> +#include <QtCore/qstring.h> +#endif + +#define QDOCTEST_MACRO test +#define QDOCTEST_MACRO2(x) (x) < 0 ? 0 : (x) + +namespace TestQDoc { + +class Test { +#ifdef test_properties + Q_OBJECT + Q_PROPERTY(int id READ id) +#endif +public: + +#ifdef test_template +template<typename D, typename T> struct Struct {}; +template<typename T> +using Specialized = Struct<int, T>; +#endif + +#ifdef test_template +# define Q_INVOKABLE void foo() {}; +#endif + +#ifdef test_scopedenum + enum ClassicEnum { Yee, Haw, Howdy, Partner }; + + enum class ScopedEnum : unsigned char { + This = 0x01, + That = 0x02, + All = This | That, + OmittedValue = 99, + UselessValue, + VeryLastValue + }; +#endif + typedef struct { + int data; + } SomeType; + int someFunction(int, int v = 0); + void someFunctionDefaultArg(int i, bool b) const; + void obsoleteMember(); + void anotherObsoleteMember(); + void deprecatedMember(); + void methodWithEnDashInItsDocs(); + void methodWithEmDashInItsDocs(); + void func(bool) {}; + //! [funcPtr] + void (*funcPtr(bool b, const char *s))(bool) { + return func; + } + //! [op-inc] + Test &operator++() { return *this; } + //! [op-dec] + Test &operator--() { return *this; } + + void anotherFunc() {}; + inline void inlineFunction() {}; + virtual void virtualFun(); + + friend bool operator==(const Test &lhs, const Test &rhs) { return false; } + + Test() = delete; + Test &operator=(Test &&other) = delete; + +protected: + void overload() {} + void overload(bool b) { if (!b) return; } +#ifdef test_template + template <typename T1, typename T2> void funcTemplate(T1 a, T2 b) { + a = b; + } +#endif +#ifdef test_properties + virtual int id() { return 0; } +#endif +}; + +class TestDerived : public Test { +#ifdef test_properties + Q_OBJECT + + Q_PROPERTY(QString bindableProp READ bindableProp WRITE setBindableProp NOTIFY bindablePropChanged BINDABLE bindableProp) + Q_PROPERTY(QString someProp READ someProp BINDABLE somBindableProp) + Q_PROPERTY(int *intProp READ getInt STORED false CONSTANT FINAL) + Q_PROPERTY(const QString *name READ name) + QDOC_PROPERTY(bool boolProp READ boolProp WRITE setBoolProp NOTIFY boolPropChanged RESET resetBoolProp REVISION 1) +#endif + +public: + using DerivedType = Test::SomeType; + using NotTypedef = int; + void virtualFun() override; + static void staticObsoleteMember(); + NotTypedef someValue(); +#ifdef test_properties + QBindable<QString> bindableProp(); + QBindable<QString> someBindableProp(); + const QString &someProp(); + int *getInt(); + bool boolProp(); + const QString *name() const; + + Q_INVOKABLE void invokeMe() const {} + int id() override; + +Q_SIGNALS: + void emitSomething(QPrivateSignal); + void bindablePropChanged(); + Q_REVISION(1) void boolPropChanged(); + +public Q_SLOTS: + void setBindableProp(const QString &s); + void setBoolProp(bool b); + void resetBoolProp(); +#endif +}; + +#ifdef test_template +template <typename T> +struct BaseVec {}; +template <typename T> +using Vec = BaseVec<T>; +#endif + +} // namespace TestQDoc + +namespace CrossModuleRef { + void documentMe(); +} + +class DontLinkToMe {}; diff --git a/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/unseenclass.qdoc b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/unseenclass.qdoc new file mode 100644 index 000000000..8798e3147 --- /dev/null +++ b/src/qdoc/qdoc/tests/validateqdocoutputfiles/testdata/comprehensiveproject/src/unseenclass.qdoc @@ -0,0 +1,11 @@ +// Copyright (C) 2020 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +/*! + \dontdocument (UnseenClass) +*/ + +/*! \page classes.html + \title Classes + \generatelist annotatedclasses +*/ |