aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config.tests/d3d12/d3d12.cpp51
-rw-r--r--config.tests/d3d12/d3d12.pro4
-rw-r--r--dist/changes-5.14.0372
-rw-r--r--examples/qml/doc/src/qml-extending.qdoc15
-rw-r--r--examples/qml/qmlextensionplugins/plugin.cpp108
-rw-r--r--examples/qml/qmlextensionplugins/plugins.qmlproject2
-rw-r--r--examples/qml/qmlextensionplugins/qmlextensionplugins.pro51
-rw-r--r--examples/qml/qmlextensionplugins/timemodel.cpp (renamed from tests/manual/nodetypes/Text.qml)67
-rw-r--r--examples/qml/qmlextensionplugins/timemodel.h (renamed from tests/manual/nodetypes/main.qml)84
-rw-r--r--examples/qml/referenceexamples/adding/adding.pro4
-rw-r--r--examples/qml/referenceexamples/adding/main.cpp3
-rw-r--r--examples/qml/referenceexamples/attached/attached.pro4
-rw-r--r--examples/qml/referenceexamples/attached/main.cpp4
-rw-r--r--examples/qml/referenceexamples/binding/binding.pro4
-rw-r--r--examples/qml/referenceexamples/binding/happybirthdaysong.h3
-rw-r--r--examples/qml/referenceexamples/binding/main.cpp2
-rw-r--r--examples/qml/referenceexamples/coercion/birthdayparty.h1
-rw-r--r--examples/qml/referenceexamples/coercion/coercion.pro4
-rw-r--r--examples/qml/referenceexamples/coercion/main.cpp4
-rw-r--r--examples/qml/referenceexamples/coercion/person.h3
-rw-r--r--examples/qml/referenceexamples/default/birthdayparty.h1
-rw-r--r--examples/qml/referenceexamples/default/default.pro4
-rw-r--r--examples/qml/referenceexamples/default/main.cpp2
-rw-r--r--examples/qml/referenceexamples/extended/extended.pro4
-rw-r--r--examples/qml/referenceexamples/extended/lineedit.h11
-rw-r--r--examples/qml/referenceexamples/extended/main.cpp4
-rw-r--r--examples/qml/referenceexamples/grouped/birthdayparty.h1
-rw-r--r--examples/qml/referenceexamples/grouped/grouped.pro4
-rw-r--r--examples/qml/referenceexamples/grouped/main.cpp2
-rw-r--r--examples/qml/referenceexamples/methods/birthdayparty.h1
-rw-r--r--examples/qml/referenceexamples/methods/main.cpp2
-rw-r--r--examples/qml/referenceexamples/methods/methods.pro4
-rw-r--r--examples/qml/referenceexamples/properties/birthdayparty.h1
-rw-r--r--examples/qml/referenceexamples/properties/main.cpp4
-rw-r--r--examples/qml/referenceexamples/properties/properties.pro4
-rw-r--r--examples/qml/referenceexamples/signal/main.cpp3
-rw-r--r--examples/qml/referenceexamples/signal/signal.pro4
-rw-r--r--examples/qml/referenceexamples/valuesource/happybirthdaysong.h1
-rw-r--r--examples/qml/referenceexamples/valuesource/main.cpp3
-rw-r--r--examples/qml/referenceexamples/valuesource/valuesource.pro4
-rw-r--r--examples/qml/tutorials/extending-qml/chapter1-basics/chapter1-basics.pro4
-rw-r--r--examples/qml/tutorials/extending-qml/chapter1-basics/main.cpp2
-rw-r--r--examples/qml/tutorials/extending-qml/chapter2-methods/chapter2-methods.pro4
-rw-r--r--examples/qml/tutorials/extending-qml/chapter2-methods/main.cpp2
-rw-r--r--examples/qml/tutorials/extending-qml/chapter3-bindings/chapter3-bindings.pro4
-rw-r--r--examples/qml/tutorials/extending-qml/chapter3-bindings/main.cpp2
-rw-r--r--examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pro4
-rw-r--r--examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/main.cpp4
-rw-r--r--examples/qml/tutorials/extending-qml/chapter5-listproperties/chapter5-listproperties.pro4
-rw-r--r--examples/qml/tutorials/extending-qml/chapter5-listproperties/main.cpp2
-rw-r--r--examples/qml/tutorials/extending-qml/chapter6-plugins/import/chartsplugin.h7
-rw-r--r--examples/qml/tutorials/extending-qml/chapter6-plugins/import/import.pro16
-rw-r--r--examples/quick/animation/animation.qrc1
-rw-r--r--examples/quick/animation/behaviors/FocusRect.qml (renamed from tests/manual/nodetypes/Images.qml)106
-rw-r--r--examples/quick/animation/behaviors/SideRect.qml7
-rw-r--r--examples/quick/animation/behaviors/behavior-example.qml43
-rw-r--r--examples/quick/animation/doc/src/animation.qdoc2
-rw-r--r--examples/quick/animation/easing/easing.qml29
-rw-r--r--examples/quick/canvas/smile/smile.qml1
-rw-r--r--examples/quick/customitems/maskedmousearea/main.cpp3
-rw-r--r--examples/quick/customitems/maskedmousearea/maskedmousearea.pro4
-rw-r--r--examples/quick/customitems/painteditem/TextBalloonPlugin/plugin.h9
-rw-r--r--examples/quick/customitems/painteditem/painteditem.pro16
-rw-r--r--examples/quick/draganddrop/draganddrop.qrc1
-rw-r--r--examples/quick/draganddrop/views/Icon.qml96
-rw-r--r--examples/quick/draganddrop/views/gridview.qml56
-rw-r--r--examples/quick/imageprovider/imageprovider.cpp10
-rw-r--r--examples/quick/imageresponseprovider/imageresponseprovider.cpp9
-rw-r--r--examples/quick/layouts/layouts.qml13
-rw-r--r--examples/quick/localstorage/localstorage/Header.qml10
-rw-r--r--examples/quick/localstorage/localstorage/localstorage.qml4
-rw-r--r--examples/quick/quick-accessibility/content/Button.qml1
-rw-r--r--examples/quick/quickwidgets/qquickviewcomparison/mainwindow.cpp2
-rw-r--r--examples/quick/quickwidgets/qquickviewcomparison/qquickviewcomparison.pro4
-rw-r--r--examples/quick/quickwidgets/quickwidget/main.cpp2
-rw-r--r--examples/quick/quickwidgets/quickwidget/quickwidget.pro4
-rw-r--r--examples/quick/scenegraph/customgeometry/beziercurve.h2
-rw-r--r--examples/quick/scenegraph/customgeometry/customgeometry.pro4
-rw-r--r--examples/quick/scenegraph/customgeometry/doc/src/customgeometry.qdoc15
-rw-r--r--examples/quick/scenegraph/customgeometry/main.cpp2
-rw-r--r--examples/quick/scenegraph/d3d11underqml/d3d11underqml.pro4
-rw-r--r--examples/quick/scenegraph/d3d11underqml/main.cpp2
-rw-r--r--examples/quick/scenegraph/fboitem/fboitem.pro4
-rw-r--r--examples/quick/scenegraph/fboitem/main.cpp2
-rw-r--r--examples/quick/scenegraph/graph/graph.pro4
-rw-r--r--examples/quick/scenegraph/graph/main.cpp2
-rw-r--r--examples/quick/scenegraph/metaltextureimport/doc/src/metaltextureimport.qdoc2
-rw-r--r--examples/quick/scenegraph/metaltextureimport/metaltextureimport.pro5
-rw-r--r--examples/quick/scenegraph/metalunderqml/main.cpp2
-rw-r--r--examples/quick/scenegraph/metalunderqml/metalsquircle.mm5
-rw-r--r--examples/quick/scenegraph/metalunderqml/metalunderqml.pro9
-rw-r--r--examples/quick/scenegraph/openglunderqml/doc/src/openglunderqml.qdoc5
-rw-r--r--examples/quick/scenegraph/openglunderqml/main.cpp2
-rw-r--r--examples/quick/scenegraph/openglunderqml/openglunderqml.pro4
-rw-r--r--examples/quick/scenegraph/rendernode/customrenderitem.cpp11
-rw-r--r--examples/quick/scenegraph/rendernode/customrenderitem.h2
-rw-r--r--examples/quick/scenegraph/rendernode/d3d12renderer.cpp309
-rw-r--r--examples/quick/scenegraph/rendernode/doc/src/rendernode.qdoc2
-rw-r--r--examples/quick/scenegraph/rendernode/main.cpp4
-rw-r--r--examples/quick/scenegraph/rendernode/main.qml1
-rw-r--r--examples/quick/scenegraph/rendernode/rendernode.pro10
-rw-r--r--examples/quick/scenegraph/rendernode/rendernode.qrc2
-rw-r--r--examples/quick/scenegraph/rendernode/shader_frag.csobin908 -> 0 bytes
-rw-r--r--examples/quick/scenegraph/rendernode/shader_vert.csobin1720 -> 0 bytes
-rw-r--r--examples/quick/scenegraph/rendernode/softwarerenderer.cpp2
-rw-r--r--examples/quick/scenegraph/scenegraph.pro6
-rw-r--r--examples/quick/scenegraph/simplematerial/doc/src/simplematerial.qdoc26
-rw-r--r--examples/quick/scenegraph/simplematerial/simplematerial.cpp154
-rw-r--r--examples/quick/scenegraph/simplematerial/simplematerial.pro10
-rw-r--r--examples/quick/scenegraph/simplematerial/simplematerialitem.cpp169
-rw-r--r--examples/quick/scenegraph/simplematerial/simplematerialitem.h (renamed from tests/manual/nodetypes/LotsOfImages.qml)55
-rw-r--r--examples/quick/scenegraph/textureinthread/main.cpp1
-rw-r--r--examples/quick/scenegraph/textureinthread/textureinthread.pro4
-rw-r--r--examples/quick/scenegraph/threadedanimation/main.cpp2
-rw-r--r--examples/quick/scenegraph/threadedanimation/threadedanimation.pro4
-rw-r--r--examples/quick/scenegraph/twotextureproviders/main.cpp2
-rw-r--r--examples/quick/scenegraph/twotextureproviders/twotextureproviders.pro4
-rw-r--r--examples/quick/scenegraph/vulkantextureimport/doc/images/vulkantextureimport-example.jpgbin0 -> 28887 bytes
-rw-r--r--examples/quick/scenegraph/vulkantextureimport/doc/src/vulkantextureimport.qdoc48
-rw-r--r--examples/quick/scenegraph/vulkantextureimport/main.cpp (renamed from examples/qml/tutorials/extending-qml/chapter6-plugins/import/chartsplugin.cpp)30
-rw-r--r--examples/quick/scenegraph/vulkantextureimport/main.qml123
-rw-r--r--examples/quick/scenegraph/vulkantextureimport/squircle.frag.spvbin0 -> 1432 bytes
-rw-r--r--examples/quick/scenegraph/vulkantextureimport/squircle.vert.spvbin0 -> 644 bytes
-rw-r--r--examples/quick/scenegraph/vulkantextureimport/vulkantextureimport.cpp823
-rw-r--r--examples/quick/scenegraph/vulkantextureimport/vulkantextureimport.h (renamed from examples/quick/scenegraph/rendernode/d3d12renderer.h)63
-rw-r--r--examples/quick/scenegraph/vulkantextureimport/vulkantextureimport.pro12
-rw-r--r--examples/quick/scenegraph/vulkantextureimport/vulkantextureimport.qrc7
-rw-r--r--examples/quick/shadereffects/content/shaders/+hlsl/blur.frag18
-rw-r--r--examples/quick/shadereffects/content/shaders/+hlsl/colorize.frag17
-rw-r--r--examples/quick/shadereffects/content/shaders/+hlsl/genie.vert31
-rw-r--r--examples/quick/shadereffects/content/shaders/+hlsl/outline.frag21
-rw-r--r--examples/quick/shadereffects/content/shaders/+hlsl/shadow.frag20
-rw-r--r--examples/quick/shadereffects/content/shaders/+hlsl/wobble.frag17
-rw-r--r--examples/quick/shadereffects/doc/src/shadereffects.qdoc15
-rw-r--r--examples/quick/shadereffects/shadereffects.qrc6
-rw-r--r--examples/quick/shared/FlickrRssModel.qml6
-rw-r--r--examples/quick/shared/SimpleLauncherDelegate.qml4
-rw-r--r--examples/quick/tableview/gameoflife/doc/src/gameoflife.qdoc6
-rw-r--r--examples/quick/tableview/gameoflife/gameoflife.pro5
-rw-r--r--examples/quick/tableview/gameoflife/main.cpp4
-rw-r--r--examples/quick/tableview/pixelator/doc/src/pixelator.qdoc6
-rw-r--r--examples/quick/tableview/pixelator/main.cpp4
-rw-r--r--examples/quick/tableview/pixelator/pixelator.pro4
-rw-r--r--examples/quick/touchinteraction/multipointtouch/bearwhack.qml12
-rw-r--r--examples/quick/touchinteraction/multipointtouch/content/BearWhackParticleSystem.qml9
-rw-r--r--examples/quick/views/pathview/pathview-example.qml10
-rw-r--r--src/3rdparty/llvm/LICENSE.TXT68
-rw-r--r--src/3rdparty/llvm/include/llvm-c/DataTypes.h90
-rw-r--r--src/3rdparty/llvm/include/llvm/ADT/PointerIntPair.h233
-rw-r--r--src/3rdparty/llvm/include/llvm/ADT/ilist.h431
-rw-r--r--src/3rdparty/llvm/include/llvm/ADT/ilist_base.h93
-rw-r--r--src/3rdparty/llvm/include/llvm/ADT/ilist_iterator.h199
-rw-r--r--src/3rdparty/llvm/include/llvm/ADT/ilist_node.h306
-rw-r--r--src/3rdparty/llvm/include/llvm/ADT/ilist_node_base.h53
-rw-r--r--src/3rdparty/llvm/include/llvm/ADT/ilist_node_options.h133
-rw-r--r--src/3rdparty/llvm/include/llvm/ADT/iterator.h339
-rw-r--r--src/3rdparty/llvm/include/llvm/ADT/iterator_range.h68
-rw-r--r--src/3rdparty/llvm/include/llvm/ADT/simple_ilist.h315
-rw-r--r--src/3rdparty/llvm/include/llvm/Demangle/Compiler.h524
-rw-r--r--src/3rdparty/llvm/include/llvm/Support/Compiler.h19
-rw-r--r--src/3rdparty/llvm/include/llvm/Support/DataTypes.h17
-rw-r--r--src/3rdparty/llvm/include/llvm/Support/PointerLikeTypeTraits.h116
-rw-r--r--src/3rdparty/llvm/llvm.pri18
-rw-r--r--src/3rdparty/llvm/qt_attribution.json14
-rw-r--r--src/3rdparty/masm/assembler/LinkBuffer.h29
-rw-r--r--src/3rdparty/masm/disassembler/Disassembler.cpp2
-rw-r--r--src/3rdparty/masm/stubs/wtf/Optional.h2
-rw-r--r--src/imports/folderlistmodel/folderlistmodel.pro3
-rw-r--r--src/imports/folderlistmodel/plugin.cpp4
-rw-r--r--src/imports/folderlistmodel/plugins.qmltypes351
-rw-r--r--src/imports/folderlistmodel/qquickfolderlistmodel.cpp2
-rw-r--r--src/imports/labsanimation/labsanimation.pro1
-rw-r--r--src/imports/labsanimation/plugin.cpp12
-rw-r--r--src/imports/labsanimation/plugins.qmltypes36
-rw-r--r--src/imports/labsmodels/labsmodels.pro1
-rw-r--r--src/imports/labsmodels/plugin.cpp21
-rw-r--r--src/imports/labsmodels/plugins.qmltypes414
-rw-r--r--src/imports/layouts/layouts.pro4
-rw-r--r--src/imports/layouts/plugin.cpp15
-rw-r--r--src/imports/layouts/plugins.qmltypes131
-rw-r--r--src/imports/layouts/qquickgridlayoutengine.cpp2
-rw-r--r--src/imports/layouts/qquickgridlayoutengine_p.h2
-rw-r--r--src/imports/layouts/qquicklayout.cpp3
-rw-r--r--src/imports/layouts/qquicklinearlayout.cpp22
-rw-r--r--src/imports/localstorage/localstorage.pro3
-rw-r--r--src/imports/localstorage/plugin.cpp13
-rw-r--r--src/imports/localstorage/plugins.qmltypes23
-rw-r--r--src/imports/models/models.pro2
-rw-r--r--src/imports/models/plugin.cpp41
-rw-r--r--src/imports/models/plugins.qmltypes710
-rw-r--r--src/imports/particles/particles.pro2
-rw-r--r--src/imports/particles/plugin.cpp4
-rw-r--r--src/imports/particles/plugins.qmltypes1359
-rw-r--r--src/imports/qtqml/plugin.cpp13
-rw-r--r--src/imports/qtqml/plugins.qmltypes245
-rw-r--r--src/imports/qtqml/qtqml.pro2
-rw-r--r--src/imports/qtquick2/plugin.cpp2
-rw-r--r--src/imports/qtquick2/plugins.qmltypes5921
-rw-r--r--src/imports/qtquick2/qtquick2.pro2
-rw-r--r--src/imports/settings/plugin.cpp12
-rw-r--r--src/imports/settings/plugins.qmltypes36
-rw-r--r--src/imports/settings/settings.pro2
-rw-r--r--src/imports/shapes/plugin.cpp8
-rw-r--r--src/imports/shapes/plugins.qmltypes172
-rw-r--r--src/imports/shapes/shapes.pro2
-rw-r--r--src/imports/sharedimage/plugin.cpp12
-rw-r--r--src/imports/sharedimage/plugins.qmltypes11
-rw-r--r--src/imports/sharedimage/sharedimage.pro1
-rw-r--r--src/imports/statemachine/plugin.cpp16
-rw-r--r--src/imports/statemachine/plugins.qmltypes179
-rw-r--r--src/imports/statemachine/statemachine.pro4
-rw-r--r--src/imports/testlib/TestCase.qml26
-rw-r--r--src/imports/testlib/main.cpp20
-rw-r--r--src/imports/testlib/plugins.qmltypes368
-rw-r--r--src/imports/testlib/quicktestevent.cpp (renamed from src/qmltest/quicktestevent.cpp)2
-rw-r--r--src/imports/testlib/quicktestevent_p.h (renamed from src/qmltest/quicktestevent_p.h)5
-rw-r--r--src/imports/testlib/quicktestresultforeign_p.h (renamed from src/qmlworkerscript/qqmlworkerscriptmodule_p.h)20
-rw-r--r--src/imports/testlib/quicktestutil.cpp (renamed from src/qmltest/quicktestutil.cpp)0
-rw-r--r--src/imports/testlib/quicktestutil_p.h (renamed from src/qmltest/quicktestutil_p.h)3
-rw-r--r--src/imports/testlib/testlib.pro15
-rw-r--r--src/imports/wavefrontmesh/plugin.cpp14
-rw-r--r--src/imports/wavefrontmesh/plugins.qmltypes37
-rw-r--r--src/imports/wavefrontmesh/wavefrontmesh.pro3
-rw-r--r--src/imports/window/plugin.cpp20
-rw-r--r--src/imports/window/plugins.qmltypes378
-rw-r--r--src/imports/window/window.pro3
-rw-r--r--src/imports/workerscript/plugin.cpp26
-rw-r--r--src/imports/workerscript/plugins.qmltypes26
-rw-r--r--src/imports/workerscript/workerscript.pro2
-rw-r--r--src/particles/particles.pro6
-rw-r--r--src/particles/qquickitemparticle.cpp98
-rw-r--r--src/particles/qquickitemparticle_p.h6
-rw-r--r--src/particles/qquickparticleextruder.cpp2
-rw-r--r--src/particles/qquickparticlesmodule.cpp42
-rw-r--r--src/particles/qquickparticlesystem.cpp7
-rw-r--r--src/particles/qquickparticlesystem_p.h2
-rw-r--r--src/particles/shaders_ng/imageparticle_colored.frag.qsbbin1990 -> 1572 bytes
-rw-r--r--src/particles/shaders_ng/imageparticle_colored.vert.qsbbin3677 -> 3329 bytes
-rw-r--r--src/particles/shaders_ng/imageparticle_deformed.frag.qsbbin2028 -> 1601 bytes
-rw-r--r--src/particles/shaders_ng/imageparticle_deformed.vert.qsbbin5044 -> 4712 bytes
-rw-r--r--src/particles/shaders_ng/imageparticle_simple.frag.qsbbin2000 -> 1581 bytes
-rw-r--r--src/particles/shaders_ng/imageparticle_simple.vert.qsbbin3639 -> 3261 bytes
-rw-r--r--src/particles/shaders_ng/imageparticle_sprite.frag.qsbbin2369 -> 1918 bytes
-rw-r--r--src/particles/shaders_ng/imageparticle_sprite.vert.qsbbin5964 -> 5367 bytes
-rw-r--r--src/particles/shaders_ng/imageparticle_tabled.frag.qsbbin2240 -> 1777 bytes
-rw-r--r--src/particles/shaders_ng/imageparticle_tabled.vert.qsbbin5462 -> 4929 bytes
-rw-r--r--src/plugins/qmltooling/qmldbg_preview/qqmlpreviewfileengine.cpp2
-rw-r--r--src/plugins/qmltooling/qmldbg_preview/qqmlpreviewfileloader.cpp1
-rw-r--r--src/plugins/scenegraph/d3d12/d3d12.json3
-rw-r--r--src/plugins/scenegraph/d3d12/d3d12.pro61
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12adaptation.cpp87
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12adaptation_p.h81
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12builtinmaterials.cpp737
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12builtinmaterials_p.h253
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12context.cpp143
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12context_p.h84
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12engine.cpp3280
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12engine_p.h394
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12engine_p_p.h455
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12glyphcache.cpp197
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12glyphcache_p.h88
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12glyphnode.cpp90
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12glyphnode_p.h74
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12internalimagenode.cpp123
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12internalimagenode_p.h82
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12internalrectanglenode_p.h74
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12layer.cpp370
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12layer_p.h129
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12material.cpp49
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12material_p.h96
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12painternode.cpp255
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12painternode_p.h120
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12publicnodes.cpp250
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12publicnodes_p.h136
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12rendercontext.cpp169
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12rendercontext_p.h90
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12renderer.cpp785
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12renderer_p.h137
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12renderloop.cpp536
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12renderloop_p.h130
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12shadereffectnode.cpp995
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12shadereffectnode_p.h176
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12spritenode.cpp314
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12spritenode_p.h90
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12texture.cpp157
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12texture_p.h96
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12threadedrenderloop.cpp1186
-rw-r--r--src/plugins/scenegraph/d3d12/qsgd3d12threadedrenderloop_p.h129
-rw-r--r--src/plugins/scenegraph/d3d12/shaders/flatcolor.hlsl27
-rw-r--r--src/plugins/scenegraph/d3d12/shaders/mipmapgen.hlsl60
-rw-r--r--src/plugins/scenegraph/d3d12/shaders/shadereffectdefault.hlsl27
-rw-r--r--src/plugins/scenegraph/d3d12/shaders/shaders.pri141
-rw-r--r--src/plugins/scenegraph/d3d12/shaders/smoothcolor.hlsl64
-rw-r--r--src/plugins/scenegraph/d3d12/shaders/smoothtexture.hlsl77
-rw-r--r--src/plugins/scenegraph/d3d12/shaders/sprite.hlsl43
-rw-r--r--src/plugins/scenegraph/d3d12/shaders/stencilclip.hlsl26
-rw-r--r--src/plugins/scenegraph/d3d12/shaders/tdr.hlsl11
-rw-r--r--src/plugins/scenegraph/d3d12/shaders/textmask.hlsl104
-rw-r--r--src/plugins/scenegraph/d3d12/shaders/texture.hlsl33
-rw-r--r--src/plugins/scenegraph/d3d12/shaders/vertexcolor.hlsl32
-rw-r--r--src/plugins/scenegraph/openvg/openvg.pro12
-rw-r--r--src/plugins/scenegraph/openvg/openvg.tracepoints0
-rw-r--r--src/plugins/scenegraph/openvg/qsgopenvgrenderloop.cpp12
-rw-r--r--src/plugins/scenegraph/scenegraph.pro1
-rw-r--r--src/qml/common/qv4compileddata_p.h42
-rw-r--r--src/qml/common/qv4stringtoarrayindex_p.h2
-rw-r--r--src/qml/compiler/qv4codegen.cpp38
-rw-r--r--src/qml/compiler/qv4compiler.cpp14
-rw-r--r--src/qml/dependencies.json1
-rw-r--r--src/qml/doc/qtqml.qdocconf12
-rw-r--r--src/qml/doc/src/cppintegration/data.qdoc13
-rw-r--r--src/qml/doc/src/cppintegration/extending-tutorial.qdoc19
-rw-r--r--src/qml/doc/src/qmldiskcache.qdoc77
-rw-r--r--src/qml/doc/src/qmlfunctions.qdoc1
-rw-r--r--src/qml/doc/src/qmllanguageref/modules/qqmlextensionplugin.qdocinc2
-rw-r--r--src/qml/doc/src/qmllanguageref/syntax/imports.qdoc7
-rw-r--r--src/qml/doc/src/qtqml.qdoc2
-rw-r--r--src/qml/jit/qv4assemblercommon.cpp2
-rw-r--r--src/qml/jsruntime/qv4arraybuffer.cpp53
-rw-r--r--src/qml/jsruntime/qv4arraybuffer_p.h27
-rw-r--r--src/qml/jsruntime/qv4arraydata.cpp8
-rw-r--r--src/qml/jsruntime/qv4arrayobject.cpp3
-rw-r--r--src/qml/jsruntime/qv4dataview.cpp30
-rw-r--r--src/qml/jsruntime/qv4engine.cpp101
-rw-r--r--src/qml/jsruntime/qv4engine_p.h11
-rw-r--r--src/qml/jsruntime/qv4enginebase_p.h2
-rw-r--r--src/qml/jsruntime/qv4executablecompilationunit.cpp6
-rw-r--r--src/qml/jsruntime/qv4functionobject.cpp8
-rw-r--r--src/qml/jsruntime/qv4object_p.h2
-rw-r--r--src/qml/jsruntime/qv4objectiterator.cpp2
-rw-r--r--src/qml/jsruntime/qv4objectproto.cpp1
-rw-r--r--src/qml/jsruntime/qv4proxy.cpp2
-rw-r--r--src/qml/jsruntime/qv4regexp.cpp4
-rw-r--r--src/qml/jsruntime/qv4regexpobject.cpp4
-rw-r--r--src/qml/jsruntime/qv4runtime.cpp9
-rw-r--r--src/qml/jsruntime/qv4sequenceobject.cpp6
-rw-r--r--src/qml/jsruntime/qv4string.cpp46
-rw-r--r--src/qml/jsruntime/qv4string_p.h32
-rw-r--r--src/qml/jsruntime/qv4symbol.cpp5
-rw-r--r--src/qml/jsruntime/qv4typedarray.cpp185
-rw-r--r--src/qml/jsruntime/qv4typedarray_p.h5
-rw-r--r--src/qml/jsruntime/qv4value_p.h2
-rw-r--r--src/qml/jsruntime/qv4vme_moth.cpp37
-rw-r--r--src/qml/memory/qv4mm.cpp2
-rw-r--r--src/qml/parser/qqmljs.g82
-rw-r--r--src/qml/parser/qqmljsast_p.h4
-rw-r--r--src/qml/parser/qqmljslexer.cpp9
-rw-r--r--src/qml/qml.pro8
-rw-r--r--src/qml/qml/ftw/qhashedstring.cpp2
-rw-r--r--src/qml/qml/ftw/qstringhash_p.h60
-rw-r--r--src/qml/qml/qqmlapplicationengine.cpp2
-rw-r--r--src/qml/qml/qqmlbinding.cpp4
-rw-r--r--src/qml/qml/qqmlboundsignal.cpp5
-rw-r--r--src/qml/qml/qqmlcomponent.cpp2
-rw-r--r--src/qml/qml/qqmlcustomparser.cpp8
-rw-r--r--src/qml/qml/qqmldata_p.h2
-rw-r--r--src/qml/qml/qqmldatablob.cpp3
-rw-r--r--src/qml/qml/qqmlengine.cpp47
-rw-r--r--src/qml/qml/qqmlextensionplugin.cpp2
-rw-r--r--src/qml/qml/qqmlimport.cpp67
-rw-r--r--src/qml/qml/qqmlimport_p.h12
-rw-r--r--src/qml/qml/qqmlinfo.cpp3
-rw-r--r--src/qml/qml/qqmllocale.cpp30
-rw-r--r--src/qml/qml/qqmllocale_p.h13
-rw-r--r--src/qml/qml/qqmlmetaobject.cpp8
-rw-r--r--src/qml/qml/qqmlmetatype.cpp35
-rw-r--r--src/qml/qml/qqmlmetatype_p.h2
-rw-r--r--src/qml/qml/qqmlmetatypedata_p.h4
-rw-r--r--src/qml/qml/qqmlmoduleregistration.cpp18
-rw-r--r--src/qml/qml/qqmlmoduleregistration.h7
-rw-r--r--src/qml/qml/qqmlnotifier.cpp4
-rw-r--r--src/qml/qml/qqmlproperty.cpp4
-rw-r--r--src/qml/qml/qqmlproperty_p.h4
-rw-r--r--src/qml/qml/qqmlpropertycache.cpp11
-rw-r--r--src/qml/qml/qqmltype.cpp36
-rw-r--r--src/qml/qml/qqmltype_p.h1
-rw-r--r--src/qml/qml/qqmltype_p_p.h12
-rw-r--r--src/qml/qml/qqmltypecompiler.cpp10
-rw-r--r--src/qml/qml/qqmltypeloader.cpp19
-rw-r--r--src/qml/qml/qqmltypeloaderqmldircontent.cpp1
-rw-r--r--src/qml/qml/qqmltypemodule.cpp8
-rw-r--r--src/qml/qml/qqmlvmemetaobject.cpp145
-rw-r--r--src/qml/qml/qqmlvmemetaobject_p.h20
-rw-r--r--src/qml/qml/qqmlxmlhttprequest.cpp42
-rw-r--r--src/qml/qml/v8/qqmlbuiltinfunctions.cpp21
-rw-r--r--src/qml/qmldirparser/qqmldirparser.cpp33
-rw-r--r--src/qml/qmldirparser/qqmldirparser_p.h9
-rw-r--r--src/qml/qtqml.tracepoints7
-rw-r--r--src/qmlmodels/doc/images/listmodel-nested.png (renamed from src/qml/doc/images/listmodel-nested.png)bin7493 -> 7493 bytes
-rw-r--r--src/qmlmodels/doc/images/listmodel.png (renamed from src/qml/doc/images/listmodel.png)bin3407 -> 3407 bytes
-rw-r--r--src/qmlmodels/doc/images/objectmodel.png (renamed from src/qml/doc/images/objectmodel.png)bin347 -> 347 bytes
-rw-r--r--src/qmlmodels/doc/qtqmlmodels.qdocconf13
-rw-r--r--src/qmlmodels/qmlmodels.pro9
-rw-r--r--src/qmlmodels/qqmladaptormodel.cpp76
-rw-r--r--src/qmlmodels/qqmldelegatemodel.cpp324
-rw-r--r--src/qmlmodels/qqmldelegatemodel_p.h7
-rw-r--r--src/qmlmodels/qqmldelegatemodel_p_p.h30
-rw-r--r--src/qmlmodels/qqmllistmodel.cpp64
-rw-r--r--src/qmlmodels/qqmllistmodel_p_p.h15
-rw-r--r--src/qmlmodels/qqmlmodelsmodule.cpp82
-rw-r--r--src/qmlmodels/qqmlmodelsmodule_p.h7
-rw-r--r--src/qmlmodels/qqmlobjectmodel.cpp4
-rw-r--r--src/qmlmodels/qqmlobjectmodel_p.h14
-rw-r--r--src/qmlmodels/qqmltableinstancemodel.cpp101
-rw-r--r--src/qmlmodels/qqmltableinstancemodel_p.h21
-rw-r--r--src/qmltest/dependencies.json1
-rw-r--r--src/qmltest/qmltest.pro10
-rw-r--r--src/qmltest/quicktestresult_p.h1
-rw-r--r--src/qmltyperegistrar/qmltyperegistrar.cpp39
-rw-r--r--src/qmltyperegistrar/qmltypes.prf10
-rw-r--r--src/qmltyperegistrar/qmltypescreator.cpp4
-rw-r--r--src/qmlworkerscript/doc/qtqmlworkerscript.qdocconf6
-rw-r--r--src/qmlworkerscript/doc/snippets/qml/workerscript/script.mjs (renamed from src/qml/doc/snippets/qml/workerscript/script.mjs)0
-rw-r--r--src/qmlworkerscript/doc/snippets/qml/workerscript/workerscript.qml (renamed from src/qml/doc/snippets/qml/workerscript/workerscript.qml)0
-rw-r--r--src/qmlworkerscript/qmlworkerscript.pro8
-rw-r--r--src/qmlworkerscript/qqmlworkerscriptmodule.cpp51
-rw-r--r--src/qmlworkerscript/qquickworkerscript.cpp24
-rw-r--r--src/qmlworkerscript/qquickworkerscript_p.h8
-rw-r--r--src/qmlworkerscript/qv4serialize.cpp49
-rw-r--r--src/quick/configure.json21
-rw-r--r--src/quick/dependencies.json1
-rw-r--r--src/quick/designer/qquickdesignercustomobjectdata.cpp2
-rw-r--r--src/quick/doc/qtquick.qdocconf5
-rw-r--r--src/quick/doc/snippets/cmake-macros/examples.cmake2
-rw-r--r--src/quick/doc/snippets/qml/listview/ReusableDelegate.qml82
-rw-r--r--src/quick/doc/src/concepts/visualcanvas/adaptations.qdoc250
-rw-r--r--src/quick/doc/src/examples.qdoc1
-rw-r--r--src/quick/doc/src/guidelines/qtquick-bestpractices.qdoc37
-rw-r--r--src/quick/handlers/qquickmultipointhandler_p.h1
-rw-r--r--src/quick/handlers/qquickpointerhandler.cpp19
-rw-r--r--src/quick/handlers/qquicktaphandler.cpp9
-rw-r--r--src/quick/handlers/qquickwheelhandler.cpp25
-rw-r--r--src/quick/items/qquickaccessibleattached.cpp13
-rw-r--r--src/quick/items/qquickaccessibleattached_p.h5
-rw-r--r--src/quick/items/qquickevents.cpp133
-rw-r--r--src/quick/items/qquickevents_p_p.h11
-rw-r--r--src/quick/items/qquickflickable.cpp2
-rw-r--r--src/quick/items/qquickgenericshadereffect.cpp3
-rw-r--r--src/quick/items/qquickgraphicsinfo.cpp1
-rw-r--r--src/quick/items/qquickgraphicsinfo_p.h1
-rw-r--r--src/quick/items/qquickgridview.cpp4
-rw-r--r--src/quick/items/qquickimage.cpp8
-rw-r--r--src/quick/items/qquickimage_p_p.h13
-rw-r--r--src/quick/items/qquickitem.cpp6
-rw-r--r--src/quick/items/qquickitem_p.h6
-rw-r--r--src/quick/items/qquickitemsmodule.cpp202
-rw-r--r--src/quick/items/qquickitemview.cpp130
-rw-r--r--src/quick/items/qquickitemview_p.h12
-rw-r--r--src/quick/items/qquickitemview_p_p.h23
-rw-r--r--src/quick/items/qquicklistview.cpp126
-rw-r--r--src/quick/items/qquicklistview_p.h2
-rw-r--r--src/quick/items/qquickmousearea.cpp8
-rw-r--r--src/quick/items/qquickmousearea_p.h1
-rw-r--r--src/quick/items/qquickmultipointtoucharea.cpp48
-rw-r--r--src/quick/items/qquickmultipointtoucharea_p.h4
-rw-r--r--src/quick/items/qquickpainteditem.cpp1
-rw-r--r--src/quick/items/qquickpathview.cpp5
-rw-r--r--src/quick/items/qquickscreen.cpp3
-rw-r--r--src/quick/items/qquickscreen_p.h4
-rw-r--r--src/quick/items/qquickshadereffect.cpp239
-rw-r--r--src/quick/items/qquickstateoperations.cpp5
-rw-r--r--src/quick/items/qquicktableview.cpp177
-rw-r--r--src/quick/items/qquicktableview_p_p.h23
-rw-r--r--src/quick/items/qquicktextinput.cpp7
-rw-r--r--src/quick/items/qquickview.cpp9
-rw-r--r--src/quick/items/qquickwindow.cpp28
-rw-r--r--src/quick/items/qquickwindow_p.h13
-rw-r--r--src/quick/qtquick.tracepoints48
-rw-r--r--src/quick/qtquick2.cpp11
-rw-r--r--src/quick/quick.pro9
-rw-r--r--src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer.cpp6
-rw-r--r--src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer_p.h1
-rw-r--r--src/quick/scenegraph/adaptations/software/qsgsoftwarecontext.cpp4
-rw-r--r--src/quick/scenegraph/adaptations/software/qsgsoftwareinternalimagenode.cpp2
-rw-r--r--src/quick/scenegraph/adaptations/software/qsgsoftwarepublicnodes.cpp2
-rw-r--r--src/quick/scenegraph/adaptations/software/qsgsoftwarerenderloop.cpp12
-rw-r--r--src/quick/scenegraph/adaptations/software/qsgsoftwarethreadedrenderloop.cpp23
-rw-r--r--src/quick/scenegraph/compressedtexture/qsgcompressedtexture.cpp2
-rw-r--r--src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp33
-rw-r--r--src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h109
-rw-r--r--src/quick/scenegraph/coreapi/qsgmaterial.cpp1
-rw-r--r--src/quick/scenegraph/coreapi/qsgmaterialrhishader.cpp6
-rw-r--r--src/quick/scenegraph/coreapi/qsgnode.cpp3
-rw-r--r--src/quick/scenegraph/coreapi/qsgnode.h2
-rw-r--r--src/quick/scenegraph/coreapi/qsgopenglvisualizer.cpp2
-rw-r--r--src/quick/scenegraph/coreapi/qsgrenderer.cpp11
-rw-r--r--src/quick/scenegraph/coreapi/qsgrendererinterface.cpp9
-rw-r--r--src/quick/scenegraph/coreapi/qsgrendererinterface.h1
-rw-r--r--src/quick/scenegraph/coreapi/qsgrendernode.cpp13
-rw-r--r--src/quick/scenegraph/coreapi/qsgrhivisualizer.cpp2
-rw-r--r--src/quick/scenegraph/coreapi/qsgtexture.cpp57
-rw-r--r--src/quick/scenegraph/coreapi/qsgtexture.h6
-rw-r--r--src/quick/scenegraph/qsgadaptationlayer.cpp9
-rw-r--r--src/quick/scenegraph/qsgcontextplugin.cpp1
-rw-r--r--src/quick/scenegraph/qsgrenderloop.cpp66
-rw-r--r--src/quick/scenegraph/qsgrenderloop_p.h5
-rw-r--r--src/quick/scenegraph/qsgrhilayer.cpp2
-rw-r--r--src/quick/scenegraph/qsgrhisupport.cpp60
-rw-r--r--src/quick/scenegraph/qsgrhisupport_p.h3
-rw-r--r--src/quick/scenegraph/qsgrhitextureglyphcache.cpp2
-rw-r--r--src/quick/scenegraph/qsgthreadedrenderloop.cpp107
-rw-r--r--src/quick/scenegraph/qsgwindowsrenderloop.cpp20
-rw-r--r--src/quick/scenegraph/scenegraph.pri2
-rw-r--r--src/quick/scenegraph/shaders/outlinedtext.vert4
-rw-r--r--src/quick/scenegraph/shaders/outlinedtext_core.vert4
-rw-r--r--src/quick/scenegraph/shaders/styledtext.vert3
-rw-r--r--src/quick/scenegraph/shaders/styledtext_core.vert3
-rw-r--r--src/quick/scenegraph/shaders/textmask.vert3
-rw-r--r--src/quick/scenegraph/shaders/textmask_core.vert3
-rw-r--r--src/quick/scenegraph/shaders_ng/24bittextmask.frag.qsbbin1873 -> 1537 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/32bitcolortext.frag.qsbbin1754 -> 1399 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/8bittextmask.frag.qsbbin1753 -> 1405 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/8bittextmask_a.frag.qsbbin1280 -> 909 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/distancefieldoutlinetext.frag.qsbbin2209 -> 1820 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/distancefieldoutlinetext.vert.qsbbin2209 -> 1851 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/distancefieldoutlinetext_a.frag.qsbbin2210 -> 1814 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/distancefieldshiftedtext.frag.qsbbin2319 -> 1905 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/distancefieldshiftedtext.vert.qsbbin2340 -> 1951 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/distancefieldshiftedtext_a.frag.qsbbin2334 -> 1914 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/distancefieldtext.frag.qsbbin1883 -> 1538 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/distancefieldtext.vert.qsbbin2048 -> 1709 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/distancefieldtext_a.frag.qsbbin1883 -> 1542 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/flatcolor.frag.qsbbin1149 -> 917 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/flatcolor.vert.qsbbin1597 -> 1334 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/hiqsubpixeldistancefieldtext.frag.qsbbin3314 -> 2898 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/hiqsubpixeldistancefieldtext.vert.qsbbin3675 -> 3288 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/hiqsubpixeldistancefieldtext_a.frag.qsbbin3304 -> 2909 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/loqsubpixeldistancefieldtext.frag.qsbbin2411 -> 2015 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/loqsubpixeldistancefieldtext.vert.qsbbin3028 -> 2675 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/loqsubpixeldistancefieldtext_a.frag.qsbbin2412 -> 2024 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/opaquetexture.frag.qsbbin1173 -> 967 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/opaquetexture.vert.qsbbin1791 -> 1500 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/outlinedtext.frag.qsbbin2549 -> 2162 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/outlinedtext.vert3
-rw-r--r--src/quick/scenegraph/shaders_ng/outlinedtext.vert.qsbbin2728 -> 2599 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/outlinedtext_a.frag.qsbbin1859 -> 1436 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/shadereffect.frag.qsbbin1622 -> 1307 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/shadereffect.vert.qsbbin1860 -> 1561 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/smoothcolor.frag.qsbbin838 -> 700 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/smoothcolor.vert.qsbbin3682 -> 3390 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/smoothtexture.frag.qsbbin1299 -> 1073 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/smoothtexture.vert.qsbbin4350 -> 3957 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/sprite.frag.qsbbin1908 -> 1571 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/sprite.vert.qsbbin2437 -> 2127 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/stencilclip.frag.qsbbin853 -> 737 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/stencilclip.vert.qsbbin1510 -> 1279 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/styledtext.frag.qsbbin2210 -> 1805 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/styledtext.vert3
-rw-r--r--src/quick/scenegraph/shaders_ng/styledtext.vert.qsbbin2460 -> 2209 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/styledtext_a.frag.qsbbin1631 -> 1212 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/textmask.frag.qsbbin1873 -> 1533 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/textmask.vert3
-rw-r--r--src/quick/scenegraph/shaders_ng/textmask.vert.qsbbin2142 -> 1961 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/texture.frag.qsbbin1618 -> 1302 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/texture.vert.qsbbin1865 -> 1561 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/vertexcolor.frag.qsbbin851 -> 700 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/vertexcolor.vert.qsbbin1837 -> 1542 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/visualization.frag.qsbbin1877 -> 1569 bytes
-rw-r--r--src/quick/scenegraph/shaders_ng/visualization.vert.qsbbin2099 -> 1762 bytes
-rw-r--r--src/quick/scenegraph/util/qsgopenglatlastexture.cpp5
-rw-r--r--src/quick/scenegraph/util/qsgplaintexture.cpp19
-rw-r--r--src/quick/scenegraph/util/qsgrhiatlastexture.cpp6
-rw-r--r--src/quick/scenegraph/util/qsgrhinativetextureimporter.cpp104
-rw-r--r--src/quick/util/qquickbehavior.cpp2
-rw-r--r--src/quick/util/qquickpath.cpp8
-rw-r--r--src/quick/util/qquickpixmapcache.cpp8
-rw-r--r--src/quick/util/qquickstyledtext.cpp18
-rw-r--r--src/quick/util/qquickutilmodule.cpp131
-rw-r--r--src/quick/util/qquickvaluetypes.cpp1
-rw-r--r--src/quick/util/util.pri2
-rw-r--r--src/quickshapes/qquickshape.cpp24
-rw-r--r--src/quickshapes/qquickshape_p.h6
-rw-r--r--src/quickshapes/qquickshape_p_p.h2
-rw-r--r--src/quickshapes/qquickshapegenericrenderer.cpp6
-rw-r--r--src/quickshapes/qquickshapesoftwarerenderer.cpp2
-rw-r--r--src/quickshapes/quickshapes.pro6
-rw-r--r--src/quickshapes/shaders_ng/conicalgradient.frag.qsbbin2228 -> 1889 bytes
-rw-r--r--src/quickshapes/shaders_ng/conicalgradient.vert.qsbbin1994 -> 1684 bytes
-rw-r--r--src/quickshapes/shaders_ng/lineargradient.frag.qsbbin1762 -> 1423 bytes
-rw-r--r--src/quickshapes/shaders_ng/lineargradient.vert.qsbbin2225 -> 1895 bytes
-rw-r--r--src/quickshapes/shaders_ng/radialgradient.frag.qsbbin2931 -> 2579 bytes
-rw-r--r--src/quickshapes/shaders_ng/radialgradient.vert.qsbbin2115 -> 1774 bytes
-rw-r--r--src/quickwidgets/qquickwidget.cpp13
-rw-r--r--src/quickwidgets/qquickwidget_p.h2
-rw-r--r--tests/auto/bic/data/QtQml.5.14.0.linux-gcc-amd64.txt6448
-rw-r--r--tests/auto/bic/data/QtQuick.5.14.0.linux-gcc-amd64.txt11598
-rw-r--r--tests/auto/bic/data/QtQuickTest.5.14.0.linux-gcc-amd64.txt19712
-rw-r--r--tests/auto/bic/data/QtQuickWidgets.5.14.0.linux-gcc-amd64.txt22451
-rw-r--r--tests/auto/particles/qquickitemparticle/data/loader.qml65
-rw-r--r--tests/auto/particles/qquickitemparticle/data/takeGive.qml74
-rw-r--r--tests/auto/particles/qquickitemparticle/tst_qquickitemparticle.cpp50
-rw-r--r--tests/auto/qml/debugger/qqmlpreview/tst_qqmlpreview.cpp1
-rw-r--r--tests/auto/qml/ecmascripttests/TestExpectations32
-rw-r--r--tests/auto/qml/ecmascripttests/qjstest/main.cpp1
-rw-r--r--tests/auto/qml/qjsengine/tst_qjsengine.cpp182
-rw-r--r--tests/auto/qml/qjsvalue/tst_qjsvalue.cpp64
-rw-r--r--tests/auto/qml/qjsvalue/tst_qjsvalue.h2
-rw-r--r--tests/auto/qml/qml.pro2
-rw-r--r--tests/auto/qml/qmldiskcache/tst_qmldiskcache.cpp4
-rw-r--r--tests/auto/qml/qmlformat/data/Example1.formatted.nosort.qml150
-rw-r--r--tests/auto/qml/qmlformat/data/Example1.formatted.qml150
-rw-r--r--tests/auto/qml/qmlformat/data/Example1.qml105
-rw-r--r--tests/auto/qml/qmlformat/qmlformat.pro11
-rw-r--r--tests/auto/qml/qmlformat/tst_qmlformat.cpp111
-rw-r--r--tests/auto/qml/qmllint/data/AttachedProps.qml6
-rw-r--r--tests/auto/qml/qmllint/data/AutomatchedSignalHandler.qml (renamed from tests/auto/qml/qmllint/data/UnmatchedSignalHandler.qml)0
-rw-r--r--tests/auto/qml/qmllint/data/Methods.js3
-rw-r--r--tests/auto/qml/qmllint/data/badAlias.qml5
-rw-r--r--tests/auto/qml/qmllint/data/badAliasProperty.qml6
-rw-r--r--tests/auto/qml/qmllint/data/badParent.qml7
-rw-r--r--tests/auto/qml/qmllint/data/badTypeAssertion.qml6
-rw-r--r--tests/auto/qml/qmllint/data/goodAlias.qml12
-rw-r--r--tests/auto/qml/qmllint/data/goodParent.qml8
-rw-r--r--tests/auto/qml/qmllint/data/goodTypeAssertion.qml6
-rw-r--r--tests/auto/qml/qmllint/data/javascriptMethods.qml6
-rw-r--r--tests/auto/qml/qmllint/data/memberNotFound.qml7
-rw-r--r--tests/auto/qml/qmllint/data/parentIsComponent.qml13
-rw-r--r--tests/auto/qml/qmllint/data/unknownElement.qml (renamed from tests/auto/qml/qmllint/data/spuriousParentWarning.qml)0
-rw-r--r--tests/auto/qml/qmllint/data/unknownJavascriptMethod.qml6
-rw-r--r--tests/auto/qml/qmllint/tst_qmllint.cpp47
-rw-r--r--tests/auto/qml/qmlmin/qmlmin.pro12
-rw-r--r--tests/auto/qml/qmlmin/tst_qmlmin.cpp225
-rw-r--r--tests/auto/qml/qqmlapplicationengine/data/invalid.qml5
-rw-r--r--tests/auto/qml/qqmlapplicationengine/tst_qqmlapplicationengine.cpp16
-rw-r--r--tests/auto/qml/qqmldirparser/tst_qqmldirparser.cpp3
-rw-r--r--tests/auto/qml/qqmlecmascript/data/hugeStack.qml33065
-rw-r--r--tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp62
-rw-r--r--tests/auto/qml/qqmlengine/data/evilSingletonInstantiation.qml6
-rw-r--r--tests/auto/qml/qqmlengine/tst_qqmlengine.cpp31
-rw-r--r--tests/auto/qml/qqmllanguage/data/listContainingDeleted.qml36
-rw-r--r--tests/auto/qml/qqmllanguage/data/nullishCoalescing_LHS_And.errors.txt1
-rw-r--r--tests/auto/qml/qqmllanguage/data/nullishCoalescing_LHS_And.qml8
-rw-r--r--tests/auto/qml/qqmllanguage/data/nullishCoalescing_LHS_Or.errors.txt1
-rw-r--r--tests/auto/qml/qqmllanguage/data/nullishCoalescing_LHS_Or.qml8
-rw-r--r--tests/auto/qml/qqmllanguage/data/nullishCoalescing_RHS_And.errors.txt1
-rw-r--r--tests/auto/qml/qqmllanguage/data/nullishCoalescing_RHS_And.qml8
-rw-r--r--tests/auto/qml/qqmllanguage/data/nullishCoalescing_RHS_Or.errors.txt1
-rw-r--r--tests/auto/qml/qqmllanguage/data/nullishCoalescing_RHS_Or.qml8
-rw-r--r--tests/auto/qml/qqmllanguage/testtypes.cpp1
-rw-r--r--tests/auto/qml/qqmllanguage/testtypes.h13
-rw-r--r--tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp50
-rw-r--r--tests/auto/qml/qqmllocale/tst_qqmllocale.cpp30
-rw-r--r--tests/auto/qml/qqmlmetatype/tst_qqmlmetatype.cpp10
-rw-r--r--tests/auto/qml/qqmlparser/tst_qqmlparser.cpp83
-rw-r--r--tests/auto/qml/qqmlpropertycache/tst_qqmlpropertycache.cpp40
-rw-r--r--tests/auto/qml/qqmlqt/tst_qqmlqt.cpp167
-rw-r--r--tests/auto/qml/qqmltypeloader/tst_qqmltypeloader.cpp30
-rw-r--r--tests/auto/qml/qqmlxmlhttprequest/data/file_request.qml32
-rw-r--r--tests/auto/qml/qqmlxmlhttprequest/tst_qqmlxmlhttprequest.cpp346
-rw-r--r--tests/auto/qml/qquickfolderlistmodel/tst_qquickfolderlistmodel.cpp17
-rw-r--r--tests/auto/qml/qquickworkerscript/data/BaseWorker.qml4
-rw-r--r--tests/auto/qml/qquickworkerscript/data/doRequest.mjs6
-rw-r--r--tests/auto/qml/qquickworkerscript/data/xmlHttpRequest.qml16
-rw-r--r--tests/auto/qml/qquickworkerscript/tst_qquickworkerscript.cpp26
-rw-r--r--tests/auto/qmltest/events/tst_drag.qml162
-rw-r--r--tests/auto/quick/nodes/tst_nodestest.cpp9
-rw-r--r--tests/auto/quick/pointerhandlers/flickableinterop/BLACKLIST1
-rw-r--r--tests/auto/quick/pointerhandlers/mousearea_interop/data/dragTakeOverFromSibling.qml58
-rw-r--r--tests/auto/quick/pointerhandlers/mousearea_interop/mousearea_interop.pro15
-rw-r--r--tests/auto/quick/pointerhandlers/mousearea_interop/tst_mousearea_interop.cpp178
-rw-r--r--tests/auto/quick/pointerhandlers/multipointtoucharea_interop/tst_multipointtoucharea_interop.cpp4
-rw-r--r--tests/auto/quick/pointerhandlers/pointerhandlers.pro1
-rw-r--r--tests/auto/quick/pointerhandlers/qquicktaphandler/data/Button.qml1
-rw-r--r--tests/auto/quick/pointerhandlers/qquicktaphandler/tst_qquicktaphandler.cpp22
-rw-r--r--tests/auto/quick/qquickaccessible/tst_qquickaccessible.cpp34
-rw-r--r--tests/auto/quick/qquickanimations/tst_qquickanimations.cpp218
-rw-r--r--tests/auto/quick/qquicklayouts/data/tst_gridlayout.qml33
-rw-r--r--tests/auto/quick/qquicklistview/data/listview-initCurrent.qml1
-rw-r--r--tests/auto/quick/qquicklistview/data/moveObjectModelItemToAnotherObjectModel.qml (renamed from tests/manual/nodetypes/Rects.qml)151
-rw-r--r--tests/auto/quick/qquicklistview/data/reusedelegateitems.qml (renamed from tests/manual/nodetypes/Painter.qml)78
-rw-r--r--tests/auto/quick/qquicklistview/qquicklistview.pro3
-rw-r--r--tests/auto/quick/qquicklistview/reusemodel.h84
-rw-r--r--tests/auto/quick/qquicklistview/tst_qquicklistview.cpp257
-rw-r--r--tests/auto/quick/qquickmousearea/BLACKLIST4
-rw-r--r--tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp50
-rw-r--r--tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp66
-rw-r--r--tests/auto/quick/qquickpathview/data/ungrabNestedinFlickable.qml75
-rw-r--r--tests/auto/quick/qquickpathview/tst_qquickpathview.cpp35
-rw-r--r--tests/auto/quick/qquickpixmapcache/data/asynchronousNoCache.qml17
-rw-r--r--tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp15
-rw-r--r--tests/auto/quick/qquickrepeater/data/contextProperty.qml13
-rw-r--r--tests/auto/quick/qquickrepeater/tst_qquickrepeater.cpp24
-rw-r--r--tests/auto/quick/qquicktableview/data/checkalwaysemit.qml (renamed from src/plugins/scenegraph/d3d12/qsgd3d12internalrectanglenode.cpp)69
-rw-r--r--tests/auto/quick/qquicktableview/data/replaceModelTableView.qml56
-rw-r--r--tests/auto/quick/qquicktableview/qquicktableview.pro2
-rw-r--r--tests/auto/quick/qquicktableview/testmodel.h33
-rw-r--r--tests/auto/quick/qquicktableview/tst_qquicktableview.cpp114
-rw-r--r--tests/auto/quick/qquicktextedit/BLACKLIST4
-rw-r--r--tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp4
-rw-r--r--tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp67
-rw-r--r--tests/auto/quick/qquickvisualdatamodel/data/filterGroupForDelegate.qml77
-rw-r--r--tests/auto/quick/qquickvisualdatamodel/data/readFromProxyObject.qml23
-rw-r--r--tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp30
-rw-r--r--tests/auto/quick/qquickwindow/tst_qquickwindow.cpp6
-rw-r--r--tests/auto/quick/shared/viewtestutil.cpp4
-rw-r--r--tests/auto/toolsupport/tst_toolsupport.cpp6
-rw-r--r--tests/benchmarks/qml/painting/paintbenchmark.cpp20
-rw-r--r--tests/libfuzzer/qml/jsapi/evaluate/evaluate.pro7
-rw-r--r--tests/libfuzzer/qml/jsapi/evaluate/main.cpp2
-rw-r--r--tests/manual/listview/listview.pro29
-rw-r--r--tests/manual/listview/main.cpp (renamed from src/quick/scenegraph/util/qsgrhinativetextureimporter_p.h)79
-rw-r--r--tests/manual/listview/main.qml171
-rw-r--r--tests/manual/listview/qml.qrc5
-rw-r--r--tests/manual/nodetypes/Animators.qml190
-rw-r--r--tests/manual/nodetypes/Effects.qml231
-rw-r--r--tests/manual/nodetypes/Layers.qml116
-rw-r--r--tests/manual/nodetypes/LotsOfRects.qml260
-rw-r--r--tests/manual/nodetypes/face-smile.pngbin15408 -> 0 bytes
-rw-r--r--tests/manual/nodetypes/hlslcompile.bat4
-rw-r--r--tests/manual/nodetypes/nodetypes.cpp216
-rw-r--r--tests/manual/nodetypes/nodetypes.pro9
-rw-r--r--tests/manual/nodetypes/nodetypes.qrc21
-rw-r--r--tests/manual/nodetypes/ps_shadow1.csobin1600 -> 0 bytes
-rw-r--r--tests/manual/nodetypes/ps_shadow2.csobin1436 -> 0 bytes
-rw-r--r--tests/manual/nodetypes/ps_wobble.csobin1272 -> 0 bytes
-rw-r--r--tests/manual/nodetypes/qt.pngbin11917 -> 0 bytes
-rw-r--r--tests/manual/nodetypes/shadow.pngbin425 -> 0 bytes
-rw-r--r--tests/manual/nodetypes/shadow1.hlsl18
-rw-r--r--tests/manual/nodetypes/shadow2.hlsl22
-rw-r--r--tests/manual/nodetypes/vs_wobble.csobin1184 -> 0 bytes
-rw-r--r--tests/manual/nodetypes/wobble.hlsl32
-rw-r--r--tests/manual/nodetypes_ng/shadow_pass1.frag.qsbbin2218 -> 1876 bytes
-rw-r--r--tests/manual/nodetypes_ng/shadow_pass2.frag.qsbbin2131 -> 1790 bytes
-rw-r--r--tests/manual/nodetypes_ng/wobble.frag.qsbbin2013 -> 1673 bytes
-rw-r--r--tests/manual/nodetypes_ng/wobble.vert.qsbbin2001 -> 1678 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/activity/activity.qml9
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/basic/basic.qml8
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/culling/culling_1.qml11
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/culling/culling_2.qml11
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_1.qml17
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_16.qml17
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_2.qml19
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_4.qml17
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_8.qml17
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/hiddensource/hiddensource_1.qml18
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/hiddensource/hiddensource_2.qml19
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/hiddensource/unhidden_1.qml18
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/hiddensource/unhidden_2.qml20
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/image/async.qml12
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/image/source.qml10
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/live/liveonce_1.qml9
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/live/liveonce_2.qml9
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/live/livetwice_1.qml20
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/live/livetwice_2.qml20
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/live/samesource.qml18
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/source/one-source.qml9
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/source/rect.qml9
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/source/switch_1.qml9
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/source/switch_2.qml9
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/source/two-sources.qml10
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/source/visible_1.qml10
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/source/visible_2.qml10
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/texture/size.qml17
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/wrap/modes.qml17
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/basic.fragbin0 -> 838 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/cmyk.fragbin0 -> 1959 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/culling.fragbin0 -> 1263 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/edge.fragbin0 -> 1890 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient.fragbin0 -> 1099 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient2.fragbin0 -> 1089 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient3.fragbin0 -> 1089 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient4.fragbin0 -> 1092 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient5.fragbin0 -> 1089 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/shadow.fragbin0 -> 2092 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/stencil.fragbin0 -> 1141 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/wave.vertbin0 -> 1867 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/basic.frag5
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/basic_rhi.frag8
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/cmyk.frag14
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/cmyk_rhi.frag18
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/compile.bat13
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/culling.frag9
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/culling_rhi.frag13
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/edge.frag14
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/edge_rhi.frag23
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/gradient.frag6
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/gradient2.frag6
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/gradient2_rhi.frag10
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/gradient3.frag6
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/gradient3_rhi.frag10
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/gradient4.frag6
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/gradient4_rhi.frag10
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/gradient5.frag6
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/gradient5_rhi.frag10
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/gradient_rhi.frag10
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/shadow.frag14
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/shadow_rhi.frag23
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/stencil.frag7
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/stencil_rhi.frag11
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/wave.vert12
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/wave_rhi.vert18
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shared.qrc28
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_style2.qml37
-rw-r--r--tests/manual/scenegraph_lancelot/scenegrabber/scenegrabber.pro4
-rw-r--r--tests/manual/scenegraph_lancelot/scenegraph/scenegraph.pro4
-rw-r--r--tests/manual/scenegraph_lancelot/scenegraph/tst_scenegraph.cpp33
-rw-r--r--tests/manual/tableview/abstracttablemodel/main.qml14
-rw-r--r--tools/qml/main.cpp2
-rw-r--r--tools/qml/qml.pro2
-rw-r--r--tools/qmlcachegen/qtquickcompiler.prf3
-rw-r--r--tools/qmlformat/commentastvisitor.cpp270
-rw-r--r--tools/qmlformat/commentastvisitor.h131
-rw-r--r--tools/qmlformat/dumpastvisitor.cpp986
-rw-r--r--tools/qmlformat/dumpastvisitor.h123
-rw-r--r--tools/qmlformat/main.cpp164
-rw-r--r--tools/qmlformat/qmlformat.pro17
-rw-r--r--tools/qmlformat/restructureastvisitor.cpp178
-rw-r--r--tools/qmlformat/restructureastvisitor.h50
-rw-r--r--tools/qmllint/componentversion.cpp63
-rw-r--r--tools/qmllint/componentversion.h43
-rw-r--r--tools/qmllint/fakemetaobject.cpp594
-rw-r--r--tools/qmllint/fakemetaobject.h235
-rw-r--r--tools/qmllint/findunqualified.cpp757
-rw-r--r--tools/qmllint/findunqualified.h87
-rw-r--r--tools/qmllint/importedmembersvisitor.cpp155
-rw-r--r--tools/qmllint/importedmembersvisitor.h (renamed from src/quick/util/qquickutilmodule_p.h)61
-rw-r--r--tools/qmllint/main.cpp66
-rw-r--r--tools/qmllint/metatypes.h155
-rw-r--r--tools/qmllint/qcoloroutput.cpp157
-rw-r--r--tools/qmllint/qcoloroutput.h (renamed from tools/qmllint/qcoloroutput_p.h)23
-rw-r--r--tools/qmllint/qmljstypedescriptionreader.h103
-rw-r--r--tools/qmllint/qmllint.pro17
-rw-r--r--tools/qmllint/scopetree.cpp435
-rw-r--r--tools/qmllint/scopetree.h190
-rw-r--r--tools/qmllint/typedescriptionreader.cpp (renamed from tools/qmllint/qmljstypedescriptionreader.cpp)359
-rw-r--r--tools/qmllint/typedescriptionreader.h105
-rw-r--r--tools/qmlmin/main.cpp700
-rw-r--r--tools/qmlmin/qmlmin.pro7
-rw-r--r--tools/qmlplugindump/main.cpp11
-rw-r--r--tools/tools.pro9
830 files changed, 106986 insertions, 35647 deletions
diff --git a/config.tests/d3d12/d3d12.cpp b/config.tests/d3d12/d3d12.cpp
deleted file mode 100644
index 0bf90cc457..0000000000
--- a/config.tests/d3d12/d3d12.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <d3d12.h>
-#include <dxgi1_4.h>
-#include <wrl/client.h>
-
-using namespace Microsoft::WRL;
-
-int main(int, char **)
-{
- ID3D12Device *dev = 0;
-
- return 0;
-}
diff --git a/config.tests/d3d12/d3d12.pro b/config.tests/d3d12/d3d12.pro
deleted file mode 100644
index 451e7427b9..0000000000
--- a/config.tests/d3d12/d3d12.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-SOURCES = d3d12.cpp
-CONFIG -= qt dylib
-CONFIG += console
-LIBS += -ldxgi -ld3d12 -ld3dcompiler -ldcomp
diff --git a/dist/changes-5.14.0 b/dist/changes-5.14.0
new file mode 100644
index 0000000000..85f693b4ac
--- /dev/null
+++ b/dist/changes-5.14.0
@@ -0,0 +1,372 @@
+Qt 5.14 introduces many new features and improvements as well as bugfixes
+over the 5.13.x series. For more details, refer to the online documentation
+included in this distribution. The documentation is also available online:
+
+https://doc.qt.io/qt-5/index.html
+
+The Qt version 5.14 series is binary compatible with the 5.13.x series.
+Applications compiled for 5.13 will continue to run with 5.14.
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Qt Bug Tracker:
+
+https://bugreports.qt.io/
+
+Each of these identifiers can be entered in the bug tracker to obtain more
+information about a particular change.
+
+****************************************************************************
+* QtQml *
+****************************************************************************
+
+ - On Android, QML plugins are loaded directly from the APK libs dir and
+ use qrc:/android_rcc_bundle/qml to search for QML files.
+
+ - [QTBUG-38913] Added ability to import static qml plugins with CMake
+ builds using the new QT5_IMPORT_QML_PLUGINS function.
+
+ - The NaN obtained by Math.pow(+/-1, +/-infinity) and
+ (+/-1)**(+/-infinity) is now quiet rather than signalling.
+
+ - It is now possible to specify types for method parameters and their
+ return value in QML (basic and object types), using TypeScript-like
+ syntax with a colon separator. The syntax for QML declared signals
+ supports the same style.
+
+ - QML Binding elements now support restoring previous values
+ of the bound property when the binding is disabled. This will be the
+ default behavior in Qt 6.0. Reliance on the old behavior of only
+ restoring binding, not literal values will results in a warning beginning
+ with Qt 5.15.
+
+ - The regular expression engine was updated, causing somewhat better
+ compliance with the ECMAScript specification.
+
+ - [QTBUG-74190] Fixed a crash due to combination of aggressive GC with logging.
+ Also, the qt.qml.gc.* logging rules don't produce false warnings about huge
+ amounts of lost memory anymore.
+
+ - [QTBUG-75007] Usage of singletons from QML engines in different threads
+ does not cause race conditions anymore.
+
+ - The JIT compiler is now a configurable feature. You can pass
+ -no-feature-qml-jit to configure in order to skip it, or -feature-qml-jit
+ in order to build it for platforms where it's disabled by default, e.g.
+ iOS and tvOS.
+
+ - [QTBUG-49080][QTBUG-78955] You can now interrupt a QJSEngine running a
+ JavaScript program by setting its isInterrupted flag from a different thread.
+
+ - qmlscene will not run into an infinite loop anymore if you pass a QML
+ document without any executable code.
+
+ - You can configure the maximum sizes of the JavaScript and the garbage
+ collector stacks now, using the QV4_JS_MAX_STACK_SIZE and
+ QV4_GC_MAX_STACK_SIZE environment variables.
+
+ - [QTBUG-76346] Context properties carrying QObjects are automatically
+ reset when the objects are destroyed now.
+
+ - [QTBUG-40487] You can now use Component properties in Binding elements.
+
+ - [QTBUG-76932] Changing sourceComponent in a Loader does not delete
+ C++-owned objects anymore.
+
+ - qmllint can now check for unqualified access to to properties of the
+ root object and undeclared signal parameters.
+
+ - [QTBUG-77096] You can use generator functions in QML components now.
+
+ - You can and should use plain JavaScript functions as signal handlers in
+ Connections elements now. This avoids the overhead of the custom parser
+ that otherwise needs to run for each Connections element, and forces you
+ to specify the signal parameters you are going to use.
+
+ - You can pass a set of initial properties to QQmlApplicationEngine,
+ QQmlComponent, and QQuickView now. Those will be used as defaults in any
+ subsequent instantiation of top-level QML objects.
+
+ - Anonymous types should be registered via the new qmlRegisterAnonymousType()
+ function now, rather than via the parameter-less qmlRegisterType(). That
+ is, you should specify a URI and a major version for your type.
+
+ - [QTBUG-74087] The QML parser can parse more complex JavaScript code now
+ without overflowing the stack. This allows for deeper list nesting in QML.
+
+ - [QTBUG-76021] instanceof does not confuse derived types with no additional
+ properties with their parent types anymore.
+
+ - [QTBUG-78943] Binding elements will not randomly convert strings to other
+ types anymore.
+
+ - [QTBUG-48150] You can use aliases of "depth" 2 now. That is, something like
+ "property alias topMargin: myItem.anchors.topMargin" works now.
+
+ - [QTBUG-78325] The "color" type has a property "valid" now.
+
+ - [QTBUG-78044] The qmlprofiler command line tool's interactive mode is more
+ stable now.
+
+ - [QTBUG-48809] Fixed a warning about non-relative paths in qmldir files.
+ We now permit the use of resource urls in qmldir files to allow a plugin
+ to include its .qml files in resources, optionally compiled ahead of time.
+
+ - [QTBUG-79614] QQmlProperty now handles reads of QQmlPropertyMap correctly.
+
+ - [QTBUG-79443] In the debugger, we now avoid loading cache files, so that
+ JavaScript breakpoints keep working after the first run.
+
+ - [QTBUG-55259] qmlimportscanner now scans resources in qrc files.
+
+ - [QTBUG-78486] Calling a function with 14 arguments no longer crashes.
+
+ - [QTBUG-78721] Fixed handling of properties with interface type in bindings.
+
+ - [QTBUG-71078] Increased the QML loader thread's stack size to avoid problems
+ parsing deeply nested QML/JS files on some platforms.
+
+ - [QTBUG-72442] Fixed float value binding to an integer (including NaN values).
+
+ - [QTBUG-78566] A warning is emitted when overriding a declared Binding from
+ elsewhere. The Binding stays active and updates the target property again
+ on the next change.
+
+ - [QTBUG-77027] Fixed nullptr handling in Binding.
+
+ - [QTBUG-78859] Fixed a property cache memory leak.
+
+ - [QTBUG-78865] Fixed a memory leak due to declaring unused scripts in
+ qmldir files.
+
+ - [QTBUG-78706] Fixed inconsistent daylight saving time behavior by
+ converting QTime to V4 Date on a date with no DST in force.
+
+ - [QTBUG-78098] QQmlTypeLoader now prevents more trivial cycles.
+
+ - [QTBUG-77751] Fixed the translation context in Qt.include()d JS files.
+
+ - [QTBUG-76514] Avoid duplicate singleton creation.
+
+ - [QTBUG-77237] Using an enum in a switch statement performs much better.
+
+ - [QTBUG-76866] Fixed a crash due to inconsistency between
+ isValueType() and valueType()'s return value.
+
+ - [QTBUG-77954] Semicolon is always allowed after property declaration.
+
+ - [QTBUG-73512] Fixed a bug with use of resource paths in
+ QQmlEngine::setImportPathList().
+
+ - [QTBUG-76303] When converting from number to string, we now keep
+ double precision if the number of significant digits exceeds six, so that
+ precision isn't lost if the string is converted back to a number.
+
+ - [QTBUG-76838] Binding.when is stored as boolean to support primitive values.
+
+ - [QTBUG-76033] Fixed several bugs in frozen(), sealed(), nonExtensible()
+ and propertiesFrozen().
+
+ - [QTBUG-75983] Fixed a crash in XMLHttpRequest::open().
+
+ - [QTBUG-49975] Warn rather than crashing in case of invalid top-level
+ parallel states.
+
+ - [QTBUG-73786] We now filter out duplicate entries in Object.keys().
+
+ - [QTBUG-73491] Added QQmlInstanceModel::variantValue() to enable ComboBox.valueRole.
+
+ - [QTBUG-74348] Fixed memory leaks due to value type provider deletion order.
+
+ - There are two new functions to register singleton types and help you to
+ get rid of context properties:
+ * qmlRegisterSingletonType() has an overload taking a std::function now,
+ instead of a bare function pointer. Therefore, you can capture context
+ now when creating singletons.
+ * qmlRegisterSingletonInstance() directly passes a single instance of the
+ type to be used in all QML engines. No QML engine assumes ownership of
+ such a singleton and any concurrent access has to be handled by the
+ object itself.
+
+ - qml Runtime tool:
+ * [QTBUG-53557] The QML Runtime tool now accepts command-line arguments
+ in double-dash GNU style as well as the old single-dash style.
+ * [QTBUG-53557] The QML Runtime tool now has default behavior matching
+ qmlscene when the root QML object is an Item: it will be wrapped in a
+ Window which will resize the Item when the Window is resized. But you
+ can alternatively use the --config resizeToItem option, resulting in
+ the same behavior as qmlscene --resizeToRoot: resizing the root Item
+ programmatically causes the wrapping Window to be resized. Behavior
+ can still be customized in other ways using the --config option with
+ an external QML configuration file.
+ * The QML Runtime tool --quiet option now disables categorized logging
+ in addition to qDebug, qInfo, qWarning and qFatal, except for some
+ early QPA-level categorized logging that occurs during application
+ construction. You can still override specific categories by setting
+ QT_LOGGING_CONF or QT_LOGGING_RULES.
+ * [QTBUG-78828] Fixed a crash at exit when the qmldebugger channel is
+ connected.
+
+ - qmlplugindump:
+ * [QTBUG-78745] If given a "--strict" argument, qmlplugindump will check
+ the URI as exact match; whereas by default it will ignore the given
+ major version, as before.
+ * [QTBUG-78744] qmlplugindump no longer ignores base classes of QML files
+ registered as components.
+
+ - Important Behavior Changes:
+ * QRegularExpression is now supported the same way QRegExp was in QML.
+ QJSValue::toVariant() creates a QRegularExpression variant rather than
+ a QRegExp one from a JavaScript regular expression now.
+ * The accidentally exported function qmlRegisterBaseTypes() was removed.
+ * QJSEngine::toScriptValue will now return correct JavaScript objects in
+ more cases, for example, for gadget types like QPointF.
+ * QJSEngine::toScriptValue now uses the same behavior as the rest of the
+ engine when building JavaScript values, which will cause the types of
+ some returned JavaScript objects to change. For instance, string lists
+ are now returned as sequence objects, not array objects, and QChar now
+ constructs a JavaScript string.
+ * [QTBUG-75176] Attached properties are internally not identified by
+ integer IDs anymore, but rather by the functions used to produce them.
+ Using the integer indexes is a bad idea because the same metatype can
+ be registered as several different QML types and the integer IDs refer
+ to the QML types. Therefore, qmlAttachedPropertiesObjectById() and the
+ overload of qmlAttachedPropertiesObject() taking an integer ID are
+ deprecated.
+ * We expect QMetaObject revisions and import minor versions to be equal.
+ That is, when registering a revision X of a metaobject as QML type for
+ a version Y.Z of your module, X should equal Z. This is not enforced,
+ yet, but future versions of Qt will build on this assumption.
+
+****************************************************************************
+* QtQuick *
+****************************************************************************
+
+ - Qt Quick is now able to render via Vulkan, Metal, and Direct 3D 11. The
+ new rendering path is currently a preview feature and has to be opted-in
+ to explicitly.
+
+ - Drag and Drop:
+ * [QTBUG-30305] When DropAreas intersect, the higher z-order item now
+ steals the drop.
+ * [QTBUG-72045] Fixed a crash when using an image provider url with Drag.
+
+ - DelegateModel:
+ * [QTBUG-63477] DelegateModel.delegate is now a notifying property,
+ and an Item View with model: DelegateModel { } is now refilled when
+ the delegate is changed.
+
+ - Event Handlers:
+ * Added WheelHandler, which handles mouse wheel rotation by modifying
+ arbitrary Item properties.
+ * [QTBUG-75661] Added DragHandler.snapMode which can be used to configure
+ conditions under which the dragged item is snapped to the cursor. The
+ default mode is SnapAuto. The old behavior can be obtained through the
+ SnapIfPressedOutsideTarget mode.
+
+ - Image:
+ * [QTBUG-77506] Image and BorderImage now have currentFrame and
+ frameCount properties which can be used to step through the frames of
+ multi-page image formats such as TIFF, WEBP and ICO (and PDF in the
+ future).
+ * [QTBUG-55027] Any URL interceptor is applied to the source binding.
+ * [QTBUG-76527] ImageProvider is kept alive while in use.
+
+ - FolderListModel:
+ * update the values of some properties when setting new values to them
+
+ - Layouts:
+ * [QTBUG-67204] GridLayout now warns rather than asserting when an
+ invalid row or column is specified.
+ * [QTBUG-79359] GridLayout now emits appropriate signals for
+ layoutDirection, columnSpacing, and rowSpacing changes.
+
+ - ListModel:
+ * [QTBUG-63569] We now emit a warning if an object with an undefined or
+ null member is added.
+ * [QTBUG-79083] JSON.stringify(model.get(i)) now works correctly when the
+ row contains a nested list model.
+
+ - Loader:
+ * [QTBUG-79435] Loader now clears all initial properties when changing source.
+
+ - MouseArea:
+ * [QTBUG-75993] mouseX and mouseY will now be synchronized after dragging
+ the target item.
+ * [QTBUG-77983] The containsMouse property will not become true when an
+ invisible mousearea become visible, if the enabled property is false or
+ its parent item is not enabled.
+
+ - MultiPointTouchArea:
+ * [QTBUG-77142] When a stationary touchpoint contains some "interesting"
+ property change (pressure or velocity, so far), it is delivered normally,
+ and MultiPointTouchArea will react to that.
+
+ - Particles:
+ * [QTBUG-54673] Fixed image particle flickering due to dynamic creation
+ of Emitter objects.
+
+ - Path and Shapes:
+ * Added Path.scale property to scale a path prior to rendering via
+ Shape or to scale the movement in PathView. The width and height
+ can be different, to achieve anisotropic scaling.
+ * Added PathPolyline, to render an array, list or vector of QPointF,
+ or a single QPolygonF.
+ * Added PathMultiLine, to render an array, list or vector of
+ polylines or QPolygonF.
+ * Exposed QQuickPath::pointAtPercent as invokable in QML.
+ * [QTBUG-77332] Fixed incorrect colors when shapes change scene.
+
+ - PathView:
+ * [QTBUG-77173] When the mouse is pressed while PathView is already moving,
+ PathView now grabs rather than allowing the delegate to handle it. The
+ position will then snap to the nearest delegate on release, as usual.
+ * [QTBUG-77173] If the user drags quickly, pauses, and then releases,
+ the calculated velocity is reduced according to a linear decay model
+ up to 50ms (and zero after that), to prevent excessive movement when
+ the user intended the pause to stop the movement.
+
+ - TableView:
+ * [QTBUG-79395] forceLayout() now rebuilds the table if the size of the
+ model has changed, to avoid a crash.
+
+ - Text:
+ * Markdown (GitHub dialect by default) is now a supported format, when
+ textFormat: Text.MarkdownText is declared. All features such as
+ hyperlinks, images, tables, lists, checklists, etc. are supported.
+
+ - TextEdit:
+ * Markdown (GitHub dialect by default) is now a supported format, when
+ textFormat: TextEdit.MarkdownText is declared. If it contains checkboxes,
+ the user can click on them to toggle the states.
+ * [QTBUG-14769][QTBUG-50482] The mouse cursor is now IBeamCursor by default,
+ or PointingHandCursor when the mouse is hovering over a checkbox or a
+ hyperlink. However this can be overridden in C++.
+ * [QTBUG-74745] Fixed overlapping text after line deletion.
+
+ - TextInput:
+ * [QTBUG-77814] Fixed text selection logic after insert() and remove().
+
+ - [QTBUG-79573] Fixed application deadlock when an item is reparented
+ to contentItem in a user-defined windowChanged handler, e.g. on exit.
+
+ - [QTBUG-78304] A ShortCutOverride event is now sent even when receiving a
+ non-spontaneous key press (e.g. from sendEvent()), so that Shortcut reacts.
+
+ - [QTBUG-76749] Fixed a crash when using an animation while destroying an item.
+
+****************************************************************************
+* Qt Labs Animation *
+****************************************************************************
+
+ - Added the BoundaryRule QML type, a PropertyValueInterceptor that
+ restricts the range of values a numeric property can have, applies
+ "resistance" when the value is overshooting, and provides the ability to
+ animate it back within range. This is especially useful in combination
+ with WheelHandler to limit its range of motion or adjustment.
+
+****************************************************************************
+* Qt Labs QML Models *
+****************************************************************************
+
+ - Added the TableModel QML type, a JavaScript-based model for the new
+ TableView.
diff --git a/examples/qml/doc/src/qml-extending.qdoc b/examples/qml/doc/src/qml-extending.qdoc
index 64d7235031..1ad3ae9a10 100644
--- a/examples/qml/doc/src/qml-extending.qdoc
+++ b/examples/qml/doc/src/qml-extending.qdoc
@@ -52,10 +52,6 @@ type, the C++ class can be named differently, or appear in a namespace.
The Person class implementation is quite basic. The property accessors simply
return members of the object instance.
-The \c main.cpp file also calls the \c qmlRegisterType() function to
-register the \c Person type with QML as a type in the People library version 1.0,
-and defines the mapping between the C++ and QML class names.
-
\section1 Running the Example
The main.cpp file in the example includes a simple shell application that
@@ -77,9 +73,11 @@ Shows how to use \l {QQmlEngine::}{qmlRegisterExtendedType()} to provide an
\l {Registering Extension Objects}{extension object} to a \l QLineEdit without modifying or
subclassing it.
-Firstly, the LineEditExtension class is registered with the QML system as an extension of QLineEdit:
+Firstly, the LineEditExtension class is registered with the QML system as an
+extension of QLineEdit. We declare a foreign type to do this as we cannot modify
+Qt's internal QLineEdit class.
-\snippet referenceexamples/extended/main.cpp 0
+\snippet referenceexamples/extended/lineedit.h 0
The QML engine then instantiates a \l QLineEdit:
@@ -182,9 +180,8 @@ directly - an explicit Boy or Girl should be instantiated instead.
While we want to disallow instantiating Person from within QML, it still needs
to be registered with the QML engine, so that it can be used as a property type
-and other types can be coerced to it.
-
-\snippet referenceexamples/coercion/main.cpp 0
+and other types can be coerced to it. This is what the QML_UNCREATABLE macro
+does.
\section2 Define Boy and Girl
diff --git a/examples/qml/qmlextensionplugins/plugin.cpp b/examples/qml/qmlextensionplugins/plugin.cpp
index a6d1d3ff63..99d8c5378c 100644
--- a/examples/qml/qmlextensionplugins/plugin.cpp
+++ b/examples/qml/qmlextensionplugins/plugin.cpp
@@ -49,117 +49,13 @@
****************************************************************************/
#include <QtQml/QQmlExtensionPlugin>
-#include <QtQml/qqml.h>
#include <qdebug.h>
-#include <qdatetime.h>
-#include <qbasictimer.h>
-#include <qcoreapplication.h>
-
-// Implements a "TimeModel" class with hour and minute properties
-// that change on-the-minute yet efficiently sleep the rest
-// of the time.
-
-class MinuteTimer : public QObject
-{
- Q_OBJECT
-public:
- MinuteTimer(QObject *parent) : QObject(parent)
- {
- }
-
- void start()
- {
- if (!timer.isActive()) {
- time = QTime::currentTime();
- timer.start(60000-time.second()*1000, this);
- }
- }
-
- void stop()
- {
- timer.stop();
- }
-
- int hour() const { return time.hour(); }
- int minute() const { return time.minute(); }
-
-signals:
- void timeChanged();
-
-protected:
- void timerEvent(QTimerEvent *) override
- {
- QTime now = QTime::currentTime();
- if (now.second() == 59 && now.minute() == time.minute() && now.hour() == time.hour()) {
- // just missed time tick over, force it, wait extra 0.5 seconds
- time = time.addSecs(60);
- timer.start(60500, this);
- } else {
- time = now;
- timer.start(60000-time.second()*1000, this);
- }
- emit timeChanged();
- }
-
-private:
- QTime time;
- QBasicTimer timer;
-};
-
-//![0]
-class TimeModel : public QObject
-{
- Q_OBJECT
- Q_PROPERTY(int hour READ hour NOTIFY timeChanged)
- Q_PROPERTY(int minute READ minute NOTIFY timeChanged)
- QML_NAMED_ELEMENT(Time)
-//![0]
-
-public:
- TimeModel(QObject *parent=nullptr) : QObject(parent)
- {
- if (++instances == 1) {
- if (!timer)
- timer = new MinuteTimer(QCoreApplication::instance());
- connect(timer, &MinuteTimer::timeChanged, this, &TimeModel::timeChanged);
- timer->start();
- }
- }
-
- ~TimeModel() override
- {
- if (--instances == 0) {
- timer->stop();
- }
- }
-
- int minute() const { return timer->minute(); }
- int hour() const { return timer->hour(); }
-
-signals:
- void timeChanged();
-
-private:
- QTime t;
- static MinuteTimer *timer;
- static int instances;
-};
-
-int TimeModel::instances=0;
-MinuteTimer *TimeModel::timer=nullptr;
//![plugin]
-class QExampleQmlPlugin : public QQmlExtensionPlugin
+class QExampleQmlPlugin : public QQmlEngineExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
-
-public:
- void registerTypes(const char *uri) override
- {
- Q_ASSERT(uri == QLatin1String("TimeExample"));
- qmlRegisterTypesAndRevisions<TimeModel>(uri, 1);
- }
+ Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid)
};
//![plugin]
diff --git a/examples/qml/qmlextensionplugins/plugins.qmlproject b/examples/qml/qmlextensionplugins/plugins.qmlproject
index 771ab45b66..c2de5f5703 100644
--- a/examples/qml/qmlextensionplugins/plugins.qmlproject
+++ b/examples/qml/qmlextensionplugins/plugins.qmlproject
@@ -13,4 +13,6 @@ Project {
ImageFiles {
directory: "."
}
+
+ importPaths: [ "imports" ]
}
diff --git a/examples/qml/qmlextensionplugins/qmlextensionplugins.pro b/examples/qml/qmlextensionplugins/qmlextensionplugins.pro
index 946626cce7..c074b8d671 100644
--- a/examples/qml/qmlextensionplugins/qmlextensionplugins.pro
+++ b/examples/qml/qmlextensionplugins/qmlextensionplugins.pro
@@ -1,25 +1,46 @@
TEMPLATE = lib
-CONFIG += plugin
+CONFIG += plugin qmltypes
QT += qml
-DESTDIR = imports/TimeExample
+QML_IMPORT_NAME = TimeExample
+QML_IMPORT_MAJOR_VERSION = 1
+
+DESTDIR = imports/$$QML_IMPORT_NAME
TARGET = qmlqtimeexampleplugin
+QMLTYPES_FILENAME = $$DESTDIR/plugins.qmltypes
+
+SOURCES += \
+ plugin.cpp \
+ timemodel.cpp
+
+HEADERS += \
+ timemodel.h
+
+PLUGINFILES = \
+ imports/$$QML_IMPORT_NAME/qmldir \
+ imports/$$QML_IMPORT_NAME/center.png \
+ imports/$$QML_IMPORT_NAME/clock.png \
+ imports/$$QML_IMPORT_NAME/Clock.qml \
+ imports/$$QML_IMPORT_NAME/hour.png \
+ imports/$$QML_IMPORT_NAME/minute.png
+
+target.path = $$[QT_INSTALL_EXAMPLES]/qml/qmlextensionplugins/imports/$$QML_IMPORT_NAME
+
+pluginfiles_copy.files = $$PLUGINFILES
+pluginfiles_copy.path = $$DESTDIR
+
+pluginfiles_install.files = $$PLUGINFILES $$OUT_PWD/$$DESTDIR/plugins.qmltypes
+pluginfiles_install.path = $$[QT_INSTALL_EXAMPLES]/qml/qmlextensionplugins/imports/$$QML_IMPORT_NAME
-SOURCES += plugin.cpp
+qml_copy.files = plugins.qml plugins.qmlproject
+qml_copy.path = $$OUT_PWD
-pluginfiles.files += \
- imports/TimeExample/qmldir \
- imports/TimeExample/center.png \
- imports/TimeExample/clock.png \
- imports/TimeExample/Clock.qml \
- imports/TimeExample/hour.png \
- imports/TimeExample/minute.png
+qml_install.files = plugins.qml plugins.qmlproject
+qml_install.path = $$[QT_INSTALL_EXAMPLES]/qml/qmlextensionplugins
-qml.files = plugins.qml
-qml.path += $$[QT_INSTALL_EXAMPLES]/qml/qmlextensionplugins
-target.path += $$[QT_INSTALL_EXAMPLES]/qml/qmlextensionplugins/imports/TimeExample
-pluginfiles.path += $$[QT_INSTALL_EXAMPLES]/qml/qmlextensionplugins/imports/TimeExample
+INSTALLS += target qml_install pluginfiles_install
+COPIES += qml_copy pluginfiles_copy
-INSTALLS += target qml pluginfiles
+OTHER_FILES += $$PLUGINFILES plugins.qml
CONFIG += install_ok # Do not cargo-cult this!
diff --git a/tests/manual/nodetypes/Text.qml b/examples/qml/qmlextensionplugins/timemodel.cpp
index 58befe8c49..af5ccb2988 100644
--- a/tests/manual/nodetypes/Text.qml
+++ b/examples/qml/qmlextensionplugins/timemodel.cpp
@@ -3,7 +3,7 @@
** Copyright (C) 2017 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
-** This file is part of the demonstration applications of the Qt Toolkit.
+** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
@@ -48,34 +48,51 @@
**
****************************************************************************/
-import QtQuick 2.0
+#include "timemodel.h"
-Item {
- Text {
- id: text1
- anchors.top: parent.top
- text: "árvíztűrő tükörfúrógép\nÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP"
+int TimeModel::instances=0;
+MinuteTimer *TimeModel::timer=nullptr;
+
+void MinuteTimer::start()
+{
+ if (!timer.isActive()) {
+ time = QTime::currentTime();
+ timer.start(60000-time.second()*1000, this);
}
- Text {
- anchors.bottom: parent.bottom
- text: "the quick brown fox jumps over the lazy dog\nTHE QUICK BROWN FOX JUMPS OVER THE LAZY DOG"
- color: "red"
+}
+
+void MinuteTimer::stop()
+{
+ timer.stop();
+}
+
+void MinuteTimer::timerEvent(QTimerEvent *)
+{
+ QTime now = QTime::currentTime();
+ if (now.second() == 59 && now.minute() == time.minute() && now.hour() == time.hour()) {
+ // just missed time tick over, force it, wait extra 0.5 seconds
+ time = time.addSecs(60);
+ timer.start(60500, this);
+ } else {
+ time = now;
+ timer.start(60000-time.second()*1000, this);
}
- Text {
- anchors.centerIn: parent
- text: "rotate rotate rotate"
- font.bold: true
- font.pointSize: 20
- color: "green"
- NumberAnimation on rotation { from: 0; to: 360; duration: 2000; loops: Animation.Infinite; }
+ emit timeChanged();
+}
+
+TimeModel::TimeModel(QObject *parent) : QObject(parent)
+{
+ if (++instances == 1) {
+ if (!timer)
+ timer = new MinuteTimer(QCoreApplication::instance());
+ connect(timer, &MinuteTimer::timeChanged, this, &TimeModel::timeChanged);
+ timer->start();
}
+}
- Row {
- anchors.top: text1.bottom
- anchors.margins: 10
- Text { font.pointSize: 24; text: "Normal" }
- Text { font.pointSize: 24; text: "Raised"; style: Text.Raised; styleColor: "#AAAAAA" }
- Text { font.pointSize: 24; text: "Outline"; style: Text.Outline; styleColor: "red" }
- Text { font.pointSize: 24; text: "Sunken"; style: Text.Sunken; styleColor: "#AAAAAA" }
+TimeModel::~TimeModel()
+{
+ if (--instances == 0) {
+ timer->stop();
}
}
diff --git a/tests/manual/nodetypes/main.qml b/examples/qml/qmlextensionplugins/timemodel.h
index 9f1a5c5e9c..bb107aeb71 100644
--- a/tests/manual/nodetypes/main.qml
+++ b/examples/qml/qmlextensionplugins/timemodel.h
@@ -3,7 +3,7 @@
** Copyright (C) 2017 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
-** This file is part of the demonstration applications of the Qt Toolkit.
+** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
@@ -48,46 +48,64 @@
**
****************************************************************************/
-import QtQuick 2.0
+#ifndef TIMEMODEL_H
+#define TIMEMODEL_H
-Item {
- focus: true
+#include <QtQml/qqml.h>
+#include <QtCore/qdatetime.h>
+#include <QtCore/qbasictimer.h>
+#include <QtCore/qcoreapplication.h>
- Loader {
- anchors.fill: parent
- id: loader
- }
+// Implements a "TimeModel" class with hour and minute properties
+// that change on-the-minute yet efficiently sleep the rest
+// of the time.
- Keys.onPressed: {
- if (event.key === Qt.Key_S)
- loader.source = "";
+class MinuteTimer : public QObject
+{
+ Q_OBJECT
+public:
+ MinuteTimer(QObject *parent) : QObject(parent) {}
- if (event.key === Qt.Key_R)
- loader.source = "qrc:/Rects.qml";
- if (event.key === Qt.Key_4)
- loader.source = "qrc:/LotsOfRects.qml";
+ void start();
+ void stop();
- if (event.key === Qt.Key_I)
- loader.source = "qrc:/Images.qml";
- if (event.key === Qt.Key_5)
- loader.source = "qrc:/LotsOfImages.qml";
+ int hour() const { return time.hour(); }
+ int minute() const { return time.minute(); }
- if (event.key === Qt.Key_T)
- loader.source = "qrc:/Text.qml";
+signals:
+ void timeChanged();
- if (event.key === Qt.Key_A)
- loader.source = "qrc:/Animators.qml";
+protected:
+ void timerEvent(QTimerEvent *) override;
- if (event.key === Qt.Key_L)
- loader.source = "qrc:/Layers.qml";
+private:
+ QTime time;
+ QBasicTimer timer;
+};
- if (event.key === Qt.Key_E)
- loader.source = "qrc:/Effects.qml";
+//![0]
+class TimeModel : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(int hour READ hour NOTIFY timeChanged)
+ Q_PROPERTY(int minute READ minute NOTIFY timeChanged)
+ QML_NAMED_ELEMENT(Time)
+//![0]
- if (event.key === Qt.Key_P)
- loader.source = "qrc:/Painter.qml";
+public:
+ TimeModel(QObject *parent=nullptr);
+ ~TimeModel() override;
- if (event.key === Qt.Key_G)
- helper.testGrab()
- }
-}
+ int minute() const { return timer->minute(); }
+ int hour() const { return timer->hour(); }
+
+signals:
+ void timeChanged();
+
+private:
+ QTime t;
+ static MinuteTimer *timer;
+ static int instances;
+};
+
+#endif // TIMEMODEL_H
diff --git a/examples/qml/referenceexamples/adding/adding.pro b/examples/qml/referenceexamples/adding/adding.pro
index ae135c7925..a4a677c3c4 100644
--- a/examples/qml/referenceexamples/adding/adding.pro
+++ b/examples/qml/referenceexamples/adding/adding.pro
@@ -1,4 +1,8 @@
QT = core qml
+CONFIG += qmltypes
+
+QML_IMPORT_NAME = People
+QML_IMPORT_MAJOR_VERSION = 1
SOURCES += main.cpp \
person.cpp
diff --git a/examples/qml/referenceexamples/adding/main.cpp b/examples/qml/referenceexamples/adding/main.cpp
index ffd0e90c42..6c3920f04b 100644
--- a/examples/qml/referenceexamples/adding/main.cpp
+++ b/examples/qml/referenceexamples/adding/main.cpp
@@ -56,9 +56,6 @@
int main(int argc, char ** argv)
{
QCoreApplication app(argc, argv);
-//![0]
- qmlRegisterTypesAndRevisions<Person>("People", 1);
-//![0]
QQmlEngine engine;
QQmlComponent component(&engine, QUrl("qrc:example.qml"));
diff --git a/examples/qml/referenceexamples/attached/attached.pro b/examples/qml/referenceexamples/attached/attached.pro
index 16b585bc45..8c66b189f7 100644
--- a/examples/qml/referenceexamples/attached/attached.pro
+++ b/examples/qml/referenceexamples/attached/attached.pro
@@ -1,4 +1,8 @@
QT += qml
+CONFIG += qmltypes
+
+QML_IMPORT_NAME = People
+QML_IMPORT_MAJOR_VERSION = 1
SOURCES += main.cpp \
person.cpp \
diff --git a/examples/qml/referenceexamples/attached/main.cpp b/examples/qml/referenceexamples/attached/main.cpp
index ab1c6b9637..2fceb98ac9 100644
--- a/examples/qml/referenceexamples/attached/main.cpp
+++ b/examples/qml/referenceexamples/attached/main.cpp
@@ -58,10 +58,6 @@ int main(int argc, char ** argv)
{
QCoreApplication app(argc, argv);
- qmlRegisterTypesAndRevisions<BirthdayPartyAttached,
- BirthdayParty, ShoeDescription,
- Person, Boy, Girl>("People", 1);
-
QQmlEngine engine;
QQmlComponent component(&engine, QUrl("qrc:example.qml"));
auto *party = qobject_cast<BirthdayParty *>(component.create());
diff --git a/examples/qml/referenceexamples/binding/binding.pro b/examples/qml/referenceexamples/binding/binding.pro
index 636d0a10f1..dce780d0a2 100644
--- a/examples/qml/referenceexamples/binding/binding.pro
+++ b/examples/qml/referenceexamples/binding/binding.pro
@@ -1,5 +1,9 @@
QT += qml
+CONFIG += qmltypes
+QML_IMPORT_NAME = People
+QML_IMPORT_MAJOR_VERSION = 1
+
SOURCES += main.cpp \
person.cpp \
birthdayparty.cpp \
diff --git a/examples/qml/referenceexamples/binding/happybirthdaysong.h b/examples/qml/referenceexamples/binding/happybirthdaysong.h
index dcfebc06ba..c84e9d9e5e 100644
--- a/examples/qml/referenceexamples/binding/happybirthdaysong.h
+++ b/examples/qml/referenceexamples/binding/happybirthdaysong.h
@@ -52,14 +52,17 @@
#include <QQmlPropertyValueSource>
#include <QQmlProperty>
+#include <qqml.h>
#include <QStringList>
+#include <qqml.h>
class HappyBirthdaySong : public QObject, public QQmlPropertyValueSource
{
Q_OBJECT
Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
Q_INTERFACES(QQmlPropertyValueSource)
+ QML_ELEMENT
public:
HappyBirthdaySong(QObject *parent = nullptr);
diff --git a/examples/qml/referenceexamples/binding/main.cpp b/examples/qml/referenceexamples/binding/main.cpp
index 8c6e3222d8..2e9995fcd8 100644
--- a/examples/qml/referenceexamples/binding/main.cpp
+++ b/examples/qml/referenceexamples/binding/main.cpp
@@ -58,8 +58,6 @@
int main(int argc, char ** argv)
{
QCoreApplication app(argc, argv);
- qmlRegisterTypesAndRevisions<BirthdayPartyAttached, BirthdayParty, HappyBirthdaySong,
- ShoeDescription, Person, Boy, Girl>("People", 1);
QQmlEngine engine;
QQmlComponent component(&engine, QUrl("qrc:example.qml"));
diff --git a/examples/qml/referenceexamples/coercion/birthdayparty.h b/examples/qml/referenceexamples/coercion/birthdayparty.h
index 554e7ab0da..ba8b2445f1 100644
--- a/examples/qml/referenceexamples/coercion/birthdayparty.h
+++ b/examples/qml/referenceexamples/coercion/birthdayparty.h
@@ -60,6 +60,7 @@ class BirthdayParty : public QObject
// ![0]
Q_PROPERTY(Person *host READ host WRITE setHost)
Q_PROPERTY(QQmlListProperty<Person> guests READ guests)
+ QML_ELEMENT
// ![0]
public:
BirthdayParty(QObject *parent = nullptr);
diff --git a/examples/qml/referenceexamples/coercion/coercion.pro b/examples/qml/referenceexamples/coercion/coercion.pro
index 373a15fc28..225fd13e08 100644
--- a/examples/qml/referenceexamples/coercion/coercion.pro
+++ b/examples/qml/referenceexamples/coercion/coercion.pro
@@ -1,5 +1,9 @@
QT = core qml
+CONFIG += qmltypes
+QML_IMPORT_NAME = People
+QML_IMPORT_MAJOR_VERSION = 1
+
SOURCES += main.cpp \
person.cpp \
birthdayparty.cpp
diff --git a/examples/qml/referenceexamples/coercion/main.cpp b/examples/qml/referenceexamples/coercion/main.cpp
index 2c2bd92e8d..6b47d0d4c4 100644
--- a/examples/qml/referenceexamples/coercion/main.cpp
+++ b/examples/qml/referenceexamples/coercion/main.cpp
@@ -58,10 +58,6 @@ int main(int argc, char ** argv)
{
QCoreApplication app(argc, argv);
- //![0]
- qmlRegisterTypesAndRevisions<BirthdayParty, Person, Boy, Girl>("People", 1);
- //![0]
-
QQmlEngine engine;
QQmlComponent component(&engine, QUrl("qrc:example.qml"));
auto *party = qobject_cast<BirthdayParty *>(component.create());
diff --git a/examples/qml/referenceexamples/coercion/person.h b/examples/qml/referenceexamples/coercion/person.h
index 6865e0093a..7e2828da04 100644
--- a/examples/qml/referenceexamples/coercion/person.h
+++ b/examples/qml/referenceexamples/coercion/person.h
@@ -59,7 +59,8 @@ class Person : public QObject
Q_PROPERTY(QString name READ name WRITE setName)
Q_PROPERTY(int shoeSize READ shoeSize WRITE setShoeSize)
//![0]
- QML_ANONYMOUS
+ QML_ELEMENT
+ QML_UNCREATABLE("Person is an abstract base class.")
//![0]
public:
Person(QObject *parent = nullptr);
diff --git a/examples/qml/referenceexamples/default/birthdayparty.h b/examples/qml/referenceexamples/default/birthdayparty.h
index ea63a6a16d..5eb6c88763 100644
--- a/examples/qml/referenceexamples/default/birthdayparty.h
+++ b/examples/qml/referenceexamples/default/birthdayparty.h
@@ -61,6 +61,7 @@ class BirthdayParty : public QObject
Q_PROPERTY(Person *host READ host WRITE setHost)
Q_PROPERTY(QQmlListProperty<Person> guests READ guests)
Q_CLASSINFO("DefaultProperty", "guests")
+ QML_ELEMENT
public:
BirthdayParty(QObject *parent = nullptr);
diff --git a/examples/qml/referenceexamples/default/default.pro b/examples/qml/referenceexamples/default/default.pro
index c119ef0d2e..f52f749ddd 100644
--- a/examples/qml/referenceexamples/default/default.pro
+++ b/examples/qml/referenceexamples/default/default.pro
@@ -1,5 +1,9 @@
QT = core qml
+CONFIG += qmltypes
+QML_IMPORT_NAME = People
+QML_IMPORT_MAJOR_VERSION = 1
+
SOURCES += main.cpp \
person.cpp \
birthdayparty.cpp
diff --git a/examples/qml/referenceexamples/default/main.cpp b/examples/qml/referenceexamples/default/main.cpp
index bbe4a239e2..6b47d0d4c4 100644
--- a/examples/qml/referenceexamples/default/main.cpp
+++ b/examples/qml/referenceexamples/default/main.cpp
@@ -58,8 +58,6 @@ int main(int argc, char ** argv)
{
QCoreApplication app(argc, argv);
- qmlRegisterTypesAndRevisions<BirthdayParty, Person, Boy, Girl>("People", 1);
-
QQmlEngine engine;
QQmlComponent component(&engine, QUrl("qrc:example.qml"));
auto *party = qobject_cast<BirthdayParty *>(component.create());
diff --git a/examples/qml/referenceexamples/extended/extended.pro b/examples/qml/referenceexamples/extended/extended.pro
index 22d8ded708..094e5201ca 100644
--- a/examples/qml/referenceexamples/extended/extended.pro
+++ b/examples/qml/referenceexamples/extended/extended.pro
@@ -1,5 +1,9 @@
QT += qml widgets
+CONFIG += qmltypes
+QML_IMPORT_NAME = People
+QML_IMPORT_MAJOR_VERSION = 1
+
SOURCES += main.cpp \
lineedit.cpp
HEADERS += lineedit.h
diff --git a/examples/qml/referenceexamples/extended/lineedit.h b/examples/qml/referenceexamples/extended/lineedit.h
index e8f7d90853..5c315ad5ac 100644
--- a/examples/qml/referenceexamples/extended/lineedit.h
+++ b/examples/qml/referenceexamples/extended/lineedit.h
@@ -51,6 +51,7 @@
#define LINEEDIT_H
#include <QLineEdit>
+#include <qqml.h>
class LineEditExtension : public QObject
{
@@ -80,4 +81,14 @@ private:
QLineEdit *m_lineedit;
};
+// ![0]
+struct QLineEditForeign
+{
+ Q_GADGET
+ QML_FOREIGN(QLineEdit)
+ QML_ELEMENT
+ QML_EXTENDED(LineEditExtension)
+};
+// ![0]
+
#endif // LINEEDIT_H
diff --git a/examples/qml/referenceexamples/extended/main.cpp b/examples/qml/referenceexamples/extended/main.cpp
index 5f8582d08f..26048d9189 100644
--- a/examples/qml/referenceexamples/extended/main.cpp
+++ b/examples/qml/referenceexamples/extended/main.cpp
@@ -58,10 +58,6 @@ int main(int argc, char ** argv)
{
QApplication app(argc, argv);
-// ![0]
- qmlRegisterExtendedType<QLineEdit, LineEditExtension>("People", 1,0, "QLineEdit");
-// ![0]
-
// ![1]
QQmlEngine engine;
QQmlComponent component(&engine, QUrl("qrc:example.qml"));
diff --git a/examples/qml/referenceexamples/grouped/birthdayparty.h b/examples/qml/referenceexamples/grouped/birthdayparty.h
index edaa11fa88..f6834dad89 100644
--- a/examples/qml/referenceexamples/grouped/birthdayparty.h
+++ b/examples/qml/referenceexamples/grouped/birthdayparty.h
@@ -60,6 +60,7 @@ class BirthdayParty : public QObject
Q_PROPERTY(Person *host READ host WRITE setHost)
Q_PROPERTY(QQmlListProperty<Person> guests READ guests)
Q_CLASSINFO("DefaultProperty", "guests")
+ QML_ELEMENT
public:
BirthdayParty(QObject *parent = nullptr);
diff --git a/examples/qml/referenceexamples/grouped/grouped.pro b/examples/qml/referenceexamples/grouped/grouped.pro
index ef66ea3e1d..1513ac552d 100644
--- a/examples/qml/referenceexamples/grouped/grouped.pro
+++ b/examples/qml/referenceexamples/grouped/grouped.pro
@@ -1,5 +1,9 @@
QT += qml
+CONFIG += qmltypes
+QML_IMPORT_NAME = People
+QML_IMPORT_MAJOR_VERSION = 1
+
SOURCES += main.cpp \
person.cpp \
birthdayparty.cpp
diff --git a/examples/qml/referenceexamples/grouped/main.cpp b/examples/qml/referenceexamples/grouped/main.cpp
index e233aab5b1..63dbe988a4 100644
--- a/examples/qml/referenceexamples/grouped/main.cpp
+++ b/examples/qml/referenceexamples/grouped/main.cpp
@@ -58,8 +58,6 @@ int main(int argc, char ** argv)
{
QCoreApplication app(argc, argv);
- qmlRegisterTypesAndRevisions<BirthdayParty, ShoeDescription, Person, Boy, Girl>("People", 1);
-
QQmlEngine engine;
QQmlComponent component(&engine, QUrl("qrc:example.qml"));
auto *party = qobject_cast<BirthdayParty *>(component.create());
diff --git a/examples/qml/referenceexamples/methods/birthdayparty.h b/examples/qml/referenceexamples/methods/birthdayparty.h
index 0eb968a841..5c2f3c9def 100644
--- a/examples/qml/referenceexamples/methods/birthdayparty.h
+++ b/examples/qml/referenceexamples/methods/birthdayparty.h
@@ -59,6 +59,7 @@ class BirthdayParty : public QObject
Q_OBJECT
Q_PROPERTY(Person *host READ host WRITE setHost)
Q_PROPERTY(QQmlListProperty<Person> guests READ guests)
+ QML_ELEMENT
public:
BirthdayParty(QObject *parent = nullptr);
diff --git a/examples/qml/referenceexamples/methods/main.cpp b/examples/qml/referenceexamples/methods/main.cpp
index 4dd616f8cd..e30e1d9fb1 100644
--- a/examples/qml/referenceexamples/methods/main.cpp
+++ b/examples/qml/referenceexamples/methods/main.cpp
@@ -58,8 +58,6 @@ int main(int argc, char ** argv)
{
QCoreApplication app(argc, argv);
- qmlRegisterTypesAndRevisions<BirthdayParty, Person>("People", 1);
-
QQmlEngine engine;
QQmlComponent component(&engine, QUrl("qrc:example.qml"));
auto *party = qobject_cast<BirthdayParty *>(component.create());
diff --git a/examples/qml/referenceexamples/methods/methods.pro b/examples/qml/referenceexamples/methods/methods.pro
index 008ba19d96..2a5f3cff41 100644
--- a/examples/qml/referenceexamples/methods/methods.pro
+++ b/examples/qml/referenceexamples/methods/methods.pro
@@ -1,5 +1,9 @@
QT = core qml
+CONFIG += qmltypes
+QML_IMPORT_NAME = People
+QML_IMPORT_MAJOR_VERSION = 1
+
SOURCES += main.cpp \
person.cpp \
birthdayparty.cpp
diff --git a/examples/qml/referenceexamples/properties/birthdayparty.h b/examples/qml/referenceexamples/properties/birthdayparty.h
index 8d62c8dcd5..fb8b63a79d 100644
--- a/examples/qml/referenceexamples/properties/birthdayparty.h
+++ b/examples/qml/referenceexamples/properties/birthdayparty.h
@@ -67,6 +67,7 @@ class BirthdayParty : public QObject
Q_PROPERTY(QQmlListProperty<Person> guests READ guests)
// ![2]
// ![3]
+ QML_ELEMENT
public:
BirthdayParty(QObject *parent = nullptr);
diff --git a/examples/qml/referenceexamples/properties/main.cpp b/examples/qml/referenceexamples/properties/main.cpp
index 216869bf6c..e30e1d9fb1 100644
--- a/examples/qml/referenceexamples/properties/main.cpp
+++ b/examples/qml/referenceexamples/properties/main.cpp
@@ -58,10 +58,6 @@ int main(int argc, char ** argv)
{
QCoreApplication app(argc, argv);
-//![register list]
- qmlRegisterTypesAndRevisions<BirthdayParty, Person>("People", 1);
-//![register list]
-
QQmlEngine engine;
QQmlComponent component(&engine, QUrl("qrc:example.qml"));
auto *party = qobject_cast<BirthdayParty *>(component.create());
diff --git a/examples/qml/referenceexamples/properties/properties.pro b/examples/qml/referenceexamples/properties/properties.pro
index 101c878abd..6697afa2c5 100644
--- a/examples/qml/referenceexamples/properties/properties.pro
+++ b/examples/qml/referenceexamples/properties/properties.pro
@@ -1,5 +1,9 @@
QT = core qml
+CONFIG += qmltypes
+QML_IMPORT_NAME = People
+QML_IMPORT_MAJOR_VERSION = 1
+
SOURCES += main.cpp \
person.cpp \
birthdayparty.cpp
diff --git a/examples/qml/referenceexamples/signal/main.cpp b/examples/qml/referenceexamples/signal/main.cpp
index f431e2bdc8..7ef3595a8c 100644
--- a/examples/qml/referenceexamples/signal/main.cpp
+++ b/examples/qml/referenceexamples/signal/main.cpp
@@ -58,9 +58,6 @@ int main(int argc, char ** argv)
{
QCoreApplication app(argc, argv);
- qmlRegisterTypesAndRevisions<BirthdayPartyAttached, BirthdayParty, ShoeDescription,
- Person, Boy, Girl>("People", 1);
-
QQmlEngine engine;
QQmlComponent component(&engine, QUrl("qrc:example.qml"));
auto *party = qobject_cast<BirthdayParty *>(component.create());
diff --git a/examples/qml/referenceexamples/signal/signal.pro b/examples/qml/referenceexamples/signal/signal.pro
index 2dbc8e624b..3c31234b3c 100644
--- a/examples/qml/referenceexamples/signal/signal.pro
+++ b/examples/qml/referenceexamples/signal/signal.pro
@@ -1,5 +1,9 @@
QT += qml
+CONFIG += qmltypes
+QML_IMPORT_NAME = People
+QML_IMPORT_MAJOR_VERSION = 1
+
SOURCES += main.cpp \
person.cpp \
birthdayparty.cpp
diff --git a/examples/qml/referenceexamples/valuesource/happybirthdaysong.h b/examples/qml/referenceexamples/valuesource/happybirthdaysong.h
index e2205a4ebb..2600208968 100644
--- a/examples/qml/referenceexamples/valuesource/happybirthdaysong.h
+++ b/examples/qml/referenceexamples/valuesource/happybirthdaysong.h
@@ -64,6 +64,7 @@ class HappyBirthdaySong : public QObject, public QQmlPropertyValueSource
// ![0]
Q_PROPERTY(QString name READ name WRITE setName)
// ![1]
+ QML_ELEMENT
public:
HappyBirthdaySong(QObject *parent = nullptr);
diff --git a/examples/qml/referenceexamples/valuesource/main.cpp b/examples/qml/referenceexamples/valuesource/main.cpp
index 72e75fdea1..2e9995fcd8 100644
--- a/examples/qml/referenceexamples/valuesource/main.cpp
+++ b/examples/qml/referenceexamples/valuesource/main.cpp
@@ -59,9 +59,6 @@ int main(int argc, char ** argv)
{
QCoreApplication app(argc, argv);
- qmlRegisterTypesAndRevisions<BirthdayPartyAttached, BirthdayParty, HappyBirthdaySong,
- ShoeDescription, Person, Boy, Girl>("People", 1);
-
QQmlEngine engine;
QQmlComponent component(&engine, QUrl("qrc:example.qml"));
auto *party = qobject_cast<BirthdayParty *>(component.create());
diff --git a/examples/qml/referenceexamples/valuesource/valuesource.pro b/examples/qml/referenceexamples/valuesource/valuesource.pro
index 01cfeeb6d8..6d29cf1b70 100644
--- a/examples/qml/referenceexamples/valuesource/valuesource.pro
+++ b/examples/qml/referenceexamples/valuesource/valuesource.pro
@@ -1,5 +1,9 @@
QT += qml
+CONFIG += qmltypes
+QML_IMPORT_NAME = People
+QML_IMPORT_MAJOR_VERSION = 1
+
SOURCES += main.cpp \
person.cpp \
birthdayparty.cpp \
diff --git a/examples/qml/tutorials/extending-qml/chapter1-basics/chapter1-basics.pro b/examples/qml/tutorials/extending-qml/chapter1-basics/chapter1-basics.pro
index 9911e02484..294a9ad0e8 100644
--- a/examples/qml/tutorials/extending-qml/chapter1-basics/chapter1-basics.pro
+++ b/examples/qml/tutorials/extending-qml/chapter1-basics/chapter1-basics.pro
@@ -1,5 +1,9 @@
QT += qml quick
+CONFIG += qmltypes
+QML_IMPORT_NAME = Charts
+QML_IMPORT_MAJOR_VERSION = 1
+
HEADERS += piechart.h
SOURCES += piechart.cpp \
main.cpp
diff --git a/examples/qml/tutorials/extending-qml/chapter1-basics/main.cpp b/examples/qml/tutorials/extending-qml/chapter1-basics/main.cpp
index af50cc14f2..10df9c2566 100644
--- a/examples/qml/tutorials/extending-qml/chapter1-basics/main.cpp
+++ b/examples/qml/tutorials/extending-qml/chapter1-basics/main.cpp
@@ -56,8 +56,6 @@ int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
- qmlRegisterTypesAndRevisions<PieChart>("Charts", 1);
-
QQuickView view;
view.setResizeMode(QQuickView::SizeRootObjectToView);
view.setSource(QUrl("qrc:///app.qml"));
diff --git a/examples/qml/tutorials/extending-qml/chapter2-methods/chapter2-methods.pro b/examples/qml/tutorials/extending-qml/chapter2-methods/chapter2-methods.pro
index 7fd850ce36..264f028f5c 100644
--- a/examples/qml/tutorials/extending-qml/chapter2-methods/chapter2-methods.pro
+++ b/examples/qml/tutorials/extending-qml/chapter2-methods/chapter2-methods.pro
@@ -1,5 +1,9 @@
QT += qml quick
+CONFIG += qmltypes
+QML_IMPORT_NAME = Charts
+QML_IMPORT_MAJOR_VERSION = 1
+
HEADERS += piechart.h
SOURCES += piechart.cpp \
main.cpp
diff --git a/examples/qml/tutorials/extending-qml/chapter2-methods/main.cpp b/examples/qml/tutorials/extending-qml/chapter2-methods/main.cpp
index af50cc14f2..10df9c2566 100644
--- a/examples/qml/tutorials/extending-qml/chapter2-methods/main.cpp
+++ b/examples/qml/tutorials/extending-qml/chapter2-methods/main.cpp
@@ -56,8 +56,6 @@ int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
- qmlRegisterTypesAndRevisions<PieChart>("Charts", 1);
-
QQuickView view;
view.setResizeMode(QQuickView::SizeRootObjectToView);
view.setSource(QUrl("qrc:///app.qml"));
diff --git a/examples/qml/tutorials/extending-qml/chapter3-bindings/chapter3-bindings.pro b/examples/qml/tutorials/extending-qml/chapter3-bindings/chapter3-bindings.pro
index 1ae83f71eb..152f17ce8c 100644
--- a/examples/qml/tutorials/extending-qml/chapter3-bindings/chapter3-bindings.pro
+++ b/examples/qml/tutorials/extending-qml/chapter3-bindings/chapter3-bindings.pro
@@ -1,5 +1,9 @@
QT += qml quick
+CONFIG += qmltypes
+QML_IMPORT_NAME = Charts
+QML_IMPORT_MAJOR_VERSION = 1
+
HEADERS += piechart.h
SOURCES += piechart.cpp \
main.cpp
diff --git a/examples/qml/tutorials/extending-qml/chapter3-bindings/main.cpp b/examples/qml/tutorials/extending-qml/chapter3-bindings/main.cpp
index af50cc14f2..10df9c2566 100644
--- a/examples/qml/tutorials/extending-qml/chapter3-bindings/main.cpp
+++ b/examples/qml/tutorials/extending-qml/chapter3-bindings/main.cpp
@@ -56,8 +56,6 @@ int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
- qmlRegisterTypesAndRevisions<PieChart>("Charts", 1);
-
QQuickView view;
view.setResizeMode(QQuickView::SizeRootObjectToView);
view.setSource(QUrl("qrc:///app.qml"));
diff --git a/examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pro b/examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pro
index 12dfbd6280..e277f74676 100644
--- a/examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pro
+++ b/examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pro
@@ -1,5 +1,9 @@
QT += qml quick
+CONFIG += qmltypes
+QML_IMPORT_NAME = Charts
+QML_IMPORT_MAJOR_VERSION = 1
+
HEADERS += piechart.h \
pieslice.h
SOURCES += piechart.cpp \
diff --git a/examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/main.cpp b/examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/main.cpp
index 7c5d1a6885..76e075a72c 100644
--- a/examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/main.cpp
+++ b/examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/main.cpp
@@ -59,10 +59,6 @@ int main(int argc, char *argv[])
//![0]
QGuiApplication app(argc, argv);
-//![1]
- qmlRegisterTypesAndRevisions<PieChart, PieSlice>("Charts", 1);
-//![1]
-
QQuickView view;
view.setResizeMode(QQuickView::SizeRootObjectToView);
view.setSource(QUrl("qrc:///app.qml"));
diff --git a/examples/qml/tutorials/extending-qml/chapter5-listproperties/chapter5-listproperties.pro b/examples/qml/tutorials/extending-qml/chapter5-listproperties/chapter5-listproperties.pro
index 67d1cd35c3..edbd3c237d 100644
--- a/examples/qml/tutorials/extending-qml/chapter5-listproperties/chapter5-listproperties.pro
+++ b/examples/qml/tutorials/extending-qml/chapter5-listproperties/chapter5-listproperties.pro
@@ -1,5 +1,9 @@
QT += qml quick
+CONFIG += qmltypes
+QML_IMPORT_NAME = Charts
+QML_IMPORT_MAJOR_VERSION = 1
+
HEADERS += piechart.h \
pieslice.h
SOURCES += piechart.cpp \
diff --git a/examples/qml/tutorials/extending-qml/chapter5-listproperties/main.cpp b/examples/qml/tutorials/extending-qml/chapter5-listproperties/main.cpp
index 70ef103e4d..7262969b62 100644
--- a/examples/qml/tutorials/extending-qml/chapter5-listproperties/main.cpp
+++ b/examples/qml/tutorials/extending-qml/chapter5-listproperties/main.cpp
@@ -57,8 +57,6 @@ int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
- qmlRegisterTypesAndRevisions<PieChart, PieSlice>("Charts", 1);
-
QQuickView view;
view.setResizeMode(QQuickView::SizeRootObjectToView);
view.setSource(QUrl("qrc:///app.qml"));
diff --git a/examples/qml/tutorials/extending-qml/chapter6-plugins/import/chartsplugin.h b/examples/qml/tutorials/extending-qml/chapter6-plugins/import/chartsplugin.h
index 69a858d48b..0b1cfcc8f1 100644
--- a/examples/qml/tutorials/extending-qml/chapter6-plugins/import/chartsplugin.h
+++ b/examples/qml/tutorials/extending-qml/chapter6-plugins/import/chartsplugin.h
@@ -53,13 +53,10 @@
//![0]
#include <QQmlExtensionPlugin>
-class ChartsPlugin : public QQmlExtensionPlugin
+class ChartsPlugin : public QQmlEngineExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
-
-public:
- void registerTypes(const char *uri);
+ Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid)
};
//![0]
diff --git a/examples/qml/tutorials/extending-qml/chapter6-plugins/import/import.pro b/examples/qml/tutorials/extending-qml/chapter6-plugins/import/import.pro
index 5cf4621420..c37cd1fdee 100644
--- a/examples/qml/tutorials/extending-qml/chapter6-plugins/import/import.pro
+++ b/examples/qml/tutorials/extending-qml/chapter6-plugins/import/import.pro
@@ -1,8 +1,11 @@
TEMPLATE = lib
-CONFIG += plugin
+CONFIG += plugin qmltypes
QT += qml quick
-DESTDIR = ../Charts
+QML_IMPORT_NAME = Charts
+QML_IMPORT_MAJOR_VERSION = 1
+
+DESTDIR = ../$$QML_IMPORT_NAME
TARGET = $$qtLibraryTarget(chartsplugin)
HEADERS += piechart.h \
@@ -10,10 +13,13 @@ HEADERS += piechart.h \
chartsplugin.h
SOURCES += piechart.cpp \
- pieslice.cpp \
- chartsplugin.cpp
+ pieslice.cpp
+
+DESTPATH=$$[QT_INSTALL_EXAMPLES]/qml/tutorials/extending-qml/chapter6-plugins/$$QML_IMPORT_NAME
-DESTPATH=$$[QT_INSTALL_EXAMPLES]/qml/tutorials/extending-qml/chapter6-plugins/Charts
+copy_qmltypes.files = $$OUT_PWD/plugins.qmltypes
+copy_qmltypes.path = $$DESTDIR
+COPIES += copy_qmltypes
target.path=$$DESTPATH
qmldir.files=$$PWD/qmldir
diff --git a/examples/quick/animation/animation.qrc b/examples/quick/animation/animation.qrc
index d4e78c82f0..2d88c03007 100644
--- a/examples/quick/animation/animation.qrc
+++ b/examples/quick/animation/animation.qrc
@@ -9,6 +9,7 @@
<file>basics/color-animation.qml</file>
<file>basics/property-animation.qml</file>
<file>behaviors/behavior-example.qml</file>
+ <file>behaviors/FocusRect.qml</file>
<file>behaviors/SideRect.qml</file>
<file>behaviors/tvtennis.qml</file>
<file>behaviors/wigglytext.qml</file>
diff --git a/tests/manual/nodetypes/Images.qml b/examples/quick/animation/behaviors/FocusRect.qml
index 95e8442690..5188919606 100644
--- a/tests/manual/nodetypes/Images.qml
+++ b/examples/quick/animation/behaviors/FocusRect.qml
@@ -1,9 +1,9 @@
/****************************************************************************
**
-** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
-** This file is part of the demonstration applications of the Qt Toolkit.
+** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
@@ -48,60 +48,68 @@
**
****************************************************************************/
-import QtQuick 2.3
+import QtQuick 2.0
-Item {
- Rectangle {
- width: 100
- height: 100
- anchors.centerIn: parent
- color: "red"
- NumberAnimation on rotation { from: 0; to: 360; duration: 2000; loops: Animation.Infinite; }
- }
-
- Image {
- id: im
- source: "qrc:/qt.png"
- mipmap: true
+Rectangle {
+ id: focusRect
+ property string text
- // changing the mipmap property results in the creation of a brand new
- // texture resource. enable the following to test.
-// Timer {
-// interval: 2000
-// onTriggered: im.mipmap = false
-// running: true
-// }
+ x: 62
+ y: 75
+ width: 75
+ height: 50
+ radius: 6
+ border.width: 4
+ border.color: "white"
+ color: "firebrick"
- SequentialAnimation on scale {
- loops: Animation.Infinite
- NumberAnimation {
- from: 1.0
- to: 4.0
- duration: 2000
- }
- NumberAnimation {
- from: 4.0
- to: 0.1
- duration: 3000
- }
- NumberAnimation {
- from: 0.1
- to: 1.0
- duration: 1000
- }
+ // Set an 'elastic' behavior on the focusRect's x property.
+ Behavior on x {
+ NumberAnimation {
+ easing.type: Easing.OutElastic
+ easing.amplitude: 3.0
+ easing.period: 2.0
+ duration: 300
}
+ }
- Image {
- anchors.centerIn: parent
- source: "qrc:/face-smile.png"
+ //! [0]
+ // Set an 'elastic' behavior on the focusRect's y property.
+ Behavior on y {
+ NumberAnimation {
+ easing.type: Easing.OutElastic
+ easing.amplitude: 3.0
+ easing.period: 2.0
+ duration: 300
}
}
+ //! [0]
+
+ Text {
+ id: focusText
+ text: focusRect.text
+ anchors.centerIn: parent
+ color: "white"
+ font.pixelSize: 16
+ font.bold: true
- Image {
- source: "qrc:/face-smile.png"
- anchors.bottom: parent.bottom
- anchors.right: parent.right
- antialiasing: true
- NumberAnimation on rotation { from: 0; to: 360; duration: 2000; loops: Animation.Infinite; }
+ // Set a behavior on the focusText's x property:
+ // Set the opacity to 0, set the new text value, then set the opacity back to 1.
+ Behavior on text {
+ SequentialAnimation {
+ NumberAnimation {
+ target: focusText
+ property: "opacity"
+ to: 0
+ duration: 150
+ }
+ NumberAnimation {
+ target: focusText
+ property: "opacity"
+ to: 1
+ duration: 150
+ }
+ }
+ }
}
}
diff --git a/examples/quick/animation/behaviors/SideRect.qml b/examples/quick/animation/behaviors/SideRect.qml
index 8b37a6a0ca..19c0528054 100644
--- a/examples/quick/animation/behaviors/SideRect.qml
+++ b/examples/quick/animation/behaviors/SideRect.qml
@@ -53,6 +53,7 @@ import QtQuick 2.0
Rectangle {
id: myRect
+ property FocusRect focusItem
property string text
width: 75; height: 50
@@ -64,9 +65,9 @@ Rectangle {
anchors.fill: parent
hoverEnabled: true
onEntered: {
- focusRect.x = myRect.x;
- focusRect.y = myRect.y;
- focusRect.text = myRect.text;
+ myRect.focusItem.x = myRect.x;
+ myRect.focusItem.y = myRect.y;
+ myRect.focusItem.text = myRect.text;
}
}
}
diff --git a/examples/quick/animation/behaviors/behavior-example.qml b/examples/quick/animation/behaviors/behavior-example.qml
index 1d07e6bb90..43ca31f185 100644
--- a/examples/quick/animation/behaviors/behavior-example.qml
+++ b/examples/quick/animation/behaviors/behavior-example.qml
@@ -64,67 +64,34 @@ Rectangle {
SideRect {
id: leftRect
+ focusItem: focusRect
anchors { verticalCenter: parent.verticalCenter; horizontalCenter: parent.left }
text: "Left"
}
SideRect {
id: rightRect
+ focusItem: focusRect
anchors { verticalCenter: parent.verticalCenter; horizontalCenter: parent.right }
text: "Right"
}
SideRect {
id: topRect
+ focusItem: focusRect
anchors { verticalCenter: parent.top; horizontalCenter: parent.horizontalCenter }
text: "Top"
}
SideRect {
id: bottomRect
+ focusItem: focusRect
anchors { verticalCenter: parent.bottom; horizontalCenter: parent.horizontalCenter }
text: "Bottom"
}
-
- Rectangle {
+ FocusRect {
id: focusRect
-
- property string text
-
- x: 62; y: 75; width: 75; height: 50
- radius: 6
- border.width: 4; border.color: "white"
- color: "firebrick"
-
- // Set an 'elastic' behavior on the focusRect's x property.
- Behavior on x {
- NumberAnimation { easing.type: Easing.OutElastic; easing.amplitude: 3.0; easing.period: 2.0; duration: 300 }
- }
-
- //! [0]
- // Set an 'elastic' behavior on the focusRect's y property.
- Behavior on y {
- NumberAnimation { easing.type: Easing.OutElastic; easing.amplitude: 3.0; easing.period: 2.0; duration: 300 }
- }
- //! [0]
-
- Text {
- id: focusText
- text: focusRect.text
- anchors.centerIn: parent
- color: "white"
- font.pixelSize: 16; font.bold: true
-
- // Set a behavior on the focusText's x property:
- // Set the opacity to 0, set the new text value, then set the opacity back to 1.
- Behavior on text {
- SequentialAnimation {
- NumberAnimation { target: focusText; property: "opacity"; to: 0; duration: 150 }
- NumberAnimation { target: focusText; property: "opacity"; to: 1; duration: 150 }
- }
- }
- }
}
}
}
diff --git a/examples/quick/animation/doc/src/animation.qdoc b/examples/quick/animation/doc/src/animation.qdoc
index 578fb4b849..97a574d768 100644
--- a/examples/quick/animation/doc/src/animation.qdoc
+++ b/examples/quick/animation/doc/src/animation.qdoc
@@ -60,7 +60,7 @@
\section1 Behaviors
\e Behaviors uses behaviors to move a rectangle to where you click.
- \snippet animation/behaviors/behavior-example.qml 0
+ \snippet animation/behaviors/FocusRect.qml 0
\section1 Wiggly Text
diff --git a/examples/quick/animation/easing/easing.qml b/examples/quick/animation/easing/easing.qml
index 6db5599a66..f443486141 100644
--- a/examples/quick/animation/easing/easing.qml
+++ b/examples/quick/animation/easing/easing.qml
@@ -48,6 +48,8 @@
**
****************************************************************************/
+import QtQml 2.15
+import QtQml.Models 2.15
import QtQuick 2.0
Rectangle {
@@ -107,9 +109,14 @@ Rectangle {
id: delegate
Item {
+ id: delegateInstance
+ required property string name;
+ required property int type;
+ required property color ballColor;
+
height: 56; width: window.width
- Text { text: name; anchors.centerIn: parent; color: "White" }
+ Text { text: parent.name; anchors.centerIn: parent; color: "White" }
Rectangle {
id: slot1; color: "#121212"; x: 30; height: 46; width: 46
@@ -137,12 +144,26 @@ Rectangle {
states : State {
name: "right"
- PropertyChanges { target: rect; x: window.width - 76; color: ballColor }
+ PropertyChanges {
+ target: rect;
+ x: window.width - 76;
+ color: delegateInstance.ballColor
+ }
}
transitions: Transition {
- NumberAnimation { properties: "x"; easing.type: type; easing.bezierCurve: getBezierCurve(name); duration: 1000 }
- ColorAnimation { properties: "color"; easing.type: type; easing.bezierCurve: getBezierCurve(name); duration: 1000 }
+ NumberAnimation {
+ properties: "x"
+ easing.type: delegateInstance.type
+ easing.bezierCurve: window.getBezierCurve(delegateInstance.name)
+ duration: 1000
+ }
+ ColorAnimation {
+ properties: "color"
+ easing.type: delegateInstance.type
+ easing.bezierCurve: window.getBezierCurve(delegateInstance.name)
+ duration: 1000
+ }
}
}
}
diff --git a/examples/quick/canvas/smile/smile.qml b/examples/quick/canvas/smile/smile.qml
index 880116726f..cde18d4d38 100644
--- a/examples/quick/canvas/smile/smile.qml
+++ b/examples/quick/canvas/smile/smile.qml
@@ -97,7 +97,6 @@ Item {
ctx.save();
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.translate(originX, originX);
- ctx.globalAlpha = canvas.alpha;
ctx.strokeStyle = canvas.strokeStyle;
ctx.fillStyle = canvas.fillStyle;
ctx.lineWidth = canvas.lineWidth;
diff --git a/examples/quick/customitems/maskedmousearea/main.cpp b/examples/quick/customitems/maskedmousearea/main.cpp
index 626f0fd765..5b42516154 100644
--- a/examples/quick/customitems/maskedmousearea/main.cpp
+++ b/examples/quick/customitems/maskedmousearea/main.cpp
@@ -53,14 +53,11 @@
#include "maskedmousearea.h"
-
int main(int argc, char* argv[])
{
QGuiApplication app(argc,argv);
QQuickView view;
- qmlRegisterTypesAndRevisions<MaskedMouseArea>("Example", 1);
-
view.setSource(QUrl("qrc:///customitems/maskedmousearea/maskedmousearea.qml"));
view.show();
return app.exec();
diff --git a/examples/quick/customitems/maskedmousearea/maskedmousearea.pro b/examples/quick/customitems/maskedmousearea/maskedmousearea.pro
index fe5c05ce61..c5cedf4e6e 100644
--- a/examples/quick/customitems/maskedmousearea/maskedmousearea.pro
+++ b/examples/quick/customitems/maskedmousearea/maskedmousearea.pro
@@ -2,6 +2,10 @@ TEMPLATE = app
QT += quick qml
+CONFIG += qmltypes
+QML_IMPORT_NAME = Example
+QML_IMPORT_MAJOR_VERSION = 1
+
HEADERS += maskedmousearea.h
SOURCES += main.cpp \
diff --git a/examples/quick/customitems/painteditem/TextBalloonPlugin/plugin.h b/examples/quick/customitems/painteditem/TextBalloonPlugin/plugin.h
index 41750d1647..972859f80e 100644
--- a/examples/quick/customitems/painteditem/TextBalloonPlugin/plugin.h
+++ b/examples/quick/customitems/painteditem/TextBalloonPlugin/plugin.h
@@ -52,13 +52,8 @@
#include "../textballoon.h"
-class TextBalloonPlugin : public QQmlExtensionPlugin
+class TextBalloonPlugin : public QQmlEngineExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
-public:
- void registerTypes(const char *uri)
- {
- qmlRegisterTypesAndRevisions<TextBalloon>(uri, 1);
- }
+ Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid)
};
diff --git a/examples/quick/customitems/painteditem/painteditem.pro b/examples/quick/customitems/painteditem/painteditem.pro
index bc7480ab9e..641833f3aa 100644
--- a/examples/quick/customitems/painteditem/painteditem.pro
+++ b/examples/quick/customitems/painteditem/painteditem.pro
@@ -1,21 +1,25 @@
TEMPLATE = lib
-CONFIG += plugin
+CONFIG += plugin qmltypes
QT += qml quick
+QML_IMPORT_NAME = TextBalloonPlugin
+QML_IMPORT_MAJOR_VERSION = 1
+
TARGET = qmltextballoonplugin
-HEADERS += TextBalloonPlugin/plugin.h \
+HEADERS += \
+ TextBalloonPlugin/plugin.h \
textballoon.h
SOURCES += textballoon.cpp
RESOURCES += painteditem.qrc
-DESTDIR = TextBalloonPlugin
+DESTDIR = $$QML_IMPORT_NAME
-target.path = $$[QT_INSTALL_EXAMPLES]/quick/customitems/painteditem/TextBalloonPlugin
-qmldir.files = TextBalloonPlugin/qmldir
-qmldir.path = $$[QT_INSTALL_EXAMPLES]/quick/customitems/painteditem/TextBalloonPlugin
+target.path = $$[QT_INSTALL_EXAMPLES]/quick/customitems/painteditem/$$QML_IMPORT_NAME
+qmldir.files = $$QML_IMPORT_NAME/qmldir
+qmldir.path = $$[QT_INSTALL_EXAMPLES]/quick/customitems/painteditem/$$QML_IMPORT_NAME
INSTALLS += qmldir target
diff --git a/examples/quick/draganddrop/draganddrop.qrc b/examples/quick/draganddrop/draganddrop.qrc
index 6d064f7722..df9fec51d2 100644
--- a/examples/quick/draganddrop/draganddrop.qrc
+++ b/examples/quick/draganddrop/draganddrop.qrc
@@ -5,5 +5,6 @@
<file>tiles/DropTile.qml</file>
<file>tiles/tiles.qml</file>
<file>views/gridview.qml</file>
+ <file>views/Icon.qml</file>
</qresource>
</RCC>
diff --git a/examples/quick/draganddrop/views/Icon.qml b/examples/quick/draganddrop/views/Icon.qml
new file mode 100644
index 0000000000..261d6d146a
--- /dev/null
+++ b/examples/quick/draganddrop/views/Icon.qml
@@ -0,0 +1,96 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.14
+
+Rectangle {
+ id: icon
+ required property Item dragParent
+
+ property int visualIndex: 0
+ width: 72
+ height: 72
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ verticalCenter: parent.verticalCenter
+ }
+ radius: 3
+
+ Text {
+ anchors.centerIn: parent
+ color: "white"
+ text: parent.visualIndex
+ }
+
+ DragHandler {
+ id: dragHandler
+ }
+
+ Drag.active: dragHandler.active
+ Drag.source: icon
+ Drag.hotSpot.x: 36
+ Drag.hotSpot.y: 36
+
+ states: [
+ State {
+ when: dragHandler.active
+ ParentChange {
+ target: icon
+ parent: icon.dragParent
+ }
+
+ AnchorChanges {
+ target: icon
+ anchors.horizontalCenter: undefined
+ anchors.verticalCenter: undefined
+ }
+ }
+ ]
+}
diff --git a/examples/quick/draganddrop/views/gridview.qml b/examples/quick/draganddrop/views/gridview.qml
index 6c5bcef729..05bd48e7fa 100644
--- a/examples/quick/draganddrop/views/gridview.qml
+++ b/examples/quick/draganddrop/views/gridview.qml
@@ -48,8 +48,9 @@
**
****************************************************************************/
-import QtQuick 2.12
-import QtQml.Models 2.1
+import QtQml 2.14
+import QtQuick 2.14
+import QtQml.Models 2.14
GridView {
id: root
@@ -94,54 +95,21 @@ GridView {
//! [1]
delegate: DropArea {
id: delegateRoot
+ required property color color;
width: 80; height: 80
- onEntered: visualModel.items.move(drag.source.visualIndex, icon.visualIndex)
+ onEntered: function(drag) {
+ visualModel.items.move((drag.source as Icon).visualIndex, icon.visualIndex)
+ }
+
property int visualIndex: DelegateModel.itemsIndex
- Binding { target: icon; property: "visualIndex"; value: visualIndex }
- Rectangle {
+ Icon {
id: icon
- property int visualIndex: 0
- width: 72; height: 72
- anchors {
- horizontalCenter: parent.horizontalCenter;
- verticalCenter: parent.verticalCenter
- }
- radius: 3
- color: model.color
-
- Text {
- anchors.centerIn: parent
- color: "white"
- text: parent.visualIndex
- }
-
- DragHandler {
- id: dragHandler
- }
-
- Drag.active: dragHandler.active
- Drag.source: icon
- Drag.hotSpot.x: 36
- Drag.hotSpot.y: 36
-
- states: [
- State {
- when: icon.Drag.active
- ParentChange {
- target: icon
- parent: root
- }
-
- AnchorChanges {
- target: icon
- anchors.horizontalCenter: undefined
- anchors.verticalCenter: undefined
- }
- }
- ]
+ dragParent: root
+ visualIndex: delegateRoot.visualIndex
+ color: delegateRoot.color
}
}
//! [1]
diff --git a/examples/quick/imageprovider/imageprovider.cpp b/examples/quick/imageprovider/imageprovider.cpp
index 2d927ea79a..a606352cce 100644
--- a/examples/quick/imageprovider/imageprovider.cpp
+++ b/examples/quick/imageprovider/imageprovider.cpp
@@ -90,22 +90,16 @@ public:
};
-class ImageProviderExtensionPlugin : public QQmlExtensionPlugin
+class ImageProviderExtensionPlugin : public QQmlEngineExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
+ Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid)
public:
- void registerTypes(const char *uri) override
- {
- Q_UNUSED(uri);
- }
-
void initializeEngine(QQmlEngine *engine, const char *uri) override
{
Q_UNUSED(uri);
engine->addImageProvider("colors", new ColorImageProvider);
}
-
};
diff --git a/examples/quick/imageresponseprovider/imageresponseprovider.cpp b/examples/quick/imageresponseprovider/imageresponseprovider.cpp
index 32510dbec8..4ab1090361 100644
--- a/examples/quick/imageresponseprovider/imageresponseprovider.cpp
+++ b/examples/quick/imageresponseprovider/imageresponseprovider.cpp
@@ -128,16 +128,11 @@ private:
};
-class ImageProviderExtensionPlugin : public QQmlExtensionPlugin
+class ImageProviderExtensionPlugin : public QQmlEngineExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
+ Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid)
public:
- void registerTypes(const char *uri) override
- {
- Q_UNUSED(uri);
- }
-
void initializeEngine(QQmlEngine *engine, const char *uri) override
{
Q_UNUSED(uri);
diff --git a/examples/quick/layouts/layouts.qml b/examples/quick/layouts/layouts.qml
index 48299f36aa..e56fecade9 100644
--- a/examples/quick/layouts/layouts.qml
+++ b/examples/quick/layouts/layouts.qml
@@ -53,6 +53,8 @@ import QtQuick.Controls 1.2
import QtQuick.Layouts 1.3
ApplicationWindow {
+ id: appWindow
+
visible: true
title: "Basic layouts"
property int margin: 11
@@ -64,7 +66,7 @@ ApplicationWindow {
ColumnLayout {
id: mainLayout
anchors.fill: parent
- anchors.margins: margin
+ anchors.margins: appWindow.margin
GroupBox {
id: rowBox
title: "Row layout"
@@ -135,8 +137,13 @@ ApplicationWindow {
id: stackRepeater
model: 5
Rectangle {
- color: Qt.hsla((0.5 + index)/stackRepeater.count, 0.3, 0.7, 1)
- Button { anchors.centerIn: parent; text: "Page " + (index + 1); onClicked: { stackLayout.advance() } }
+ required property int index
+ color: Qt.hsla((0.5 + index) / stackRepeater.count, 0.3, 0.7, 1)
+ Button {
+ anchors.centerIn: parent
+ text: "Page " + (parent.index + 1)
+ onClicked: { stackLayout.advance() }
+ }
}
}
}
diff --git a/examples/quick/localstorage/localstorage/Header.qml b/examples/quick/localstorage/localstorage/Header.qml
index b3807f6e40..e9446de55e 100644
--- a/examples/quick/localstorage/localstorage/Header.qml
+++ b/examples/quick/localstorage/localstorage/Header.qml
@@ -186,11 +186,11 @@ Item {
}
}
}
-
- MouseArea {
- anchors.fill: parent
- onClicked: dateInput.forceActiveFocus()
- }
}
}
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: dateInput.forceActiveFocus()
+ }
}
diff --git a/examples/quick/localstorage/localstorage/localstorage.qml b/examples/quick/localstorage/localstorage/localstorage.qml
index 434639db54..41f5cbd561 100644
--- a/examples/quick/localstorage/localstorage/localstorage.qml
+++ b/examples/quick/localstorage/localstorage/localstorage.qml
@@ -166,8 +166,8 @@ Window {
Component {
id: highlightBar
Rectangle {
- width: listView.currentItem.width
- height: listView.currentItem.height
+ width: listView.currentItem !== null ? listView.currentItem.width : implicitWidth
+ height: listView.currentItem !== null ? listView.currentItem.height : implicitHeight
color: "lightgreen"
}
}
diff --git a/examples/quick/quick-accessibility/content/Button.qml b/examples/quick/quick-accessibility/content/Button.qml
index fc9c19b789..7a86e31588 100644
--- a/examples/quick/quick-accessibility/content/Button.qml
+++ b/examples/quick/quick-accessibility/content/Button.qml
@@ -79,7 +79,6 @@ Rectangle {
Text {
id: buttonText
- text: parent.description
anchors.centerIn: parent
font.pixelSize: parent.height * .5
style: Text.Sunken
diff --git a/examples/quick/quickwidgets/qquickviewcomparison/mainwindow.cpp b/examples/quick/quickwidgets/qquickviewcomparison/mainwindow.cpp
index 6ebf36c454..850ecd147b 100644
--- a/examples/quick/quickwidgets/qquickviewcomparison/mainwindow.cpp
+++ b/examples/quick/quickwidgets/qquickviewcomparison/mainwindow.cpp
@@ -86,8 +86,6 @@ MainWindow::MainWindow(bool transparency, bool noRenderAlpha)
m_labelStatus = new QLabel;
layout->addWidget(m_labelStatus);
- qmlRegisterTypesAndRevisions<FbItem>("fbitem", 1);
-
QWidget *quickContainer = new QWidget;
layout->addWidget(quickContainer);
layout->setStretchFactor(quickContainer, 8);
diff --git a/examples/quick/quickwidgets/qquickviewcomparison/qquickviewcomparison.pro b/examples/quick/quickwidgets/qquickviewcomparison/qquickviewcomparison.pro
index 80216da346..7809c20b3a 100644
--- a/examples/quick/quickwidgets/qquickviewcomparison/qquickviewcomparison.pro
+++ b/examples/quick/quickwidgets/qquickviewcomparison/qquickviewcomparison.pro
@@ -1,6 +1,10 @@
TEMPLATE = app
TARGET = qquickviewcomparison
+CONFIG += qmltypes
+QML_IMPORT_NAME = fbitem
+QML_IMPORT_MAJOR_VERSION = 1
+
QT += quick widgets quickwidgets
SOURCES += main.cpp \
diff --git a/examples/quick/quickwidgets/quickwidget/main.cpp b/examples/quick/quickwidgets/quickwidget/main.cpp
index 541f543f07..f28b2f1443 100644
--- a/examples/quick/quickwidgets/quickwidget/main.cpp
+++ b/examples/quick/quickwidgets/quickwidget/main.cpp
@@ -214,8 +214,6 @@ int main(int argc, char **argv)
optMultipleSample = parser.isSet(multipleSampleOption);
optCoreProfile = parser.isSet(coreProfileOption);
- qmlRegisterTypesAndRevisions<FbItem>("QuickWidgetExample", 1);
-
MainWindow mainWindow;
mainWindow.show();
diff --git a/examples/quick/quickwidgets/quickwidget/quickwidget.pro b/examples/quick/quickwidgets/quickwidget/quickwidget.pro
index 5be006f7fa..b824c520f5 100644
--- a/examples/quick/quickwidgets/quickwidget/quickwidget.pro
+++ b/examples/quick/quickwidgets/quickwidget/quickwidget.pro
@@ -3,6 +3,10 @@ QT += core gui quick widgets quickwidgets
TARGET = quickwidget
TEMPLATE = app
+CONFIG += qmltypes
+QML_IMPORT_NAME = QuickWidgetExample
+QML_IMPORT_MAJOR_VERSION = 1
+
SOURCES += main.cpp fbitem.cpp
HEADERS += fbitem.h
diff --git a/examples/quick/scenegraph/customgeometry/beziercurve.h b/examples/quick/scenegraph/customgeometry/beziercurve.h
index be9e4ef49f..fd0085a08e 100644
--- a/examples/quick/scenegraph/customgeometry/beziercurve.h
+++ b/examples/quick/scenegraph/customgeometry/beziercurve.h
@@ -64,7 +64,9 @@ class BezierCurve : public QQuickItem
Q_PROPERTY(QPointF p4 READ p4 WRITE setP4 NOTIFY p4Changed)
Q_PROPERTY(int segmentCount READ segmentCount WRITE setSegmentCount NOTIFY segmentCountChanged)
+//! [3]
QML_ELEMENT
+//! [3]
public:
BezierCurve(QQuickItem *parent = 0);
diff --git a/examples/quick/scenegraph/customgeometry/customgeometry.pro b/examples/quick/scenegraph/customgeometry/customgeometry.pro
index 17c30fc560..3785f88c7e 100644
--- a/examples/quick/scenegraph/customgeometry/customgeometry.pro
+++ b/examples/quick/scenegraph/customgeometry/customgeometry.pro
@@ -1,6 +1,10 @@
TARGET = customgeometry
QT += quick
+CONFIG += qmltypes
+QML_IMPORT_NAME = CustomGeometry
+QML_IMPORT_MAJOR_VERSION = 1
+
SOURCES += \
main.cpp \
beziercurve.cpp
diff --git a/examples/quick/scenegraph/customgeometry/doc/src/customgeometry.qdoc b/examples/quick/scenegraph/customgeometry/doc/src/customgeometry.qdoc
index 959114b424..bd235e5dfb 100644
--- a/examples/quick/scenegraph/customgeometry/doc/src/customgeometry.qdoc
+++ b/examples/quick/scenegraph/customgeometry/doc/src/customgeometry.qdoc
@@ -169,11 +169,16 @@
\snippet scenegraph/customgeometry/main.cpp 1
The application is a straightforward QML application, with a
- QGuiApplication and a QQuickView that we pass a .qml file. To make
- use of the BezierCurve item, we need to register it in the QML
- engine, using the qmlRegisterType() function. We give it the name
- BezierCurve and make it part of the \c {CustomGeometry 1.0}
- module.
+ QGuiApplication and a QQuickView that we pass a .qml file.
+
+ \snippet scenegraph/customgeometry/beziercurve.h 3
+
+ To make use of the BezierCurve item, we need to register it in the QML
+ engine, using the QML_ELEMENT macro. This gives it the name
+ BezierCurve and makes it part of the \c {CustomGeometry 1.0}
+ module as defined in the customgeometry.pro file:
+
+ \quotefile scenegraph/customgeometry/customgeometry.pro
As the bezier curve is drawn using GL_LINE_STRIP, we specify that
the view should be multisampled to get antialiasing. This is not
diff --git a/examples/quick/scenegraph/customgeometry/main.cpp b/examples/quick/scenegraph/customgeometry/main.cpp
index 9352e4bd24..15310d279f 100644
--- a/examples/quick/scenegraph/customgeometry/main.cpp
+++ b/examples/quick/scenegraph/customgeometry/main.cpp
@@ -58,8 +58,6 @@ int main(int argc, char **argv)
{
QGuiApplication app(argc, argv);
- qmlRegisterTypesAndRevisions<BezierCurve>("CustomGeometry", 1);
-
QQuickView view;
QSurfaceFormat format = view.format();
format.setSamples(16);
diff --git a/examples/quick/scenegraph/d3d11underqml/d3d11underqml.pro b/examples/quick/scenegraph/d3d11underqml/d3d11underqml.pro
index 7658a9a813..4f052cf388 100644
--- a/examples/quick/scenegraph/d3d11underqml/d3d11underqml.pro
+++ b/examples/quick/scenegraph/d3d11underqml/d3d11underqml.pro
@@ -2,6 +2,10 @@
QT += qml quick
+CONFIG += qmltypes
+QML_IMPORT_NAME = D3D11UnderQML
+QML_IMPORT_MAJOR_VERSION = 1
+
HEADERS += d3d11squircle.h
SOURCES += d3d11squircle.cpp main.cpp
RESOURCES += d3d11underqml.qrc
diff --git a/examples/quick/scenegraph/d3d11underqml/main.cpp b/examples/quick/scenegraph/d3d11underqml/main.cpp
index dcab8c879c..bcefae6cb5 100644
--- a/examples/quick/scenegraph/d3d11underqml/main.cpp
+++ b/examples/quick/scenegraph/d3d11underqml/main.cpp
@@ -56,8 +56,6 @@ int main(int argc, char **argv)
{
QGuiApplication app(argc, argv);
- qmlRegisterTypesAndRevisions<D3D11Squircle>("D3D11UnderQML", 1);
-
QQuickWindow::setSceneGraphBackend(QSGRendererInterface::Direct3D11Rhi);
QQuickView view;
diff --git a/examples/quick/scenegraph/fboitem/fboitem.pro b/examples/quick/scenegraph/fboitem/fboitem.pro
index e40e5f4cf8..180c2288e2 100644
--- a/examples/quick/scenegraph/fboitem/fboitem.pro
+++ b/examples/quick/scenegraph/fboitem/fboitem.pro
@@ -1,5 +1,9 @@
QT += qml quick
+CONFIG += qmltypes
+QML_IMPORT_NAME = SceneGraphRendering
+QML_IMPORT_MAJOR_VERSION = 1
+
HEADERS += fboinsgrenderer.h
SOURCES += fboinsgrenderer.cpp main.cpp
diff --git a/examples/quick/scenegraph/fboitem/main.cpp b/examples/quick/scenegraph/fboitem/main.cpp
index 056bf24ade..153bd931ec 100644
--- a/examples/quick/scenegraph/fboitem/main.cpp
+++ b/examples/quick/scenegraph/fboitem/main.cpp
@@ -58,8 +58,6 @@ int main(int argc, char **argv)
{
QGuiApplication app(argc, argv);
- qmlRegisterTypesAndRevisions<FboInSGRenderer>("SceneGraphRendering", 1);
-
QQuickView view;
view.setResizeMode(QQuickView::SizeRootObjectToView);
view.setSource(QUrl("qrc:///scenegraph/fboitem/main.qml"));
diff --git a/examples/quick/scenegraph/graph/graph.pro b/examples/quick/scenegraph/graph/graph.pro
index 1a880b61f1..fe36585d77 100644
--- a/examples/quick/scenegraph/graph/graph.pro
+++ b/examples/quick/scenegraph/graph/graph.pro
@@ -4,6 +4,10 @@ TARGET = graph
TEMPLATE = app
+CONFIG += qmltypes
+QML_IMPORT_NAME = Graph
+QML_IMPORT_MAJOR_VERSION = 1
+
SOURCES += main.cpp \
graph.cpp \
noisynode.cpp \
diff --git a/examples/quick/scenegraph/graph/main.cpp b/examples/quick/scenegraph/graph/main.cpp
index 9a575944b9..854fad84e3 100644
--- a/examples/quick/scenegraph/graph/main.cpp
+++ b/examples/quick/scenegraph/graph/main.cpp
@@ -58,8 +58,6 @@ int main(int argc, char *argv[])
{
QGuiApplication a(argc, argv);
- qmlRegisterTypesAndRevisions<Graph>("Graph", 1);
-
QQuickView view;
view.resize(800, 400);
view.setResizeMode(QQuickView::SizeRootObjectToView);
diff --git a/examples/quick/scenegraph/metaltextureimport/doc/src/metaltextureimport.qdoc b/examples/quick/scenegraph/metaltextureimport/doc/src/metaltextureimport.qdoc
index 2a584c26cc..55cbcd8f2e 100644
--- a/examples/quick/scenegraph/metaltextureimport/doc/src/metaltextureimport.qdoc
+++ b/examples/quick/scenegraph/metaltextureimport/doc/src/metaltextureimport.qdoc
@@ -29,7 +29,7 @@
\example scenegraph/metaltextureimport
\title Scene Graph - Metal Texture Import
\ingroup qtquickexamples
- \brief Shows how to use a texture created directly with Metal
+ \brief Shows how to use a texture created directly with Metal.
\image metaltextureimport-example.jpg
diff --git a/examples/quick/scenegraph/metaltextureimport/metaltextureimport.pro b/examples/quick/scenegraph/metaltextureimport/metaltextureimport.pro
index 5b11606946..bbdfd358d3 100644
--- a/examples/quick/scenegraph/metaltextureimport/metaltextureimport.pro
+++ b/examples/quick/scenegraph/metaltextureimport/metaltextureimport.pro
@@ -1,4 +1,4 @@
-!macos: error("This example requires macOS")
+!macos:!ios: error("This example requires macOS or iOS")
QT += qml quick
@@ -6,7 +6,8 @@ HEADERS += metaltextureimport.h
SOURCES += metaltextureimport.mm main.cpp
RESOURCES += metaltextureimport.qrc
-LIBS += -framework Metal -framework AppKit
+LIBS += -framework Metal
+macos: LIBS += -framework AppKit
target.path = $$[QT_INSTALL_EXAMPLES]/quick/scenegraph/metaltextureimport
INSTALLS += target
diff --git a/examples/quick/scenegraph/metalunderqml/main.cpp b/examples/quick/scenegraph/metalunderqml/main.cpp
index 3e620137cd..cefb1c10a9 100644
--- a/examples/quick/scenegraph/metalunderqml/main.cpp
+++ b/examples/quick/scenegraph/metalunderqml/main.cpp
@@ -56,8 +56,6 @@ int main(int argc, char **argv)
{
QGuiApplication app(argc, argv);
- qmlRegisterTypesAndRevisions<MetalSquircle>("MetalUnderQML", 1);
-
QQuickWindow::setSceneGraphBackend(QSGRendererInterface::MetalRhi);
QQuickView view;
diff --git a/examples/quick/scenegraph/metalunderqml/metalsquircle.mm b/examples/quick/scenegraph/metalunderqml/metalsquircle.mm
index 5ca6daa01a..4844df0c70 100644
--- a/examples/quick/scenegraph/metalunderqml/metalsquircle.mm
+++ b/examples/quick/scenegraph/metalunderqml/metalsquircle.mm
@@ -349,10 +349,13 @@ void SquircleRenderer::init(int framesInFlight)
rpDesc.colorAttachments[0].destinationRGBBlendFactor = MTLBlendFactorOne;
rpDesc.colorAttachments[0].destinationAlphaBlendFactor = MTLBlendFactorOne;
+#ifdef Q_OS_MACOS
if (m_device.depth24Stencil8PixelFormatSupported) {
rpDesc.depthAttachmentPixelFormat = MTLPixelFormatDepth24Unorm_Stencil8;
rpDesc.stencilAttachmentPixelFormat = MTLPixelFormatDepth24Unorm_Stencil8;
- } else {
+ } else
+#endif
+ {
rpDesc.depthAttachmentPixelFormat = MTLPixelFormatDepth32Float_Stencil8;
rpDesc.stencilAttachmentPixelFormat = MTLPixelFormatDepth32Float_Stencil8;
}
diff --git a/examples/quick/scenegraph/metalunderqml/metalunderqml.pro b/examples/quick/scenegraph/metalunderqml/metalunderqml.pro
index 9fd131fe1b..3b0489ecdf 100644
--- a/examples/quick/scenegraph/metalunderqml/metalunderqml.pro
+++ b/examples/quick/scenegraph/metalunderqml/metalunderqml.pro
@@ -1,12 +1,17 @@
-!macos: error("This example requires macOS")
+!macos:!ios: error("This example requires macOS or iOS")
QT += qml quick
+CONFIG += qmltypes
+QML_IMPORT_NAME = MetalUnderQML
+QML_IMPORT_MAJOR_VERSION = 1
+
HEADERS += metalsquircle.h
SOURCES += metalsquircle.mm main.cpp
RESOURCES += metalunderqml.qrc
-LIBS += -framework Metal -framework AppKit
+LIBS += -framework Metal
+macos: LIBS += -framework AppKit
target.path = $$[QT_INSTALL_EXAMPLES]/quick/scenegraph/metalunderqml
INSTALLS += target
diff --git a/examples/quick/scenegraph/openglunderqml/doc/src/openglunderqml.qdoc b/examples/quick/scenegraph/openglunderqml/doc/src/openglunderqml.qdoc
index 9676815c44..c2944970a5 100644
--- a/examples/quick/scenegraph/openglunderqml/doc/src/openglunderqml.qdoc
+++ b/examples/quick/scenegraph/openglunderqml/doc/src/openglunderqml.qdoc
@@ -60,6 +60,7 @@
First of all, we need an object we can expose to QML. This is a
subclass of QQuickItem so we can easily access \l QQuickItem::window().
+ We expose it to QML using the QML_ELEMENT macro.
\snippet scenegraph/openglunderqml/squircle.h 1
@@ -145,9 +146,7 @@
\snippet scenegraph/openglunderqml/main.cpp 1
The application's \c main() function instantiates a QQuickView and
- launches the \c main.qml file. The only thing worth noting is that
- we export the \c Squircle class to QML using the \l
- qmlRegisterType() macro.
+ launches the \c main.qml file.
\snippet scenegraph/openglunderqml/main.qml 1
diff --git a/examples/quick/scenegraph/openglunderqml/main.cpp b/examples/quick/scenegraph/openglunderqml/main.cpp
index c04d0da68f..4ca8d05f1c 100644
--- a/examples/quick/scenegraph/openglunderqml/main.cpp
+++ b/examples/quick/scenegraph/openglunderqml/main.cpp
@@ -59,8 +59,6 @@ int main(int argc, char **argv)
{
QGuiApplication app(argc, argv);
- qmlRegisterTypesAndRevisions<Squircle>("OpenGLUnderQML", 1);
-
QQuickView view;
view.setResizeMode(QQuickView::SizeRootObjectToView);
view.setSource(QUrl("qrc:///scenegraph/openglunderqml/main.qml"));
diff --git a/examples/quick/scenegraph/openglunderqml/openglunderqml.pro b/examples/quick/scenegraph/openglunderqml/openglunderqml.pro
index 54558ce9e9..7eaace1133 100644
--- a/examples/quick/scenegraph/openglunderqml/openglunderqml.pro
+++ b/examples/quick/scenegraph/openglunderqml/openglunderqml.pro
@@ -1,5 +1,9 @@
QT += qml quick
+CONFIG += qmltypes
+QML_IMPORT_NAME = OpenGLUnderQML
+QML_IMPORT_MAJOR_VERSION = 1
+
HEADERS += squircle.h
SOURCES += squircle.cpp main.cpp
RESOURCES += openglunderqml.qrc
diff --git a/examples/quick/scenegraph/rendernode/customrenderitem.cpp b/examples/quick/scenegraph/rendernode/customrenderitem.cpp
index e55cf0a2f4..aae91120a7 100644
--- a/examples/quick/scenegraph/rendernode/customrenderitem.cpp
+++ b/examples/quick/scenegraph/rendernode/customrenderitem.cpp
@@ -53,8 +53,9 @@
#include <QSGRendererInterface>
#include "openglrenderer.h"
+#ifdef Q_OS_MACOS
#include "metalrenderer.h"
-#include "d3d12renderer.h"
+#endif
#include "softwarerenderer.h"
//! [1]
@@ -101,14 +102,6 @@ QSGNode *CustomRenderItem::updatePaintNode(QSGNode *node, UpdatePaintNodeData *)
#endif
break;
- case QSGRendererInterface::Direct3D12: // ### Qt 6: remove
-#if QT_CONFIG(d3d12)
- if (!n)
- n = new D3D12RenderNode;
- static_cast<D3D12RenderNode *>(n)->sync(this);
-#endif
- break;
-
case QSGRendererInterface::Software:
if (!n)
n = new SoftwareRenderNode;
diff --git a/examples/quick/scenegraph/rendernode/customrenderitem.h b/examples/quick/scenegraph/rendernode/customrenderitem.h
index 74115b2505..28be54925b 100644
--- a/examples/quick/scenegraph/rendernode/customrenderitem.h
+++ b/examples/quick/scenegraph/rendernode/customrenderitem.h
@@ -53,6 +53,7 @@
#include <QQuickItem>
+//! [0]
class CustomRenderItem : public QQuickItem
{
Q_OBJECT
@@ -62,5 +63,6 @@ public:
CustomRenderItem(QQuickItem *parent = nullptr);
QSGNode *updatePaintNode(QSGNode *node, UpdatePaintNodeData *) override;
};
+//! [0]
#endif
diff --git a/examples/quick/scenegraph/rendernode/d3d12renderer.cpp b/examples/quick/scenegraph/rendernode/d3d12renderer.cpp
deleted file mode 100644
index e85811c089..0000000000
--- a/examples/quick/scenegraph/rendernode/d3d12renderer.cpp
+++ /dev/null
@@ -1,309 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "d3d12renderer.h"
-#include <QQuickItem>
-#include <QQuickWindow>
-#include <QSGRendererInterface>
-#include <QFile>
-
-// ### Qt 6: remove
-
-#if QT_CONFIG(d3d12)
-
-D3D12RenderNode::~D3D12RenderNode()
-{
- releaseResources();
-}
-
-void D3D12RenderNode::releaseResources()
-{
- if (vbPtr) {
- vertexBuffer->Unmap(0, nullptr);
- vbPtr = nullptr;
- }
- if (cbPtr) {
- constantBuffer->Unmap(0, nullptr);
- cbPtr = nullptr;
- }
- constantBuffer = nullptr;
- vertexBuffer = nullptr;
- rootSignature = nullptr;
- pipelineState = nullptr;
- m_device = nullptr;
-}
-
-void D3D12RenderNode::init()
-{
- QSGRendererInterface *rif = m_window->rendererInterface();
- m_device = static_cast<ID3D12Device *>(rif->getResource(m_window, QSGRendererInterface::DeviceResource));
- Q_ASSERT(m_device);
-
- D3D12_ROOT_PARAMETER rootParameter;
- rootParameter.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
- rootParameter.ShaderVisibility = D3D12_SHADER_VISIBILITY_ALL;
- rootParameter.Descriptor.ShaderRegister = 0; // b0
- rootParameter.Descriptor.RegisterSpace = 0;
-
- D3D12_ROOT_SIGNATURE_DESC desc;
- desc.NumParameters = 1;
- desc.pParameters = &rootParameter;
- desc.NumStaticSamplers = 0;
- desc.pStaticSamplers = nullptr;
- desc.Flags = D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT;
-
- ComPtr<ID3DBlob> signature;
- ComPtr<ID3DBlob> error;
- if (FAILED(D3D12SerializeRootSignature(&desc, D3D_ROOT_SIGNATURE_VERSION_1, &signature, &error))) {
- qWarning("Failed to serialize root signature");
- return;
- }
- if (FAILED(m_device->CreateRootSignature(0, signature->GetBufferPointer(), signature->GetBufferSize(),
- IID_PPV_ARGS(&rootSignature)))) {
- qWarning("Failed to create root signature");
- return;
- }
-
- D3D12_INPUT_ELEMENT_DESC inputElementDescs[] = {
- { "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
- { "COLOR", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 8, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 }
- };
-
- QFile f(QStringLiteral(":/scenegraph/rendernode/shader_vert.cso"));
- if (!f.open(QIODevice::ReadOnly)) {
- qWarning("Failed to open file with vertex shader bytecode");
- return;
- }
- QByteArray vshader_cso = f.readAll();
- f.close();
- f.setFileName(QStringLiteral(":/scenegraph/rendernode/shader_frag.cso"));
- if (!f.open(QIODevice::ReadOnly)) {
- qWarning("Failed to open file with fragment shader bytecode");
- return;
- }
- QByteArray fshader_cso = f.readAll();
- D3D12_SHADER_BYTECODE vshader;
- vshader.pShaderBytecode = vshader_cso.constData();
- vshader.BytecodeLength = vshader_cso.size();
- D3D12_SHADER_BYTECODE pshader;
- pshader.pShaderBytecode = fshader_cso.constData();
- pshader.BytecodeLength = fshader_cso.size();
-
- D3D12_RASTERIZER_DESC rastDesc = {};
- rastDesc.FillMode = D3D12_FILL_MODE_SOLID;
- rastDesc.CullMode = D3D12_CULL_MODE_BACK;
- rastDesc.FrontCounterClockwise = TRUE; // Vertices are given CCW
-
- // Enable color write and blending (premultiplied alpha). The latter is
- // needed because the example changes the item's opacity and we pass
- // inheritedOpacity() into the pixel shader. If that wasn't the case,
- // blending could have stayed disabled.
- const D3D12_RENDER_TARGET_BLEND_DESC premulBlendDesc = {
- TRUE, FALSE,
- D3D12_BLEND_ONE, D3D12_BLEND_INV_SRC_ALPHA, D3D12_BLEND_OP_ADD,
- D3D12_BLEND_ONE, D3D12_BLEND_INV_SRC_ALPHA, D3D12_BLEND_OP_ADD,
- D3D12_LOGIC_OP_NOOP,
- D3D12_COLOR_WRITE_ENABLE_ALL
- };
- D3D12_BLEND_DESC blendDesc = {};
- blendDesc.RenderTarget[0] = premulBlendDesc;
-
- D3D12_GRAPHICS_PIPELINE_STATE_DESC psoDesc = {};
- psoDesc.InputLayout = { inputElementDescs, _countof(inputElementDescs) };
- psoDesc.pRootSignature = rootSignature.Get();
- psoDesc.VS = vshader;
- psoDesc.PS = pshader;
- psoDesc.RasterizerState = rastDesc;
- psoDesc.BlendState = blendDesc;
- // No depth. The correct stacking of the item is ensured by the projection matrix.
- // Note that this does not support clipping.
- // If clipping is desired, render() needs to set a different PSO
- // with stencil enabled whenever the RenderState indicates so.
- psoDesc.SampleMask = UINT_MAX;
- psoDesc.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
- psoDesc.NumRenderTargets = 1;
- psoDesc.RTVFormats[0] = DXGI_FORMAT_R8G8B8A8_UNORM;
- psoDesc.DSVFormat = DXGI_FORMAT_D24_UNORM_S8_UINT; // not in use due to !DepthEnable, but this would be the correct format otherwise
- // We are rendering on the default render target so if the QuickWindow/View
- // has requested samples > 0 then we have to follow suit.
- const uint samples = qMax(1, m_window->format().samples());
- psoDesc.SampleDesc.Count = samples;
- if (samples > 1) {
- D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS msaaInfo = {};
- msaaInfo.Format = psoDesc.RTVFormats[0];
- msaaInfo.SampleCount = samples;
- if (SUCCEEDED(m_device->CheckFeatureSupport(D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS, &msaaInfo, sizeof(msaaInfo)))) {
- if (msaaInfo.NumQualityLevels > 0)
- psoDesc.SampleDesc.Quality = msaaInfo.NumQualityLevels - 1;
- }
- }
-
- if (FAILED(m_device->CreateGraphicsPipelineState(&psoDesc, IID_PPV_ARGS(&pipelineState)))) {
- qWarning("Failed to create graphics pipeline state");
- return;
- }
-
- const UINT vertexBufferSize = (2 + 3) * 3 * sizeof(float);
-
- D3D12_HEAP_PROPERTIES heapProp = {};
- heapProp.Type = D3D12_HEAP_TYPE_UPLOAD;
-
- D3D12_RESOURCE_DESC bufDesc;
- bufDesc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER;
- bufDesc.Alignment = 0;
- bufDesc.Width = vertexBufferSize;
- bufDesc.Height = 1;
- bufDesc.DepthOrArraySize = 1;
- bufDesc.MipLevels = 1;
- bufDesc.Format = DXGI_FORMAT_UNKNOWN;
- bufDesc.SampleDesc.Count = 1;
- bufDesc.SampleDesc.Quality = 0;
- bufDesc.Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR;
- bufDesc.Flags = D3D12_RESOURCE_FLAG_NONE;
-
- if (FAILED(m_device->CreateCommittedResource(&heapProp, D3D12_HEAP_FLAG_NONE, &bufDesc,
- D3D12_RESOURCE_STATE_GENERIC_READ, nullptr,
- IID_PPV_ARGS(&vertexBuffer)))) {
- qWarning("Failed to create committed resource (vertex buffer)");
- return;
- }
-
- vertexBufferView.BufferLocation = vertexBuffer->GetGPUVirtualAddress();
- vertexBufferView.StrideInBytes = vertexBufferSize / 3;
- vertexBufferView.SizeInBytes = vertexBufferSize;
-
- bufDesc.Width = 256;
- if (FAILED(m_device->CreateCommittedResource(&heapProp, D3D12_HEAP_FLAG_NONE, &bufDesc,
- D3D12_RESOURCE_STATE_GENERIC_READ, nullptr,
- IID_PPV_ARGS(&constantBuffer)))) {
- qWarning("Failed to create committed resource (constant buffer)");
- return;
- }
-
- const D3D12_RANGE readRange = { 0, 0 };
- if (FAILED(vertexBuffer->Map(0, &readRange, reinterpret_cast<void **>(&vbPtr)))) {
- qWarning("Map failed");
- return;
- }
-
- if (FAILED(constantBuffer->Map(0, &readRange, reinterpret_cast<void **>(&cbPtr)))) {
- qWarning("Map failed (constant buffer)");
- return;
- }
-
- float *vp = reinterpret_cast<float *>(vbPtr);
- vp += 2;
- *vp++ = 1.0f; *vp++ = 0.0f; *vp++ = 0.0f;
- vp += 2;
- *vp++ = 0.0f; *vp++ = 1.0f; *vp++ = 0.0f;
- vp += 2;
- *vp++ = 0.0f; *vp++ = 0.0f; *vp++ = 1.0f;
-}
-
-void D3D12RenderNode::render(const RenderState *state)
-{
- if (!m_device)
- init();
-
- QSGRendererInterface *rif = m_window->rendererInterface();
- ID3D12GraphicsCommandList *commandList = static_cast<ID3D12GraphicsCommandList *>(
- rif->getResource(m_window, QSGRendererInterface::CommandListResource));
- Q_ASSERT(commandList);
-
- const int msize = 16 * sizeof(float);
- memcpy(cbPtr, matrix()->constData(), msize);
- memcpy(cbPtr + msize, state->projectionMatrix()->constData(), msize);
- const float opacity = inheritedOpacity();
- memcpy(cbPtr + 2 * msize, &opacity, sizeof(float));
-
- const QPointF p0(m_width - 1, m_height - 1);
- const QPointF p1(0, 0);
- const QPointF p2(0, m_height - 1);
-
- float *vp = reinterpret_cast<float *>(vbPtr);
- *vp++ = p0.x();
- *vp++ = p0.y();
- vp += 3;
- *vp++ = p1.x();
- *vp++ = p1.y();
- vp += 3;
- *vp++ = p2.x();
- *vp++ = p2.y();
-
- commandList->SetPipelineState(pipelineState.Get());
- commandList->SetGraphicsRootSignature(rootSignature.Get());
- commandList->SetGraphicsRootConstantBufferView(0, constantBuffer->GetGPUVirtualAddress());
- commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
- commandList->IASetVertexBuffers(0, 1, &vertexBufferView);
-
- commandList->DrawInstanced(3, 1, 0, 0);
-}
-
-// No need to reimplement changedStates() because no relevant commands are
-// added to the command list in render().
-
-QSGRenderNode::RenderingFlags D3D12RenderNode::flags() const
-{
- return BoundedRectRendering | DepthAwareRendering;
-}
-
-QRectF D3D12RenderNode::rect() const
-{
- return QRect(0, 0, m_width, m_height);
-}
-
-void D3D12RenderNode::sync(QQuickItem *item)
-{
- m_window = item->window();
- m_width = item->width();
- m_height = item->height();
-}
-
-#endif // d3d12
diff --git a/examples/quick/scenegraph/rendernode/doc/src/rendernode.qdoc b/examples/quick/scenegraph/rendernode/doc/src/rendernode.qdoc
index ba6551fddf..87e3c8b506 100644
--- a/examples/quick/scenegraph/rendernode/doc/src/rendernode.qdoc
+++ b/examples/quick/scenegraph/rendernode/doc/src/rendernode.qdoc
@@ -69,7 +69,7 @@
Let's go through the most important parts of the code:
- \snippet scenegraph/rendernode/main.cpp 1
+ \snippet scenegraph/rendernode/customrenderitem.h 0
Our custom QML type is implemented in the class CustomRenderItem.
diff --git a/examples/quick/scenegraph/rendernode/main.cpp b/examples/quick/scenegraph/rendernode/main.cpp
index b1dfe47829..645360eaba 100644
--- a/examples/quick/scenegraph/rendernode/main.cpp
+++ b/examples/quick/scenegraph/rendernode/main.cpp
@@ -58,10 +58,6 @@ int main(int argc, char **argv)
{
QGuiApplication app(argc, argv);
-//! [1]
- qmlRegisterTypesAndRevisions<CustomRenderItem>("SceneGraphRendering", 2);
-//! [1]
-
QQuickView view;
QCoreApplication::setApplicationName("Qt Scene Graph Render Node Example");
diff --git a/examples/quick/scenegraph/rendernode/main.qml b/examples/quick/scenegraph/rendernode/main.qml
index 153a71e097..2c407796cf 100644
--- a/examples/quick/scenegraph/rendernode/main.qml
+++ b/examples/quick/scenegraph/rendernode/main.qml
@@ -143,7 +143,6 @@ Item {
var apiStr;
switch (api) {
case GraphicsInfo.OpenGL: apiStr = "OpenGL (direct)"; break;
- case GraphicsInfo.Direct3D12: apiStr = "Direct3D 12 (direct)"; break;
case GraphicsInfo.Software: apiStr = "Software (QPainter)"; break;
case GraphicsInfo.OpenGLRhi: apiStr = "OpenGL (RHI)"; break;
case GraphicsInfo.MetalRhi: apiStr = "Metal (RHI)"; break;
diff --git a/examples/quick/scenegraph/rendernode/rendernode.pro b/examples/quick/scenegraph/rendernode/rendernode.pro
index 897b0b1f08..4ae46de2a4 100644
--- a/examples/quick/scenegraph/rendernode/rendernode.pro
+++ b/examples/quick/scenegraph/rendernode/rendernode.pro
@@ -1,5 +1,9 @@
QT += qml quick
+CONFIG += qmltypes
+QML_IMPORT_NAME = SceneGraphRendering
+QML_IMPORT_MAJOR_VERSION = 2
+
HEADERS += customrenderitem.h \
openglrenderer.h \
softwarerenderer.h
@@ -17,12 +21,6 @@ INSTALLS += target
OTHER_FILES += \
main.qml
-qtConfig(d3d12) {
- HEADERS += d3d12renderer.h
- SOURCES += d3d12renderer.cpp
- LIBS += -ld3d12
-}
-
macos {
HEADERS += metalrenderer.h
SOURCES += metalrenderer.mm
diff --git a/examples/quick/scenegraph/rendernode/rendernode.qrc b/examples/quick/scenegraph/rendernode/rendernode.qrc
index 5907eab62c..a93fd0270f 100644
--- a/examples/quick/scenegraph/rendernode/rendernode.qrc
+++ b/examples/quick/scenegraph/rendernode/rendernode.qrc
@@ -1,8 +1,6 @@
<RCC>
<qresource prefix="/scenegraph/rendernode">
<file>main.qml</file>
- <file>shader_vert.cso</file>
- <file>shader_frag.cso</file>
<file>metalshader.vert</file>
<file>metalshader.frag</file>
</qresource>
diff --git a/examples/quick/scenegraph/rendernode/shader_frag.cso b/examples/quick/scenegraph/rendernode/shader_frag.cso
deleted file mode 100644
index 686c6af3fc..0000000000
--- a/examples/quick/scenegraph/rendernode/shader_frag.cso
+++ /dev/null
Binary files differ
diff --git a/examples/quick/scenegraph/rendernode/shader_vert.cso b/examples/quick/scenegraph/rendernode/shader_vert.cso
deleted file mode 100644
index fa13be5160..0000000000
--- a/examples/quick/scenegraph/rendernode/shader_vert.cso
+++ /dev/null
Binary files differ
diff --git a/examples/quick/scenegraph/rendernode/softwarerenderer.cpp b/examples/quick/scenegraph/rendernode/softwarerenderer.cpp
index bba364ac97..a0f288d575 100644
--- a/examples/quick/scenegraph/rendernode/softwarerenderer.cpp
+++ b/examples/quick/scenegraph/rendernode/softwarerenderer.cpp
@@ -95,7 +95,7 @@ void SoftwareRenderNode::render(const RenderState *renderState)
QSGRenderNode::StateFlags SoftwareRenderNode::changedStates() const
{
- return nullptr;
+ return {};
}
QSGRenderNode::RenderingFlags SoftwareRenderNode::flags() const
diff --git a/examples/quick/scenegraph/scenegraph.pro b/examples/quick/scenegraph/scenegraph.pro
index 5fea3b974a..08ca18fa0c 100644
--- a/examples/quick/scenegraph/scenegraph.pro
+++ b/examples/quick/scenegraph/scenegraph.pro
@@ -16,7 +16,7 @@ SUBDIRS += \
rendernode \
threadedanimation
-macos {
+macos|ios {
SUBDIRS += \
metalunderqml \
metaltextureimport
@@ -27,7 +27,9 @@ win32 {
}
qtConfig(vulkan) {
- SUBDIRS += vulkanunderqml
+ SUBDIRS += \
+ vulkanunderqml \
+ vulkantextureimport
}
EXAMPLE_FILES += \
diff --git a/examples/quick/scenegraph/simplematerial/doc/src/simplematerial.qdoc b/examples/quick/scenegraph/simplematerial/doc/src/simplematerial.qdoc
index 67ca2d8dbd..d7de1613e4 100644
--- a/examples/quick/scenegraph/simplematerial/doc/src/simplematerial.qdoc
+++ b/examples/quick/scenegraph/simplematerial/doc/src/simplematerial.qdoc
@@ -47,7 +47,7 @@
material state is what we assign to each individual node; in this
case to give them different colors.
- \snippet scenegraph/simplematerial/simplematerial.cpp 1
+ \snippet scenegraph/simplematerial/simplematerialitem.cpp 1
The first thing we do when creating custom materials with the
simplified scheme is to create a state class. In this case the
@@ -55,7 +55,7 @@
compare function which the scene graph can use to reorder the node
rendering.
- \snippet scenegraph/simplematerial/simplematerial.cpp 2
+ \snippet scenegraph/simplematerial/simplematerialitem.cpp 2
Next we define the material shader, by subclassing a template
instantiation of \l QSGSimpleMaterialShader with our \c State.
@@ -74,21 +74,21 @@
classes. Using the same \c State class in multiple shaders will
will lead to undefined behavior.
- \snippet scenegraph/simplematerial/simplematerial.cpp 3
+ \snippet scenegraph/simplematerial/simplematerialitem.cpp 3
Next comes the declaration of the shader source code, where we
define a vertex and fragment shader. The simple material assumes
the presence of \c qt_Matrix in the vertex shader and \c
qt_Opacity in the fragment shader.
- \snippet scenegraph/simplematerial/simplematerial.cpp 4
+ \snippet scenegraph/simplematerial/simplematerialitem.cpp 4
We reimplement the \c attributes function to return the name of
the \c aVertex and \c aTexCoord attributes. These attributes
will be mapped to attribute indices 0 and 1 in the node's
geometry.
- \snippet scenegraph/simplematerial/simplematerial.cpp 6
+ \snippet scenegraph/simplematerial/simplematerialitem.cpp 6
Uniforms can be accessed either by name or by index, where index
is faster than name. We reimplement the \c resolveUniforms()
@@ -96,7 +96,7 @@
to worry about resolving \c qt_Opacity or \c qt_Matrix as these
are handled by the baseclass.
- \snippet scenegraph/simplematerial/simplematerial.cpp 5
+ \snippet scenegraph/simplematerial/simplematerialitem.cpp 5
The \c updateState() function is called once for every unique
state and we use it to update the shader program with the current
@@ -105,7 +105,7 @@
use case, where all the colors are different, the updateState()
function will be called once for every node.
- \snippet scenegraph/simplematerial/simplematerial.cpp 7
+ \snippet scenegraph/simplematerial/simplematerialitem.cpp 7
The \c ColorNode class is supposed to draw something, so it needs
to be a subclass of \l QSGGeometryNode.
@@ -129,12 +129,13 @@
Finally, we tell the node to take ownership of the material, so we
do not have to explicitly memory-manage it.
- \snippet scenegraph/simplematerial/simplematerial.cpp 8
+ \snippet scenegraph/simplematerial/simplematerialitem.h 8
Since the Item is providing its own graphics to the scene graph,
- we set the flag \l QQuickItem::ItemHasContents.
+ we set the flag \l QQuickItem::ItemHasContents. We also make sure
+ the item is exposed to QML by adding the QML_ELEMENT macro.
- \snippet scenegraph/simplematerial/simplematerial.cpp 9
+ \snippet scenegraph/simplematerial/simplematerialitem.cpp 9
Whenever the Item has changed graphically, the \l
QQuickItem::updatePaintNode() function is called.
@@ -159,9 +160,8 @@
\snippet scenegraph/simplematerial/simplematerial.cpp 11
- The \c main() function of the application adds the custom QML type
- using \l qmlRegisterType() and opens up a \l QQuickView with our
- QML file.
+ The \c main() function of the application opens up a \l QQuickView
+ with our QML file.
\snippet scenegraph/simplematerial/main.qml 1
diff --git a/examples/quick/scenegraph/simplematerial/simplematerial.cpp b/examples/quick/scenegraph/simplematerial/simplematerial.cpp
index 55e1d879ca..35866bd6d0 100644
--- a/examples/quick/scenegraph/simplematerial/simplematerial.cpp
+++ b/examples/quick/scenegraph/simplematerial/simplematerial.cpp
@@ -49,163 +49,13 @@
****************************************************************************/
#include <qguiapplication.h>
-
-#include <qsgmaterial.h>
-#include <qsgnode.h>
-
-#include <qquickitem.h>
#include <qquickview.h>
-#include <qsgsimplerectnode.h>
-
-#include <qsgsimplematerial.h>
-
-//! [1]
-struct State
-{
- QColor color;
-
- int compare(const State *other) const {
- uint rgb = color.rgba();
- uint otherRgb = other->color.rgba();
-
- if (rgb == otherRgb) {
- return 0;
- } else if (rgb < otherRgb) {
- return -1;
- } else {
- return 1;
- }
- }
-};
-//! [1]
-
-//! [2]
-class Shader : public QSGSimpleMaterialShader<State>
-{
- QSG_DECLARE_SIMPLE_COMPARABLE_SHADER(Shader, State);
-//! [2] //! [3]
-public:
-
- const char *vertexShader() const override {
- return
- "attribute highp vec4 aVertex; \n"
- "attribute highp vec2 aTexCoord; \n"
- "uniform highp mat4 qt_Matrix; \n"
- "varying highp vec2 texCoord; \n"
- "void main() { \n"
- " gl_Position = qt_Matrix * aVertex; \n"
- " texCoord = aTexCoord; \n"
- "}";
- }
-
- const char *fragmentShader() const override {
- return
- "uniform lowp float qt_Opacity; \n"
- "uniform lowp vec4 color; \n"
- "varying highp vec2 texCoord; \n"
- "void main () \n"
- "{ \n"
- " gl_FragColor = texCoord.y * texCoord.x * color * qt_Opacity; \n"
- "}";
- }
-//! [3] //! [4]
- QList<QByteArray> attributes() const override
- {
- return QList<QByteArray>() << "aVertex" << "aTexCoord";
- }
-//! [4] //! [5]
- void updateState(const State *state, const State *) override
- {
- program()->setUniformValue(id_color, state->color);
- }
-//! [5] //! [6]
- void resolveUniforms() override
- {
- id_color = program()->uniformLocation("color");
- }
-
-private:
- int id_color;
-//! [6]
-};
-
-
-//! [7]
-class ColorNode : public QSGGeometryNode
-{
-public:
- ColorNode()
- : m_geometry(QSGGeometry::defaultAttributes_TexturedPoint2D(), 4)
- {
- setGeometry(&m_geometry);
-
- QSGSimpleMaterial<State> *material = Shader::createMaterial();
- material->setFlag(QSGMaterial::Blending);
- setMaterial(material);
- setFlag(OwnsMaterial);
- }
-
- QSGGeometry m_geometry;
-};
-//! [7]
-
-
-//! [8]
-class Item : public QQuickItem
-{
- Q_OBJECT
-
- Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged)
- QML_NAMED_ELEMENT(SimpleMaterialItem)
-
-public:
-
- Item()
- {
- setFlag(ItemHasContents, true);
- }
-
- void setColor(const QColor &color) {
- if (m_color != color) {
- m_color = color;
- emit colorChanged();
- update();
- }
- }
- QColor color() const {
- return m_color;
- }
-
-signals:
- void colorChanged();
-
-private:
- QColor m_color;
-
-//! [8] //! [9]
-public:
- QSGNode *updatePaintNode(QSGNode *node, UpdatePaintNodeData *) override
- {
- ColorNode *n = static_cast<ColorNode *>(node);
- if (!node)
- n = new ColorNode();
-
- QSGGeometry::updateTexturedRectGeometry(n->geometry(), boundingRect(), QRectF(0, 0, 1, 1));
- static_cast<QSGSimpleMaterial<State>*>(n->material())->state()->color = m_color;
-
- n->markDirty(QSGNode::DirtyGeometry | QSGNode::DirtyMaterial);
-
- return n;
- }
-};
-//! [9] //! [11]
+//! [11]
int main(int argc, char **argv)
{
QGuiApplication app(argc, argv);
- qmlRegisterTypesAndRevisions<Item>("SimpleMaterial", 1);
-
QQuickView view;
view.setResizeMode(QQuickView::SizeRootObjectToView);
view.setSource(QUrl("qrc:///scenegraph/simplematerial/main.qml"));
@@ -213,6 +63,4 @@ int main(int argc, char **argv)
return app.exec();
}
-
-#include "simplematerial.moc"
//! [11]
diff --git a/examples/quick/scenegraph/simplematerial/simplematerial.pro b/examples/quick/scenegraph/simplematerial/simplematerial.pro
index 6ae935f357..131af45974 100644
--- a/examples/quick/scenegraph/simplematerial/simplematerial.pro
+++ b/examples/quick/scenegraph/simplematerial/simplematerial.pro
@@ -1,8 +1,13 @@
QT += quick
+CONFIG += qmltypes
+QML_IMPORT_NAME = SimpleMaterial
+QML_IMPORT_MAJOR_VERSION = 1
+
SOURCES += \
- simplematerial.cpp
+ simplematerial.cpp \
+ simplematerialitem.cpp
RESOURCES += simplematerial.qrc
target.path = $$[QT_INSTALL_EXAMPLES]/quick/scenegraph/simplematerial
@@ -10,3 +15,6 @@ qml.files = main.qml
qml.path = $$[QT_INSTALL_EXAMPLES]/quick/scenegraph/simplematerial
INSTALLS += target qml
+
+HEADERS += \
+ simplematerialitem.h
diff --git a/examples/quick/scenegraph/simplematerial/simplematerialitem.cpp b/examples/quick/scenegraph/simplematerial/simplematerialitem.cpp
new file mode 100644
index 0000000000..c4c7b2e07e
--- /dev/null
+++ b/examples/quick/scenegraph/simplematerial/simplematerialitem.cpp
@@ -0,0 +1,169 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "simplematerialitem.h"
+
+#include <QtQuick/qsgsimplematerial.h>
+#include <QtQuick/qsggeometry.h>
+#include <QtQuick/qsgnode.h>
+
+//! [1]
+struct State
+{
+ QColor color;
+
+ int compare(const State *other) const {
+ uint rgb = color.rgba();
+ uint otherRgb = other->color.rgba();
+
+ if (rgb == otherRgb) {
+ return 0;
+ } else if (rgb < otherRgb) {
+ return -1;
+ } else {
+ return 1;
+ }
+ }
+};
+//! [1]
+
+//! [2]
+class Shader : public QSGSimpleMaterialShader<State>
+{
+ QSG_DECLARE_SIMPLE_COMPARABLE_SHADER(Shader, State);
+//! [2] //! [3]
+public:
+
+ const char *vertexShader() const override {
+ return
+ "attribute highp vec4 aVertex; \n"
+ "attribute highp vec2 aTexCoord; \n"
+ "uniform highp mat4 qt_Matrix; \n"
+ "varying highp vec2 texCoord; \n"
+ "void main() { \n"
+ " gl_Position = qt_Matrix * aVertex; \n"
+ " texCoord = aTexCoord; \n"
+ "}";
+ }
+
+ const char *fragmentShader() const override {
+ return
+ "uniform lowp float qt_Opacity; \n"
+ "uniform lowp vec4 color; \n"
+ "varying highp vec2 texCoord; \n"
+ "void main () \n"
+ "{ \n"
+ " gl_FragColor = texCoord.y * texCoord.x * color * qt_Opacity; \n"
+ "}";
+ }
+//! [3] //! [4]
+ QList<QByteArray> attributes() const override
+ {
+ return QList<QByteArray>() << "aVertex" << "aTexCoord";
+ }
+//! [4] //! [5]
+ void updateState(const State *state, const State *) override
+ {
+ program()->setUniformValue(id_color, state->color);
+ }
+//! [5] //! [6]
+ void resolveUniforms() override
+ {
+ id_color = program()->uniformLocation("color");
+ }
+
+private:
+ int id_color;
+//! [6]
+};
+
+
+//! [7]
+class ColorNode : public QSGGeometryNode
+{
+public:
+ ColorNode()
+ : m_geometry(QSGGeometry::defaultAttributes_TexturedPoint2D(), 4)
+ {
+ setGeometry(&m_geometry);
+
+ QSGSimpleMaterial<State> *material = Shader::createMaterial();
+ material->setFlag(QSGMaterial::Blending);
+ setMaterial(material);
+ setFlag(OwnsMaterial);
+ }
+
+ QSGGeometry m_geometry;
+};
+//! [7]
+
+void SimpleMaterialItem::setColor(const QColor &color) {
+ if (m_color != color) {
+ m_color = color;
+ emit colorChanged();
+ update();
+ }
+}
+
+//! [9]
+QSGNode *SimpleMaterialItem::updatePaintNode(QSGNode *node, QQuickItem::UpdatePaintNodeData *)
+{
+ ColorNode *n = static_cast<ColorNode *>(node);
+ if (!node)
+ n = new ColorNode();
+
+ QSGGeometry::updateTexturedRectGeometry(n->geometry(), boundingRect(), QRectF(0, 0, 1, 1));
+ static_cast<QSGSimpleMaterial<State>*>(n->material())->state()->color = m_color;
+
+ n->markDirty(QSGNode::DirtyGeometry | QSGNode::DirtyMaterial);
+
+ return n;
+}
+//! [9]
diff --git a/tests/manual/nodetypes/LotsOfImages.qml b/examples/quick/scenegraph/simplematerial/simplematerialitem.h
index 72c36aba01..5775ad097b 100644
--- a/tests/manual/nodetypes/LotsOfImages.qml
+++ b/examples/quick/scenegraph/simplematerial/simplematerialitem.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -48,36 +48,35 @@
**
****************************************************************************/
-import QtQuick 2.3
+#ifndef SIMPLEMATERIALITEM_H
+#define SIMPLEMATERIALITEM_H
-Item {
- Grid {
- columns: 20
- spacing: 4
- anchors.centerIn: parent
+#include <QtQuick/qquickitem.h>
- Repeater {
- model: 500
+//! [8]
+class SimpleMaterialItem : public QQuickItem
+{
+ Q_OBJECT
- Image {
- source: "qrc:/qt.png"
+ Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged)
+ QML_ELEMENT
- // async true, cache false -> there is a separate, new texture for each and every image
- // and the pixel data reading is done over and over again on a separate thread.
- asynchronous: true
- cache: false
+public:
- width: 20
- height: 20
- }
- }
- }
+ SimpleMaterialItem() { setFlag(ItemHasContents, true); }
- Rectangle {
- width: 100
- height: 100
- anchors.centerIn: parent
- color: "red"
- NumberAnimation on rotation { from: 0; to: 360; duration: 2000; loops: Animation.Infinite; }
- }
-}
+ void setColor(const QColor &color);
+ QColor color() const { return m_color; }
+
+signals:
+ void colorChanged();
+
+private:
+ QColor m_color;
+
+public:
+ QSGNode *updatePaintNode(QSGNode *node, UpdatePaintNodeData *) override;
+};
+//! [8]
+
+#endif // SIMPLEMATERIALITEM_H
diff --git a/examples/quick/scenegraph/textureinthread/main.cpp b/examples/quick/scenegraph/textureinthread/main.cpp
index 7c22fa7fdf..cb00946bf7 100644
--- a/examples/quick/scenegraph/textureinthread/main.cpp
+++ b/examples/quick/scenegraph/textureinthread/main.cpp
@@ -70,7 +70,6 @@ int main(int argc, char **argv)
return app.exec();
}
- qmlRegisterTypesAndRevisions<ThreadRenderer>("SceneGraphRendering", 1);
int execReturn = 0;
{
diff --git a/examples/quick/scenegraph/textureinthread/textureinthread.pro b/examples/quick/scenegraph/textureinthread/textureinthread.pro
index 7f5fbb76e9..4d41daa7bf 100644
--- a/examples/quick/scenegraph/textureinthread/textureinthread.pro
+++ b/examples/quick/scenegraph/textureinthread/textureinthread.pro
@@ -3,6 +3,10 @@ QT += quick
# To make threaded gl check...
QT += core-private gui-private
+CONFIG += qmltypes
+QML_IMPORT_NAME = SceneGraphRendering
+QML_IMPORT_MAJOR_VERSION = 1
+
HEADERS += threadrenderer.h
SOURCES += threadrenderer.cpp main.cpp
diff --git a/examples/quick/scenegraph/threadedanimation/main.cpp b/examples/quick/scenegraph/threadedanimation/main.cpp
index c77a291f5d..85ff486b16 100644
--- a/examples/quick/scenegraph/threadedanimation/main.cpp
+++ b/examples/quick/scenegraph/threadedanimation/main.cpp
@@ -57,8 +57,6 @@ int main(int argc, char **argv)
{
QGuiApplication app(argc, argv);
- qmlRegisterTypesAndRevisions<Spinner>("Spinner", 1);
-
QQuickView view;
view.setSource(QUrl("qrc:///scenegraph/threadedanimation/main.qml"));
view.show();
diff --git a/examples/quick/scenegraph/threadedanimation/threadedanimation.pro b/examples/quick/scenegraph/threadedanimation/threadedanimation.pro
index 419ee97e2e..3caf3fa94b 100644
--- a/examples/quick/scenegraph/threadedanimation/threadedanimation.pro
+++ b/examples/quick/scenegraph/threadedanimation/threadedanimation.pro
@@ -1,5 +1,9 @@
QT += qml quick
+CONFIG += qmltypes
+QML_IMPORT_NAME = Spinner
+QML_IMPORT_MAJOR_VERSION = 1
+
HEADERS += spinner.h
SOURCES += spinner.cpp main.cpp
RESOURCES += threadedanimation.qrc
diff --git a/examples/quick/scenegraph/twotextureproviders/main.cpp b/examples/quick/scenegraph/twotextureproviders/main.cpp
index 3f53bb6e32..df0454ce40 100644
--- a/examples/quick/scenegraph/twotextureproviders/main.cpp
+++ b/examples/quick/scenegraph/twotextureproviders/main.cpp
@@ -58,8 +58,6 @@ int main(int argc, char **argv)
{
QGuiApplication app(argc, argv);
- qmlRegisterTypesAndRevisions<XorBlender>("SceneGraphRendering", 1);
-
QQuickView view;
view.setResizeMode(QQuickView::SizeRootObjectToView);
view.setSource(QUrl("qrc:///scenegraph/twotextureproviders/main.qml"));
diff --git a/examples/quick/scenegraph/twotextureproviders/twotextureproviders.pro b/examples/quick/scenegraph/twotextureproviders/twotextureproviders.pro
index 7b7c093b48..b87a0a2611 100644
--- a/examples/quick/scenegraph/twotextureproviders/twotextureproviders.pro
+++ b/examples/quick/scenegraph/twotextureproviders/twotextureproviders.pro
@@ -1,5 +1,9 @@
QT += qml quick
+CONFIG += qmltypes
+QML_IMPORT_NAME = SceneGraphRendering
+QML_IMPORT_MAJOR_VERSION = 1
+
HEADERS += xorblender.h
SOURCES += xorblender.cpp main.cpp
diff --git a/examples/quick/scenegraph/vulkantextureimport/doc/images/vulkantextureimport-example.jpg b/examples/quick/scenegraph/vulkantextureimport/doc/images/vulkantextureimport-example.jpg
new file mode 100644
index 0000000000..e7bbe62bf3
--- /dev/null
+++ b/examples/quick/scenegraph/vulkantextureimport/doc/images/vulkantextureimport-example.jpg
Binary files differ
diff --git a/examples/quick/scenegraph/vulkantextureimport/doc/src/vulkantextureimport.qdoc b/examples/quick/scenegraph/vulkantextureimport/doc/src/vulkantextureimport.qdoc
new file mode 100644
index 0000000000..334291f990
--- /dev/null
+++ b/examples/quick/scenegraph/vulkantextureimport/doc/src/vulkantextureimport.qdoc
@@ -0,0 +1,48 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://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: https://www.gnu.org/licenses/fdl-1.3.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example scenegraph/vulkantextureimport
+ \title Scene Graph - Vulkan Texture Import
+ \ingroup qtquickexamples
+ \brief Shows how to use a texture created directly with use a texture created directly withulkan.
+
+ \image vulkantextureimport-example.jpg
+
+
+ The Vulkan Texture Import example shows how an application can import and
+ use a
+ \l{https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImage.html}
+ {VkImage} in the Qt Quick scene. This provides an alternative to the \l{Scene Graph -
+ Vulkan Under QML}{underlay}, overlay, or \l{Scene Graph - Custom Rendering
+ with QSGRenderNode}{render node} approaches when it comes to integrating
+ native Vulkan rendering.
+
+ This example is equivalent in most ways to the \l{Scene Graph - Metal Texture Import}{Metal Texture Import}
+ example. The Vulkan rendering code is taken from the \l{Scene Graph - Vulkan Under QML}{Vulkan Under QML} example.
+
+ */
diff --git a/examples/qml/tutorials/extending-qml/chapter6-plugins/import/chartsplugin.cpp b/examples/quick/scenegraph/vulkantextureimport/main.cpp
index 74d382ec57..1c42e87043 100644
--- a/examples/qml/tutorials/extending-qml/chapter6-plugins/import/chartsplugin.cpp
+++ b/examples/quick/scenegraph/vulkantextureimport/main.cpp
@@ -1,9 +1,9 @@
/****************************************************************************
**
-** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
-** This file is part of the documentation of the Qt Toolkit.
+** This file is part of the demonstration applications of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
@@ -47,16 +47,24 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-#include "chartsplugin.h"
-//![0]
-#include "piechart.h"
-#include "pieslice.h"
-#include <qqml.h>
-void ChartsPlugin::registerTypes(const char *uri)
+#include <QGuiApplication>
+#include <QtQuick/QQuickView>
+#include "vulkantextureimport.h"
+
+int main(int argc, char **argv)
{
- qmlRegisterTypesAndRevisions<PieChart, PieSlice>(uri, 1);
-}
+ QGuiApplication app(argc, argv);
+
+ qmlRegisterType<CustomTextureItem>("VulkanTextureImport", 1, 0, "CustomTextureItem");
-//![0]
+ QQuickWindow::setSceneGraphBackend(QSGRendererInterface::VulkanRhi);
+ QQuickView view;
+ view.setResizeMode(QQuickView::SizeRootObjectToView);
+ view.setSource(QUrl("qrc:///scenegraph/vulkantextureimport/main.qml"));
+ view.resize(400, 400);
+ view.show();
+
+ return app.exec();
+}
diff --git a/examples/quick/scenegraph/vulkantextureimport/main.qml b/examples/quick/scenegraph/vulkantextureimport/main.qml
new file mode 100644
index 0000000000..91adf4c394
--- /dev/null
+++ b/examples/quick/scenegraph/vulkantextureimport/main.qml
@@ -0,0 +1,123 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+//! [1]
+import VulkanTextureImport 1.0
+//! [1]
+
+Rectangle {
+ gradient: Gradient {
+ GradientStop { position: 0; color: "firebrick" }
+ GradientStop { position: 1; color: "black" }
+ }
+
+ //! [2]
+ CustomTextureItem {
+ id: renderer
+ anchors.fill: parent
+ anchors.margins: 10
+
+ SequentialAnimation on t {
+ NumberAnimation { to: 1; duration: 2500; easing.type: Easing.InQuad }
+ NumberAnimation { to: 0; duration: 2500; easing.type: Easing.OutQuad }
+ loops: Animation.Infinite
+ running: true
+ }
+ //! [2]
+
+ transform: [
+ Rotation { id: rotation; axis.x: 0; axis.z: 0; axis.y: 1; angle: 0; origin.x: renderer.width / 2; origin.y: renderer.height / 2; },
+ Translate { id: txOut; x: -renderer.width / 2; y: -renderer.height / 2 },
+ Scale { id: scale; },
+ Translate { id: txIn; x: renderer.width / 2; y: renderer.height / 2 }
+ ]
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 5000 }
+ ParallelAnimation {
+ NumberAnimation { target: scale; property: "xScale"; to: 0.6; duration: 1000; easing.type: Easing.InOutBack }
+ NumberAnimation { target: scale; property: "yScale"; to: 0.6; duration: 1000; easing.type: Easing.InOutBack }
+ }
+ NumberAnimation { target: rotation; property: "angle"; to: 80; duration: 1000; easing.type: Easing.InOutCubic }
+ NumberAnimation { target: rotation; property: "angle"; to: -80; duration: 1000; easing.type: Easing.InOutCubic }
+ NumberAnimation { target: rotation; property: "angle"; to: 0; duration: 1000; easing.type: Easing.InOutCubic }
+ NumberAnimation { target: renderer; property: "opacity"; to: 0.1; duration: 1000; easing.type: Easing.InOutCubic }
+ PauseAnimation { duration: 1000 }
+ NumberAnimation { target: renderer; property: "opacity"; to: 1.0; duration: 1000; easing.type: Easing.InOutCubic }
+ ParallelAnimation {
+ NumberAnimation { target: scale; property: "xScale"; to: 1; duration: 1000; easing.type: Easing.InOutBack }
+ NumberAnimation { target: scale; property: "yScale"; to: 1; duration: 1000; easing.type: Easing.InOutBack }
+ }
+ running: true
+ loops: Animation.Infinite
+ }
+
+ Rectangle {
+ id: labelFrame
+ anchors.margins: -10
+ radius: 5
+ color: "white"
+ border.color: "black"
+ opacity: 0.5
+ anchors.fill: label
+ }
+
+ Text {
+ id: label
+ anchors.bottom: renderer.bottom
+ anchors.left: renderer.left
+ anchors.right: renderer.right
+ anchors.margins: 20
+ wrapMode: Text.WordWrap
+ text: "The squircle, using rendering code borrowed from the vulkanunderqml example, is rendered into a texture directly with Vulkan. The VkImage is then imported and used in a custom Qt Quick item."
+ }
+}
diff --git a/examples/quick/scenegraph/vulkantextureimport/squircle.frag.spv b/examples/quick/scenegraph/vulkantextureimport/squircle.frag.spv
new file mode 100644
index 0000000000..e4d13a871d
--- /dev/null
+++ b/examples/quick/scenegraph/vulkantextureimport/squircle.frag.spv
Binary files differ
diff --git a/examples/quick/scenegraph/vulkantextureimport/squircle.vert.spv b/examples/quick/scenegraph/vulkantextureimport/squircle.vert.spv
new file mode 100644
index 0000000000..5df94a47e4
--- /dev/null
+++ b/examples/quick/scenegraph/vulkantextureimport/squircle.vert.spv
Binary files differ
diff --git a/examples/quick/scenegraph/vulkantextureimport/vulkantextureimport.cpp b/examples/quick/scenegraph/vulkantextureimport/vulkantextureimport.cpp
new file mode 100644
index 0000000000..a4201c1dfa
--- /dev/null
+++ b/examples/quick/scenegraph/vulkantextureimport/vulkantextureimport.cpp
@@ -0,0 +1,823 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "vulkantextureimport.h"
+
+#include <QtGui/QScreen>
+#include <QtQuick/QQuickWindow>
+#include <QtQuick/QSGTextureProvider>
+#include <QtQuick/QSGSimpleTextureNode>
+
+#include <QVulkanInstance>
+#include <QVulkanFunctions>
+
+class CustomTextureNode : public QSGTextureProvider, public QSGSimpleTextureNode
+{
+ Q_OBJECT
+
+public:
+ CustomTextureNode(QQuickItem *item);
+ ~CustomTextureNode() override;
+
+ QSGTexture *texture() const override;
+
+ void sync();
+
+private slots:
+ void render();
+
+private:
+ enum Stage {
+ VertexStage,
+ FragmentStage
+ };
+ void prepareShader(Stage stage);
+ bool buildTexture(const QSize &size);
+ void freeTexture();
+ bool createRenderPass();
+ bool initialize();
+
+ QQuickItem *m_item;
+ QQuickWindow *m_window;
+ QSize m_size;
+ qreal m_dpr;
+
+ QByteArray m_vert;
+ QByteArray m_frag;
+
+ VkImage m_texture = VK_NULL_HANDLE;
+ VkDeviceMemory m_textureMemory = VK_NULL_HANDLE;
+ VkFramebuffer m_textureFramebuffer = VK_NULL_HANDLE;
+ VkImageView m_textureView = VK_NULL_HANDLE;
+
+ bool m_initialized = false;
+
+ float m_t;
+
+ VkPhysicalDevice m_physDev = VK_NULL_HANDLE;
+ VkDevice m_dev = VK_NULL_HANDLE;
+ QVulkanDeviceFunctions *m_devFuncs = nullptr;
+ QVulkanFunctions *m_funcs = nullptr;
+
+ VkBuffer m_vbuf = VK_NULL_HANDLE;
+ VkDeviceMemory m_vbufMem = VK_NULL_HANDLE;
+ VkBuffer m_ubuf = VK_NULL_HANDLE;
+ VkDeviceMemory m_ubufMem = VK_NULL_HANDLE;
+ VkDeviceSize m_allocPerUbuf = 0;
+
+ VkPipelineCache m_pipelineCache = VK_NULL_HANDLE;
+
+ VkPipelineLayout m_pipelineLayout = VK_NULL_HANDLE;
+ VkDescriptorSetLayout m_resLayout = VK_NULL_HANDLE;
+ VkPipeline m_pipeline = VK_NULL_HANDLE;
+
+ VkDescriptorPool m_descriptorPool = VK_NULL_HANDLE;
+ VkDescriptorSet m_ubufDescriptor = VK_NULL_HANDLE;
+
+ VkRenderPass m_renderPass = VK_NULL_HANDLE;
+};
+
+CustomTextureItem::CustomTextureItem()
+{
+ setFlag(ItemHasContents, true);
+}
+
+void CustomTextureItem::invalidateSceneGraph() // called on the render thread when the scenegraph is invalidated
+{
+ m_node = nullptr;
+}
+
+void CustomTextureItem::releaseResources() // called on the gui thread if the item is removed from scene
+{
+ m_node = nullptr;
+}
+
+QSGNode *CustomTextureItem::updatePaintNode(QSGNode *node, UpdatePaintNodeData *)
+{
+ CustomTextureNode *n = static_cast<CustomTextureNode *>(node);
+
+ if (!n && (width() <= 0 || height() <= 0))
+ return nullptr;
+
+ if (!n) {
+ m_node = new CustomTextureNode(this);
+ n = m_node;
+ }
+
+ m_node->sync();
+
+ n->setTextureCoordinatesTransform(QSGSimpleTextureNode::NoTransform);
+ n->setFiltering(QSGTexture::Linear);
+ n->setRect(0, 0, width(), height());
+
+ window()->update(); // ensure getting to beforeRendering() at some point
+
+ return n;
+}
+
+void CustomTextureItem::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
+{
+ QQuickItem::geometryChanged(newGeometry, oldGeometry);
+
+ if (newGeometry.size() != oldGeometry.size())
+ update();
+}
+
+void CustomTextureItem::setT(qreal t)
+{
+ if (t == m_t)
+ return;
+
+ m_t = t;
+ emit tChanged();
+
+ update();
+}
+
+CustomTextureNode::CustomTextureNode(QQuickItem *item)
+ : m_item(item)
+{
+ m_window = m_item->window();
+ connect(m_window, &QQuickWindow::beforeRendering, this, &CustomTextureNode::render);
+ connect(m_window, &QQuickWindow::screenChanged, this, [this]() {
+ if (m_window->effectiveDevicePixelRatio() != m_dpr)
+ m_item->update();
+ });
+}
+
+CustomTextureNode::~CustomTextureNode()
+{
+ m_devFuncs->vkDestroyBuffer(m_dev, m_vbuf, nullptr);
+ m_devFuncs->vkDestroyBuffer(m_dev, m_ubuf, nullptr);
+ m_devFuncs->vkFreeMemory(m_dev, m_vbufMem, nullptr);
+ m_devFuncs->vkFreeMemory(m_dev, m_ubufMem, nullptr);
+
+ m_devFuncs->vkDestroyPipelineCache(m_dev, m_pipelineCache, nullptr);
+ m_devFuncs->vkDestroyPipelineLayout(m_dev, m_pipelineLayout, nullptr);
+ m_devFuncs->vkDestroyPipeline(m_dev, m_pipeline, nullptr);
+
+ m_devFuncs->vkDestroyRenderPass(m_dev, m_renderPass, nullptr);
+
+ m_devFuncs->vkDestroyDescriptorSetLayout(m_dev, m_resLayout, nullptr);
+ m_devFuncs->vkDestroyDescriptorPool(m_dev, m_descriptorPool, nullptr);
+
+ delete texture();
+ freeTexture();
+}
+
+QSGTexture *CustomTextureNode::texture() const
+{
+ return QSGSimpleTextureNode::texture();
+}
+
+static const float vertices[] = {
+ -1, -1,
+ 1, -1,
+ -1, 1,
+ 1, 1
+};
+
+const int UBUF_SIZE = 4;
+
+
+bool CustomTextureNode::buildTexture(const QSize &size)
+{
+ VkImageCreateInfo imageInfo;
+ memset(&imageInfo, 0, sizeof(imageInfo));
+ imageInfo.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;
+ imageInfo.flags = 0;
+ imageInfo.imageType = VK_IMAGE_TYPE_2D;
+ imageInfo.format = VK_FORMAT_R8G8B8A8_UNORM;
+ imageInfo.extent.width = uint32_t(size.width());
+ imageInfo.extent.height = uint32_t(size.height());
+ imageInfo.extent.depth = 1;
+ imageInfo.mipLevels = 1;
+ imageInfo.arrayLayers = 1;
+ imageInfo.samples = VK_SAMPLE_COUNT_1_BIT;
+ imageInfo.tiling = VK_IMAGE_TILING_OPTIMAL;
+ imageInfo.initialLayout = VK_IMAGE_LAYOUT_PREINITIALIZED;
+
+ imageInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT;
+ imageInfo.usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
+
+ VkImage image = VK_NULL_HANDLE;
+ if (m_devFuncs->vkCreateImage(m_dev, &imageInfo, nullptr, &image) != VK_SUCCESS) {
+ qCritical("VulkanWrapper: failed to create image!");
+ return false;
+ }
+
+ m_texture = image;
+
+ VkMemoryRequirements memReq;
+ m_devFuncs->vkGetImageMemoryRequirements(m_dev, image, &memReq);
+
+ quint32 memIndex = 0;
+ VkPhysicalDeviceMemoryProperties physDevMemProps;
+ m_window->vulkanInstance()->functions()->vkGetPhysicalDeviceMemoryProperties(m_physDev, &physDevMemProps);
+ for (uint32_t i = 0; i < physDevMemProps.memoryTypeCount; ++i) {
+ if (!(memReq.memoryTypeBits & (1 << i)))
+ continue;
+ memIndex = i;
+ }
+
+ VkMemoryAllocateInfo allocInfo = {
+ VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
+ nullptr,
+ memReq.size,
+ memIndex
+ };
+
+ VkResult err = m_devFuncs->vkAllocateMemory(m_dev, &allocInfo, nullptr, &m_textureMemory);
+ if (err != VK_SUCCESS) {
+ qWarning("Failed to allocate memory for linear image: %d", err);
+ return false;
+ }
+
+ err = m_devFuncs->vkBindImageMemory(m_dev, image, m_textureMemory, 0);
+ if (err != VK_SUCCESS) {
+ qWarning("Failed to bind linear image memory: %d", err);
+ return false;
+ }
+
+ VkImageViewCreateInfo viewInfo;
+ memset(&viewInfo, 0, sizeof(viewInfo));
+ viewInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
+ viewInfo.image = image;
+ viewInfo.viewType = VK_IMAGE_VIEW_TYPE_2D;
+ viewInfo.format = imageInfo.format;
+ viewInfo.components.r = VK_COMPONENT_SWIZZLE_R;
+ viewInfo.components.g = VK_COMPONENT_SWIZZLE_G;
+ viewInfo.components.b = VK_COMPONENT_SWIZZLE_B;
+ viewInfo.components.a = VK_COMPONENT_SWIZZLE_A;
+ viewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
+ viewInfo.subresourceRange.baseMipLevel = 0;
+ viewInfo.subresourceRange.levelCount = VK_REMAINING_MIP_LEVELS;
+ viewInfo.subresourceRange.baseArrayLayer = 0;
+ viewInfo.subresourceRange.layerCount = VK_REMAINING_ARRAY_LAYERS;
+
+ err = m_devFuncs->vkCreateImageView(m_dev, &viewInfo, nullptr, &m_textureView);
+ if (err != VK_SUCCESS) {
+ qWarning("Failed to create render target image view: %d", err);
+ return false;
+ }
+
+ VkFramebufferCreateInfo fbInfo;
+ memset(&fbInfo, 0, sizeof(fbInfo));
+ fbInfo.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO;
+ fbInfo.renderPass = m_renderPass;
+ fbInfo.attachmentCount = 1;
+ fbInfo.pAttachments = &m_textureView;
+ fbInfo.width = uint32_t(size.width());
+ fbInfo.height = uint32_t(size.height());
+ fbInfo.layers = 1;
+
+ err = m_devFuncs->vkCreateFramebuffer(m_dev, &fbInfo, nullptr, &m_textureFramebuffer);
+ if (err != VK_SUCCESS) {
+ qWarning("Failed to create framebuffer: %d", err);
+ return false;
+ }
+ return true;
+}
+
+void CustomTextureNode::freeTexture()
+{
+ if (m_texture) {
+ m_devFuncs->vkDestroyFramebuffer(m_dev, m_textureFramebuffer, nullptr);
+ m_textureFramebuffer = VK_NULL_HANDLE;
+ m_devFuncs->vkFreeMemory(m_dev, m_textureMemory, nullptr);
+ m_textureMemory = VK_NULL_HANDLE;
+ m_devFuncs->vkDestroyImageView(m_dev, m_textureView, nullptr);
+ m_textureView = VK_NULL_HANDLE;
+ m_devFuncs->vkDestroyImage(m_dev, m_texture, nullptr);
+ m_texture = VK_NULL_HANDLE;
+ }
+}
+
+
+
+static inline VkDeviceSize aligned(VkDeviceSize v, VkDeviceSize byteAlign)
+{
+ return (v + byteAlign - 1) & ~(byteAlign - 1);
+}
+
+bool CustomTextureNode::createRenderPass()
+{
+ const VkFormat vkformat = VK_FORMAT_R8G8B8A8_UNORM;
+ const VkSampleCountFlagBits samples = VK_SAMPLE_COUNT_1_BIT;
+ VkAttachmentDescription colorAttDesc;
+ memset(&colorAttDesc, 0, sizeof(colorAttDesc));
+ colorAttDesc.format = vkformat;
+ colorAttDesc.samples = samples;
+ colorAttDesc.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
+ colorAttDesc.storeOp = VK_ATTACHMENT_STORE_OP_STORE;
+ colorAttDesc.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
+ colorAttDesc.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
+ colorAttDesc.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
+ colorAttDesc.finalLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
+
+ const VkAttachmentReference colorRef = { 0, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL };
+
+ VkSubpassDescription subpassDesc;
+ memset(&subpassDesc, 0, sizeof(subpassDesc));
+ subpassDesc.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
+ subpassDesc.colorAttachmentCount = 1;
+ subpassDesc.pColorAttachments = &colorRef;
+ subpassDesc.pDepthStencilAttachment = nullptr;
+ subpassDesc.pResolveAttachments = nullptr;
+
+ VkRenderPassCreateInfo rpInfo;
+ memset(&rpInfo, 0, sizeof(rpInfo));
+ rpInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;
+ rpInfo.attachmentCount = 1;
+ rpInfo.pAttachments = &colorAttDesc;
+ rpInfo.subpassCount = 1;
+ rpInfo.pSubpasses = &subpassDesc;
+
+ VkResult err = m_devFuncs->vkCreateRenderPass(m_dev, &rpInfo, nullptr, &m_renderPass);
+ if (err != VK_SUCCESS) {
+ qWarning("Failed to create renderpass: %d", err);
+ return false;
+ }
+
+ return true;
+}
+
+bool CustomTextureNode::initialize()
+{
+ const int framesInFlight = m_window->graphicsStateInfo().framesInFlight;
+ m_initialized = true;
+
+ QSGRendererInterface *rif = m_window->rendererInterface();
+ QVulkanInstance *inst = reinterpret_cast<QVulkanInstance *>(
+ rif->getResource(m_window, QSGRendererInterface::VulkanInstanceResource));
+ Q_ASSERT(inst && inst->isValid());
+
+ m_physDev = *static_cast<VkPhysicalDevice *>(rif->getResource(m_window, QSGRendererInterface::PhysicalDeviceResource));
+ m_dev = *static_cast<VkDevice *>(rif->getResource(m_window, QSGRendererInterface::DeviceResource));
+ Q_ASSERT(m_physDev && m_dev);
+
+ m_devFuncs = inst->deviceFunctions(m_dev);
+ m_funcs = inst->functions();
+ Q_ASSERT(m_devFuncs && m_funcs);
+
+ createRenderPass();
+
+ VkPhysicalDeviceProperties physDevProps;
+ m_funcs->vkGetPhysicalDeviceProperties(m_physDev, &physDevProps);
+
+ VkPhysicalDeviceMemoryProperties physDevMemProps;
+ m_funcs->vkGetPhysicalDeviceMemoryProperties(m_physDev, &physDevMemProps);
+
+ VkBufferCreateInfo bufferInfo;
+ memset(&bufferInfo, 0, sizeof(bufferInfo));
+ bufferInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
+ bufferInfo.size = sizeof(vertices);
+ bufferInfo.usage = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT;
+ VkResult err = m_devFuncs->vkCreateBuffer(m_dev, &bufferInfo, nullptr, &m_vbuf);
+ if (err != VK_SUCCESS)
+ qFatal("Failed to create vertex buffer: %d", err);
+
+ VkMemoryRequirements memReq;
+ m_devFuncs->vkGetBufferMemoryRequirements(m_dev, m_vbuf, &memReq);
+ VkMemoryAllocateInfo allocInfo;
+ memset(&allocInfo, 0, sizeof(allocInfo));
+ allocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
+ allocInfo.allocationSize = memReq.size;
+
+ uint32_t memTypeIndex = uint32_t(-1);
+ const VkMemoryType *memType = physDevMemProps.memoryTypes;
+ for (uint32_t i = 0; i < physDevMemProps.memoryTypeCount; ++i) {
+ if (memReq.memoryTypeBits & (1 << i)) {
+ if ((memType[i].propertyFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)
+ && (memType[i].propertyFlags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT))
+ {
+ memTypeIndex = i;
+ break;
+ }
+ }
+ }
+ if (memTypeIndex == uint32_t(-1))
+ qFatal("Failed to find host visible and coherent memory type");
+
+ allocInfo.memoryTypeIndex = memTypeIndex;
+ err = m_devFuncs->vkAllocateMemory(m_dev, &allocInfo, nullptr, &m_vbufMem);
+ if (err != VK_SUCCESS)
+ qFatal("Failed to allocate vertex buffer memory of size %u: %d", uint(allocInfo.allocationSize), err);
+
+ void *p = nullptr;
+ err = m_devFuncs->vkMapMemory(m_dev, m_vbufMem, 0, allocInfo.allocationSize, 0, &p);
+ if (err != VK_SUCCESS || !p)
+ qFatal("Failed to map vertex buffer memory: %d", err);
+ memcpy(p, vertices, sizeof(vertices));
+ m_devFuncs->vkUnmapMemory(m_dev, m_vbufMem);
+ err = m_devFuncs->vkBindBufferMemory(m_dev, m_vbuf, m_vbufMem, 0);
+ if (err != VK_SUCCESS)
+ qFatal("Failed to bind vertex buffer memory: %d", err);
+
+ m_allocPerUbuf = aligned(UBUF_SIZE, physDevProps.limits.minUniformBufferOffsetAlignment);
+
+ bufferInfo.size = framesInFlight * m_allocPerUbuf;
+ bufferInfo.usage = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT;
+ err = m_devFuncs->vkCreateBuffer(m_dev, &bufferInfo, nullptr, &m_ubuf);
+ if (err != VK_SUCCESS)
+ qFatal("Failed to create uniform buffer: %d", err);
+ m_devFuncs->vkGetBufferMemoryRequirements(m_dev, m_ubuf, &memReq);
+ memTypeIndex = -1;
+ for (uint32_t i = 0; i < physDevMemProps.memoryTypeCount; ++i) {
+ if (memReq.memoryTypeBits & (1 << i)) {
+ if ((memType[i].propertyFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)
+ && (memType[i].propertyFlags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT))
+ {
+ memTypeIndex = i;
+ break;
+ }
+ }
+ }
+ if (memTypeIndex == uint32_t(-1))
+ qFatal("Failed to find host visible and coherent memory type");
+
+ allocInfo.allocationSize = qMax(memReq.size, framesInFlight * m_allocPerUbuf);
+ allocInfo.memoryTypeIndex = memTypeIndex;
+ err = m_devFuncs->vkAllocateMemory(m_dev, &allocInfo, nullptr, &m_ubufMem);
+ if (err != VK_SUCCESS)
+ qFatal("Failed to allocate uniform buffer memory of size %u: %d", uint(allocInfo.allocationSize), err);
+
+ err = m_devFuncs->vkBindBufferMemory(m_dev, m_ubuf, m_ubufMem, 0);
+ if (err != VK_SUCCESS)
+ qFatal("Failed to bind uniform buffer memory: %d", err);
+
+ // Now onto the pipeline.
+
+ VkPipelineCacheCreateInfo pipelineCacheInfo;
+ memset(&pipelineCacheInfo, 0, sizeof(pipelineCacheInfo));
+ pipelineCacheInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO;
+ err = m_devFuncs->vkCreatePipelineCache(m_dev, &pipelineCacheInfo, nullptr, &m_pipelineCache);
+ if (err != VK_SUCCESS)
+ qFatal("Failed to create pipeline cache: %d", err);
+
+ VkDescriptorSetLayoutBinding descLayoutBinding;
+ memset(&descLayoutBinding, 0, sizeof(descLayoutBinding));
+ descLayoutBinding.binding = 0;
+ descLayoutBinding.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;
+ descLayoutBinding.descriptorCount = 1;
+ descLayoutBinding.stageFlags = VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT;
+ VkDescriptorSetLayoutCreateInfo layoutInfo;
+ memset(&layoutInfo, 0, sizeof(layoutInfo));
+ layoutInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
+ layoutInfo.bindingCount = 1;
+ layoutInfo.pBindings = &descLayoutBinding;
+ err = m_devFuncs->vkCreateDescriptorSetLayout(m_dev, &layoutInfo, nullptr, &m_resLayout);
+ if (err != VK_SUCCESS)
+ qFatal("Failed to create descriptor set layout: %d", err);
+
+ VkPipelineLayoutCreateInfo pipelineLayoutInfo;
+ memset(&pipelineLayoutInfo, 0, sizeof(pipelineLayoutInfo));
+ pipelineLayoutInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
+ pipelineLayoutInfo.setLayoutCount = 1;
+ pipelineLayoutInfo.pSetLayouts = &m_resLayout;
+ err = m_devFuncs->vkCreatePipelineLayout(m_dev, &pipelineLayoutInfo, nullptr, &m_pipelineLayout);
+ if (err != VK_SUCCESS)
+ qWarning("Failed to create pipeline layout: %d", err);
+
+ VkGraphicsPipelineCreateInfo pipelineInfo;
+ memset(&pipelineInfo, 0, sizeof(pipelineInfo));
+ pipelineInfo.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;
+
+ VkShaderModuleCreateInfo shaderInfo;
+ memset(&shaderInfo, 0, sizeof(shaderInfo));
+ shaderInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
+ shaderInfo.codeSize = m_vert.size();
+ shaderInfo.pCode = reinterpret_cast<const quint32 *>(m_vert.constData());
+ VkShaderModule vertShaderModule;
+ err = m_devFuncs->vkCreateShaderModule(m_dev, &shaderInfo, nullptr, &vertShaderModule);
+ if (err != VK_SUCCESS)
+ qFatal("Failed to create vertex shader module: %d", err);
+
+ shaderInfo.codeSize = m_frag.size();
+ shaderInfo.pCode = reinterpret_cast<const quint32 *>(m_frag.constData());
+ VkShaderModule fragShaderModule;
+ err = m_devFuncs->vkCreateShaderModule(m_dev, &shaderInfo, nullptr, &fragShaderModule);
+ if (err != VK_SUCCESS)
+ qFatal("Failed to create fragment shader module: %d", err);
+
+ VkPipelineShaderStageCreateInfo stageInfo[2];
+ memset(&stageInfo, 0, sizeof(stageInfo));
+ stageInfo[0].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
+ stageInfo[0].stage = VK_SHADER_STAGE_VERTEX_BIT;
+ stageInfo[0].module = vertShaderModule;
+ stageInfo[0].pName = "main";
+ stageInfo[1].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
+ stageInfo[1].stage = VK_SHADER_STAGE_FRAGMENT_BIT;
+ stageInfo[1].module = fragShaderModule;
+ stageInfo[1].pName = "main";
+ pipelineInfo.stageCount = 2;
+ pipelineInfo.pStages = stageInfo;
+
+ VkVertexInputBindingDescription vertexBinding = {
+ 0, // binding
+ 2 * sizeof(float), // stride
+ VK_VERTEX_INPUT_RATE_VERTEX
+ };
+ VkVertexInputAttributeDescription vertexAttr = {
+ 0, // location
+ 0, // binding
+ VK_FORMAT_R32G32_SFLOAT, // 'vertices' only has 2 floats per vertex
+ 0 // offset
+ };
+ VkPipelineVertexInputStateCreateInfo vertexInputInfo;
+ memset(&vertexInputInfo, 0, sizeof(vertexInputInfo));
+ vertexInputInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO;
+ vertexInputInfo.vertexBindingDescriptionCount = 1;
+ vertexInputInfo.pVertexBindingDescriptions = &vertexBinding;
+ vertexInputInfo.vertexAttributeDescriptionCount = 1;
+ vertexInputInfo.pVertexAttributeDescriptions = &vertexAttr;
+ pipelineInfo.pVertexInputState = &vertexInputInfo;
+
+ VkDynamicState dynStates[] = { VK_DYNAMIC_STATE_VIEWPORT, VK_DYNAMIC_STATE_SCISSOR };
+ VkPipelineDynamicStateCreateInfo dynamicInfo;
+ memset(&dynamicInfo, 0, sizeof(dynamicInfo));
+ dynamicInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO;
+ dynamicInfo.dynamicStateCount = 2;
+ dynamicInfo.pDynamicStates = dynStates;
+ pipelineInfo.pDynamicState = &dynamicInfo;
+
+ VkPipelineViewportStateCreateInfo viewportInfo;
+ memset(&viewportInfo, 0, sizeof(viewportInfo));
+ viewportInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO;
+ viewportInfo.viewportCount = viewportInfo.scissorCount = 1;
+ pipelineInfo.pViewportState = &viewportInfo;
+
+ VkPipelineInputAssemblyStateCreateInfo iaInfo;
+ memset(&iaInfo, 0, sizeof(iaInfo));
+ iaInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO;
+ iaInfo.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP;
+ pipelineInfo.pInputAssemblyState = &iaInfo;
+
+ VkPipelineRasterizationStateCreateInfo rsInfo;
+ memset(&rsInfo, 0, sizeof(rsInfo));
+ rsInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO;
+ rsInfo.lineWidth = 1.0f;
+ pipelineInfo.pRasterizationState = &rsInfo;
+
+ VkPipelineMultisampleStateCreateInfo msInfo;
+ memset(&msInfo, 0, sizeof(msInfo));
+ msInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO;
+ msInfo.rasterizationSamples = VK_SAMPLE_COUNT_1_BIT;
+ pipelineInfo.pMultisampleState = &msInfo;
+
+ VkPipelineDepthStencilStateCreateInfo dsInfo;
+ memset(&dsInfo, 0, sizeof(dsInfo));
+ dsInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO;
+ pipelineInfo.pDepthStencilState = &dsInfo;
+
+ // SrcAlpha, One
+ VkPipelineColorBlendStateCreateInfo blendInfo;
+ memset(&blendInfo, 0, sizeof(blendInfo));
+ blendInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO;
+ VkPipelineColorBlendAttachmentState blend;
+ memset(&blend, 0, sizeof(blend));
+ blend.blendEnable = true;
+ blend.srcColorBlendFactor = VK_BLEND_FACTOR_SRC_ALPHA;
+ blend.dstColorBlendFactor = VK_BLEND_FACTOR_ONE;
+ blend.colorBlendOp = VK_BLEND_OP_ADD;
+ blend.srcAlphaBlendFactor = VK_BLEND_FACTOR_SRC_ALPHA;
+ blend.dstAlphaBlendFactor = VK_BLEND_FACTOR_ONE;
+ blend.alphaBlendOp = VK_BLEND_OP_ADD;
+ blend.colorWriteMask = VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | VK_COLOR_COMPONENT_B_BIT
+ | VK_COLOR_COMPONENT_A_BIT;
+ blendInfo.attachmentCount = 1;
+ blendInfo.pAttachments = &blend;
+ pipelineInfo.pColorBlendState = &blendInfo;
+
+ pipelineInfo.layout = m_pipelineLayout;
+
+ pipelineInfo.renderPass = m_renderPass;
+
+ err = m_devFuncs->vkCreateGraphicsPipelines(m_dev, m_pipelineCache, 1, &pipelineInfo, nullptr, &m_pipeline);
+
+ m_devFuncs->vkDestroyShaderModule(m_dev, vertShaderModule, nullptr);
+ m_devFuncs->vkDestroyShaderModule(m_dev, fragShaderModule, nullptr);
+
+ if (err != VK_SUCCESS)
+ qFatal("Failed to create graphics pipeline: %d", err);
+
+ // Now just need some descriptors.
+ VkDescriptorPoolSize descPoolSizes[] = {
+ { VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, 1 }
+ };
+ VkDescriptorPoolCreateInfo descPoolInfo;
+ memset(&descPoolInfo, 0, sizeof(descPoolInfo));
+ descPoolInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;
+ descPoolInfo.flags = 0; // won't use vkFreeDescriptorSets
+ descPoolInfo.maxSets = 1;
+ descPoolInfo.poolSizeCount = sizeof(descPoolSizes) / sizeof(descPoolSizes[0]);
+ descPoolInfo.pPoolSizes = descPoolSizes;
+ err = m_devFuncs->vkCreateDescriptorPool(m_dev, &descPoolInfo, nullptr, &m_descriptorPool);
+ if (err != VK_SUCCESS)
+ qFatal("Failed to create descriptor pool: %d", err);
+
+ VkDescriptorSetAllocateInfo descAllocInfo;
+ memset(&descAllocInfo, 0, sizeof(descAllocInfo));
+ descAllocInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO;
+ descAllocInfo.descriptorPool = m_descriptorPool;
+ descAllocInfo.descriptorSetCount = 1;
+ descAllocInfo.pSetLayouts = &m_resLayout;
+ err = m_devFuncs->vkAllocateDescriptorSets(m_dev, &descAllocInfo, &m_ubufDescriptor);
+ if (err != VK_SUCCESS)
+ qFatal("Failed to allocate descriptor set");
+
+ VkWriteDescriptorSet writeInfo;
+ memset(&writeInfo, 0, sizeof(writeInfo));
+ writeInfo.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
+ writeInfo.dstSet = m_ubufDescriptor;
+ writeInfo.dstBinding = 0;
+ writeInfo.descriptorCount = 1;
+ writeInfo.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;
+ VkDescriptorBufferInfo bufInfo;
+ bufInfo.buffer = m_ubuf;
+ bufInfo.offset = 0; // dynamic offset is used so this is ignored
+ bufInfo.range = UBUF_SIZE;
+ writeInfo.pBufferInfo = &bufInfo;
+
+ m_devFuncs->vkUpdateDescriptorSets(m_dev, 1, &writeInfo, 0, nullptr);
+ return true;
+}
+
+void CustomTextureNode::sync()
+{
+ m_dpr = m_window->effectiveDevicePixelRatio();
+ const QSize newSize = m_window->size() * m_dpr;
+ bool needsNew = false;
+
+ if (!m_initialized) {
+ prepareShader(VertexStage);
+ prepareShader(FragmentStage);
+ initialize();
+ m_initialized = true;
+ }
+
+ if (!texture())
+ needsNew = true;
+
+ if (newSize != m_size) {
+ needsNew = true;
+ m_size = newSize;
+ }
+
+ if (needsNew) {
+ delete texture();
+ freeTexture();
+ buildTexture(m_size);
+ QSGTexture *wrapper = m_window->createTextureFromNativeObject(QQuickWindow::NativeObjectTexture,
+ &m_texture,
+ VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
+ m_size);
+ setTexture(wrapper);
+ }
+
+ m_t = float(static_cast<CustomTextureItem *>(m_item)->t());
+}
+
+void CustomTextureNode::render()
+{
+ if (!m_initialized)
+ return;
+
+ VkResult err = VK_SUCCESS;
+
+ uint currentFrameSlot = m_window->graphicsStateInfo().currentFrameSlot;
+ VkDeviceSize ubufOffset = currentFrameSlot * m_allocPerUbuf;
+ void *p = nullptr;
+ err = m_devFuncs->vkMapMemory(m_dev, m_ubufMem, ubufOffset, m_allocPerUbuf, 0, &p);
+ if (err != VK_SUCCESS || !p)
+ qFatal("Failed to map uniform buffer memory: %d", err);
+ float t = m_t;
+ memcpy(p, &t, 4);
+ m_devFuncs->vkUnmapMemory(m_dev, m_ubufMem);
+
+ VkClearValue clearColor = {{ {0, 0, 0, 1} }};
+
+ VkRenderPassBeginInfo rpBeginInfo = {};
+ rpBeginInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;
+ rpBeginInfo.renderPass = m_renderPass;
+ rpBeginInfo.framebuffer = m_textureFramebuffer;
+ rpBeginInfo.renderArea.extent.width = m_size.width();
+ rpBeginInfo.renderArea.extent.height = m_size.height();
+ rpBeginInfo.clearValueCount = 1;
+ rpBeginInfo.pClearValues = &clearColor;
+
+ QSGRendererInterface *rif = m_window->rendererInterface();
+ VkCommandBuffer cmdBuf = *reinterpret_cast<VkCommandBuffer *>(
+ rif->getResource(m_window, QSGRendererInterface::CommandListResource));
+
+ m_devFuncs->vkCmdBeginRenderPass(cmdBuf, &rpBeginInfo, VK_SUBPASS_CONTENTS_INLINE);
+
+ m_devFuncs->vkCmdBindPipeline(cmdBuf, VK_PIPELINE_BIND_POINT_GRAPHICS, m_pipeline);
+
+ VkDeviceSize vbufOffset = 0;
+ m_devFuncs->vkCmdBindVertexBuffers(cmdBuf, 0, 1, &m_vbuf, &vbufOffset);
+
+ uint32_t dynamicOffset = m_allocPerUbuf * currentFrameSlot;
+ m_devFuncs->vkCmdBindDescriptorSets(cmdBuf, VK_PIPELINE_BIND_POINT_GRAPHICS, m_pipelineLayout, 0, 1,
+ &m_ubufDescriptor, 1, &dynamicOffset);
+
+ VkViewport vp = { 0, 0, float(m_size.width()), float(m_size.height()), 0.0f, 1.0f };
+ m_devFuncs->vkCmdSetViewport(cmdBuf, 0, 1, &vp);
+ VkRect2D scissor = { { 0, 0 }, { uint32_t(m_size.width()), uint32_t(m_size.height()) } };
+ m_devFuncs->vkCmdSetScissor(cmdBuf, 0, 1, &scissor);
+
+ m_devFuncs->vkCmdDraw(cmdBuf, 4, 1, 0, 0);
+ m_devFuncs->vkCmdEndRenderPass(cmdBuf);
+
+ // Memory barrier before the texture can be used as a source.
+ // Since we are not using a sub-pass, we have to do this explicitly.
+
+ VkImageMemoryBarrier imageTransitionBarrier = {};
+ imageTransitionBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
+ imageTransitionBarrier.srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
+ imageTransitionBarrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT;
+ imageTransitionBarrier.oldLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
+ imageTransitionBarrier.newLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
+ imageTransitionBarrier.image = m_texture;
+ imageTransitionBarrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
+ imageTransitionBarrier.subresourceRange.levelCount = imageTransitionBarrier.subresourceRange.layerCount = 1;
+
+ m_devFuncs->vkCmdPipelineBarrier(cmdBuf,
+ VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
+ VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
+ 0, 0, nullptr, 0, nullptr,
+ 1, &imageTransitionBarrier);
+}
+
+void CustomTextureNode::prepareShader(Stage stage)
+{
+ QString filename;
+ if (stage == VertexStage) {
+ filename = QLatin1String(":/scenegraph/vulkantextureimport/squircle.vert.spv");
+ } else {
+ Q_ASSERT(stage == FragmentStage);
+ filename = QLatin1String(":/scenegraph/vulkantextureimport/squircle.frag.spv");
+ }
+ QFile f(filename);
+ if (!f.open(QIODevice::ReadOnly))
+ qFatal("Failed to read shader %s", qPrintable(filename));
+
+ const QByteArray contents = f.readAll();
+
+ if (stage == VertexStage) {
+ m_vert = contents;
+ Q_ASSERT(!m_vert.isEmpty());
+ } else {
+ m_frag = contents;
+ Q_ASSERT(!m_frag.isEmpty());
+ }
+}
+
+#include "vulkantextureimport.moc"
diff --git a/examples/quick/scenegraph/rendernode/d3d12renderer.h b/examples/quick/scenegraph/vulkantextureimport/vulkantextureimport.h
index 7186b72c04..f604faf66f 100644
--- a/examples/quick/scenegraph/rendernode/d3d12renderer.h
+++ b/examples/quick/scenegraph/vulkantextureimport/vulkantextureimport.h
@@ -1,9 +1,9 @@
/****************************************************************************
**
-** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
-** This file is part of the examples of the Qt Toolkit.
+** This file is part of the demonstration applications of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
@@ -48,48 +48,41 @@
**
****************************************************************************/
-#ifndef D3D12RENDERER_H
-#define D3D12RENDERER_H
+#ifndef VULKANTEXTUREIMPORT_H
+#define VULKANTEXTUREIMPORT_H
-#include <qsgrendernode.h>
-#include <QQuickItem>
+#include <QtQuick/QQuickItem>
-#if QT_CONFIG(d3d12)
+class CustomTextureNode;
-#include <d3d12.h>
-#include <wrl/client.h>
-
-using namespace Microsoft::WRL;
-
-class D3D12RenderNode : public QSGRenderNode
+//! [1]
+class CustomTextureItem : public QQuickItem
{
+ Q_OBJECT
+ Q_PROPERTY(qreal t READ t WRITE setT NOTIFY tChanged)
+
public:
- ~D3D12RenderNode();
+ CustomTextureItem();
- void render(const RenderState *state) override;
- void releaseResources() override;
- RenderingFlags flags() const override;
- QRectF rect() const override;
+ qreal t() const { return m_t; }
+ void setT(qreal t);
- void sync(QQuickItem *item);
+signals:
+ void tChanged();
-private:
- void init();
+protected:
+ QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *) override;
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
- QQuickWindow *m_window = nullptr;
- int m_width = 0;
- int m_height = 0;
+private slots:
+ void invalidateSceneGraph();
- ID3D12Device *m_device = nullptr;
- ComPtr<ID3D12PipelineState> pipelineState;
- ComPtr<ID3D12RootSignature> rootSignature;
- ComPtr<ID3D12Resource> vertexBuffer;
- ComPtr<ID3D12Resource> constantBuffer;
- D3D12_VERTEX_BUFFER_VIEW vertexBufferView;
- quint8 *vbPtr = nullptr;
- quint8 *cbPtr = nullptr;
-};
+private:
+ void releaseResources() override;
-#endif // d3d12
+ CustomTextureNode *m_node = nullptr;
+ qreal m_t = 0;
+};
+//! [1]
-#endif
+#endif // VULKANTEXTUREIMPORT_H
diff --git a/examples/quick/scenegraph/vulkantextureimport/vulkantextureimport.pro b/examples/quick/scenegraph/vulkantextureimport/vulkantextureimport.pro
new file mode 100644
index 0000000000..f2f78a6ed3
--- /dev/null
+++ b/examples/quick/scenegraph/vulkantextureimport/vulkantextureimport.pro
@@ -0,0 +1,12 @@
+!qtConfig(vulkan): error("This example requires Qt built with Vulkan support")
+
+QT += qml quick
+
+HEADERS += vulkantextureimport.h
+SOURCES += vulkantextureimport.cpp main.cpp
+RESOURCES += vulkantextureimport.qrc
+
+
+
+target.path = $$[QT_INSTALL_EXAMPLES]/quick/scenegraph/vulkantextureimport
+INSTALLS += target
diff --git a/examples/quick/scenegraph/vulkantextureimport/vulkantextureimport.qrc b/examples/quick/scenegraph/vulkantextureimport/vulkantextureimport.qrc
new file mode 100644
index 0000000000..a1aec6c950
--- /dev/null
+++ b/examples/quick/scenegraph/vulkantextureimport/vulkantextureimport.qrc
@@ -0,0 +1,7 @@
+<RCC>
+ <qresource prefix="/scenegraph/vulkantextureimport">
+ <file>main.qml</file>
+ <file>squircle.vert.spv</file>
+ <file>squircle.frag.spv</file>
+ </qresource>
+</RCC>
diff --git a/examples/quick/shadereffects/content/shaders/+hlsl/blur.frag b/examples/quick/shadereffects/content/shaders/+hlsl/blur.frag
deleted file mode 100644
index 481a238d2a..0000000000
--- a/examples/quick/shadereffects/content/shaders/+hlsl/blur.frag
+++ /dev/null
@@ -1,18 +0,0 @@
-cbuffer ConstantBuffer : register(b0)
-{
- float4x4 qt_Matrix;
- float qt_Opacity;
- float2 delta;
-};
-
-Texture2D source : register(t0);
-SamplerState sourceSampler : register(s0);
-
-float4 main(float4 position : SV_POSITION, float2 coord : TEXCOORD0) : SV_TARGET
-{
- return (0.0538 * source.Sample(sourceSampler, coord - 3.182 * delta)
- + 0.3229 * source.Sample(sourceSampler, coord - 1.364 * delta)
- + 0.2466 * source.Sample(sourceSampler, coord)
- + 0.3229 * source.Sample(sourceSampler, coord + 1.364 * delta)
- + 0.0538 * source.Sample(sourceSampler, coord + 3.182 * delta)) * qt_Opacity;
-}
diff --git a/examples/quick/shadereffects/content/shaders/+hlsl/colorize.frag b/examples/quick/shadereffects/content/shaders/+hlsl/colorize.frag
deleted file mode 100644
index d6e65b6b10..0000000000
--- a/examples/quick/shadereffects/content/shaders/+hlsl/colorize.frag
+++ /dev/null
@@ -1,17 +0,0 @@
-cbuffer ConstantBuffer : register(b0)
-{
- float4x4 qt_Matrix;
- float qt_Opacity;
- float4 tint;
-};
-
-Texture2D source : register(t0);
-SamplerState sourceSampler : register(s0);
-
-float4 main(float4 position : SV_POSITION, float2 coord : TEXCOORD0) : SV_TARGET
-{
- float4 c = source.Sample(sourceSampler, coord);
- float lo = min(min(c.x, c.y), c.z);
- float hi = max(max(c.x, c.y), c.z);
- return float4(lerp(float3(lo, lo, lo), float3(hi, hi, hi), tint.xyz), c.w) * qt_Opacity;
-}
diff --git a/examples/quick/shadereffects/content/shaders/+hlsl/genie.vert b/examples/quick/shadereffects/content/shaders/+hlsl/genie.vert
deleted file mode 100644
index 40876e7996..0000000000
--- a/examples/quick/shadereffects/content/shaders/+hlsl/genie.vert
+++ /dev/null
@@ -1,31 +0,0 @@
-cbuffer ConstantBuffer : register(b0)
-{
- float4x4 qt_Matrix;
- float qt_Opacity;
- float bend;
- float minimize;
- float side;
- float width;
- float height;
-};
-
-struct PSInput
-{
- float4 position : SV_POSITION;
- float2 coord : TEXCOORD0;
-};
-
-PSInput main(float4 position : POSITION, float2 coord : TEXCOORD0)
-{
- PSInput result;
- result.coord = coord;
-
- float4 pos = position;
- pos.y = lerp(position.y, height, minimize);
- float t = pos.y / height;
- t = (3.0 - 2.0 * t) * t * t;
- pos.x = lerp(position.x, side * width, t * bend);
- result.position = mul(qt_Matrix, pos);
-
- return result;
-}
diff --git a/examples/quick/shadereffects/content/shaders/+hlsl/outline.frag b/examples/quick/shadereffects/content/shaders/+hlsl/outline.frag
deleted file mode 100644
index b6e7e51f35..0000000000
--- a/examples/quick/shadereffects/content/shaders/+hlsl/outline.frag
+++ /dev/null
@@ -1,21 +0,0 @@
-cbuffer ConstantBuffer : register(b0)
-{
- float4x4 qt_Matrix;
- float qt_Opacity;
- float2 delta;
-};
-
-Texture2D source : register(t0);
-SamplerState sourceSampler : register(s0);
-
-float4 main(float4 position : SV_POSITION, float2 coord : TEXCOORD0) : SV_TARGET
-{
- float4 tl = source.Sample(sourceSampler, coord - delta);
- float4 tr = source.Sample(sourceSampler, coord + float2(delta.x, -delta.y));
- float4 bl = source.Sample(sourceSampler, coord - float2(delta.x, -delta.y));
- float4 br = source.Sample(sourceSampler, coord + delta);
- float4 gx = (tl + bl) - (tr + br);
- float4 gy = (tl + tr) - (bl + br);
- return float4(0.0, 0.0, 0.0,
- clamp(dot(sqrt(gx * gx + gy * gy), float4(1.0, 1.0, 1.0, 1.0)), 0.0, 1.0) * qt_Opacity);
-}
diff --git a/examples/quick/shadereffects/content/shaders/+hlsl/shadow.frag b/examples/quick/shadereffects/content/shaders/+hlsl/shadow.frag
deleted file mode 100644
index a86a25e007..0000000000
--- a/examples/quick/shadereffects/content/shaders/+hlsl/shadow.frag
+++ /dev/null
@@ -1,20 +0,0 @@
-cbuffer ConstantBuffer : register(b0)
-{
- float4x4 qt_Matrix;
- float qt_Opacity;
- float2 offset;
- float2 delta;
- float darkness;
-};
-
-Texture2D source : register(t0);
-SamplerState sourceSampler : register(s0);
-Texture2D shadow : register(t1);
-SamplerState shadowSampler : register(s1);
-
-float4 main(float4 position : SV_POSITION, float2 coord : TEXCOORD0) : SV_TARGET
-{
- float4 fg = source.Sample(sourceSampler, coord);
- float4 bg = shadow.Sample(shadowSampler, coord + delta);
- return (fg + float4(0.0, 0.0, 0.0, darkness * bg.a) * (1.0 - fg.a)) * qt_Opacity;
-}
diff --git a/examples/quick/shadereffects/content/shaders/+hlsl/wobble.frag b/examples/quick/shadereffects/content/shaders/+hlsl/wobble.frag
deleted file mode 100644
index c28612a2fd..0000000000
--- a/examples/quick/shadereffects/content/shaders/+hlsl/wobble.frag
+++ /dev/null
@@ -1,17 +0,0 @@
-cbuffer ConstantBuffer : register(b0)
-{
- float4x4 qt_Matrix;
- float qt_Opacity;
- float amplitude;
- float frequency;
- float time;
-};
-
-Texture2D source : register(t0);
-SamplerState sourceSampler : register(s0);
-
-float4 main(float4 position : SV_POSITION, float2 coord : TEXCOORD0) : SV_TARGET
-{
- float2 p = sin(time + frequency * coord);
- return source.Sample(sourceSampler, coord + amplitude * float2(p.y, -p.x)) * qt_Opacity;
-}
diff --git a/examples/quick/shadereffects/doc/src/shadereffects.qdoc b/examples/quick/shadereffects/doc/src/shadereffects.qdoc
index d35989c262..d217c956ad 100644
--- a/examples/quick/shadereffects/doc/src/shadereffects.qdoc
+++ b/examples/quick/shadereffects/doc/src/shadereffects.qdoc
@@ -59,21 +59,6 @@
Direct 3D, or OpenGL. Qt automatically selects the file under the \c qsb
selector, for example \c{shaders/+qsb/wobble.frag}, when present.
- On the traditional code path, which can mean using OpenGL or Direct3D 12,
- file selectors are used to select the correct variant at runtime. Based on
- the Qt Quick backend in use, Qt will automatically select either
- \c{shaders/wobble.frag} with the GLSL source code or
- \c{shaders/+hlsl/wobble.frag} with the HLSL source code.
-
- \note For simplicity shader source code is used in all variants of the
- files. However, with the Direct3D backend of Qt Quick pre-compiled shaders
- are also supported. For example, try the following commands in the
- \c{content/shaders/+hlsl} directory: \c{move wobble.frag wobble.frag.src}
- followed by \c{fxc /E main /T ps_5_0 /Fo wobble.frag wobble.frag.src}. Now
- \c wobble.frag contains Direct3D bytecode and that is what gets shipped
- with the application instead of the shader source. Further changes are not
- necessary, the application will function like before.
-
You can use any custom property on the ShaderEffect in your shader. This
makes animated shader code very easy:
\snippet shadereffects/shadereffects.qml properties
diff --git a/examples/quick/shadereffects/shadereffects.qrc b/examples/quick/shadereffects/shadereffects.qrc
index 762ad0d037..72ad2d9054 100644
--- a/examples/quick/shadereffects/shadereffects.qrc
+++ b/examples/quick/shadereffects/shadereffects.qrc
@@ -5,22 +5,16 @@
<file>content/qt-logo.png</file>
<file>content/Slider.qml</file>
<file>content/shaders/wobble.frag</file>
- <file>content/shaders/+hlsl/wobble.frag</file>
<file>content/shaders/+qsb/wobble.frag</file>
<file>content/shaders/blur.frag</file>
- <file>content/shaders/+hlsl/blur.frag</file>
<file>content/shaders/+qsb/blur.frag</file>
<file>content/shaders/shadow.frag</file>
- <file>content/shaders/+hlsl/shadow.frag</file>
<file>content/shaders/+qsb/shadow.frag</file>
<file>content/shaders/outline.frag</file>
- <file>content/shaders/+hlsl/outline.frag</file>
<file>content/shaders/+qsb/outline.frag</file>
<file>content/shaders/colorize.frag</file>
- <file>content/shaders/+hlsl/colorize.frag</file>
<file>content/shaders/+qsb/colorize.frag</file>
<file>content/shaders/genie.vert</file>
- <file>content/shaders/+hlsl/genie.vert</file>
<file>content/shaders/+qsb/genie.vert</file>
</qresource>
</RCC>
diff --git a/examples/quick/shared/FlickrRssModel.qml b/examples/quick/shared/FlickrRssModel.qml
index cee4022bf0..5f88fabcae 100644
--- a/examples/quick/shared/FlickrRssModel.qml
+++ b/examples/quick/shared/FlickrRssModel.qml
@@ -63,6 +63,12 @@ ListModel {
var xhr = new XMLHttpRequest;
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
+
+ if (xhr.status !== 200) {
+ console.log("Failed to get images from flickr. status code: " + xhr.status);
+ return;
+ }
+
var jsonText = xhr.responseText;
var objArray = JSON.parse(jsonText.replace(/\'/g,"'"))
if (objArray.errors !== undefined)
diff --git a/examples/quick/shared/SimpleLauncherDelegate.qml b/examples/quick/shared/SimpleLauncherDelegate.qml
index 75aecf262c..7f07dea52a 100644
--- a/examples/quick/shared/SimpleLauncherDelegate.qml
+++ b/examples/quick/shared/SimpleLauncherDelegate.qml
@@ -61,12 +61,12 @@ Rectangle {
GradientStop {
position: 0
Behavior on color {ColorAnimation { duration: 100 }}
- color: button.pressed ? "#e0e0e0" : "#fff"
+ color: tapHandler.pressed ? "#e0e0e0" : "#fff"
}
GradientStop {
position: 1
Behavior on color {ColorAnimation { duration: 100 }}
- color: button.pressed ? "#e0e0e0" : button.containsMouse ? "#f5f5f5" : "#eee"
+ color: tapHandler.pressed ? "#e0e0e0" : button.containsMouse ? "#f5f5f5" : "#eee"
}
}
diff --git a/examples/quick/tableview/gameoflife/doc/src/gameoflife.qdoc b/examples/quick/tableview/gameoflife/doc/src/gameoflife.qdoc
index 069513636a..b61ba90a58 100644
--- a/examples/quick/tableview/gameoflife/doc/src/gameoflife.qdoc
+++ b/examples/quick/tableview/gameoflife/doc/src/gameoflife.qdoc
@@ -50,9 +50,6 @@
the view should be scrolled to.
\snippet tableview/gameoflife/main.qml model
- The model that we use is a custom C++ class that we register
- in the QML system:
- \snippet tableview/gameoflife/main.cpp registertype
\section1 The C++ Model
@@ -61,7 +58,8 @@
used as the model of our TableView component. Therefore, it needs to
implement some functions so the TableView component can interact with
the model. As you can see in the \c private part of the class, the model
- uses a fixed-size array to store the current state of all the cells.
+ uses a fixed-size array to store the current state of all the cells. We
+ also use the QML_ELEMENT macro in order to expose the class to QML.
\snippet tableview/gameoflife/gameoflifemodel.cpp modelsize
Here, the \c rowCount and \c columnCount methods are implemented so
diff --git a/examples/quick/tableview/gameoflife/gameoflife.pro b/examples/quick/tableview/gameoflife/gameoflife.pro
index 98050b0d79..9c47a9b530 100644
--- a/examples/quick/tableview/gameoflife/gameoflife.pro
+++ b/examples/quick/tableview/gameoflife/gameoflife.pro
@@ -1,6 +1,11 @@
TEMPLATE = app
QT += quick qml
+
+CONFIG += qmltypes
+QML_IMPORT_NAME = GameOfLifeModel
+QML_IMPORT_MAJOR_VERSION = 1
+
SOURCES += \
main.cpp \
gameoflifemodel.cpp
diff --git a/examples/quick/tableview/gameoflife/main.cpp b/examples/quick/tableview/gameoflife/main.cpp
index fcea7080ea..1500efdcca 100644
--- a/examples/quick/tableview/gameoflife/main.cpp
+++ b/examples/quick/tableview/gameoflife/main.cpp
@@ -58,10 +58,6 @@ int main(int argc, char *argv[])
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
- //! [registertype]
- qmlRegisterTypesAndRevisions<GameOfLifeModel>("GameOfLifeModel", 1);
- //! [registertype]
-
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
diff --git a/examples/quick/tableview/pixelator/doc/src/pixelator.qdoc b/examples/quick/tableview/pixelator/doc/src/pixelator.qdoc
index 9e199a5347..88b28769cd 100644
--- a/examples/quick/tableview/pixelator/doc/src/pixelator.qdoc
+++ b/examples/quick/tableview/pixelator/doc/src/pixelator.qdoc
@@ -42,6 +42,7 @@
TableView.
We use the \l{The Property System}{Qt Property System} and a source property
as \c QString to set the path of the image.
+ We also add the QML_ELEMENT macro to expose the model to QML.
\snippet tableview/pixelator/imagemodel.cpp setsource
@@ -59,11 +60,6 @@
When we call this function with the display role, we return the pixel's
gray value.
- \snippet tableview/pixelator/main.cpp registertype
-
- We need to register our model in the QML type system to be able to use it
- from the QML side.
-
\snippet tableview/pixelator/main.qml pixelcomponent
Each pixel in the \c TableView is displayed via a delegate component.
diff --git a/examples/quick/tableview/pixelator/main.cpp b/examples/quick/tableview/pixelator/main.cpp
index a8cb6c4e86..c07f43dc27 100644
--- a/examples/quick/tableview/pixelator/main.cpp
+++ b/examples/quick/tableview/pixelator/main.cpp
@@ -59,10 +59,6 @@ int main(int argc, char *argv[])
QQmlApplicationEngine engine;
- //! [registertype]
- qmlRegisterTypesAndRevisions<ImageModel>("ImageModel", 1);
- //! [registertype]
-
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
diff --git a/examples/quick/tableview/pixelator/pixelator.pro b/examples/quick/tableview/pixelator/pixelator.pro
index a34456ff0b..188f55ebc3 100644
--- a/examples/quick/tableview/pixelator/pixelator.pro
+++ b/examples/quick/tableview/pixelator/pixelator.pro
@@ -6,6 +6,10 @@ HEADERS += imagemodel.h
SOURCES += main.cpp \
imagemodel.cpp
+CONFIG += qmltypes
+QML_IMPORT_NAME = ImageModel
+QML_IMPORT_MAJOR_VERSION = 1
+
RESOURCES += qt.png main.qml
target.path = $$[QT_INSTALL_EXAMPLES]/quick/tableview/pixelator
diff --git a/examples/quick/touchinteraction/multipointtouch/bearwhack.qml b/examples/quick/touchinteraction/multipointtouch/bearwhack.qml
index 49bd0b9db8..90c1a66891 100644
--- a/examples/quick/touchinteraction/multipointtouch/bearwhack.qml
+++ b/examples/quick/touchinteraction/multipointtouch/bearwhack.qml
@@ -87,7 +87,7 @@ Item {
running: !startScreen.visible
}
- property int score: 0
+ property int score: particleSystem.score
Text {
anchors.right: parent.right
@@ -96,11 +96,13 @@ Item {
color: "white"
function padded(num) {
var ret = num.toString();
- while (ret.length < 6)
- ret = "0" + ret;
- return ret;
+
+ if (ret >= 0)
+ return ret.padStart(6, "0");
+ else
+ return "-" + ret.substr(1).padStart(6, "0");
}
- text: "Score: " + padded(score)
+ text: "Score: " + padded(root.score)
}
MultiPointTouchArea {
anchors.fill: parent
diff --git a/examples/quick/touchinteraction/multipointtouch/content/BearWhackParticleSystem.qml b/examples/quick/touchinteraction/multipointtouch/content/BearWhackParticleSystem.qml
index 3db9eaf1e5..8da5949a1b 100644
--- a/examples/quick/touchinteraction/multipointtouch/content/BearWhackParticleSystem.qml
+++ b/examples/quick/touchinteraction/multipointtouch/content/BearWhackParticleSystem.qml
@@ -52,6 +52,9 @@ import QtQuick.Particles 2.0
ParticleSystem {
id: particleSystem
+
+ property int score
+
function explode(x,y) {
fireEmitter.burst(100,x,y);
}
@@ -116,13 +119,13 @@ ParticleSystem {
once: true
y: parent.height - 32
groups: "bears"
- onAffectParticles: {
+ onAffectParticles: function(particles) {
for (var i=0;i<particles.length; i++) {
if (particles[i].animationIndex != 0) {
- score++;
+ particleSystem.score++;
bloodEmitter.burst(100, particles[i].x, particles[i].y);
} else {
- score--;
+ particleSystem.score--;
heartEmitter.burst(100, particles[i].x, particles[i].y);
}
particles[i].update = 1.0;
diff --git a/examples/quick/views/pathview/pathview-example.qml b/examples/quick/views/pathview/pathview-example.qml
index a70bf1b656..e42117dfae 100644
--- a/examples/quick/views/pathview/pathview-example.qml
+++ b/examples/quick/views/pathview/pathview-example.qml
@@ -71,19 +71,23 @@ Rectangle {
width: 100; height: 100
scale: PathView.iconScale
+ required property string name
+ required property string icon
+ required property int index
+
Image {
id: myIcon
y: 20; anchors.horizontalCenter: parent.horizontalCenter
- source: icon
+ source: parent.icon
}
Text {
anchors { top: myIcon.bottom; horizontalCenter: parent.horizontalCenter }
- text: name
+ text: parent.name
}
MouseArea {
anchors.fill: parent
- onClicked: view.currentIndex = index
+ onClicked: view.currentIndex = parent.index
}
}
}
diff --git a/src/3rdparty/llvm/LICENSE.TXT b/src/3rdparty/llvm/LICENSE.TXT
deleted file mode 100644
index ff63f2b6aa..0000000000
--- a/src/3rdparty/llvm/LICENSE.TXT
+++ /dev/null
@@ -1,68 +0,0 @@
-==============================================================================
-LLVM Release License
-==============================================================================
-University of Illinois/NCSA
-Open Source License
-
-Copyright (c) 2003-2017 University of Illinois at Urbana-Champaign.
-All rights reserved.
-
-Developed by:
-
- LLVM Team
-
- University of Illinois at Urbana-Champaign
-
- http://llvm.org
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal with
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimers.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimers in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the names of the LLVM Team, University of Illinois at
- Urbana-Champaign, nor the names of its contributors may be used to
- endorse or promote products derived from this Software without specific
- prior written permission.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
-SOFTWARE.
-
-==============================================================================
-Copyrights and Licenses for Third Party Software Distributed with LLVM:
-==============================================================================
-The LLVM software contains code written by third parties. Such software will
-have its own individual LICENSE.TXT file in the directory in which it appears.
-This file will describe the copyrights, license, and restrictions which apply
-to that code.
-
-The disclaimer of warranty in the University of Illinois Open Source License
-applies to all code in the LLVM Distribution, and nothing in any of the
-other licenses gives permission to use the names of the LLVM Team or the
-University of Illinois to endorse or promote products derived from this
-Software.
-
-The following pieces of software have additional or alternate copyrights,
-licenses, and/or restrictions:
-
-Program Directory
-------- ---------
-Google Test llvm/utils/unittest/googletest
-OpenBSD regex llvm/lib/Support/{reg*, COPYRIGHT.regex}
-pyyaml tests llvm/test/YAMLParser/{*.data, LICENSE.TXT}
-ARM contributions llvm/lib/Target/ARM/LICENSE.TXT
-md5 contributions llvm/lib/Support/MD5.cpp llvm/include/llvm/Support/MD5.h
diff --git a/src/3rdparty/llvm/include/llvm-c/DataTypes.h b/src/3rdparty/llvm/include/llvm-c/DataTypes.h
deleted file mode 100644
index 7081c83ffc..0000000000
--- a/src/3rdparty/llvm/include/llvm-c/DataTypes.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*===-- include/llvm-c/DataTypes.h - Define fixed size types ------*- C -*-===*\
-|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
-|* *|
-|*===----------------------------------------------------------------------===*|
-|* *|
-|* This file contains definitions to figure out the size of _HOST_ data types.*|
-|* This file is important because different host OS's define different macros,*|
-|* which makes portability tough. This file exports the following *|
-|* definitions: *|
-|* *|
-|* [u]int(32|64)_t : typedefs for signed and unsigned 32/64 bit system types*|
-|* [U]INT(8|16|32|64)_(MIN|MAX) : Constants for the min and max values. *|
-|* *|
-|* No library is required when using these functions. *|
-|* *|
-|*===----------------------------------------------------------------------===*/
-
-/* Please leave this file C-compatible. */
-
-#ifndef LLVM_C_DATATYPES_H
-#define LLVM_C_DATATYPES_H
-
-#ifdef __cplusplus
-#include <cmath>
-#else
-#include <math.h>
-#endif
-
-#include <inttypes.h>
-#include <stdint.h>
-
-#ifndef _MSC_VER
-
-#if !defined(UINT32_MAX)
-# error "The standard header <cstdint> is not C++11 compliant. Must #define "\
- "__STDC_LIMIT_MACROS before #including llvm-c/DataTypes.h"
-#endif
-
-#if !defined(UINT32_C)
-# error "The standard header <cstdint> is not C++11 compliant. Must #define "\
- "__STDC_CONSTANT_MACROS before #including llvm-c/DataTypes.h"
-#endif
-
-/* Note that <inttypes.h> includes <stdint.h>, if this is a C99 system. */
-#include <sys/types.h>
-
-#ifdef _AIX
-// GCC is strict about defining large constants: they must have LL modifier.
-#undef INT64_MAX
-#undef INT64_MIN
-#endif
-
-#else /* _MSC_VER */
-#ifdef __cplusplus
-#include <cstddef>
-#include <cstdlib>
-#else
-#include <stddef.h>
-#include <stdlib.h>
-#endif
-#include <sys/types.h>
-
-#if defined(_WIN64)
-typedef signed __int64 ssize_t;
-#else
-typedef signed int ssize_t;
-#endif /* _WIN64 */
-
-#endif /* _MSC_VER */
-
-/* Set defaults for constants which we cannot find. */
-#if !defined(INT64_MAX)
-# define INT64_MAX 9223372036854775807LL
-#endif
-#if !defined(INT64_MIN)
-# define INT64_MIN ((-INT64_MAX)-1)
-#endif
-#if !defined(UINT64_MAX)
-# define UINT64_MAX 0xffffffffffffffffULL
-#endif
-
-#ifndef HUGE_VALF
-#define HUGE_VALF (float)HUGE_VAL
-#endif
-
-#endif /* LLVM_C_DATATYPES_H */
diff --git a/src/3rdparty/llvm/include/llvm/ADT/PointerIntPair.h b/src/3rdparty/llvm/include/llvm/ADT/PointerIntPair.h
deleted file mode 100644
index 884d05155b..0000000000
--- a/src/3rdparty/llvm/include/llvm/ADT/PointerIntPair.h
+++ /dev/null
@@ -1,233 +0,0 @@
-//===- llvm/ADT/PointerIntPair.h - Pair for pointer and int -----*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines the PointerIntPair class.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_ADT_POINTERINTPAIR_H
-#define LLVM_ADT_POINTERINTPAIR_H
-
-#include "llvm/Support/PointerLikeTypeTraits.h"
-#include <cassert>
-#include <cstdint>
-#include <limits>
-
-namespace llvm {
-
-template <typename T> struct DenseMapInfo;
-template <typename PointerT, unsigned IntBits, typename PtrTraits>
-struct PointerIntPairInfo;
-
-/// PointerIntPair - This class implements a pair of a pointer and small
-/// integer. It is designed to represent this in the space required by one
-/// pointer by bitmangling the integer into the low part of the pointer. This
-/// can only be done for small integers: typically up to 3 bits, but it depends
-/// on the number of bits available according to PointerLikeTypeTraits for the
-/// type.
-///
-/// Note that PointerIntPair always puts the IntVal part in the highest bits
-/// possible. For example, PointerIntPair<void*, 1, bool> will put the bit for
-/// the bool into bit #2, not bit #0, which allows the low two bits to be used
-/// for something else. For example, this allows:
-/// PointerIntPair<PointerIntPair<void*, 1, bool>, 1, bool>
-/// ... and the two bools will land in different bits.
-template <typename PointerTy, unsigned IntBits, typename IntType = unsigned,
- typename PtrTraits = PointerLikeTypeTraits<PointerTy>,
- typename Info = PointerIntPairInfo<PointerTy, IntBits, PtrTraits>>
-class PointerIntPair {
- intptr_t Value = 0;
-
-public:
- constexpr PointerIntPair() = default;
-
- PointerIntPair(PointerTy PtrVal, IntType IntVal) {
- setPointerAndInt(PtrVal, IntVal);
- }
-
- explicit PointerIntPair(PointerTy PtrVal) { initWithPointer(PtrVal); }
-
- PointerTy getPointer() const { return Info::getPointer(Value); }
-
- IntType getInt() const { return (IntType)Info::getInt(Value); }
-
- void setPointer(PointerTy PtrVal) {
- Value = Info::updatePointer(Value, PtrVal);
- }
-
- void setInt(IntType IntVal) {
- Value = Info::updateInt(Value, static_cast<intptr_t>(IntVal));
- }
-
- void initWithPointer(PointerTy PtrVal) {
- Value = Info::updatePointer(0, PtrVal);
- }
-
- void setPointerAndInt(PointerTy PtrVal, IntType IntVal) {
- Value = Info::updateInt(Info::updatePointer(0, PtrVal),
- static_cast<intptr_t>(IntVal));
- }
-
- PointerTy const *getAddrOfPointer() const {
- return const_cast<PointerIntPair *>(this)->getAddrOfPointer();
- }
-
- PointerTy *getAddrOfPointer() {
- assert(Value == reinterpret_cast<intptr_t>(getPointer()) &&
- "Can only return the address if IntBits is cleared and "
- "PtrTraits doesn't change the pointer");
- return reinterpret_cast<PointerTy *>(&Value);
- }
-
- void *getOpaqueValue() const { return reinterpret_cast<void *>(Value); }
-
- void setFromOpaqueValue(void *Val) {
- Value = reinterpret_cast<intptr_t>(Val);
- }
-
- static PointerIntPair getFromOpaqueValue(void *V) {
- PointerIntPair P;
- P.setFromOpaqueValue(V);
- return P;
- }
-
- // Allow PointerIntPairs to be created from const void * if and only if the
- // pointer type could be created from a const void *.
- static PointerIntPair getFromOpaqueValue(const void *V) {
- (void)PtrTraits::getFromVoidPointer(V);
- return getFromOpaqueValue(const_cast<void *>(V));
- }
-
- bool operator==(const PointerIntPair &RHS) const {
- return Value == RHS.Value;
- }
-
- bool operator!=(const PointerIntPair &RHS) const {
- return Value != RHS.Value;
- }
-
- bool operator<(const PointerIntPair &RHS) const { return Value < RHS.Value; }
- bool operator>(const PointerIntPair &RHS) const { return Value > RHS.Value; }
-
- bool operator<=(const PointerIntPair &RHS) const {
- return Value <= RHS.Value;
- }
-
- bool operator>=(const PointerIntPair &RHS) const {
- return Value >= RHS.Value;
- }
-};
-
-template <typename PointerT, unsigned IntBits, typename PtrTraits>
-struct PointerIntPairInfo {
- static_assert(PtrTraits::NumLowBitsAvailable <
- std::numeric_limits<uintptr_t>::digits,
- "cannot use a pointer type that has all bits free");
- static_assert(IntBits <= PtrTraits::NumLowBitsAvailable,
- "PointerIntPair with integer size too large for pointer");
- enum : uintptr_t {
- /// PointerBitMask - The bits that come from the pointer.
- PointerBitMask =
- ~(uintptr_t)(((intptr_t)1 << PtrTraits::NumLowBitsAvailable) - 1),
-
- /// IntShift - The number of low bits that we reserve for other uses, and
- /// keep zero.
- IntShift = (uintptr_t)PtrTraits::NumLowBitsAvailable - IntBits,
-
- /// IntMask - This is the unshifted mask for valid bits of the int type.
- IntMask = (uintptr_t)(((intptr_t)1 << IntBits) - 1),
-
- // ShiftedIntMask - This is the bits for the integer shifted in place.
- ShiftedIntMask = (uintptr_t)(IntMask << IntShift)
- };
-
- static PointerT getPointer(intptr_t Value) {
- return PtrTraits::getFromVoidPointer(
- reinterpret_cast<void *>(Value & PointerBitMask));
- }
-
- static intptr_t getInt(intptr_t Value) {
- return (Value >> IntShift) & IntMask;
- }
-
- static intptr_t updatePointer(intptr_t OrigValue, PointerT Ptr) {
- intptr_t PtrWord =
- reinterpret_cast<intptr_t>(PtrTraits::getAsVoidPointer(Ptr));
- assert((PtrWord & ~PointerBitMask) == 0 &&
- "Pointer is not sufficiently aligned");
- // Preserve all low bits, just update the pointer.
- return PtrWord | (OrigValue & ~PointerBitMask);
- }
-
- static intptr_t updateInt(intptr_t OrigValue, intptr_t Int) {
- intptr_t IntWord = static_cast<intptr_t>(Int);
- assert((IntWord & ~IntMask) == 0 && "Integer too large for field");
-
- // Preserve all bits other than the ones we are updating.
- return (OrigValue & ~ShiftedIntMask) | IntWord << IntShift;
- }
-};
-
-template <typename T> struct isPodLike;
-template <typename PointerTy, unsigned IntBits, typename IntType>
-struct isPodLike<PointerIntPair<PointerTy, IntBits, IntType>> {
- static const bool value = true;
-};
-
-// Provide specialization of DenseMapInfo for PointerIntPair.
-template <typename PointerTy, unsigned IntBits, typename IntType>
-struct DenseMapInfo<PointerIntPair<PointerTy, IntBits, IntType>> {
- using Ty = PointerIntPair<PointerTy, IntBits, IntType>;
-
- static Ty getEmptyKey() {
- uintptr_t Val = static_cast<uintptr_t>(-1);
- Val <<= PointerLikeTypeTraits<Ty>::NumLowBitsAvailable;
- return Ty::getFromOpaqueValue(reinterpret_cast<void *>(Val));
- }
-
- static Ty getTombstoneKey() {
- uintptr_t Val = static_cast<uintptr_t>(-2);
- Val <<= PointerLikeTypeTraits<PointerTy>::NumLowBitsAvailable;
- return Ty::getFromOpaqueValue(reinterpret_cast<void *>(Val));
- }
-
- static unsigned getHashValue(Ty V) {
- uintptr_t IV = reinterpret_cast<uintptr_t>(V.getOpaqueValue());
- return unsigned(IV) ^ unsigned(IV >> 9);
- }
-
- static bool isEqual(const Ty &LHS, const Ty &RHS) { return LHS == RHS; }
-};
-
-// Teach SmallPtrSet that PointerIntPair is "basically a pointer".
-template <typename PointerTy, unsigned IntBits, typename IntType,
- typename PtrTraits>
-struct PointerLikeTypeTraits<
- PointerIntPair<PointerTy, IntBits, IntType, PtrTraits>> {
- static inline void *
- getAsVoidPointer(const PointerIntPair<PointerTy, IntBits, IntType> &P) {
- return P.getOpaqueValue();
- }
-
- static inline PointerIntPair<PointerTy, IntBits, IntType>
- getFromVoidPointer(void *P) {
- return PointerIntPair<PointerTy, IntBits, IntType>::getFromOpaqueValue(P);
- }
-
- static inline PointerIntPair<PointerTy, IntBits, IntType>
- getFromVoidPointer(const void *P) {
- return PointerIntPair<PointerTy, IntBits, IntType>::getFromOpaqueValue(P);
- }
-
- enum { NumLowBitsAvailable = PtrTraits::NumLowBitsAvailable - IntBits };
-};
-
-} // end namespace llvm
-
-#endif // LLVM_ADT_POINTERINTPAIR_H
diff --git a/src/3rdparty/llvm/include/llvm/ADT/ilist.h b/src/3rdparty/llvm/include/llvm/ADT/ilist.h
deleted file mode 100644
index 7e346e1260..0000000000
--- a/src/3rdparty/llvm/include/llvm/ADT/ilist.h
+++ /dev/null
@@ -1,431 +0,0 @@
-//==-- llvm/ADT/ilist.h - Intrusive Linked List Template ---------*- C++ -*-==//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines classes to implement an intrusive doubly linked list class
-// (i.e. each node of the list must contain a next and previous field for the
-// list.
-//
-// The ilist class itself should be a plug in replacement for list. This list
-// replacement does not provide a constant time size() method, so be careful to
-// use empty() when you really want to know if it's empty.
-//
-// The ilist class is implemented as a circular list. The list itself contains
-// a sentinel node, whose Next points at begin() and whose Prev points at
-// rbegin(). The sentinel node itself serves as end() and rend().
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_ADT_ILIST_H
-#define LLVM_ADT_ILIST_H
-
-#include "llvm/ADT/simple_ilist.h"
-#include <cassert>
-#include <cstddef>
-#include <iterator>
-
-namespace llvm {
-
-/// Use delete by default for iplist and ilist.
-///
-/// Specialize this to get different behaviour for ownership-related API. (If
-/// you really want ownership semantics, consider using std::list or building
-/// something like \a BumpPtrList.)
-///
-/// \see ilist_noalloc_traits
-template <typename NodeTy> struct ilist_alloc_traits {
- static void deleteNode(NodeTy *V) { delete V; }
-};
-
-/// Custom traits to do nothing on deletion.
-///
-/// Specialize ilist_alloc_traits to inherit from this to disable the
-/// non-intrusive deletion in iplist (which implies ownership).
-///
-/// If you want purely intrusive semantics with no callbacks, consider using \a
-/// simple_ilist instead.
-///
-/// \code
-/// template <>
-/// struct ilist_alloc_traits<MyType> : ilist_noalloc_traits<MyType> {};
-/// \endcode
-template <typename NodeTy> struct ilist_noalloc_traits {
- static void deleteNode(NodeTy *) {}
-};
-
-/// Callbacks do nothing by default in iplist and ilist.
-///
-/// Specialize this for to use callbacks for when nodes change their list
-/// membership.
-template <typename NodeTy> struct ilist_callback_traits {
- void addNodeToList(NodeTy *) {}
- void removeNodeFromList(NodeTy *) {}
-
- /// Callback before transferring nodes to this list.
- ///
- /// \pre \c this!=&OldList
- template <class Iterator>
- void transferNodesFromList(ilist_callback_traits &OldList, Iterator /*first*/,
- Iterator /*last*/) {
- (void)OldList;
- }
-};
-
-/// A fragment for template traits for intrusive list that provides default
-/// node related operations.
-///
-/// TODO: Remove this layer of indirection. It's not necessary.
-template <typename NodeTy>
-struct ilist_node_traits : ilist_alloc_traits<NodeTy>,
- ilist_callback_traits<NodeTy> {};
-
-/// Default template traits for intrusive list.
-///
-/// By inheriting from this, you can easily use default implementations for all
-/// common operations.
-///
-/// TODO: Remove this customization point. Specializing ilist_traits is
-/// already fully general.
-template <typename NodeTy>
-struct ilist_default_traits : public ilist_node_traits<NodeTy> {};
-
-/// Template traits for intrusive list.
-///
-/// Customize callbacks and allocation semantics.
-template <typename NodeTy>
-struct ilist_traits : public ilist_default_traits<NodeTy> {};
-
-/// Const traits should never be instantiated.
-template <typename Ty> struct ilist_traits<const Ty> {};
-
-namespace ilist_detail {
-
-template <class T> T &make();
-
-/// Type trait to check for a traits class that has a getNext member (as a
-/// canary for any of the ilist_nextprev_traits API).
-template <class TraitsT, class NodeT> struct HasGetNext {
- typedef char Yes[1];
- typedef char No[2];
- template <size_t N> struct SFINAE {};
-
- template <class U>
- static Yes &test(U *I, decltype(I->getNext(&make<NodeT>())) * = 0);
- template <class> static No &test(...);
-
-public:
- static const bool value = sizeof(test<TraitsT>(nullptr)) == sizeof(Yes);
-};
-
-/// Type trait to check for a traits class that has a createSentinel member (as
-/// a canary for any of the ilist_sentinel_traits API).
-template <class TraitsT> struct HasCreateSentinel {
- typedef char Yes[1];
- typedef char No[2];
-
- template <class U>
- static Yes &test(U *I, decltype(I->createSentinel()) * = 0);
- template <class> static No &test(...);
-
-public:
- static const bool value = sizeof(test<TraitsT>(nullptr)) == sizeof(Yes);
-};
-
-/// Type trait to check for a traits class that has a createNode member.
-/// Allocation should be managed in a wrapper class, instead of in
-/// ilist_traits.
-template <class TraitsT, class NodeT> struct HasCreateNode {
- typedef char Yes[1];
- typedef char No[2];
- template <size_t N> struct SFINAE {};
-
- template <class U>
- static Yes &test(U *I, decltype(I->createNode(make<NodeT>())) * = 0);
- template <class> static No &test(...);
-
-public:
- static const bool value = sizeof(test<TraitsT>(nullptr)) == sizeof(Yes);
-};
-
-template <class TraitsT, class NodeT> struct HasObsoleteCustomization {
- static const bool value = HasGetNext<TraitsT, NodeT>::value ||
- HasCreateSentinel<TraitsT>::value ||
- HasCreateNode<TraitsT, NodeT>::value;
-};
-
-} // end namespace ilist_detail
-
-//===----------------------------------------------------------------------===//
-//
-/// A wrapper around an intrusive list with callbacks and non-intrusive
-/// ownership.
-///
-/// This wraps a purely intrusive list (like simple_ilist) with a configurable
-/// traits class. The traits can implement callbacks and customize the
-/// ownership semantics.
-///
-/// This is a subset of ilist functionality that can safely be used on nodes of
-/// polymorphic types, i.e. a heterogeneous list with a common base class that
-/// holds the next/prev pointers. The only state of the list itself is an
-/// ilist_sentinel, which holds pointers to the first and last nodes in the
-/// list.
-template <class IntrusiveListT, class TraitsT>
-class iplist_impl : public TraitsT, IntrusiveListT {
- typedef IntrusiveListT base_list_type;
-
-public:
- typedef typename base_list_type::pointer pointer;
- typedef typename base_list_type::const_pointer const_pointer;
- typedef typename base_list_type::reference reference;
- typedef typename base_list_type::const_reference const_reference;
- typedef typename base_list_type::value_type value_type;
- typedef typename base_list_type::size_type size_type;
- typedef typename base_list_type::difference_type difference_type;
- typedef typename base_list_type::iterator iterator;
- typedef typename base_list_type::const_iterator const_iterator;
- typedef typename base_list_type::reverse_iterator reverse_iterator;
- typedef
- typename base_list_type::const_reverse_iterator const_reverse_iterator;
-
-private:
- // TODO: Drop this assertion and the transitive type traits anytime after
- // v4.0 is branched (i.e,. keep them for one release to help out-of-tree code
- // update).
- static_assert(
- !ilist_detail::HasObsoleteCustomization<TraitsT, value_type>::value,
- "ilist customization points have changed!");
-
- static bool op_less(const_reference L, const_reference R) { return L < R; }
- static bool op_equal(const_reference L, const_reference R) { return L == R; }
-
-public:
- iplist_impl() = default;
-
- iplist_impl(const iplist_impl &) = delete;
- iplist_impl &operator=(const iplist_impl &) = delete;
-
- iplist_impl(iplist_impl &&X)
- : TraitsT(std::move(X)), IntrusiveListT(std::move(X)) {}
- iplist_impl &operator=(iplist_impl &&X) {
- *static_cast<TraitsT *>(this) = std::move(X);
- *static_cast<IntrusiveListT *>(this) = std::move(X);
- return *this;
- }
-
- ~iplist_impl() { clear(); }
-
- // Miscellaneous inspection routines.
- size_type max_size() const { return size_type(-1); }
-
- using base_list_type::begin;
- using base_list_type::end;
- using base_list_type::rbegin;
- using base_list_type::rend;
- using base_list_type::empty;
- using base_list_type::front;
- using base_list_type::back;
-
- void swap(iplist_impl &RHS) {
- assert(0 && "Swap does not use list traits callback correctly yet!");
- base_list_type::swap(RHS);
- }
-
- iterator insert(iterator where, pointer New) {
- this->addNodeToList(New); // Notify traits that we added a node...
- return base_list_type::insert(where, *New);
- }
-
- iterator insert(iterator where, const_reference New) {
- return this->insert(where, new value_type(New));
- }
-
- iterator insertAfter(iterator where, pointer New) {
- if (empty())
- return insert(begin(), New);
- else
- return insert(++where, New);
- }
-
- /// Clone another list.
- template <class Cloner> void cloneFrom(const iplist_impl &L2, Cloner clone) {
- clear();
- for (const_reference V : L2)
- push_back(clone(V));
- }
-
- pointer remove(iterator &IT) {
- pointer Node = &*IT++;
- this->removeNodeFromList(Node); // Notify traits that we removed a node...
- base_list_type::remove(*Node);
- return Node;
- }
-
- pointer remove(const iterator &IT) {
- iterator MutIt = IT;
- return remove(MutIt);
- }
-
- pointer remove(pointer IT) { return remove(iterator(IT)); }
- pointer remove(reference IT) { return remove(iterator(IT)); }
-
- // erase - remove a node from the controlled sequence... and delete it.
- iterator erase(iterator where) {
- this->deleteNode(remove(where));
- return where;
- }
-
- iterator erase(pointer IT) { return erase(iterator(IT)); }
- iterator erase(reference IT) { return erase(iterator(IT)); }
-
- /// Remove all nodes from the list like clear(), but do not call
- /// removeNodeFromList() or deleteNode().
- ///
- /// This should only be used immediately before freeing nodes in bulk to
- /// avoid traversing the list and bringing all the nodes into cache.
- void clearAndLeakNodesUnsafely() { base_list_type::clear(); }
-
-private:
- // transfer - The heart of the splice function. Move linked list nodes from
- // [first, last) into position.
- //
- void transfer(iterator position, iplist_impl &L2, iterator first, iterator last) {
- if (position == last)
- return;
-
- if (this != &L2) // Notify traits we moved the nodes...
- this->transferNodesFromList(L2, first, last);
-
- base_list_type::splice(position, L2, first, last);
- }
-
-public:
- //===----------------------------------------------------------------------===
- // Functionality derived from other functions defined above...
- //
-
- using base_list_type::size;
-
- iterator erase(iterator first, iterator last) {
- while (first != last)
- first = erase(first);
- return last;
- }
-
- void clear() { erase(begin(), end()); }
-
- // Front and back inserters...
- void push_front(pointer val) { insert(begin(), val); }
- void push_back(pointer val) { insert(end(), val); }
- void pop_front() {
- assert(!empty() && "pop_front() on empty list!");
- erase(begin());
- }
- void pop_back() {
- assert(!empty() && "pop_back() on empty list!");
- iterator t = end(); erase(--t);
- }
-
- // Special forms of insert...
- template<class InIt> void insert(iterator where, InIt first, InIt last) {
- for (; first != last; ++first) insert(where, *first);
- }
-
- // Splice members - defined in terms of transfer...
- void splice(iterator where, iplist_impl &L2) {
- if (!L2.empty())
- transfer(where, L2, L2.begin(), L2.end());
- }
- void splice(iterator where, iplist_impl &L2, iterator first) {
- iterator last = first; ++last;
- if (where == first || where == last) return; // No change
- transfer(where, L2, first, last);
- }
- void splice(iterator where, iplist_impl &L2, iterator first, iterator last) {
- if (first != last) transfer(where, L2, first, last);
- }
- void splice(iterator where, iplist_impl &L2, reference N) {
- splice(where, L2, iterator(N));
- }
- void splice(iterator where, iplist_impl &L2, pointer N) {
- splice(where, L2, iterator(N));
- }
-
- template <class Compare>
- void merge(iplist_impl &Right, Compare comp) {
- if (this == &Right)
- return;
- this->transferNodesFromList(Right, Right.begin(), Right.end());
- base_list_type::merge(Right, comp);
- }
- void merge(iplist_impl &Right) { return merge(Right, op_less); }
-
- using base_list_type::sort;
-
- /// \brief Get the previous node, or \c nullptr for the list head.
- pointer getPrevNode(reference N) const {
- auto I = N.getIterator();
- if (I == begin())
- return nullptr;
- return &*std::prev(I);
- }
- /// \brief Get the previous node, or \c nullptr for the list head.
- const_pointer getPrevNode(const_reference N) const {
- return getPrevNode(const_cast<reference >(N));
- }
-
- /// \brief Get the next node, or \c nullptr for the list tail.
- pointer getNextNode(reference N) const {
- auto Next = std::next(N.getIterator());
- if (Next == end())
- return nullptr;
- return &*Next;
- }
- /// \brief Get the next node, or \c nullptr for the list tail.
- const_pointer getNextNode(const_reference N) const {
- return getNextNode(const_cast<reference >(N));
- }
-};
-
-/// An intrusive list with ownership and callbacks specified/controlled by
-/// ilist_traits, only with API safe for polymorphic types.
-///
-/// The \p Options parameters are the same as those for \a simple_ilist. See
-/// there for a description of what's available.
-template <class T, class... Options>
-class iplist
- : public iplist_impl<simple_ilist<T, Options...>, ilist_traits<T>> {
- using iplist_impl_type = typename iplist::iplist_impl;
-
-public:
- iplist() = default;
-
- iplist(const iplist &X) = delete;
- iplist &operator=(const iplist &X) = delete;
-
- iplist(iplist &&X) : iplist_impl_type(std::move(X)) {}
- iplist &operator=(iplist &&X) {
- *static_cast<iplist_impl_type *>(this) = std::move(X);
- return *this;
- }
-};
-
-template <class T, class... Options> using ilist = iplist<T, Options...>;
-
-} // end namespace llvm
-
-namespace std {
-
- // Ensure that swap uses the fast list swap...
- template<class Ty>
- void swap(llvm::iplist<Ty> &Left, llvm::iplist<Ty> &Right) {
- Left.swap(Right);
- }
-
-} // end namespace std
-
-#endif // LLVM_ADT_ILIST_H
diff --git a/src/3rdparty/llvm/include/llvm/ADT/ilist_base.h b/src/3rdparty/llvm/include/llvm/ADT/ilist_base.h
deleted file mode 100644
index 3d818a48d4..0000000000
--- a/src/3rdparty/llvm/include/llvm/ADT/ilist_base.h
+++ /dev/null
@@ -1,93 +0,0 @@
-//===- llvm/ADT/ilist_base.h - Intrusive List Base --------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_ADT_ILIST_BASE_H
-#define LLVM_ADT_ILIST_BASE_H
-
-#include "llvm/ADT/ilist_node_base.h"
-#include <cassert>
-
-namespace llvm {
-
-/// Implementations of list algorithms using ilist_node_base.
-template <bool EnableSentinelTracking> class ilist_base {
-public:
- using node_base_type = ilist_node_base<EnableSentinelTracking>;
-
- static void insertBeforeImpl(node_base_type &Next, node_base_type &N) {
- node_base_type &Prev = *Next.getPrev();
- N.setNext(&Next);
- N.setPrev(&Prev);
- Prev.setNext(&N);
- Next.setPrev(&N);
- }
-
- static void removeImpl(node_base_type &N) {
- node_base_type *Prev = N.getPrev();
- node_base_type *Next = N.getNext();
- Next->setPrev(Prev);
- Prev->setNext(Next);
-
- // Not strictly necessary, but helps catch a class of bugs.
- N.setPrev(nullptr);
- N.setNext(nullptr);
- }
-
- static void removeRangeImpl(node_base_type &First, node_base_type &Last) {
- node_base_type *Prev = First.getPrev();
- node_base_type *Final = Last.getPrev();
- Last.setPrev(Prev);
- Prev->setNext(&Last);
-
- // Not strictly necessary, but helps catch a class of bugs.
- First.setPrev(nullptr);
- Final->setNext(nullptr);
- }
-
- static void transferBeforeImpl(node_base_type &Next, node_base_type &First,
- node_base_type &Last) {
- if (&Next == &Last || &First == &Last)
- return;
-
- // Position cannot be contained in the range to be transferred.
- assert(&Next != &First &&
- // Check for the most common mistake.
- "Insertion point can't be one of the transferred nodes");
-
- node_base_type &Final = *Last.getPrev();
-
- // Detach from old list/position.
- First.getPrev()->setNext(&Last);
- Last.setPrev(First.getPrev());
-
- // Splice [First, Final] into its new list/position.
- node_base_type &Prev = *Next.getPrev();
- Final.setNext(&Next);
- First.setPrev(&Prev);
- Prev.setNext(&First);
- Next.setPrev(&Final);
- }
-
- template <class T> static void insertBefore(T &Next, T &N) {
- insertBeforeImpl(Next, N);
- }
-
- template <class T> static void remove(T &N) { removeImpl(N); }
- template <class T> static void removeRange(T &First, T &Last) {
- removeRangeImpl(First, Last);
- }
-
- template <class T> static void transferBefore(T &Next, T &First, T &Last) {
- transferBeforeImpl(Next, First, Last);
- }
-};
-
-} // end namespace llvm
-
-#endif // LLVM_ADT_ILIST_BASE_H
diff --git a/src/3rdparty/llvm/include/llvm/ADT/ilist_iterator.h b/src/3rdparty/llvm/include/llvm/ADT/ilist_iterator.h
deleted file mode 100644
index 671e644e01..0000000000
--- a/src/3rdparty/llvm/include/llvm/ADT/ilist_iterator.h
+++ /dev/null
@@ -1,199 +0,0 @@
-//===- llvm/ADT/ilist_iterator.h - Intrusive List Iterator ------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_ADT_ILIST_ITERATOR_H
-#define LLVM_ADT_ILIST_ITERATOR_H
-
-#include "llvm/ADT/ilist_node.h"
-#include <cassert>
-#include <cstddef>
-#include <iterator>
-#include <type_traits>
-
-namespace llvm {
-
-namespace ilist_detail {
-
-/// Find const-correct node types.
-template <class OptionsT, bool IsConst> struct IteratorTraits;
-template <class OptionsT> struct IteratorTraits<OptionsT, false> {
- using value_type = typename OptionsT::value_type;
- using pointer = typename OptionsT::pointer;
- using reference = typename OptionsT::reference;
- using node_pointer = ilist_node_impl<OptionsT> *;
- using node_reference = ilist_node_impl<OptionsT> &;
-};
-template <class OptionsT> struct IteratorTraits<OptionsT, true> {
- using value_type = const typename OptionsT::value_type;
- using pointer = typename OptionsT::const_pointer;
- using reference = typename OptionsT::const_reference;
- using node_pointer = const ilist_node_impl<OptionsT> *;
- using node_reference = const ilist_node_impl<OptionsT> &;
-};
-
-template <bool IsReverse> struct IteratorHelper;
-template <> struct IteratorHelper<false> : ilist_detail::NodeAccess {
- using Access = ilist_detail::NodeAccess;
-
- template <class T> static void increment(T *&I) { I = Access::getNext(*I); }
- template <class T> static void decrement(T *&I) { I = Access::getPrev(*I); }
-};
-template <> struct IteratorHelper<true> : ilist_detail::NodeAccess {
- using Access = ilist_detail::NodeAccess;
-
- template <class T> static void increment(T *&I) { I = Access::getPrev(*I); }
- template <class T> static void decrement(T *&I) { I = Access::getNext(*I); }
-};
-
-} // end namespace ilist_detail
-
-/// Iterator for intrusive lists based on ilist_node.
-template <class OptionsT, bool IsReverse, bool IsConst>
-class ilist_iterator : ilist_detail::SpecificNodeAccess<OptionsT> {
- friend ilist_iterator<OptionsT, IsReverse, !IsConst>;
- friend ilist_iterator<OptionsT, !IsReverse, IsConst>;
- friend ilist_iterator<OptionsT, !IsReverse, !IsConst>;
-
- using Traits = ilist_detail::IteratorTraits<OptionsT, IsConst>;
- using Access = ilist_detail::SpecificNodeAccess<OptionsT>;
-
-public:
- using value_type = typename Traits::value_type;
- using pointer = typename Traits::pointer;
- using reference = typename Traits::reference;
- using difference_type = ptrdiff_t;
- using iterator_category = std::bidirectional_iterator_tag;
- using const_pointer = typename OptionsT::const_pointer;
- using const_reference = typename OptionsT::const_reference;
-
-private:
- using node_pointer = typename Traits::node_pointer;
- using node_reference = typename Traits::node_reference;
-
- node_pointer NodePtr = nullptr;
-
-public:
- /// Create from an ilist_node.
- explicit ilist_iterator(node_reference N) : NodePtr(&N) {}
-
- explicit ilist_iterator(pointer NP) : NodePtr(Access::getNodePtr(NP)) {}
- explicit ilist_iterator(reference NR) : NodePtr(Access::getNodePtr(&NR)) {}
- ilist_iterator() = default;
-
- // This is templated so that we can allow constructing a const iterator from
- // a nonconst iterator...
- template <bool RHSIsConst>
- ilist_iterator(
- const ilist_iterator<OptionsT, IsReverse, RHSIsConst> &RHS,
- typename std::enable_if<IsConst || !RHSIsConst, void *>::type = nullptr)
- : NodePtr(RHS.NodePtr) {}
-
- // This is templated so that we can allow assigning to a const iterator from
- // a nonconst iterator...
- template <bool RHSIsConst>
- typename std::enable_if<IsConst || !RHSIsConst, ilist_iterator &>::type
- operator=(const ilist_iterator<OptionsT, IsReverse, RHSIsConst> &RHS) {
- NodePtr = RHS.NodePtr;
- return *this;
- }
-
- /// Explicit conversion between forward/reverse iterators.
- ///
- /// Translate between forward and reverse iterators without changing range
- /// boundaries. The resulting iterator will dereference (and have a handle)
- /// to the previous node, which is somewhat unexpected; but converting the
- /// two endpoints in a range will give the same range in reverse.
- ///
- /// This matches std::reverse_iterator conversions.
- explicit ilist_iterator(
- const ilist_iterator<OptionsT, !IsReverse, IsConst> &RHS)
- : ilist_iterator(++RHS.getReverse()) {}
-
- /// Get a reverse iterator to the same node.
- ///
- /// Gives a reverse iterator that will dereference (and have a handle) to the
- /// same node. Converting the endpoint iterators in a range will give a
- /// different range; for range operations, use the explicit conversions.
- ilist_iterator<OptionsT, !IsReverse, IsConst> getReverse() const {
- if (NodePtr)
- return ilist_iterator<OptionsT, !IsReverse, IsConst>(*NodePtr);
- return ilist_iterator<OptionsT, !IsReverse, IsConst>();
- }
-
- /// Const-cast.
- ilist_iterator<OptionsT, IsReverse, false> getNonConst() const {
- if (NodePtr)
- return ilist_iterator<OptionsT, IsReverse, false>(
- const_cast<typename ilist_iterator<OptionsT, IsReverse,
- false>::node_reference>(*NodePtr));
- return ilist_iterator<OptionsT, IsReverse, false>();
- }
-
- // Accessors...
- reference operator*() const {
- assert(!NodePtr->isKnownSentinel());
- return *Access::getValuePtr(NodePtr);
- }
- pointer operator->() const { return &operator*(); }
-
- // Comparison operators
- friend bool operator==(const ilist_iterator &LHS, const ilist_iterator &RHS) {
- return LHS.NodePtr == RHS.NodePtr;
- }
- friend bool operator!=(const ilist_iterator &LHS, const ilist_iterator &RHS) {
- return LHS.NodePtr != RHS.NodePtr;
- }
-
- // Increment and decrement operators...
- ilist_iterator &operator--() {
- NodePtr = IsReverse ? NodePtr->getNext() : NodePtr->getPrev();
- return *this;
- }
- ilist_iterator &operator++() {
- NodePtr = IsReverse ? NodePtr->getPrev() : NodePtr->getNext();
- return *this;
- }
- ilist_iterator operator--(int) {
- ilist_iterator tmp = *this;
- --*this;
- return tmp;
- }
- ilist_iterator operator++(int) {
- ilist_iterator tmp = *this;
- ++*this;
- return tmp;
- }
-
- /// Get the underlying ilist_node.
- node_pointer getNodePtr() const { return static_cast<node_pointer>(NodePtr); }
-
- /// Check for end. Only valid if ilist_sentinel_tracking<true>.
- bool isEnd() const { return NodePtr ? NodePtr->isSentinel() : false; }
-};
-
-template <typename From> struct simplify_type;
-
-/// Allow ilist_iterators to convert into pointers to a node automatically when
-/// used by the dyn_cast, cast, isa mechanisms...
-///
-/// FIXME: remove this, since there is no implicit conversion to NodeTy.
-template <class OptionsT, bool IsConst>
-struct simplify_type<ilist_iterator<OptionsT, false, IsConst>> {
- using iterator = ilist_iterator<OptionsT, false, IsConst>;
- using SimpleType = typename iterator::pointer;
-
- static SimpleType getSimplifiedValue(const iterator &Node) { return &*Node; }
-};
-template <class OptionsT, bool IsConst>
-struct simplify_type<const ilist_iterator<OptionsT, false, IsConst>>
- : simplify_type<ilist_iterator<OptionsT, false, IsConst>> {};
-
-} // end namespace llvm
-
-#endif // LLVM_ADT_ILIST_ITERATOR_H
diff --git a/src/3rdparty/llvm/include/llvm/ADT/ilist_node.h b/src/3rdparty/llvm/include/llvm/ADT/ilist_node.h
deleted file mode 100644
index 3362611697..0000000000
--- a/src/3rdparty/llvm/include/llvm/ADT/ilist_node.h
+++ /dev/null
@@ -1,306 +0,0 @@
-//===- llvm/ADT/ilist_node.h - Intrusive Linked List Helper -----*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines the ilist_node class template, which is a convenient
-// base class for creating classes that can be used with ilists.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_ADT_ILIST_NODE_H
-#define LLVM_ADT_ILIST_NODE_H
-
-#include "llvm/ADT/ilist_node_base.h"
-#include "llvm/ADT/ilist_node_options.h"
-
-namespace llvm {
-
-namespace ilist_detail {
-
-struct NodeAccess;
-
-} // end namespace ilist_detail
-
-template <class OptionsT, bool IsReverse, bool IsConst> class ilist_iterator;
-template <class OptionsT> class ilist_sentinel;
-
-/// Implementation for an ilist node.
-///
-/// Templated on an appropriate \a ilist_detail::node_options, usually computed
-/// by \a ilist_detail::compute_node_options.
-///
-/// This is a wrapper around \a ilist_node_base whose main purpose is to
-/// provide type safety: you can't insert nodes of \a ilist_node_impl into the
-/// wrong \a simple_ilist or \a iplist.
-template <class OptionsT> class ilist_node_impl : OptionsT::node_base_type {
- using value_type = typename OptionsT::value_type;
- using node_base_type = typename OptionsT::node_base_type;
- using list_base_type = typename OptionsT::list_base_type;
-
- friend typename OptionsT::list_base_type;
- friend struct ilist_detail::NodeAccess;
- friend class ilist_sentinel<OptionsT>;
- friend class ilist_iterator<OptionsT, false, false>;
- friend class ilist_iterator<OptionsT, false, true>;
- friend class ilist_iterator<OptionsT, true, false>;
- friend class ilist_iterator<OptionsT, true, true>;
-
-protected:
- using self_iterator = ilist_iterator<OptionsT, false, false>;
- using const_self_iterator = ilist_iterator<OptionsT, false, true>;
- using reverse_self_iterator = ilist_iterator<OptionsT, true, false>;
- using const_reverse_self_iterator = ilist_iterator<OptionsT, true, true>;
-
- ilist_node_impl() = default;
-
-private:
- ilist_node_impl *getPrev() {
- return static_cast<ilist_node_impl *>(node_base_type::getPrev());
- }
-
- ilist_node_impl *getNext() {
- return static_cast<ilist_node_impl *>(node_base_type::getNext());
- }
-
- const ilist_node_impl *getPrev() const {
- return static_cast<ilist_node_impl *>(node_base_type::getPrev());
- }
-
- const ilist_node_impl *getNext() const {
- return static_cast<ilist_node_impl *>(node_base_type::getNext());
- }
-
- void setPrev(ilist_node_impl *N) { node_base_type::setPrev(N); }
- void setNext(ilist_node_impl *N) { node_base_type::setNext(N); }
-
-public:
- self_iterator getIterator() { return self_iterator(*this); }
- const_self_iterator getIterator() const { return const_self_iterator(*this); }
-
- reverse_self_iterator getReverseIterator() {
- return reverse_self_iterator(*this);
- }
-
- const_reverse_self_iterator getReverseIterator() const {
- return const_reverse_self_iterator(*this);
- }
-
- // Under-approximation, but always available for assertions.
- using node_base_type::isKnownSentinel;
-
- /// Check whether this is the sentinel node.
- ///
- /// This requires sentinel tracking to be explicitly enabled. Use the
- /// ilist_sentinel_tracking<true> option to get this API.
- bool isSentinel() const {
- static_assert(OptionsT::is_sentinel_tracking_explicit,
- "Use ilist_sentinel_tracking<true> to enable isSentinel()");
- return node_base_type::isSentinel();
- }
-};
-
-/// An intrusive list node.
-///
-/// A base class to enable membership in intrusive lists, including \a
-/// simple_ilist, \a iplist, and \a ilist. The first template parameter is the
-/// \a value_type for the list.
-///
-/// An ilist node can be configured with compile-time options to change
-/// behaviour and/or add API.
-///
-/// By default, an \a ilist_node knows whether it is the list sentinel (an
-/// instance of \a ilist_sentinel) if and only if
-/// LLVM_ENABLE_ABI_BREAKING_CHECKS. The function \a isKnownSentinel() always
-/// returns \c false tracking is off. Sentinel tracking steals a bit from the
-/// "prev" link, which adds a mask operation when decrementing an iterator, but
-/// enables bug-finding assertions in \a ilist_iterator.
-///
-/// To turn sentinel tracking on all the time, pass in the
-/// ilist_sentinel_tracking<true> template parameter. This also enables the \a
-/// isSentinel() function. The same option must be passed to the intrusive
-/// list. (ilist_sentinel_tracking<false> turns sentinel tracking off all the
-/// time.)
-///
-/// A type can inherit from ilist_node multiple times by passing in different
-/// \a ilist_tag options. This allows a single instance to be inserted into
-/// multiple lists simultaneously, where each list is given the same tag.
-///
-/// \example
-/// struct A {};
-/// struct B {};
-/// struct N : ilist_node<N, ilist_tag<A>>, ilist_node<N, ilist_tag<B>> {};
-///
-/// void foo() {
-/// simple_ilist<N, ilist_tag<A>> ListA;
-/// simple_ilist<N, ilist_tag<B>> ListB;
-/// N N1;
-/// ListA.push_back(N1);
-/// ListB.push_back(N1);
-/// }
-/// \endexample
-///
-/// See \a is_valid_option for steps on adding a new option.
-template <class T, class... Options>
-class ilist_node
- : public ilist_node_impl<
- typename ilist_detail::compute_node_options<T, Options...>::type> {
- static_assert(ilist_detail::check_options<Options...>::value,
- "Unrecognized node option!");
-};
-
-namespace ilist_detail {
-
-/// An access class for ilist_node private API.
-///
-/// This gives access to the private parts of ilist nodes. Nodes for an ilist
-/// should friend this class if they inherit privately from ilist_node.
-///
-/// Using this class outside of the ilist implementation is unsupported.
-struct NodeAccess {
-protected:
- template <class OptionsT>
- static ilist_node_impl<OptionsT> *getNodePtr(typename OptionsT::pointer N) {
- return N;
- }
-
- template <class OptionsT>
- static const ilist_node_impl<OptionsT> *
- getNodePtr(typename OptionsT::const_pointer N) {
- return N;
- }
-
- template <class OptionsT>
- static typename OptionsT::pointer getValuePtr(ilist_node_impl<OptionsT> *N) {
- return static_cast<typename OptionsT::pointer>(N);
- }
-
- template <class OptionsT>
- static typename OptionsT::const_pointer
- getValuePtr(const ilist_node_impl<OptionsT> *N) {
- return static_cast<typename OptionsT::const_pointer>(N);
- }
-
- template <class OptionsT>
- static ilist_node_impl<OptionsT> *getPrev(ilist_node_impl<OptionsT> &N) {
- return N.getPrev();
- }
-
- template <class OptionsT>
- static ilist_node_impl<OptionsT> *getNext(ilist_node_impl<OptionsT> &N) {
- return N.getNext();
- }
-
- template <class OptionsT>
- static const ilist_node_impl<OptionsT> *
- getPrev(const ilist_node_impl<OptionsT> &N) {
- return N.getPrev();
- }
-
- template <class OptionsT>
- static const ilist_node_impl<OptionsT> *
- getNext(const ilist_node_impl<OptionsT> &N) {
- return N.getNext();
- }
-};
-
-template <class OptionsT> struct SpecificNodeAccess : NodeAccess {
-protected:
- using pointer = typename OptionsT::pointer;
- using const_pointer = typename OptionsT::const_pointer;
- using node_type = ilist_node_impl<OptionsT>;
-
- static node_type *getNodePtr(pointer N) {
- return NodeAccess::getNodePtr<OptionsT>(N);
- }
-
- static const node_type *getNodePtr(const_pointer N) {
- return NodeAccess::getNodePtr<OptionsT>(N);
- }
-
- static pointer getValuePtr(node_type *N) {
- return NodeAccess::getValuePtr<OptionsT>(N);
- }
-
- static const_pointer getValuePtr(const node_type *N) {
- return NodeAccess::getValuePtr<OptionsT>(N);
- }
-};
-
-} // end namespace ilist_detail
-
-template <class OptionsT>
-class ilist_sentinel : public ilist_node_impl<OptionsT> {
-public:
- ilist_sentinel() {
- this->initializeSentinel();
- reset();
- }
-
- void reset() {
- this->setPrev(this);
- this->setNext(this);
- }
-
- bool empty() const { return this == this->getPrev(); }
-};
-
-/// An ilist node that can access its parent list.
-///
-/// Requires \c NodeTy to have \a getParent() to find the parent node, and the
-/// \c ParentTy to have \a getSublistAccess() to get a reference to the list.
-template <typename NodeTy, typename ParentTy, class... Options>
-class ilist_node_with_parent : public ilist_node<NodeTy, Options...> {
-protected:
- ilist_node_with_parent() = default;
-
-private:
- /// Forward to NodeTy::getParent().
- ///
- /// Note: do not use the name "getParent()". We want a compile error
- /// (instead of recursion) when the subclass fails to implement \a
- /// getParent().
- const ParentTy *getNodeParent() const {
- return static_cast<const NodeTy *>(this)->getParent();
- }
-
-public:
- /// @name Adjacent Node Accessors
- /// @{
- /// \brief Get the previous node, or \c nullptr for the list head.
- NodeTy *getPrevNode() {
- // Should be separated to a reused function, but then we couldn't use auto
- // (and would need the type of the list).
- const auto &List =
- getNodeParent()->*(ParentTy::getSublistAccess((NodeTy *)nullptr));
- return List.getPrevNode(*static_cast<NodeTy *>(this));
- }
-
- /// \brief Get the previous node, or \c nullptr for the list head.
- const NodeTy *getPrevNode() const {
- return const_cast<ilist_node_with_parent *>(this)->getPrevNode();
- }
-
- /// \brief Get the next node, or \c nullptr for the list tail.
- NodeTy *getNextNode() {
- // Should be separated to a reused function, but then we couldn't use auto
- // (and would need the type of the list).
- const auto &List =
- getNodeParent()->*(ParentTy::getSublistAccess((NodeTy *)nullptr));
- return List.getNextNode(*static_cast<NodeTy *>(this));
- }
-
- /// \brief Get the next node, or \c nullptr for the list tail.
- const NodeTy *getNextNode() const {
- return const_cast<ilist_node_with_parent *>(this)->getNextNode();
- }
- /// @}
-};
-
-} // end namespace llvm
-
-#endif // LLVM_ADT_ILIST_NODE_H
diff --git a/src/3rdparty/llvm/include/llvm/ADT/ilist_node_base.h b/src/3rdparty/llvm/include/llvm/ADT/ilist_node_base.h
deleted file mode 100644
index e5062ac4ea..0000000000
--- a/src/3rdparty/llvm/include/llvm/ADT/ilist_node_base.h
+++ /dev/null
@@ -1,53 +0,0 @@
-//===- llvm/ADT/ilist_node_base.h - Intrusive List Node Base -----*- C++ -*-==//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_ADT_ILIST_NODE_BASE_H
-#define LLVM_ADT_ILIST_NODE_BASE_H
-
-#include "llvm/ADT/PointerIntPair.h"
-
-namespace llvm {
-
-/// Base class for ilist nodes.
-///
-/// Optionally tracks whether this node is the sentinel.
-template <bool EnableSentinelTracking> class ilist_node_base;
-
-template <> class ilist_node_base<false> {
- ilist_node_base *Prev = nullptr;
- ilist_node_base *Next = nullptr;
-
-public:
- void setPrev(ilist_node_base *Prev) { this->Prev = Prev; }
- void setNext(ilist_node_base *Next) { this->Next = Next; }
- ilist_node_base *getPrev() const { return Prev; }
- ilist_node_base *getNext() const { return Next; }
-
- bool isKnownSentinel() const { return false; }
- void initializeSentinel() {}
-};
-
-template <> class ilist_node_base<true> {
- PointerIntPair<ilist_node_base *, 1> PrevAndSentinel;
- ilist_node_base *Next = nullptr;
-
-public:
- void setPrev(ilist_node_base *Prev) { PrevAndSentinel.setPointer(Prev); }
- void setNext(ilist_node_base *Next) { this->Next = Next; }
- ilist_node_base *getPrev() const { return PrevAndSentinel.getPointer(); }
- ilist_node_base *getNext() const { return Next; }
-
- bool isSentinel() const { return PrevAndSentinel.getInt(); }
- bool isKnownSentinel() const { return isSentinel(); }
- void initializeSentinel() { PrevAndSentinel.setInt(true); }
-};
-
-} // end namespace llvm
-
-#endif // LLVM_ADT_ILIST_NODE_BASE_H
diff --git a/src/3rdparty/llvm/include/llvm/ADT/ilist_node_options.h b/src/3rdparty/llvm/include/llvm/ADT/ilist_node_options.h
deleted file mode 100644
index a09fdda31c..0000000000
--- a/src/3rdparty/llvm/include/llvm/ADT/ilist_node_options.h
+++ /dev/null
@@ -1,133 +0,0 @@
-//===- llvm/ADT/ilist_node_options.h - ilist_node Options -------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_ADT_ILIST_NODE_OPTIONS_H
-#define LLVM_ADT_ILIST_NODE_OPTIONS_H
-
-//#include "llvm/Config/abi-breaking.h"
-//#include "llvm/Config/llvm-config.h"
-
-#include <type_traits>
-
-namespace llvm {
-
-template <bool EnableSentinelTracking> class ilist_node_base;
-template <bool EnableSentinelTracking> class ilist_base;
-
-/// Option to choose whether to track sentinels.
-///
-/// This option affects the ABI for the nodes. When not specified explicitly,
-/// the ABI depends on LLVM_ENABLE_ABI_BREAKING_CHECKS. Specify explicitly to
-/// enable \a ilist_node::isSentinel().
-template <bool EnableSentinelTracking> struct ilist_sentinel_tracking {};
-
-/// Option to specify a tag for the node type.
-///
-/// This option allows a single value type to be inserted in multiple lists
-/// simultaneously. See \a ilist_node for usage examples.
-template <class Tag> struct ilist_tag {};
-
-namespace ilist_detail {
-
-/// Helper trait for recording whether an option is specified explicitly.
-template <bool IsExplicit> struct explicitness {
- static const bool is_explicit = IsExplicit;
-};
-typedef explicitness<true> is_explicit;
-typedef explicitness<false> is_implicit;
-
-/// Check whether an option is valid.
-///
-/// The steps for adding and enabling a new ilist option include:
-/// \li define the option, ilist_foo<Bar>, above;
-/// \li add new parameters for Bar to \a ilist_detail::node_options;
-/// \li add an extraction meta-function, ilist_detail::extract_foo;
-/// \li call extract_foo from \a ilist_detail::compute_node_options and pass it
-/// into \a ilist_detail::node_options; and
-/// \li specialize \c is_valid_option<ilist_foo<Bar>> to inherit from \c
-/// std::true_type to get static assertions passing in \a simple_ilist and \a
-/// ilist_node.
-template <class Option> struct is_valid_option : std::false_type {};
-
-/// Extract sentinel tracking option.
-///
-/// Look through \p Options for the \a ilist_sentinel_tracking option, with the
-/// default depending on LLVM_ENABLE_ABI_BREAKING_CHECKS.
-template <class... Options> struct extract_sentinel_tracking;
-template <bool EnableSentinelTracking, class... Options>
-struct extract_sentinel_tracking<
- ilist_sentinel_tracking<EnableSentinelTracking>, Options...>
- : std::integral_constant<bool, EnableSentinelTracking>, is_explicit {};
-template <class Option1, class... Options>
-struct extract_sentinel_tracking<Option1, Options...>
- : extract_sentinel_tracking<Options...> {};
-#if LLVM_ENABLE_ABI_BREAKING_CHECKS
-template <> struct extract_sentinel_tracking<> : std::true_type, is_implicit {};
-#else
-template <>
-struct extract_sentinel_tracking<> : std::false_type, is_implicit {};
-#endif
-template <bool EnableSentinelTracking>
-struct is_valid_option<ilist_sentinel_tracking<EnableSentinelTracking>>
- : std::true_type {};
-
-/// Extract custom tag option.
-///
-/// Look through \p Options for the \a ilist_tag option, pulling out the
-/// custom tag type, using void as a default.
-template <class... Options> struct extract_tag;
-template <class Tag, class... Options>
-struct extract_tag<ilist_tag<Tag>, Options...> {
- typedef Tag type;
-};
-template <class Option1, class... Options>
-struct extract_tag<Option1, Options...> : extract_tag<Options...> {};
-template <> struct extract_tag<> { typedef void type; };
-template <class Tag> struct is_valid_option<ilist_tag<Tag>> : std::true_type {};
-
-/// Check whether options are valid.
-///
-/// The conjunction of \a is_valid_option on each individual option.
-template <class... Options> struct check_options;
-template <> struct check_options<> : std::true_type {};
-template <class Option1, class... Options>
-struct check_options<Option1, Options...>
- : std::integral_constant<bool, is_valid_option<Option1>::value &&
- check_options<Options...>::value> {};
-
-/// Traits for options for \a ilist_node.
-///
-/// This is usually computed via \a compute_node_options.
-template <class T, bool EnableSentinelTracking, bool IsSentinelTrackingExplicit,
- class TagT>
-struct node_options {
- typedef T value_type;
- typedef T *pointer;
- typedef T &reference;
- typedef const T *const_pointer;
- typedef const T &const_reference;
-
- static const bool enable_sentinel_tracking = EnableSentinelTracking;
- static const bool is_sentinel_tracking_explicit = IsSentinelTrackingExplicit;
- typedef TagT tag;
- typedef ilist_node_base<enable_sentinel_tracking> node_base_type;
- typedef ilist_base<enable_sentinel_tracking> list_base_type;
-};
-
-template <class T, class... Options> struct compute_node_options {
- typedef node_options<T, extract_sentinel_tracking<Options...>::value,
- extract_sentinel_tracking<Options...>::is_explicit,
- typename extract_tag<Options...>::type>
- type;
-};
-
-} // end namespace ilist_detail
-} // end namespace llvm
-
-#endif // LLVM_ADT_ILIST_NODE_OPTIONS_H
diff --git a/src/3rdparty/llvm/include/llvm/ADT/iterator.h b/src/3rdparty/llvm/include/llvm/ADT/iterator.h
deleted file mode 100644
index 711f8f2216..0000000000
--- a/src/3rdparty/llvm/include/llvm/ADT/iterator.h
+++ /dev/null
@@ -1,339 +0,0 @@
-//===- iterator.h - Utilities for using and defining iterators --*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_ADT_ITERATOR_H
-#define LLVM_ADT_ITERATOR_H
-
-#include "llvm/ADT/iterator_range.h"
-#include <algorithm>
-#include <cstddef>
-#include <iterator>
-#include <type_traits>
-#include <utility>
-
-namespace llvm {
-
-/// \brief CRTP base class which implements the entire standard iterator facade
-/// in terms of a minimal subset of the interface.
-///
-/// Use this when it is reasonable to implement most of the iterator
-/// functionality in terms of a core subset. If you need special behavior or
-/// there are performance implications for this, you may want to override the
-/// relevant members instead.
-///
-/// Note, one abstraction that this does *not* provide is implementing
-/// subtraction in terms of addition by negating the difference. Negation isn't
-/// always information preserving, and I can see very reasonable iterator
-/// designs where this doesn't work well. It doesn't really force much added
-/// boilerplate anyways.
-///
-/// Another abstraction that this doesn't provide is implementing increment in
-/// terms of addition of one. These aren't equivalent for all iterator
-/// categories, and respecting that adds a lot of complexity for little gain.
-///
-/// Classes wishing to use `iterator_facade_base` should implement the following
-/// methods:
-///
-/// Forward Iterators:
-/// (All of the following methods)
-/// - DerivedT &operator=(const DerivedT &R);
-/// - bool operator==(const DerivedT &R) const;
-/// - const T &operator*() const;
-/// - T &operator*();
-/// - DerivedT &operator++();
-///
-/// Bidirectional Iterators:
-/// (All methods of forward iterators, plus the following)
-/// - DerivedT &operator--();
-///
-/// Random-access Iterators:
-/// (All methods of bidirectional iterators excluding the following)
-/// - DerivedT &operator++();
-/// - DerivedT &operator--();
-/// (and plus the following)
-/// - bool operator<(const DerivedT &RHS) const;
-/// - DifferenceTypeT operator-(const DerivedT &R) const;
-/// - DerivedT &operator+=(DifferenceTypeT N);
-/// - DerivedT &operator-=(DifferenceTypeT N);
-///
-template <typename DerivedT, typename IteratorCategoryT, typename T,
- typename DifferenceTypeT = std::ptrdiff_t, typename PointerT = T *,
- typename ReferenceT = T &>
-class iterator_facade_base
- : public std::iterator<IteratorCategoryT, T, DifferenceTypeT, PointerT,
- ReferenceT> {
-protected:
- enum {
- IsRandomAccess = std::is_base_of<std::random_access_iterator_tag,
- IteratorCategoryT>::value,
- IsBidirectional = std::is_base_of<std::bidirectional_iterator_tag,
- IteratorCategoryT>::value,
- };
-
- /// A proxy object for computing a reference via indirecting a copy of an
- /// iterator. This is used in APIs which need to produce a reference via
- /// indirection but for which the iterator object might be a temporary. The
- /// proxy preserves the iterator internally and exposes the indirected
- /// reference via a conversion operator.
- class ReferenceProxy {
- friend iterator_facade_base;
-
- DerivedT I;
-
- ReferenceProxy(DerivedT I) : I(std::move(I)) {}
-
- public:
- operator ReferenceT() const { return *I; }
- };
-
-public:
- DerivedT operator+(DifferenceTypeT n) const {
- static_assert(std::is_base_of<iterator_facade_base, DerivedT>::value,
- "Must pass the derived type to this template!");
- static_assert(
- IsRandomAccess,
- "The '+' operator is only defined for random access iterators.");
- DerivedT tmp = *static_cast<const DerivedT *>(this);
- tmp += n;
- return tmp;
- }
- friend DerivedT operator+(DifferenceTypeT n, const DerivedT &i) {
- static_assert(
- IsRandomAccess,
- "The '+' operator is only defined for random access iterators.");
- return i + n;
- }
- DerivedT operator-(DifferenceTypeT n) const {
- static_assert(
- IsRandomAccess,
- "The '-' operator is only defined for random access iterators.");
- DerivedT tmp = *static_cast<const DerivedT *>(this);
- tmp -= n;
- return tmp;
- }
-
- DerivedT &operator++() {
- static_assert(std::is_base_of<iterator_facade_base, DerivedT>::value,
- "Must pass the derived type to this template!");
- return static_cast<DerivedT *>(this)->operator+=(1);
- }
- DerivedT operator++(int) {
- DerivedT tmp = *static_cast<DerivedT *>(this);
- ++*static_cast<DerivedT *>(this);
- return tmp;
- }
- DerivedT &operator--() {
- static_assert(
- IsBidirectional,
- "The decrement operator is only defined for bidirectional iterators.");
- return static_cast<DerivedT *>(this)->operator-=(1);
- }
- DerivedT operator--(int) {
- static_assert(
- IsBidirectional,
- "The decrement operator is only defined for bidirectional iterators.");
- DerivedT tmp = *static_cast<DerivedT *>(this);
- --*static_cast<DerivedT *>(this);
- return tmp;
- }
-
- bool operator!=(const DerivedT &RHS) const {
- return !static_cast<const DerivedT *>(this)->operator==(RHS);
- }
-
- bool operator>(const DerivedT &RHS) const {
- static_assert(
- IsRandomAccess,
- "Relational operators are only defined for random access iterators.");
- return !static_cast<const DerivedT *>(this)->operator<(RHS) &&
- !static_cast<const DerivedT *>(this)->operator==(RHS);
- }
- bool operator<=(const DerivedT &RHS) const {
- static_assert(
- IsRandomAccess,
- "Relational operators are only defined for random access iterators.");
- return !static_cast<const DerivedT *>(this)->operator>(RHS);
- }
- bool operator>=(const DerivedT &RHS) const {
- static_assert(
- IsRandomAccess,
- "Relational operators are only defined for random access iterators.");
- return !static_cast<const DerivedT *>(this)->operator<(RHS);
- }
-
- PointerT operator->() { return &static_cast<DerivedT *>(this)->operator*(); }
- PointerT operator->() const {
- return &static_cast<const DerivedT *>(this)->operator*();
- }
- ReferenceProxy operator[](DifferenceTypeT n) {
- static_assert(IsRandomAccess,
- "Subscripting is only defined for random access iterators.");
- return ReferenceProxy(static_cast<DerivedT *>(this)->operator+(n));
- }
- ReferenceProxy operator[](DifferenceTypeT n) const {
- static_assert(IsRandomAccess,
- "Subscripting is only defined for random access iterators.");
- return ReferenceProxy(static_cast<const DerivedT *>(this)->operator+(n));
- }
-};
-
-/// \brief CRTP base class for adapting an iterator to a different type.
-///
-/// This class can be used through CRTP to adapt one iterator into another.
-/// Typically this is done through providing in the derived class a custom \c
-/// operator* implementation. Other methods can be overridden as well.
-template <
- typename DerivedT, typename WrappedIteratorT,
- typename IteratorCategoryT =
- typename std::iterator_traits<WrappedIteratorT>::iterator_category,
- typename T = typename std::iterator_traits<WrappedIteratorT>::value_type,
- typename DifferenceTypeT =
- typename std::iterator_traits<WrappedIteratorT>::difference_type,
- typename PointerT = typename std::conditional<
- std::is_same<T, typename std::iterator_traits<
- WrappedIteratorT>::value_type>::value,
- typename std::iterator_traits<WrappedIteratorT>::pointer, T *>::type,
- typename ReferenceT = typename std::conditional<
- std::is_same<T, typename std::iterator_traits<
- WrappedIteratorT>::value_type>::value,
- typename std::iterator_traits<WrappedIteratorT>::reference, T &>::type,
- // Don't provide these, they are mostly to act as aliases below.
- typename WrappedTraitsT = std::iterator_traits<WrappedIteratorT>>
-class iterator_adaptor_base
- : public iterator_facade_base<DerivedT, IteratorCategoryT, T,
- DifferenceTypeT, PointerT, ReferenceT> {
- using BaseT = typename iterator_adaptor_base::iterator_facade_base;
-
-protected:
- WrappedIteratorT I;
-
- iterator_adaptor_base() = default;
-
- explicit iterator_adaptor_base(WrappedIteratorT u) : I(std::move(u)) {
- static_assert(std::is_base_of<iterator_adaptor_base, DerivedT>::value,
- "Must pass the derived type to this template!");
- }
-
- const WrappedIteratorT &wrapped() const { return I; }
-
-public:
- using difference_type = DifferenceTypeT;
-
- DerivedT &operator+=(difference_type n) {
- static_assert(
- BaseT::IsRandomAccess,
- "The '+=' operator is only defined for random access iterators.");
- I += n;
- return *static_cast<DerivedT *>(this);
- }
- DerivedT &operator-=(difference_type n) {
- static_assert(
- BaseT::IsRandomAccess,
- "The '-=' operator is only defined for random access iterators.");
- I -= n;
- return *static_cast<DerivedT *>(this);
- }
- using BaseT::operator-;
- difference_type operator-(const DerivedT &RHS) const {
- static_assert(
- BaseT::IsRandomAccess,
- "The '-' operator is only defined for random access iterators.");
- return I - RHS.I;
- }
-
- // We have to explicitly provide ++ and -- rather than letting the facade
- // forward to += because WrappedIteratorT might not support +=.
- using BaseT::operator++;
- DerivedT &operator++() {
- ++I;
- return *static_cast<DerivedT *>(this);
- }
- using BaseT::operator--;
- DerivedT &operator--() {
- static_assert(
- BaseT::IsBidirectional,
- "The decrement operator is only defined for bidirectional iterators.");
- --I;
- return *static_cast<DerivedT *>(this);
- }
-
- bool operator==(const DerivedT &RHS) const { return I == RHS.I; }
- bool operator<(const DerivedT &RHS) const {
- static_assert(
- BaseT::IsRandomAccess,
- "Relational operators are only defined for random access iterators.");
- return I < RHS.I;
- }
-
- ReferenceT operator*() const { return *I; }
-};
-
-/// \brief An iterator type that allows iterating over the pointees via some
-/// other iterator.
-///
-/// The typical usage of this is to expose a type that iterates over Ts, but
-/// which is implemented with some iterator over T*s:
-///
-/// \code
-/// using iterator = pointee_iterator<SmallVectorImpl<T *>::iterator>;
-/// \endcode
-template <typename WrappedIteratorT,
- typename T = typename std::remove_reference<
- decltype(**std::declval<WrappedIteratorT>())>::type>
-struct pointee_iterator
- : iterator_adaptor_base<
- pointee_iterator<WrappedIteratorT>, WrappedIteratorT,
- typename std::iterator_traits<WrappedIteratorT>::iterator_category,
- T> {
- pointee_iterator() = default;
- template <typename U>
- pointee_iterator(U &&u)
- : pointee_iterator::iterator_adaptor_base(std::forward<U &&>(u)) {}
-
- T &operator*() const { return **this->I; }
-};
-
-template <typename RangeT, typename WrappedIteratorT =
- decltype(std::begin(std::declval<RangeT>()))>
-iterator_range<pointee_iterator<WrappedIteratorT>>
-make_pointee_range(RangeT &&Range) {
- using PointeeIteratorT = pointee_iterator<WrappedIteratorT>;
- return make_range(PointeeIteratorT(std::begin(std::forward<RangeT>(Range))),
- PointeeIteratorT(std::end(std::forward<RangeT>(Range))));
-}
-
-template <typename WrappedIteratorT,
- typename T = decltype(&*std::declval<WrappedIteratorT>())>
-class pointer_iterator
- : public iterator_adaptor_base<pointer_iterator<WrappedIteratorT>,
- WrappedIteratorT, T> {
- mutable T Ptr;
-
-public:
- pointer_iterator() = default;
-
- explicit pointer_iterator(WrappedIteratorT u)
- : pointer_iterator::iterator_adaptor_base(std::move(u)) {}
-
- T &operator*() { return Ptr = &*this->I; }
- const T &operator*() const { return Ptr = &*this->I; }
-};
-
-template <typename RangeT, typename WrappedIteratorT =
- decltype(std::begin(std::declval<RangeT>()))>
-iterator_range<pointer_iterator<WrappedIteratorT>>
-make_pointer_range(RangeT &&Range) {
- using PointerIteratorT = pointer_iterator<WrappedIteratorT>;
- return make_range(PointerIteratorT(std::begin(std::forward<RangeT>(Range))),
- PointerIteratorT(std::end(std::forward<RangeT>(Range))));
-}
-
-} // end namespace llvm
-
-#endif // LLVM_ADT_ITERATOR_H
diff --git a/src/3rdparty/llvm/include/llvm/ADT/iterator_range.h b/src/3rdparty/llvm/include/llvm/ADT/iterator_range.h
deleted file mode 100644
index 3cbf6198eb..0000000000
--- a/src/3rdparty/llvm/include/llvm/ADT/iterator_range.h
+++ /dev/null
@@ -1,68 +0,0 @@
-//===- iterator_range.h - A range adaptor for iterators ---------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-/// \file
-/// This provides a very simple, boring adaptor for a begin and end iterator
-/// into a range type. This should be used to build range views that work well
-/// with range based for loops and range based constructors.
-///
-/// Note that code here follows more standards-based coding conventions as it
-/// is mirroring proposed interfaces for standardization.
-///
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_ADT_ITERATOR_RANGE_H
-#define LLVM_ADT_ITERATOR_RANGE_H
-
-#include <iterator>
-#include <utility>
-
-namespace llvm {
-
-/// \brief A range adaptor for a pair of iterators.
-///
-/// This just wraps two iterators into a range-compatible interface. Nothing
-/// fancy at all.
-template <typename IteratorT>
-class iterator_range {
- IteratorT begin_iterator, end_iterator;
-
-public:
- //TODO: Add SFINAE to test that the Container's iterators match the range's
- // iterators.
- template <typename Container>
- iterator_range(Container &&c)
- //TODO: Consider ADL/non-member begin/end calls.
- : begin_iterator(c.begin()), end_iterator(c.end()) {}
- iterator_range(IteratorT begin_iterator, IteratorT end_iterator)
- : begin_iterator(std::move(begin_iterator)),
- end_iterator(std::move(end_iterator)) {}
-
- IteratorT begin() const { return begin_iterator; }
- IteratorT end() const { return end_iterator; }
-};
-
-/// \brief Convenience function for iterating over sub-ranges.
-///
-/// This provides a bit of syntactic sugar to make using sub-ranges
-/// in for loops a bit easier. Analogous to std::make_pair().
-template <class T> iterator_range<T> make_range(T x, T y) {
- return iterator_range<T>(std::move(x), std::move(y));
-}
-
-template <typename T> iterator_range<T> make_range(std::pair<T, T> p) {
- return iterator_range<T>(std::move(p.first), std::move(p.second));
-}
-
-template<typename T>
-iterator_range<decltype(begin(std::declval<T>()))> drop_begin(T &&t, int n) {
- return make_range(std::next(begin(t), n), end(t));
-}
-}
-
-#endif
diff --git a/src/3rdparty/llvm/include/llvm/ADT/simple_ilist.h b/src/3rdparty/llvm/include/llvm/ADT/simple_ilist.h
deleted file mode 100644
index 4c7598a1ac..0000000000
--- a/src/3rdparty/llvm/include/llvm/ADT/simple_ilist.h
+++ /dev/null
@@ -1,315 +0,0 @@
-//===- llvm/ADT/simple_ilist.h - Simple Intrusive List ----------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_ADT_SIMPLE_ILIST_H
-#define LLVM_ADT_SIMPLE_ILIST_H
-
-#include "llvm/ADT/ilist_base.h"
-#include "llvm/ADT/ilist_iterator.h"
-#include "llvm/ADT/ilist_node.h"
-#include "llvm/ADT/ilist_node_options.h"
-#include "llvm/Support/Compiler.h"
-#include <algorithm>
-#include <cassert>
-#include <cstddef>
-#include <functional>
-#include <iterator>
-#include <utility>
-
-namespace llvm {
-
-/// A simple intrusive list implementation.
-///
-/// This is a simple intrusive list for a \c T that inherits from \c
-/// ilist_node<T>. The list never takes ownership of anything inserted in it.
-///
-/// Unlike \a iplist<T> and \a ilist<T>, \a simple_ilist<T> never allocates or
-/// deletes values, and has no callback traits.
-///
-/// The API for adding nodes include \a push_front(), \a push_back(), and \a
-/// insert(). These all take values by reference (not by pointer), except for
-/// the range version of \a insert().
-///
-/// There are three sets of API for discarding nodes from the list: \a
-/// remove(), which takes a reference to the node to remove, \a erase(), which
-/// takes an iterator or iterator range and returns the next one, and \a
-/// clear(), which empties out the container. All three are constant time
-/// operations. None of these deletes any nodes; in particular, if there is a
-/// single node in the list, then these have identical semantics:
-/// \li \c L.remove(L.front());
-/// \li \c L.erase(L.begin());
-/// \li \c L.clear();
-///
-/// As a convenience for callers, there are parallel APIs that take a \c
-/// Disposer (such as \c std::default_delete<T>): \a removeAndDispose(), \a
-/// eraseAndDispose(), and \a clearAndDispose(). These have different names
-/// because the extra semantic is otherwise non-obvious. They are equivalent
-/// to calling \a std::for_each() on the range to be discarded.
-///
-/// The currently available \p Options customize the nodes in the list. The
-/// same options must be specified in the \a ilist_node instantation for
-/// compatibility (although the order is irrelevant).
-/// \li Use \a ilist_tag to designate which ilist_node for a given \p T this
-/// list should use. This is useful if a type \p T is part of multiple,
-/// independent lists simultaneously.
-/// \li Use \a ilist_sentinel_tracking to always (or never) track whether a
-/// node is a sentinel. Specifying \c true enables the \a
-/// ilist_node::isSentinel() API. Unlike \a ilist_node::isKnownSentinel(),
-/// which is only appropriate for assertions, \a ilist_node::isSentinel() is
-/// appropriate for real logic.
-///
-/// Here are examples of \p Options usage:
-/// \li \c simple_ilist<T> gives the defaults. \li \c
-/// simple_ilist<T,ilist_sentinel_tracking<true>> enables the \a
-/// ilist_node::isSentinel() API.
-/// \li \c simple_ilist<T,ilist_tag<A>,ilist_sentinel_tracking<false>>
-/// specifies a tag of A and that tracking should be off (even when
-/// LLVM_ENABLE_ABI_BREAKING_CHECKS are enabled).
-/// \li \c simple_ilist<T,ilist_sentinel_tracking<false>,ilist_tag<A>> is
-/// equivalent to the last.
-///
-/// See \a is_valid_option for steps on adding a new option.
-template <typename T, class... Options>
-class simple_ilist
- : ilist_detail::compute_node_options<T, Options...>::type::list_base_type,
- ilist_detail::SpecificNodeAccess<
- typename ilist_detail::compute_node_options<T, Options...>::type> {
- static_assert(ilist_detail::check_options<Options...>::value,
- "Unrecognized node option!");
- using OptionsT =
- typename ilist_detail::compute_node_options<T, Options...>::type;
- using list_base_type = typename OptionsT::list_base_type;
- ilist_sentinel<OptionsT> Sentinel;
-
-public:
- using value_type = typename OptionsT::value_type;
- using pointer = typename OptionsT::pointer;
- using reference = typename OptionsT::reference;
- using const_pointer = typename OptionsT::const_pointer;
- using const_reference = typename OptionsT::const_reference;
- using iterator = ilist_iterator<OptionsT, false, false>;
- using const_iterator = ilist_iterator<OptionsT, false, true>;
- using reverse_iterator = ilist_iterator<OptionsT, true, false>;
- using const_reverse_iterator = ilist_iterator<OptionsT, true, true>;
- using size_type = size_t;
- using difference_type = ptrdiff_t;
-
- simple_ilist() = default;
- ~simple_ilist() = default;
-
- // No copy constructors.
- simple_ilist(const simple_ilist &) = delete;
- simple_ilist &operator=(const simple_ilist &) = delete;
-
- // Move constructors.
- simple_ilist(simple_ilist &&X) { splice(end(), X); }
- simple_ilist &operator=(simple_ilist &&X) {
- clear();
- splice(end(), X);
- return *this;
- }
-
- iterator begin() { return ++iterator(Sentinel); }
- const_iterator begin() const { return ++const_iterator(Sentinel); }
- iterator end() { return iterator(Sentinel); }
- const_iterator end() const { return const_iterator(Sentinel); }
- reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
- const_reverse_iterator rbegin() const {
- return ++const_reverse_iterator(Sentinel);
- }
- reverse_iterator rend() { return reverse_iterator(Sentinel); }
- const_reverse_iterator rend() const {
- return const_reverse_iterator(Sentinel);
- }
-
- /// Check if the list is empty in constant time.
- LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
-
- /// Calculate the size of the list in linear time.
- LLVM_NODISCARD size_type size() const {
- return std::distance(begin(), end());
- }
-
- reference front() { return *begin(); }
- const_reference front() const { return *begin(); }
- reference back() { return *rbegin(); }
- const_reference back() const { return *rbegin(); }
-
- /// Insert a node at the front; never copies.
- void push_front(reference Node) { insert(begin(), Node); }
-
- /// Insert a node at the back; never copies.
- void push_back(reference Node) { insert(end(), Node); }
-
- /// Remove the node at the front; never deletes.
- void pop_front() { erase(begin()); }
-
- /// Remove the node at the back; never deletes.
- void pop_back() { erase(--end()); }
-
- /// Swap with another list in place using std::swap.
- void swap(simple_ilist &X) { std::swap(*this, X); }
-
- /// Insert a node by reference; never copies.
- iterator insert(iterator I, reference Node) {
- list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
- return iterator(&Node);
- }
-
- /// Insert a range of nodes; never copies.
- template <class Iterator>
- void insert(iterator I, Iterator First, Iterator Last) {
- for (; First != Last; ++First)
- insert(I, *First);
- }
-
- /// Clone another list.
- template <class Cloner, class Disposer>
- void cloneFrom(const simple_ilist &L2, Cloner clone, Disposer dispose) {
- clearAndDispose(dispose);
- for (const_reference V : L2)
- push_back(*clone(V));
- }
-
- /// Remove a node by reference; never deletes.
- ///
- /// \see \a erase() for removing by iterator.
- /// \see \a removeAndDispose() if the node should be deleted.
- void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
-
- /// Remove a node by reference and dispose of it.
- template <class Disposer>
- void removeAndDispose(reference N, Disposer dispose) {
- remove(N);
- dispose(&N);
- }
-
- /// Remove a node by iterator; never deletes.
- ///
- /// \see \a remove() for removing by reference.
- /// \see \a eraseAndDispose() it the node should be deleted.
- iterator erase(iterator I) {
- assert(I != end() && "Cannot remove end of list!");
- remove(*I++);
- return I;
- }
-
- /// Remove a range of nodes; never deletes.
- ///
- /// \see \a eraseAndDispose() if the nodes should be deleted.
- iterator erase(iterator First, iterator Last) {
- list_base_type::removeRange(*First.getNodePtr(), *Last.getNodePtr());
- return Last;
- }
-
- /// Remove a node by iterator and dispose of it.
- template <class Disposer>
- iterator eraseAndDispose(iterator I, Disposer dispose) {
- auto Next = std::next(I);
- erase(I);
- dispose(&*I);
- return Next;
- }
-
- /// Remove a range of nodes and dispose of them.
- template <class Disposer>
- iterator eraseAndDispose(iterator First, iterator Last, Disposer dispose) {
- while (First != Last)
- First = eraseAndDispose(First, dispose);
- return Last;
- }
-
- /// Clear the list; never deletes.
- ///
- /// \see \a clearAndDispose() if the nodes should be deleted.
- void clear() { Sentinel.reset(); }
-
- /// Clear the list and dispose of the nodes.
- template <class Disposer> void clearAndDispose(Disposer dispose) {
- eraseAndDispose(begin(), end(), dispose);
- }
-
- /// Splice in another list.
- void splice(iterator I, simple_ilist &L2) {
- splice(I, L2, L2.begin(), L2.end());
- }
-
- /// Splice in a node from another list.
- void splice(iterator I, simple_ilist &L2, iterator Node) {
- splice(I, L2, Node, std::next(Node));
- }
-
- /// Splice in a range of nodes from another list.
- void splice(iterator I, simple_ilist &, iterator First, iterator Last) {
- list_base_type::transferBefore(*I.getNodePtr(), *First.getNodePtr(),
- *Last.getNodePtr());
- }
-
- /// Merge in another list.
- ///
- /// \pre \c this and \p RHS are sorted.
- ///@{
- void merge(simple_ilist &RHS) { merge(RHS, std::less<T>()); }
- template <class Compare> void merge(simple_ilist &RHS, Compare comp);
- ///@}
-
- /// Sort the list.
- ///@{
- void sort() { sort(std::less<T>()); }
- template <class Compare> void sort(Compare comp);
- ///@}
-};
-
-template <class T, class... Options>
-template <class Compare>
-void simple_ilist<T, Options...>::merge(simple_ilist &RHS, Compare comp) {
- if (this == &RHS || RHS.empty())
- return;
- iterator LI = begin(), LE = end();
- iterator RI = RHS.begin(), RE = RHS.end();
- while (LI != LE) {
- if (comp(*RI, *LI)) {
- // Transfer a run of at least size 1 from RHS to LHS.
- iterator RunStart = RI++;
- RI = std::find_if(RI, RE, [&](reference RV) { return !comp(RV, *LI); });
- splice(LI, RHS, RunStart, RI);
- if (RI == RE)
- return;
- }
- ++LI;
- }
- // Transfer the remaining RHS nodes once LHS is finished.
- splice(LE, RHS, RI, RE);
-}
-
-template <class T, class... Options>
-template <class Compare>
-void simple_ilist<T, Options...>::sort(Compare comp) {
- // Vacuously sorted.
- if (empty() || std::next(begin()) == end())
- return;
-
- // Split the list in the middle.
- iterator Center = begin(), End = begin();
- while (End != end() && ++End != end()) {
- ++Center;
- ++End;
- }
- simple_ilist RHS;
- RHS.splice(RHS.end(), *this, Center, end());
-
- // Sort the sublists and merge back together.
- sort(comp);
- RHS.sort(comp);
- merge(RHS, comp);
-}
-
-} // end namespace llvm
-
-#endif // LLVM_ADT_SIMPLE_ILIST_H
diff --git a/src/3rdparty/llvm/include/llvm/Demangle/Compiler.h b/src/3rdparty/llvm/include/llvm/Demangle/Compiler.h
deleted file mode 100644
index 963482c64f..0000000000
--- a/src/3rdparty/llvm/include/llvm/Demangle/Compiler.h
+++ /dev/null
@@ -1,524 +0,0 @@
-//===-- llvm/Demangle/Compiler.h - Compiler abstraction support -*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines several macros, based on the current compiler. This allows
-// use of compiler-specific features in a way that remains portable.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_SUPPORT_COMPILER_H
-#define LLVM_SUPPORT_COMPILER_H
-
-//#include "llvm/Config/llvm-config.h"
-
-#if defined(_MSC_VER)
-#include <sal.h>
-#endif
-
-#ifndef __has_feature
-# define __has_feature(x) 0
-#endif
-
-#ifndef __has_extension
-# define __has_extension(x) 0
-#endif
-
-#ifndef __has_attribute
-# define __has_attribute(x) 0
-#endif
-
-#ifndef __has_cpp_attribute
-# define __has_cpp_attribute(x) 0
-#endif
-
-#ifndef __has_builtin
-# define __has_builtin(x) 0
-#endif
-
-/// \macro LLVM_GNUC_PREREQ
-/// \brief Extend the default __GNUC_PREREQ even if glibc's features.h isn't
-/// available.
-#ifndef LLVM_GNUC_PREREQ
-# if defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
-# define LLVM_GNUC_PREREQ(maj, min, patch) \
- ((__GNUC__ << 20) + (__GNUC_MINOR__ << 10) + __GNUC_PATCHLEVEL__ >= \
- ((maj) << 20) + ((min) << 10) + (patch))
-# elif defined(__GNUC__) && defined(__GNUC_MINOR__)
-# define LLVM_GNUC_PREREQ(maj, min, patch) \
- ((__GNUC__ << 20) + (__GNUC_MINOR__ << 10) >= ((maj) << 20) + ((min) << 10))
-# else
-# define LLVM_GNUC_PREREQ(maj, min, patch) 0
-# endif
-#endif
-
-/// \macro LLVM_MSC_PREREQ
-/// \brief Is the compiler MSVC of at least the specified version?
-/// The common \param version values to check for are:
-/// * 1900: Microsoft Visual Studio 2015 / 14.0
-#ifdef _MSC_VER
-#define LLVM_MSC_PREREQ(version) (_MSC_VER >= (version))
-
-// We require at least MSVC 2015.
-#if !LLVM_MSC_PREREQ(1900)
-#error LLVM requires at least MSVC 2015.
-#endif
-
-#else
-#define LLVM_MSC_PREREQ(version) 0
-#endif
-
-/// \brief Does the compiler support ref-qualifiers for *this?
-///
-/// Sadly, this is separate from just rvalue reference support because GCC
-/// and MSVC implemented this later than everything else.
-#if __has_feature(cxx_rvalue_references) || LLVM_GNUC_PREREQ(4, 8, 1)
-#define LLVM_HAS_RVALUE_REFERENCE_THIS 1
-#else
-#define LLVM_HAS_RVALUE_REFERENCE_THIS 0
-#endif
-
-/// Expands to '&' if ref-qualifiers for *this are supported.
-///
-/// This can be used to provide lvalue/rvalue overrides of member functions.
-/// The rvalue override should be guarded by LLVM_HAS_RVALUE_REFERENCE_THIS
-#if LLVM_HAS_RVALUE_REFERENCE_THIS
-#define LLVM_LVALUE_FUNCTION &
-#else
-#define LLVM_LVALUE_FUNCTION
-#endif
-
-/// LLVM_LIBRARY_VISIBILITY - If a class marked with this attribute is linked
-/// into a shared library, then the class should be private to the library and
-/// not accessible from outside it. Can also be used to mark variables and
-/// functions, making them private to any shared library they are linked into.
-/// On PE/COFF targets, library visibility is the default, so this isn't needed.
-#if (__has_attribute(visibility) || LLVM_GNUC_PREREQ(4, 0, 0)) && \
- !defined(__MINGW32__) && !defined(__CYGWIN__) && !defined(LLVM_ON_WIN32)
-#define LLVM_LIBRARY_VISIBILITY __attribute__ ((visibility("hidden")))
-#else
-#define LLVM_LIBRARY_VISIBILITY
-#endif
-
-#if defined(__GNUC__)
-#define LLVM_PREFETCH(addr, rw, locality) __builtin_prefetch(addr, rw, locality)
-#else
-#define LLVM_PREFETCH(addr, rw, locality)
-#endif
-
-#if __has_attribute(used) || LLVM_GNUC_PREREQ(3, 1, 0)
-#define LLVM_ATTRIBUTE_USED __attribute__((__used__))
-#else
-#define LLVM_ATTRIBUTE_USED
-#endif
-
-/// LLVM_NODISCARD - Warn if a type or return value is discarded.
-#if __cplusplus > 201402L && __has_cpp_attribute(nodiscard)
-#define LLVM_NODISCARD [[nodiscard]]
-#elif !__cplusplus
-// Workaround for llvm.org/PR23435, since clang 3.6 and below emit a spurious
-// error when __has_cpp_attribute is given a scoped attribute in C mode.
-#define LLVM_NODISCARD
-#elif __has_cpp_attribute(clang::warn_unused_result)
-#define LLVM_NODISCARD [[clang::warn_unused_result]]
-#else
-#define LLVM_NODISCARD
-#endif
-
-// Some compilers warn about unused functions. When a function is sometimes
-// used or not depending on build settings (e.g. a function only called from
-// within "assert"), this attribute can be used to suppress such warnings.
-//
-// However, it shouldn't be used for unused *variables*, as those have a much
-// more portable solution:
-// (void)unused_var_name;
-// Prefer cast-to-void wherever it is sufficient.
-#if __has_attribute(unused) || LLVM_GNUC_PREREQ(3, 1, 0)
-#define LLVM_ATTRIBUTE_UNUSED __attribute__((__unused__))
-#else
-#define LLVM_ATTRIBUTE_UNUSED
-#endif
-
-// FIXME: Provide this for PE/COFF targets.
-#if (__has_attribute(weak) || LLVM_GNUC_PREREQ(4, 0, 0)) && \
- (!defined(__MINGW32__) && !defined(__CYGWIN__) && !defined(LLVM_ON_WIN32))
-#define LLVM_ATTRIBUTE_WEAK __attribute__((__weak__))
-#else
-#define LLVM_ATTRIBUTE_WEAK
-#endif
-
-// Prior to clang 3.2, clang did not accept any spelling of
-// __has_attribute(const), so assume it is supported.
-#if defined(__clang__) || defined(__GNUC__)
-// aka 'CONST' but following LLVM Conventions.
-#define LLVM_READNONE __attribute__((__const__))
-#else
-#define LLVM_READNONE
-#endif
-
-#if __has_attribute(pure) || defined(__GNUC__)
-// aka 'PURE' but following LLVM Conventions.
-#define LLVM_READONLY __attribute__((__pure__))
-#else
-#define LLVM_READONLY
-#endif
-
-#if __has_builtin(__builtin_expect) || LLVM_GNUC_PREREQ(4, 0, 0)
-#define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
-#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
-#else
-#define LLVM_LIKELY(EXPR) (EXPR)
-#define LLVM_UNLIKELY(EXPR) (EXPR)
-#endif
-
-/// LLVM_ATTRIBUTE_NOINLINE - On compilers where we have a directive to do so,
-/// mark a method "not for inlining".
-#if __has_attribute(noinline) || LLVM_GNUC_PREREQ(3, 4, 0)
-#define LLVM_ATTRIBUTE_NOINLINE __attribute__((noinline))
-#elif defined(_MSC_VER)
-#define LLVM_ATTRIBUTE_NOINLINE __declspec(noinline)
-#else
-#define LLVM_ATTRIBUTE_NOINLINE
-#endif
-
-/// LLVM_ATTRIBUTE_ALWAYS_INLINE - On compilers where we have a directive to do
-/// so, mark a method "always inline" because it is performance sensitive. GCC
-/// 3.4 supported this but is buggy in various cases and produces unimplemented
-/// errors, just use it in GCC 4.0 and later.
-#if __has_attribute(always_inline) || LLVM_GNUC_PREREQ(4, 0, 0)
-#define LLVM_ATTRIBUTE_ALWAYS_INLINE __attribute__((always_inline))
-#elif defined(_MSC_VER)
-#define LLVM_ATTRIBUTE_ALWAYS_INLINE __forceinline
-#else
-#define LLVM_ATTRIBUTE_ALWAYS_INLINE
-#endif
-
-#ifdef __GNUC__
-#define LLVM_ATTRIBUTE_NORETURN __attribute__((noreturn))
-#elif defined(_MSC_VER)
-#define LLVM_ATTRIBUTE_NORETURN __declspec(noreturn)
-#else
-#define LLVM_ATTRIBUTE_NORETURN
-#endif
-
-#if __has_attribute(returns_nonnull) || LLVM_GNUC_PREREQ(4, 9, 0)
-#define LLVM_ATTRIBUTE_RETURNS_NONNULL __attribute__((returns_nonnull))
-#elif defined(_MSC_VER)
-#define LLVM_ATTRIBUTE_RETURNS_NONNULL _Ret_notnull_
-#else
-#define LLVM_ATTRIBUTE_RETURNS_NONNULL
-#endif
-
-/// \macro LLVM_ATTRIBUTE_RETURNS_NOALIAS Used to mark a function as returning a
-/// pointer that does not alias any other valid pointer.
-#ifdef __GNUC__
-#define LLVM_ATTRIBUTE_RETURNS_NOALIAS __attribute__((__malloc__))
-#elif defined(_MSC_VER)
-#define LLVM_ATTRIBUTE_RETURNS_NOALIAS __declspec(restrict)
-#else
-#define LLVM_ATTRIBUTE_RETURNS_NOALIAS
-#endif
-
-/// LLVM_FALLTHROUGH - Mark fallthrough cases in switch statements.
-#if __cplusplus > 201402L && __has_cpp_attribute(fallthrough)
-#define LLVM_FALLTHROUGH [[fallthrough]]
-#elif __has_cpp_attribute(gnu::fallthrough)
-#define LLVM_FALLTHROUGH [[gnu::fallthrough]]
-#elif !__cplusplus
-// Workaround for llvm.org/PR23435, since clang 3.6 and below emit a spurious
-// error when __has_cpp_attribute is given a scoped attribute in C mode.
-#define LLVM_FALLTHROUGH
-#elif __has_cpp_attribute(clang::fallthrough)
-#define LLVM_FALLTHROUGH [[clang::fallthrough]]
-#else
-#define LLVM_FALLTHROUGH
-#endif
-
-/// LLVM_EXTENSION - Support compilers where we have a keyword to suppress
-/// pedantic diagnostics.
-#ifdef __GNUC__
-#define LLVM_EXTENSION __extension__
-#else
-#define LLVM_EXTENSION
-#endif
-
-// LLVM_ATTRIBUTE_DEPRECATED(decl, "message")
-#if __has_feature(attribute_deprecated_with_message)
-# define LLVM_ATTRIBUTE_DEPRECATED(decl, message) \
- decl __attribute__((deprecated(message)))
-#elif defined(__GNUC__)
-# define LLVM_ATTRIBUTE_DEPRECATED(decl, message) \
- decl __attribute__((deprecated))
-#elif defined(_MSC_VER)
-# define LLVM_ATTRIBUTE_DEPRECATED(decl, message) \
- __declspec(deprecated(message)) decl
-#else
-# define LLVM_ATTRIBUTE_DEPRECATED(decl, message) \
- decl
-#endif
-
-/// LLVM_BUILTIN_UNREACHABLE - On compilers which support it, expands
-/// to an expression which states that it is undefined behavior for the
-/// compiler to reach this point. Otherwise is not defined.
-#if __has_builtin(__builtin_unreachable) || LLVM_GNUC_PREREQ(4, 5, 0)
-# define LLVM_BUILTIN_UNREACHABLE __builtin_unreachable()
-#elif defined(_MSC_VER)
-# define LLVM_BUILTIN_UNREACHABLE __assume(false)
-#endif
-
-/// LLVM_BUILTIN_TRAP - On compilers which support it, expands to an expression
-/// which causes the program to exit abnormally.
-#if __has_builtin(__builtin_trap) || LLVM_GNUC_PREREQ(4, 3, 0)
-# define LLVM_BUILTIN_TRAP __builtin_trap()
-#elif defined(_MSC_VER)
-// The __debugbreak intrinsic is supported by MSVC, does not require forward
-// declarations involving platform-specific typedefs (unlike RaiseException),
-// results in a call to vectored exception handlers, and encodes to a short
-// instruction that still causes the trapping behavior we want.
-# define LLVM_BUILTIN_TRAP __debugbreak()
-#else
-# define LLVM_BUILTIN_TRAP *(volatile int*)0x11 = 0
-#endif
-
-/// LLVM_BUILTIN_DEBUGTRAP - On compilers which support it, expands to
-/// an expression which causes the program to break while running
-/// under a debugger.
-#if __has_builtin(__builtin_debugtrap)
-# define LLVM_BUILTIN_DEBUGTRAP __builtin_debugtrap()
-#elif defined(_MSC_VER)
-// The __debugbreak intrinsic is supported by MSVC and breaks while
-// running under the debugger, and also supports invoking a debugger
-// when the OS is configured appropriately.
-# define LLVM_BUILTIN_DEBUGTRAP __debugbreak()
-#else
-// Just continue execution when built with compilers that have no
-// support. This is a debugging aid and not intended to force the
-// program to abort if encountered.
-# define LLVM_BUILTIN_DEBUGTRAP
-#endif
-
-/// \macro LLVM_ASSUME_ALIGNED
-/// \brief Returns a pointer with an assumed alignment.
-#if __has_builtin(__builtin_assume_aligned) || LLVM_GNUC_PREREQ(4, 7, 0)
-# define LLVM_ASSUME_ALIGNED(p, a) __builtin_assume_aligned(p, a)
-#elif defined(LLVM_BUILTIN_UNREACHABLE)
-// As of today, clang does not support __builtin_assume_aligned.
-# define LLVM_ASSUME_ALIGNED(p, a) \
- (((uintptr_t(p) % (a)) == 0) ? (p) : (LLVM_BUILTIN_UNREACHABLE, (p)))
-#else
-# define LLVM_ASSUME_ALIGNED(p, a) (p)
-#endif
-
-/// \macro LLVM_ALIGNAS
-/// \brief Used to specify a minimum alignment for a structure or variable.
-#if __GNUC__ && !__has_feature(cxx_alignas) && !LLVM_GNUC_PREREQ(4, 8, 1)
-# define LLVM_ALIGNAS(x) __attribute__((aligned(x)))
-#else
-# define LLVM_ALIGNAS(x) alignas(x)
-#endif
-
-/// \macro LLVM_PACKED
-/// \brief Used to specify a packed structure.
-/// LLVM_PACKED(
-/// struct A {
-/// int i;
-/// int j;
-/// int k;
-/// long long l;
-/// });
-///
-/// LLVM_PACKED_START
-/// struct B {
-/// int i;
-/// int j;
-/// int k;
-/// long long l;
-/// };
-/// LLVM_PACKED_END
-#ifdef _MSC_VER
-# define LLVM_PACKED(d) __pragma(pack(push, 1)) d __pragma(pack(pop))
-# define LLVM_PACKED_START __pragma(pack(push, 1))
-# define LLVM_PACKED_END __pragma(pack(pop))
-#else
-# define LLVM_PACKED(d) d __attribute__((packed))
-# define LLVM_PACKED_START _Pragma("pack(push, 1)")
-# define LLVM_PACKED_END _Pragma("pack(pop)")
-#endif
-
-/// \macro LLVM_PTR_SIZE
-/// \brief A constant integer equivalent to the value of sizeof(void*).
-/// Generally used in combination with LLVM_ALIGNAS or when doing computation in
-/// the preprocessor.
-#ifdef __SIZEOF_POINTER__
-# define LLVM_PTR_SIZE __SIZEOF_POINTER__
-#elif defined(_WIN64)
-# define LLVM_PTR_SIZE 8
-#elif defined(_WIN32)
-# define LLVM_PTR_SIZE 4
-#elif defined(_MSC_VER)
-# error "could not determine LLVM_PTR_SIZE as a constant int for MSVC"
-#else
-# define LLVM_PTR_SIZE sizeof(void *)
-#endif
-
-/// \macro LLVM_MEMORY_SANITIZER_BUILD
-/// \brief Whether LLVM itself is built with MemorySanitizer instrumentation.
-#if __has_feature(memory_sanitizer)
-# define LLVM_MEMORY_SANITIZER_BUILD 1
-# include <sanitizer/msan_interface.h>
-#else
-# define LLVM_MEMORY_SANITIZER_BUILD 0
-# define __msan_allocated_memory(p, size)
-# define __msan_unpoison(p, size)
-#endif
-
-/// \macro LLVM_ADDRESS_SANITIZER_BUILD
-/// \brief Whether LLVM itself is built with AddressSanitizer instrumentation.
-#if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__)
-# define LLVM_ADDRESS_SANITIZER_BUILD 1
-# include <sanitizer/asan_interface.h>
-#else
-# define LLVM_ADDRESS_SANITIZER_BUILD 0
-# define __asan_poison_memory_region(p, size)
-# define __asan_unpoison_memory_region(p, size)
-#endif
-
-/// \macro LLVM_THREAD_SANITIZER_BUILD
-/// \brief Whether LLVM itself is built with ThreadSanitizer instrumentation.
-#if __has_feature(thread_sanitizer) || defined(__SANITIZE_THREAD__)
-# define LLVM_THREAD_SANITIZER_BUILD 1
-#else
-# define LLVM_THREAD_SANITIZER_BUILD 0
-#endif
-
-#if LLVM_THREAD_SANITIZER_BUILD
-// Thread Sanitizer is a tool that finds races in code.
-// See http://code.google.com/p/data-race-test/wiki/DynamicAnnotations .
-// tsan detects these exact functions by name.
-#ifdef __cplusplus
-extern "C" {
-#endif
-void AnnotateHappensAfter(const char *file, int line, const volatile void *cv);
-void AnnotateHappensBefore(const char *file, int line, const volatile void *cv);
-void AnnotateIgnoreWritesBegin(const char *file, int line);
-void AnnotateIgnoreWritesEnd(const char *file, int line);
-#ifdef __cplusplus
-}
-#endif
-
-// This marker is used to define a happens-before arc. The race detector will
-// infer an arc from the begin to the end when they share the same pointer
-// argument.
-# define TsanHappensBefore(cv) AnnotateHappensBefore(__FILE__, __LINE__, cv)
-
-// This marker defines the destination of a happens-before arc.
-# define TsanHappensAfter(cv) AnnotateHappensAfter(__FILE__, __LINE__, cv)
-
-// Ignore any races on writes between here and the next TsanIgnoreWritesEnd.
-# define TsanIgnoreWritesBegin() AnnotateIgnoreWritesBegin(__FILE__, __LINE__)
-
-// Resume checking for racy writes.
-# define TsanIgnoreWritesEnd() AnnotateIgnoreWritesEnd(__FILE__, __LINE__)
-#else
-# define TsanHappensBefore(cv)
-# define TsanHappensAfter(cv)
-# define TsanIgnoreWritesBegin()
-# define TsanIgnoreWritesEnd()
-#endif
-
-/// \macro LLVM_NO_SANITIZE
-/// \brief Disable a particular sanitizer for a function.
-#if __has_attribute(no_sanitize)
-#define LLVM_NO_SANITIZE(KIND) __attribute__((no_sanitize(KIND)))
-#else
-#define LLVM_NO_SANITIZE(KIND)
-#endif
-
-/// \brief Mark debug helper function definitions like dump() that should not be
-/// stripped from debug builds.
-/// Note that you should also surround dump() functions with
-/// `#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)` so they do always
-/// get stripped in release builds.
-// FIXME: Move this to a private config.h as it's not usable in public headers.
-#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
-#define LLVM_DUMP_METHOD LLVM_ATTRIBUTE_NOINLINE LLVM_ATTRIBUTE_USED
-#else
-#define LLVM_DUMP_METHOD LLVM_ATTRIBUTE_NOINLINE
-#endif
-
-/// \macro LLVM_PRETTY_FUNCTION
-/// \brief Gets a user-friendly looking function signature for the current scope
-/// using the best available method on each platform. The exact format of the
-/// resulting string is implementation specific and non-portable, so this should
-/// only be used, for example, for logging or diagnostics.
-#if defined(_MSC_VER)
-#define LLVM_PRETTY_FUNCTION __FUNCSIG__
-#elif defined(__GNUC__) || defined(__clang__)
-#define LLVM_PRETTY_FUNCTION __PRETTY_FUNCTION__
-#else
-#define LLVM_PRETTY_FUNCTION __func__
-#endif
-
-/// \macro LLVM_THREAD_LOCAL
-/// \brief A thread-local storage specifier which can be used with globals,
-/// extern globals, and static globals.
-///
-/// This is essentially an extremely restricted analog to C++11's thread_local
-/// support, and uses that when available. However, it falls back on
-/// platform-specific or vendor-provided extensions when necessary. These
-/// extensions don't support many of the C++11 thread_local's features. You
-/// should only use this for PODs that you can statically initialize to
-/// some constant value. In almost all circumstances this is most appropriate
-/// for use with a pointer, integer, or small aggregation of pointers and
-/// integers.
-#if LLVM_ENABLE_THREADS
-#if __has_feature(cxx_thread_local)
-#define LLVM_THREAD_LOCAL thread_local
-#elif defined(_MSC_VER)
-// MSVC supports this with a __declspec.
-#define LLVM_THREAD_LOCAL __declspec(thread)
-#else
-// Clang, GCC, and other compatible compilers used __thread prior to C++11 and
-// we only need the restricted functionality that provides.
-#define LLVM_THREAD_LOCAL __thread
-#endif
-#else // !LLVM_ENABLE_THREADS
-// If threading is disabled entirely, this compiles to nothing and you get
-// a normal global variable.
-#define LLVM_THREAD_LOCAL
-#endif
-
-/// \macro LLVM_ENABLE_EXCEPTIONS
-/// \brief Whether LLVM is built with exception support.
-#if __has_feature(cxx_exceptions)
-#define LLVM_ENABLE_EXCEPTIONS 1
-#elif defined(__GNUC__) && defined(__EXCEPTIONS)
-#define LLVM_ENABLE_EXCEPTIONS 1
-#elif defined(_MSC_VER) && defined(_CPPUNWIND)
-#define LLVM_ENABLE_EXCEPTIONS 1
-#endif
-
-/// \macro LLVM_PLUGIN_IMPORT
-/// \brief Used to import the well-known entry point for registering loaded pass
-/// plugins
-#ifdef WIN32
-#define LLVM_PLUGIN_IMPORT __declspec(dllimport)
-#else
-#define LLVM_PLUGIN_IMPORT
-#endif
-
-/// \macro LLVM_PLUGIN_EXPORT
-/// \brief Used to export the well-known entry point for registering loaded pass
-/// plugins
-#ifdef WIN32
-#define LLVM_PLUGIN_EXPORT __declspec(dllexport)
-#else
-#define LLVM_PLUGIN_EXPORT
-#endif
-
-#endif
diff --git a/src/3rdparty/llvm/include/llvm/Support/Compiler.h b/src/3rdparty/llvm/include/llvm/Support/Compiler.h
deleted file mode 100644
index 43a96e49ce..0000000000
--- a/src/3rdparty/llvm/include/llvm/Support/Compiler.h
+++ /dev/null
@@ -1,19 +0,0 @@
-//===-- llvm/Support/Compiler.h - Compiler abstraction support --*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// Due to layering constraints (Support depends on Demangler) this is a thin
-// wrapper around the implementation that lives in llvm-c, though most clients
-// can/should think of this as being provided by Support for simplicity (not
-// many clients are aware of their dependency on Demangler/it's a weird place to
-// own this - but didn't seem to justify splitting Support into "lower support"
-// and "upper support").
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/Demangle/Compiler.h"
diff --git a/src/3rdparty/llvm/include/llvm/Support/DataTypes.h b/src/3rdparty/llvm/include/llvm/Support/DataTypes.h
deleted file mode 100644
index ad60a5b3f3..0000000000
--- a/src/3rdparty/llvm/include/llvm/Support/DataTypes.h
+++ /dev/null
@@ -1,17 +0,0 @@
-//===-- llvm/Support/DataTypes.h - Define fixed size types ------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// Due to layering constraints (Support depends on llvm-c) this is a thin
-// wrapper around the implementation that lives in llvm-c, though most clients
-// can/should think of this as being provided by Support for simplicity (not
-// many clients are aware of their dependency on llvm-c).
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm-c/DataTypes.h"
diff --git a/src/3rdparty/llvm/include/llvm/Support/PointerLikeTypeTraits.h b/src/3rdparty/llvm/include/llvm/Support/PointerLikeTypeTraits.h
deleted file mode 100644
index 794230d606..0000000000
--- a/src/3rdparty/llvm/include/llvm/Support/PointerLikeTypeTraits.h
+++ /dev/null
@@ -1,116 +0,0 @@
-//===- llvm/Support/PointerLikeTypeTraits.h - Pointer Traits ----*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines the PointerLikeTypeTraits class. This allows data
-// structures to reason about pointers and other things that are pointer sized.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_SUPPORT_POINTERLIKETYPETRAITS_H
-#define LLVM_SUPPORT_POINTERLIKETYPETRAITS_H
-
-#include "llvm/Support/DataTypes.h"
-#include <type_traits>
-
-namespace llvm {
-
-/// A traits type that is used to handle pointer types and things that are just
-/// wrappers for pointers as a uniform entity.
-template <typename T> struct PointerLikeTypeTraits;
-
-namespace detail {
-/// A tiny meta function to compute the log2 of a compile time constant.
-template <size_t N>
-struct ConstantLog2
- : std::integral_constant<size_t, ConstantLog2<N / 2>::value + 1> {};
-template <> struct ConstantLog2<1> : std::integral_constant<size_t, 0> {};
-
-// Provide a trait to check if T is pointer-like.
-template <typename T, typename U = void> struct HasPointerLikeTypeTraits {
- static const bool value = false;
-};
-
-// sizeof(T) is valid only for a complete T.
-template <typename T> struct HasPointerLikeTypeTraits<
- T, decltype((sizeof(PointerLikeTypeTraits<T>) + sizeof(T)), void())> {
- static const bool value = true;
-};
-
-template <typename T> struct IsPointerLike {
- static const bool value = HasPointerLikeTypeTraits<T>::value;
-};
-
-template <typename T> struct IsPointerLike<T *> {
- static const bool value = true;
-};
-} // namespace detail
-
-// Provide PointerLikeTypeTraits for non-cvr pointers.
-template <typename T> struct PointerLikeTypeTraits<T *> {
- static inline void *getAsVoidPointer(T *P) { return P; }
- static inline T *getFromVoidPointer(void *P) { return static_cast<T *>(P); }
-
- enum { NumLowBitsAvailable = detail::ConstantLog2<alignof(T)>::value };
-};
-
-template <> struct PointerLikeTypeTraits<void *> {
- static inline void *getAsVoidPointer(void *P) { return P; }
- static inline void *getFromVoidPointer(void *P) { return P; }
-
- /// Note, we assume here that void* is related to raw malloc'ed memory and
- /// that malloc returns objects at least 4-byte aligned. However, this may be
- /// wrong, or pointers may be from something other than malloc. In this case,
- /// you should specify a real typed pointer or avoid this template.
- ///
- /// All clients should use assertions to do a run-time check to ensure that
- /// this is actually true.
- enum { NumLowBitsAvailable = 2 };
-};
-
-// Provide PointerLikeTypeTraits for const things.
-template <typename T> struct PointerLikeTypeTraits<const T> {
- typedef PointerLikeTypeTraits<T> NonConst;
-
- static inline const void *getAsVoidPointer(const T P) {
- return NonConst::getAsVoidPointer(P);
- }
- static inline const T getFromVoidPointer(const void *P) {
- return NonConst::getFromVoidPointer(const_cast<void *>(P));
- }
- enum { NumLowBitsAvailable = NonConst::NumLowBitsAvailable };
-};
-
-// Provide PointerLikeTypeTraits for const pointers.
-template <typename T> struct PointerLikeTypeTraits<const T *> {
- typedef PointerLikeTypeTraits<T *> NonConst;
-
- static inline const void *getAsVoidPointer(const T *P) {
- return NonConst::getAsVoidPointer(const_cast<T *>(P));
- }
- static inline const T *getFromVoidPointer(const void *P) {
- return NonConst::getFromVoidPointer(const_cast<void *>(P));
- }
- enum { NumLowBitsAvailable = NonConst::NumLowBitsAvailable };
-};
-
-// Provide PointerLikeTypeTraits for uintptr_t.
-template <> struct PointerLikeTypeTraits<uintptr_t> {
- static inline void *getAsVoidPointer(uintptr_t P) {
- return reinterpret_cast<void *>(P);
- }
- static inline uintptr_t getFromVoidPointer(void *P) {
- return reinterpret_cast<uintptr_t>(P);
- }
- // No bits are available!
- enum { NumLowBitsAvailable = 0 };
-};
-
-} // end namespace llvm
-
-#endif
diff --git a/src/3rdparty/llvm/llvm.pri b/src/3rdparty/llvm/llvm.pri
deleted file mode 100644
index 6b3b0689ec..0000000000
--- a/src/3rdparty/llvm/llvm.pri
+++ /dev/null
@@ -1,18 +0,0 @@
-INCLUDEPATH += $$PWD/include
-
-HEADERS += \
- $$PWD/include/llvm/ADT/ilist_node.h \
- $$PWD/include/llvm/ADT/iterator_range.h \
- $$PWD/include/llvm/ADT/simple_ilist.h \
- $$PWD/include/llvm/ADT/ilist_base.h \
- $$PWD/include/llvm/ADT/ilist_node_options.h \
- $$PWD/include/llvm/ADT/ilist_iterator.h \
- $$PWD/include/llvm/ADT/ilist_node_base.h \
- $$PWD/include/llvm/ADT/PointerIntPair.h \
- $$PWD/include/llvm/ADT/iterator.h \
- $$PWD/include/llvm/ADT/ilist.h \
- $$PWD/include/llvm/Demangle/Compiler.h \
- $$PWD/include/llvm/Support/Compiler.h \
- $$PWD/include/llvm/Support/PointerLikeTypeTraits.h \
- $$PWD/include/llvm/Support/DataTypes.h \
- $$PWD/include/llvm-c/DataTypes.h
diff --git a/src/3rdparty/llvm/qt_attribution.json b/src/3rdparty/llvm/qt_attribution.json
deleted file mode 100644
index 5924f16ac3..0000000000
--- a/src/3rdparty/llvm/qt_attribution.json
+++ /dev/null
@@ -1,14 +0,0 @@
-[
- {
- "Id": "llvm-adt",
- "Name": "LLVM: ADT",
- "QDocModule": "qtqml",
- "QtUsage": "An intrusively linked list, used in the tracing JIT to hold lists of instructions",
-
- "Path": "src/3rdparty/llvm",
- "License": "UIUC 3-clause \"New\" or \"Revised\" License",
- "LicenseId": "BSD-3-Clause",
- "LicenseFile": "LICENSE.TXT",
- "Copyright": "Copyright (c) 2003-2017 University of Illinois at Urbana-Champaign."
- }
-]
diff --git a/src/3rdparty/masm/assembler/LinkBuffer.h b/src/3rdparty/masm/assembler/LinkBuffer.h
index 8e9a3d9c7a..ba57564a1d 100644
--- a/src/3rdparty/masm/assembler/LinkBuffer.h
+++ b/src/3rdparty/masm/assembler/LinkBuffer.h
@@ -209,9 +209,9 @@ public:
// complete generation of the code. Alternatively, call
// finalizeCodeWithoutDisassembly() directly if you have your own way of
// displaying disassembly.
-
+
inline CodeRef finalizeCodeWithoutDisassembly();
- inline CodeRef finalizeCodeWithDisassembly(const char *jitKind, const char* format, ...) WTF_ATTRIBUTE_PRINTF(3, 4);
+ inline CodeRef finalizeCodeWithDisassembly(const char *jitKind, const char* func);
CodePtr trampolineAt(Label label)
{
@@ -267,9 +267,9 @@ protected:
#endif
};
-#define FINALIZE_CODE_IF(condition, linkBufferReference, jitKind, dataLogFArgumentsForHeading) \
+#define FINALIZE_CODE_IF(condition, linkBufferReference, jitKind, func) \
(UNLIKELY((condition)) \
- ? ((linkBufferReference).finalizeCodeWithDisassembly (jitKind, dataLogFArgumentsForHeading)) \
+ ? ((linkBufferReference).finalizeCodeWithDisassembly (jitKind, func)) \
: (linkBufferReference).finalizeCodeWithoutDisassembly())
// Use this to finalize code, like so:
@@ -288,11 +288,11 @@ protected:
// Note that the dataLogFArgumentsForHeading are only evaluated when showDisassembly
// is true, so you can hide expensive disassembly-only computations inside there.
-#define FINALIZE_CODE(linkBufferReference, jitKind, dataLogFArgumentsForHeading) \
- FINALIZE_CODE_IF(Options::showDisassembly(), linkBufferReference, jitKind, dataLogFArgumentsForHeading)
+#define FINALIZE_CODE(linkBufferReference, jitKind, func) \
+ FINALIZE_CODE_IF(Options::showDisassembly(), linkBufferReference, jitKind, func)
-#define FINALIZE_DFG_CODE(linkBufferReference, jitKind, dataLogFArgumentsForHeading) \
- FINALIZE_CODE_IF((Options::showDisassembly() || Options::showDFGDisassembly()), linkBufferReference, jitKind, dataLogFArgumentsForHeading)
+#define FINALIZE_DFG_CODE(linkBufferReference, jitKind, func) \
+ FINALIZE_CODE_IF((Options::showDisassembly() || Options::showDFGDisassembly()), linkBufferReference, jitKind, func)
template <typename MacroAssembler, template <typename T> class ExecutableOffsetCalculator>
@@ -304,24 +304,19 @@ inline typename LinkBufferBase<MacroAssembler, ExecutableOffsetCalculator>::Code
}
template <typename MacroAssembler, template <typename T> class ExecutableOffsetCalculator>
-inline typename LinkBufferBase<MacroAssembler, ExecutableOffsetCalculator>::CodeRef LinkBufferBase<MacroAssembler, ExecutableOffsetCalculator>::finalizeCodeWithDisassembly(const char *jitKind, const char* format, ...)
+inline typename LinkBufferBase<MacroAssembler, ExecutableOffsetCalculator>::CodeRef LinkBufferBase<MacroAssembler, ExecutableOffsetCalculator>::finalizeCodeWithDisassembly(const char *jitKind, const char* func)
{
ASSERT(Options::showDisassembly() || Options::showDFGDisassembly());
CodeRef result = finalizeCodeWithoutDisassembly();
- dataLogF("Generated %s code for ", jitKind);
- va_list argList;
- va_start(argList, format);
- WTF::dataLogFV(format, argList);
- va_end(argList);
- dataLogF(":\n");
+ dataLogF("Generated %s code for function %s:", jitKind, func);
dataLogF(
#if OS(WINDOWS)
- " Code at [0x%p, 0x%p):\n",
+ " Code at [0x%p, 0x%p):",
#else
- " Code at [%p, %p):\n",
+ " Code at [%p, %p):",
#endif
result.code().executableAddress(), static_cast<char*>(result.code().executableAddress()) + result.size());
disassemble(result.code(), m_size, " ", WTF::dataFile());
diff --git a/src/3rdparty/masm/disassembler/Disassembler.cpp b/src/3rdparty/masm/disassembler/Disassembler.cpp
index 3fed2cdab8..50fe2e23d5 100644
--- a/src/3rdparty/masm/disassembler/Disassembler.cpp
+++ b/src/3rdparty/masm/disassembler/Disassembler.cpp
@@ -36,7 +36,7 @@ void disassemble(const MacroAssemblerCodePtr& codePtr, size_t size, const char*
if (tryToDisassemble(codePtr, size, prefix, out))
return;
- out.printf("%sdisassembly not available for range %p...%p\n", prefix, codePtr.executableAddress(), static_cast<char*>(codePtr.executableAddress()) + size);
+ out.printf("%sdisassembly not available for range %p...%p", prefix, codePtr.executableAddress(), static_cast<char*>(codePtr.executableAddress()) + size);
}
} // namespace JSC
diff --git a/src/3rdparty/masm/stubs/wtf/Optional.h b/src/3rdparty/masm/stubs/wtf/Optional.h
index 602dbc1b43..e0fd4421a9 100644
--- a/src/3rdparty/masm/stubs/wtf/Optional.h
+++ b/src/3rdparty/masm/stubs/wtf/Optional.h
@@ -43,7 +43,7 @@
#include <QtQml/private/qtqmlglobal_p.h>
#include <memory>
-#if __cplusplus > 201402L && QT_HAS_INCLUDE(<optional>)
+#if __cplusplus > 201402L && __has_include(<optional>)
#include <optional>
#else
diff --git a/src/imports/folderlistmodel/folderlistmodel.pro b/src/imports/folderlistmodel/folderlistmodel.pro
index 54ef107e45..8eaf9de6b9 100644
--- a/src/imports/folderlistmodel/folderlistmodel.pro
+++ b/src/imports/folderlistmodel/folderlistmodel.pro
@@ -1,7 +1,7 @@
CXX_MODULE = qml
TARGET = qmlfolderlistmodelplugin
TARGETPATH = Qt/labs/folderlistmodel
-IMPORT_VERSION = 2.$$QT_MINOR_VERSION
+IMPORT_VERSION = 2.15
QT = core-private qml-private
@@ -11,4 +11,5 @@ HEADERS += qquickfolderlistmodel.h \
fileproperty_p.h \
fileinfothread_p.h
+CONFIG += qmltypes install_qmltypes
load(qml_plugin)
diff --git a/src/imports/folderlistmodel/plugin.cpp b/src/imports/folderlistmodel/plugin.cpp
index cbe4f9353d..28837655ef 100644
--- a/src/imports/folderlistmodel/plugin.cpp
+++ b/src/imports/folderlistmodel/plugin.cpp
@@ -58,10 +58,6 @@ public:
// Major version 1 only has a single revision, 0.
qmlRegisterType<QQuickFolderListModel>(uri, 1, 0, "FolderListModel");
-
- qmlRegisterTypesAndRevisions<QQuickFolderListModel>(uri, 2);
-
- qmlRegisterModule(uri, 2, 15);
}
};
//![class decl]
diff --git a/src/imports/folderlistmodel/plugins.qmltypes b/src/imports/folderlistmodel/plugins.qmltypes
deleted file mode 100644
index 7c53c99665..0000000000
--- a/src/imports/folderlistmodel/plugins.qmltypes
+++ /dev/null
@@ -1,351 +0,0 @@
-import QtQuick.tooling 1.2
-
-// This file describes the plugin-supplied types contained in the library.
-// It is used for QML tooling purposes only.
-//
-// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable Qt.labs.folderlistmodel 2.14'
-
-Module {
- dependencies: ["QtQuick 2.0"]
- Component {
- name: "QAbstractItemModel"
- prototype: "QObject"
- Enum {
- name: "LayoutChangeHint"
- values: {
- "NoLayoutChangeHint": 0,
- "VerticalSortHint": 1,
- "HorizontalSortHint": 2
- }
- }
- Enum {
- name: "CheckIndexOption"
- values: {
- "NoOption": 0,
- "IndexIsValid": 1,
- "DoNotUseParent": 2,
- "ParentIsInvalid": 4
- }
- }
- Signal {
- name: "dataChanged"
- Parameter { name: "topLeft"; type: "QModelIndex" }
- Parameter { name: "bottomRight"; type: "QModelIndex" }
- Parameter { name: "roles"; type: "QVector<int>" }
- }
- Signal {
- name: "dataChanged"
- Parameter { name: "topLeft"; type: "QModelIndex" }
- Parameter { name: "bottomRight"; type: "QModelIndex" }
- }
- Signal {
- name: "headerDataChanged"
- Parameter { name: "orientation"; type: "Qt::Orientation" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "layoutChanged"
- Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
- Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" }
- }
- Signal {
- name: "layoutChanged"
- Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
- }
- Signal { name: "layoutChanged" }
- Signal {
- name: "layoutAboutToBeChanged"
- Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
- Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" }
- }
- Signal {
- name: "layoutAboutToBeChanged"
- Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
- }
- Signal { name: "layoutAboutToBeChanged" }
- Signal {
- name: "rowsAboutToBeInserted"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "rowsInserted"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "rowsAboutToBeRemoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "rowsRemoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "columnsAboutToBeInserted"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "columnsInserted"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "columnsAboutToBeRemoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "columnsRemoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal { name: "modelAboutToBeReset" }
- Signal { name: "modelReset" }
- Signal {
- name: "rowsAboutToBeMoved"
- Parameter { name: "sourceParent"; type: "QModelIndex" }
- Parameter { name: "sourceStart"; type: "int" }
- Parameter { name: "sourceEnd"; type: "int" }
- Parameter { name: "destinationParent"; type: "QModelIndex" }
- Parameter { name: "destinationRow"; type: "int" }
- }
- Signal {
- name: "rowsMoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "start"; type: "int" }
- Parameter { name: "end"; type: "int" }
- Parameter { name: "destination"; type: "QModelIndex" }
- Parameter { name: "row"; type: "int" }
- }
- Signal {
- name: "columnsAboutToBeMoved"
- Parameter { name: "sourceParent"; type: "QModelIndex" }
- Parameter { name: "sourceStart"; type: "int" }
- Parameter { name: "sourceEnd"; type: "int" }
- Parameter { name: "destinationParent"; type: "QModelIndex" }
- Parameter { name: "destinationColumn"; type: "int" }
- }
- Signal {
- name: "columnsMoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "start"; type: "int" }
- Parameter { name: "end"; type: "int" }
- Parameter { name: "destination"; type: "QModelIndex" }
- Parameter { name: "column"; type: "int" }
- }
- Method { name: "submit"; type: "bool" }
- Method { name: "revert" }
- Method {
- name: "hasIndex"
- type: "bool"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "hasIndex"
- type: "bool"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- }
- Method {
- name: "index"
- type: "QModelIndex"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "index"
- type: "QModelIndex"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- }
- Method {
- name: "parent"
- type: "QModelIndex"
- Parameter { name: "child"; type: "QModelIndex" }
- }
- Method {
- name: "sibling"
- type: "QModelIndex"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- Parameter { name: "idx"; type: "QModelIndex" }
- }
- Method {
- name: "rowCount"
- type: "int"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method { name: "rowCount"; type: "int" }
- Method {
- name: "columnCount"
- type: "int"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method { name: "columnCount"; type: "int" }
- Method {
- name: "hasChildren"
- type: "bool"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method { name: "hasChildren"; type: "bool" }
- Method {
- name: "data"
- type: "QVariant"
- Parameter { name: "index"; type: "QModelIndex" }
- Parameter { name: "role"; type: "int" }
- }
- Method {
- name: "data"
- type: "QVariant"
- Parameter { name: "index"; type: "QModelIndex" }
- }
- Method {
- name: "setData"
- type: "bool"
- Parameter { name: "index"; type: "QModelIndex" }
- Parameter { name: "value"; type: "QVariant" }
- Parameter { name: "role"; type: "int" }
- }
- Method {
- name: "setData"
- type: "bool"
- Parameter { name: "index"; type: "QModelIndex" }
- Parameter { name: "value"; type: "QVariant" }
- }
- Method {
- name: "headerData"
- type: "QVariant"
- Parameter { name: "section"; type: "int" }
- Parameter { name: "orientation"; type: "Qt::Orientation" }
- Parameter { name: "role"; type: "int" }
- }
- Method {
- name: "headerData"
- type: "QVariant"
- Parameter { name: "section"; type: "int" }
- Parameter { name: "orientation"; type: "Qt::Orientation" }
- }
- Method {
- name: "fetchMore"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "canFetchMore"
- type: "bool"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "flags"
- type: "Qt::ItemFlags"
- Parameter { name: "index"; type: "QModelIndex" }
- }
- Method {
- name: "match"
- type: "QModelIndexList"
- Parameter { name: "start"; type: "QModelIndex" }
- Parameter { name: "role"; type: "int" }
- Parameter { name: "value"; type: "QVariant" }
- Parameter { name: "hits"; type: "int" }
- Parameter { name: "flags"; type: "Qt::MatchFlags" }
- }
- Method {
- name: "match"
- type: "QModelIndexList"
- Parameter { name: "start"; type: "QModelIndex" }
- Parameter { name: "role"; type: "int" }
- Parameter { name: "value"; type: "QVariant" }
- Parameter { name: "hits"; type: "int" }
- }
- Method {
- name: "match"
- type: "QModelIndexList"
- Parameter { name: "start"; type: "QModelIndex" }
- Parameter { name: "role"; type: "int" }
- Parameter { name: "value"; type: "QVariant" }
- }
- }
- Component { name: "QAbstractListModel"; prototype: "QAbstractItemModel" }
- Component {
- name: "QQuickFolderListModel"
- prototype: "QAbstractListModel"
- exports: [
- "Qt.labs.folderlistmodel/FolderListModel 1.0",
- "Qt.labs.folderlistmodel/FolderListModel 2.0",
- "Qt.labs.folderlistmodel/FolderListModel 2.1",
- "Qt.labs.folderlistmodel/FolderListModel 2.11",
- "Qt.labs.folderlistmodel/FolderListModel 2.12",
- "Qt.labs.folderlistmodel/FolderListModel 2.2"
- ]
- exportMetaObjectRevisions: [0, 0, 1, 11, 12, 2]
- Enum {
- name: "SortField"
- values: {
- "Unsorted": 0,
- "Name": 1,
- "Time": 2,
- "Size": 3,
- "Type": 4
- }
- }
- Enum {
- name: "Status"
- values: {
- "Null": 0,
- "Ready": 1,
- "Loading": 2
- }
- }
- Property { name: "folder"; type: "QUrl" }
- Property { name: "rootFolder"; type: "QUrl" }
- Property { name: "parentFolder"; type: "QUrl"; isReadonly: true }
- Property { name: "nameFilters"; type: "QStringList" }
- Property { name: "sortField"; type: "SortField" }
- Property { name: "sortReversed"; type: "bool" }
- Property { name: "showFiles"; revision: 1; type: "bool" }
- Property { name: "showDirs"; type: "bool" }
- Property { name: "showDirsFirst"; type: "bool" }
- Property { name: "showDotAndDotDot"; type: "bool" }
- Property { name: "showHidden"; revision: 1; type: "bool" }
- Property { name: "showOnlyReadable"; type: "bool" }
- Property { name: "caseSensitive"; revision: 2; type: "bool" }
- Property { name: "count"; type: "int"; isReadonly: true }
- Property { name: "status"; revision: 11; type: "Status"; isReadonly: true }
- Property { name: "sortCaseSensitive"; revision: 12; type: "bool" }
- Signal { name: "rowCountChanged" }
- Signal { name: "countChanged"; revision: 1 }
- Signal { name: "statusChanged"; revision: 11 }
- Method {
- name: "isFolder"
- type: "bool"
- Parameter { name: "index"; type: "int" }
- }
- Method {
- name: "get"
- type: "QVariant"
- Parameter { name: "idx"; type: "int" }
- Parameter { name: "property"; type: "string" }
- }
- Method {
- name: "indexOf"
- type: "int"
- Parameter { name: "file"; type: "QUrl" }
- }
- }
-}
diff --git a/src/imports/folderlistmodel/qquickfolderlistmodel.cpp b/src/imports/folderlistmodel/qquickfolderlistmodel.cpp
index f5acfd86b7..26c6d4032f 100644
--- a/src/imports/folderlistmodel/qquickfolderlistmodel.cpp
+++ b/src/imports/folderlistmodel/qquickfolderlistmodel.cpp
@@ -107,7 +107,7 @@ void QQuickFolderListModelPrivate::updateSorting()
{
Q_Q(QQuickFolderListModel);
- QDir::SortFlags flags = nullptr;
+ QDir::SortFlags flags;
switch (sortField) {
case QQuickFolderListModel::Unsorted:
diff --git a/src/imports/labsanimation/labsanimation.pro b/src/imports/labsanimation/labsanimation.pro
index 128bc28ddb..f64ae775c6 100644
--- a/src/imports/labsanimation/labsanimation.pro
+++ b/src/imports/labsanimation/labsanimation.pro
@@ -12,4 +12,5 @@ HEADERS += \
QT = qml-private quick-private
+CONFIG += qmltypes install_qmltypes
load(qml_plugin)
diff --git a/src/imports/labsanimation/plugin.cpp b/src/imports/labsanimation/plugin.cpp
index a74a30663a..bd732a6aba 100644
--- a/src/imports/labsanimation/plugin.cpp
+++ b/src/imports/labsanimation/plugin.cpp
@@ -61,18 +61,12 @@ QT_BEGIN_NAMESPACE
*/
//![class decl]
-class QtLabsAnimationPlugin : public QQmlExtensionPlugin
+class QtLabsAnimationPlugin : public QQmlEngineExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
+ Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid)
public:
- QtLabsAnimationPlugin(QObject *parent = nullptr) : QQmlExtensionPlugin(parent) { }
- void registerTypes(const char *uri) override
- {
- Q_ASSERT(QLatin1String(uri) == QLatin1String("Qt.labs.animation"));
- qmlRegisterTypesAndRevisions<QQuickBoundaryRule>(uri, 1);
- qmlRegisterModule(uri, 1, 0);
- }
+ QtLabsAnimationPlugin(QObject *parent = nullptr) : QQmlEngineExtensionPlugin(parent) { }
};
//![class decl]
diff --git a/src/imports/labsanimation/plugins.qmltypes b/src/imports/labsanimation/plugins.qmltypes
deleted file mode 100644
index 2ecc5e6f5d..0000000000
--- a/src/imports/labsanimation/plugins.qmltypes
+++ /dev/null
@@ -1,36 +0,0 @@
-import QtQuick.tooling 1.2
-
-// This file describes the plugin-supplied types contained in the library.
-// It is used for QML tooling purposes only.
-//
-// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable -dependencies dependencies.json Qt.labs.animation 1.0'
-
-Module {
- dependencies: []
- Component {
- name: "QQuickBoundaryRule"
- prototype: "QObject"
- exports: ["Qt.labs.animation/BoundaryRule 1.0"]
- exportMetaObjectRevisions: [0]
- Enum {
- name: "OvershootFilter"
- values: {
- "None": 0,
- "Peak": 1
- }
- }
- Property { name: "enabled"; type: "bool" }
- Property { name: "minimum"; type: "double" }
- Property { name: "minimumOvershoot"; type: "double" }
- Property { name: "maximum"; type: "double" }
- Property { name: "maximumOvershoot"; type: "double" }
- Property { name: "overshootScale"; type: "double" }
- Property { name: "currentOvershoot"; type: "double"; isReadonly: true }
- Property { name: "peakOvershoot"; type: "double"; isReadonly: true }
- Property { name: "overshootFilter"; type: "OvershootFilter" }
- Property { name: "easing"; type: "QEasingCurve" }
- Property { name: "returnDuration"; type: "int" }
- Method { name: "returnToBounds"; type: "bool" }
- }
-}
diff --git a/src/imports/labsmodels/labsmodels.pro b/src/imports/labsmodels/labsmodels.pro
index c35e5f963d..13468348cb 100644
--- a/src/imports/labsmodels/labsmodels.pro
+++ b/src/imports/labsmodels/labsmodels.pro
@@ -26,4 +26,5 @@ qtConfig(qml-delegate-model) {
qqmldelegatecomponent_p.h
}
+CONFIG += qmltypes install_qmltypes
load(qml_plugin)
diff --git a/src/imports/labsmodels/plugin.cpp b/src/imports/labsmodels/plugin.cpp
index f1d1dd20b0..feb4f3ba0a 100644
--- a/src/imports/labsmodels/plugin.cpp
+++ b/src/imports/labsmodels/plugin.cpp
@@ -56,7 +56,7 @@ QT_BEGIN_NAMESPACE
\qmlmodule Qt.labs.qmlmodels 1.0
\title Qt QML Models experimental QML Types
\ingroup qmlmodules
- \brief Provides QML experimental types for data models
+ \brief Provides QML experimental types for data models.
\since 5.12
This QML module contains experimental QML types related to data models.
@@ -69,25 +69,12 @@ QT_BEGIN_NAMESPACE
*/
//![class decl]
-class QtQmlLabsModelsPlugin : public QQmlExtensionPlugin
+class QtQmlLabsModelsPlugin : public QQmlEngineExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
+ Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid)
public:
- QtQmlLabsModelsPlugin(QObject *parent = nullptr) : QQmlExtensionPlugin(parent) { }
- void registerTypes(const char *uri) override
- {
- Q_ASSERT(QLatin1String(uri) == QLatin1String("Qt.labs.qmlmodels"));
-
-#if QT_CONFIG(qml_delegate_model)
- qmlRegisterTypesAndRevisions<QQmlDelegateChooser, QQmlDelegateChoice>(uri, 1);
-#endif
-#if QT_CONFIG(qml_table_model)
- qmlRegisterTypesAndRevisions<QQmlTableModel, QQmlTableModelColumn>(uri, 1);
-#endif
-
- qmlRegisterModule(uri, 1, 0);
- }
+ QtQmlLabsModelsPlugin(QObject *parent = nullptr) : QQmlEngineExtensionPlugin(parent) { }
};
//![class decl]
diff --git a/src/imports/labsmodels/plugins.qmltypes b/src/imports/labsmodels/plugins.qmltypes
deleted file mode 100644
index f2a5752422..0000000000
--- a/src/imports/labsmodels/plugins.qmltypes
+++ /dev/null
@@ -1,414 +0,0 @@
-import QtQuick.tooling 1.2
-
-// This file describes the plugin-supplied types contained in the library.
-// It is used for QML tooling purposes only.
-//
-// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable -dependencies dependencies.json Qt.labs.qmlmodels 1.0'
-
-Module {
- dependencies: []
- Component {
- name: "QAbstractItemModel"
- prototype: "QObject"
- Enum {
- name: "LayoutChangeHint"
- values: {
- "NoLayoutChangeHint": 0,
- "VerticalSortHint": 1,
- "HorizontalSortHint": 2
- }
- }
- Enum {
- name: "CheckIndexOption"
- values: {
- "NoOption": 0,
- "IndexIsValid": 1,
- "DoNotUseParent": 2,
- "ParentIsInvalid": 4
- }
- }
- Signal {
- name: "dataChanged"
- Parameter { name: "topLeft"; type: "QModelIndex" }
- Parameter { name: "bottomRight"; type: "QModelIndex" }
- Parameter { name: "roles"; type: "QVector<int>" }
- }
- Signal {
- name: "dataChanged"
- Parameter { name: "topLeft"; type: "QModelIndex" }
- Parameter { name: "bottomRight"; type: "QModelIndex" }
- }
- Signal {
- name: "headerDataChanged"
- Parameter { name: "orientation"; type: "Qt::Orientation" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "layoutChanged"
- Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
- Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" }
- }
- Signal {
- name: "layoutChanged"
- Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
- }
- Signal { name: "layoutChanged" }
- Signal {
- name: "layoutAboutToBeChanged"
- Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
- Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" }
- }
- Signal {
- name: "layoutAboutToBeChanged"
- Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
- }
- Signal { name: "layoutAboutToBeChanged" }
- Signal {
- name: "rowsAboutToBeInserted"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "rowsInserted"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "rowsAboutToBeRemoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "rowsRemoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "columnsAboutToBeInserted"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "columnsInserted"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "columnsAboutToBeRemoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "columnsRemoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal { name: "modelAboutToBeReset" }
- Signal { name: "modelReset" }
- Signal {
- name: "rowsAboutToBeMoved"
- Parameter { name: "sourceParent"; type: "QModelIndex" }
- Parameter { name: "sourceStart"; type: "int" }
- Parameter { name: "sourceEnd"; type: "int" }
- Parameter { name: "destinationParent"; type: "QModelIndex" }
- Parameter { name: "destinationRow"; type: "int" }
- }
- Signal {
- name: "rowsMoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "start"; type: "int" }
- Parameter { name: "end"; type: "int" }
- Parameter { name: "destination"; type: "QModelIndex" }
- Parameter { name: "row"; type: "int" }
- }
- Signal {
- name: "columnsAboutToBeMoved"
- Parameter { name: "sourceParent"; type: "QModelIndex" }
- Parameter { name: "sourceStart"; type: "int" }
- Parameter { name: "sourceEnd"; type: "int" }
- Parameter { name: "destinationParent"; type: "QModelIndex" }
- Parameter { name: "destinationColumn"; type: "int" }
- }
- Signal {
- name: "columnsMoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "start"; type: "int" }
- Parameter { name: "end"; type: "int" }
- Parameter { name: "destination"; type: "QModelIndex" }
- Parameter { name: "column"; type: "int" }
- }
- Method { name: "submit"; type: "bool" }
- Method { name: "revert" }
- Method {
- name: "hasIndex"
- type: "bool"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "hasIndex"
- type: "bool"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- }
- Method {
- name: "index"
- type: "QModelIndex"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "index"
- type: "QModelIndex"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- }
- Method {
- name: "parent"
- type: "QModelIndex"
- Parameter { name: "child"; type: "QModelIndex" }
- }
- Method {
- name: "sibling"
- type: "QModelIndex"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- Parameter { name: "idx"; type: "QModelIndex" }
- }
- Method {
- name: "rowCount"
- type: "int"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method { name: "rowCount"; type: "int" }
- Method {
- name: "columnCount"
- type: "int"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method { name: "columnCount"; type: "int" }
- Method {
- name: "hasChildren"
- type: "bool"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method { name: "hasChildren"; type: "bool" }
- Method {
- name: "data"
- type: "QVariant"
- Parameter { name: "index"; type: "QModelIndex" }
- Parameter { name: "role"; type: "int" }
- }
- Method {
- name: "data"
- type: "QVariant"
- Parameter { name: "index"; type: "QModelIndex" }
- }
- Method {
- name: "setData"
- type: "bool"
- Parameter { name: "index"; type: "QModelIndex" }
- Parameter { name: "value"; type: "QVariant" }
- Parameter { name: "role"; type: "int" }
- }
- Method {
- name: "setData"
- type: "bool"
- Parameter { name: "index"; type: "QModelIndex" }
- Parameter { name: "value"; type: "QVariant" }
- }
- Method {
- name: "headerData"
- type: "QVariant"
- Parameter { name: "section"; type: "int" }
- Parameter { name: "orientation"; type: "Qt::Orientation" }
- Parameter { name: "role"; type: "int" }
- }
- Method {
- name: "headerData"
- type: "QVariant"
- Parameter { name: "section"; type: "int" }
- Parameter { name: "orientation"; type: "Qt::Orientation" }
- }
- Method {
- name: "fetchMore"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "canFetchMore"
- type: "bool"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "flags"
- type: "Qt::ItemFlags"
- Parameter { name: "index"; type: "QModelIndex" }
- }
- Method {
- name: "match"
- type: "QModelIndexList"
- Parameter { name: "start"; type: "QModelIndex" }
- Parameter { name: "role"; type: "int" }
- Parameter { name: "value"; type: "QVariant" }
- Parameter { name: "hits"; type: "int" }
- Parameter { name: "flags"; type: "Qt::MatchFlags" }
- }
- Method {
- name: "match"
- type: "QModelIndexList"
- Parameter { name: "start"; type: "QModelIndex" }
- Parameter { name: "role"; type: "int" }
- Parameter { name: "value"; type: "QVariant" }
- Parameter { name: "hits"; type: "int" }
- }
- Method {
- name: "match"
- type: "QModelIndexList"
- Parameter { name: "start"; type: "QModelIndex" }
- Parameter { name: "role"; type: "int" }
- Parameter { name: "value"; type: "QVariant" }
- }
- }
- Component { name: "QAbstractTableModel"; prototype: "QAbstractItemModel" }
- Component {
- name: "QQmlAbstractDelegateComponent"
- prototype: "QQmlComponent"
- exports: ["Qt.labs.qmlmodels/AbstractDelegateComponent 1.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Signal { name: "delegateChanged" }
- }
- Component {
- name: "QQmlDelegateChoice"
- defaultProperty: "delegate"
- prototype: "QObject"
- exports: ["Qt.labs.qmlmodels/DelegateChoice 1.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "roleValue"; type: "QVariant" }
- Property { name: "row"; type: "int" }
- Property { name: "index"; type: "int" }
- Property { name: "column"; type: "int" }
- Property { name: "delegate"; type: "QQmlComponent"; isPointer: true }
- Signal { name: "changed" }
- }
- Component {
- name: "QQmlDelegateChooser"
- defaultProperty: "choices"
- prototype: "QQmlAbstractDelegateComponent"
- exports: ["Qt.labs.qmlmodels/DelegateChooser 1.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "role"; type: "string" }
- Property { name: "choices"; type: "QQmlDelegateChoice"; isList: true; isReadonly: true }
- }
- Component {
- name: "QQmlTableModel"
- defaultProperty: "columns"
- prototype: "QAbstractTableModel"
- exports: ["Qt.labs.qmlmodels/TableModel 1.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "columnCount"; type: "int"; isReadonly: true }
- Property { name: "rowCount"; type: "int"; isReadonly: true }
- Property { name: "rows"; type: "QVariant" }
- Property { name: "columns"; type: "QQmlTableModelColumn"; isList: true; isReadonly: true }
- Method {
- name: "appendRow"
- Parameter { name: "row"; type: "QVariant" }
- }
- Method { name: "clear" }
- Method {
- name: "getRow"
- type: "QVariant"
- Parameter { name: "rowIndex"; type: "int" }
- }
- Method {
- name: "insertRow"
- Parameter { name: "rowIndex"; type: "int" }
- Parameter { name: "row"; type: "QVariant" }
- }
- Method {
- name: "moveRow"
- Parameter { name: "fromRowIndex"; type: "int" }
- Parameter { name: "toRowIndex"; type: "int" }
- Parameter { name: "rows"; type: "int" }
- }
- Method {
- name: "moveRow"
- Parameter { name: "fromRowIndex"; type: "int" }
- Parameter { name: "toRowIndex"; type: "int" }
- }
- Method {
- name: "removeRow"
- Parameter { name: "rowIndex"; type: "int" }
- Parameter { name: "rows"; type: "int" }
- }
- Method {
- name: "removeRow"
- Parameter { name: "rowIndex"; type: "int" }
- }
- Method {
- name: "setRow"
- Parameter { name: "rowIndex"; type: "int" }
- Parameter { name: "row"; type: "QVariant" }
- }
- Method {
- name: "data"
- type: "QVariant"
- Parameter { name: "index"; type: "QModelIndex" }
- Parameter { name: "role"; type: "string" }
- }
- Method {
- name: "setData"
- type: "bool"
- Parameter { name: "index"; type: "QModelIndex" }
- Parameter { name: "role"; type: "string" }
- Parameter { name: "value"; type: "QVariant" }
- }
- }
- Component {
- name: "QQmlTableModelColumn"
- prototype: "QObject"
- exports: ["Qt.labs.qmlmodels/TableModelColumn 1.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "display"; type: "QJSValue" }
- Property { name: "setDisplay"; type: "QJSValue" }
- Property { name: "decoration"; type: "QJSValue" }
- Property { name: "setDecoration"; type: "QJSValue" }
- Property { name: "edit"; type: "QJSValue" }
- Property { name: "setEdit"; type: "QJSValue" }
- Property { name: "toolTip"; type: "QJSValue" }
- Property { name: "setToolTip"; type: "QJSValue" }
- Property { name: "statusTip"; type: "QJSValue" }
- Property { name: "setStatusTip"; type: "QJSValue" }
- Property { name: "whatsThis"; type: "QJSValue" }
- Property { name: "setWhatsThis"; type: "QJSValue" }
- Property { name: "font"; type: "QJSValue" }
- Property { name: "setFont"; type: "QJSValue" }
- Property { name: "textAlignment"; type: "QJSValue" }
- Property { name: "setTextAlignment"; type: "QJSValue" }
- Property { name: "background"; type: "QJSValue" }
- Property { name: "setBackground"; type: "QJSValue" }
- Property { name: "foreground"; type: "QJSValue" }
- Property { name: "setForeground"; type: "QJSValue" }
- Property { name: "checkState"; type: "QJSValue" }
- Property { name: "setCheckState"; type: "QJSValue" }
- Property { name: "accessibleText"; type: "QJSValue" }
- Property { name: "setAccessibleText"; type: "QJSValue" }
- Property { name: "accessibleDescription"; type: "QJSValue" }
- Property { name: "setAccessibleDescription"; type: "QJSValue" }
- Property { name: "sizeHint"; type: "QJSValue" }
- Property { name: "setSizeHint"; type: "QJSValue" }
- Signal { name: "indexChanged" }
- }
-}
diff --git a/src/imports/layouts/layouts.pro b/src/imports/layouts/layouts.pro
index addf396746..c52046094e 100644
--- a/src/imports/layouts/layouts.pro
+++ b/src/imports/layouts/layouts.pro
@@ -1,7 +1,7 @@
CXX_MODULE = qml
TARGET = qquicklayoutsplugin
TARGETPATH = QtQuick/Layouts
-IMPORT_VERSION = 1.$$QT_MINOR_VERSION
+IMPORT_VERSION = 1.15
QT *= qml-private quick-private gui-private core-private
@@ -19,4 +19,6 @@ HEADERS += \
qquickgridlayoutengine_p.h \
qquicklayoutstyleinfo_p.h
+CONFIG += qmltypes install_qmltypes
+
load(qml_plugin)
diff --git a/src/imports/layouts/plugin.cpp b/src/imports/layouts/plugin.cpp
index 28592213a8..c302b79164 100644
--- a/src/imports/layouts/plugin.cpp
+++ b/src/imports/layouts/plugin.cpp
@@ -45,23 +45,14 @@
QT_BEGIN_NAMESPACE
//![class decl]
-class QtQuickLayoutsPlugin : public QQmlExtensionPlugin
+class QtQuickLayoutsPlugin : public QQmlEngineExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
+ Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid)
public:
- QtQuickLayoutsPlugin(QObject *parent = nullptr) : QQmlExtensionPlugin(parent)
+ QtQuickLayoutsPlugin(QObject *parent = nullptr) : QQmlEngineExtensionPlugin(parent)
{
}
- void registerTypes(const char *uri) override
- {
- Q_ASSERT(QLatin1String(uri) == QLatin1String("QtQuick.Layouts"));
-
- qmlRegisterTypesAndRevisions<QQuickRowLayout, QQuickColumnLayout, QQuickGridLayout,
- QQuickStackLayout, QQuickLayout, QQuickGridLayoutBase>(uri, 1);
-
- qmlRegisterModule(uri, 1, 15);
- }
};
//![class decl]
diff --git a/src/imports/layouts/plugins.qmltypes b/src/imports/layouts/plugins.qmltypes
deleted file mode 100644
index 4ebef4ac51..0000000000
--- a/src/imports/layouts/plugins.qmltypes
+++ /dev/null
@@ -1,131 +0,0 @@
-import QtQuick.tooling 1.2
-
-// This file describes the plugin-supplied types contained in the library.
-// It is used for QML tooling purposes only.
-//
-// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable QtQuick.Layouts 1.14'
-
-Module {
- dependencies: ["QtQuick 2.0"]
- Component {
- name: "QQuickColumnLayout"
- defaultProperty: "data"
- prototype: "QQuickLinearLayout"
- exports: [
- "QtQuick.Layouts/ColumnLayout 1.0",
- "QtQuick.Layouts/ColumnLayout 1.1",
- "QtQuick.Layouts/ColumnLayout 1.11",
- "QtQuick.Layouts/ColumnLayout 1.4",
- "QtQuick.Layouts/ColumnLayout 1.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- }
- Component {
- name: "QQuickGridLayout"
- defaultProperty: "data"
- prototype: "QQuickGridLayoutBase"
- exports: [
- "QtQuick.Layouts/GridLayout 1.0",
- "QtQuick.Layouts/GridLayout 1.1",
- "QtQuick.Layouts/GridLayout 1.11",
- "QtQuick.Layouts/GridLayout 1.4",
- "QtQuick.Layouts/GridLayout 1.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Enum {
- name: "Flow"
- values: {
- "LeftToRight": 0,
- "TopToBottom": 1
- }
- }
- Property { name: "columnSpacing"; type: "double" }
- Property { name: "rowSpacing"; type: "double" }
- Property { name: "columns"; type: "int" }
- Property { name: "rows"; type: "int" }
- Property { name: "flow"; type: "Flow" }
- }
- Component {
- name: "QQuickGridLayoutBase"
- defaultProperty: "data"
- prototype: "QQuickLayout"
- Property { name: "layoutDirection"; revision: 1; type: "Qt::LayoutDirection" }
- Signal { name: "layoutDirectionChanged"; revision: 1 }
- }
- Component {
- name: "QQuickLayout"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick.Layouts/Layout 1.0",
- "QtQuick.Layouts/Layout 1.1",
- "QtQuick.Layouts/Layout 1.11",
- "QtQuick.Layouts/Layout 1.4",
- "QtQuick.Layouts/Layout 1.7"
- ]
- isCreatable: false
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- attachedType: "QQuickLayoutAttached"
- }
- Component {
- name: "QQuickLayoutAttached"
- prototype: "QObject"
- Property { name: "minimumWidth"; type: "double" }
- Property { name: "minimumHeight"; type: "double" }
- Property { name: "preferredWidth"; type: "double" }
- Property { name: "preferredHeight"; type: "double" }
- Property { name: "maximumWidth"; type: "double" }
- Property { name: "maximumHeight"; type: "double" }
- Property { name: "fillHeight"; type: "bool" }
- Property { name: "fillWidth"; type: "bool" }
- Property { name: "row"; type: "int" }
- Property { name: "column"; type: "int" }
- Property { name: "rowSpan"; type: "int" }
- Property { name: "columnSpan"; type: "int" }
- Property { name: "alignment"; type: "Qt::Alignment" }
- Property { name: "margins"; type: "double" }
- Property { name: "leftMargin"; type: "double" }
- Property { name: "topMargin"; type: "double" }
- Property { name: "rightMargin"; type: "double" }
- Property { name: "bottomMargin"; type: "double" }
- }
- Component {
- name: "QQuickLinearLayout"
- defaultProperty: "data"
- prototype: "QQuickGridLayoutBase"
- Property { name: "spacing"; type: "double" }
- }
- Component {
- name: "QQuickRowLayout"
- defaultProperty: "data"
- prototype: "QQuickLinearLayout"
- exports: [
- "QtQuick.Layouts/RowLayout 1.0",
- "QtQuick.Layouts/RowLayout 1.1",
- "QtQuick.Layouts/RowLayout 1.11",
- "QtQuick.Layouts/RowLayout 1.4",
- "QtQuick.Layouts/RowLayout 1.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- }
- Component {
- name: "QQuickStackLayout"
- defaultProperty: "data"
- prototype: "QQuickLayout"
- exports: [
- "QtQuick.Layouts/StackLayout 1.11",
- "QtQuick.Layouts/StackLayout 1.3",
- "QtQuick.Layouts/StackLayout 1.4",
- "QtQuick.Layouts/StackLayout 1.7"
- ]
- exportMetaObjectRevisions: [11, 3, 4, 7]
- Property { name: "count"; type: "int"; isReadonly: true }
- Property { name: "currentIndex"; type: "int" }
- Method {
- name: "itemAt"
- type: "QQuickItem*"
- Parameter { name: "index"; type: "int" }
- }
- }
-}
diff --git a/src/imports/layouts/qquickgridlayoutengine.cpp b/src/imports/layouts/qquickgridlayoutengine.cpp
index 6004bb92ca..5275d70c39 100644
--- a/src/imports/layouts/qquickgridlayoutengine.cpp
+++ b/src/imports/layouts/qquickgridlayoutengine.cpp
@@ -55,7 +55,7 @@ Qt::Alignment QQuickGridLayoutEngine::alignment(QQuickItem *quickItem) const
{
if (QGridLayoutItem *item = findLayoutItem(quickItem))
return item->alignment();
- return nullptr;
+ return {};
}
QT_END_NAMESPACE
diff --git a/src/imports/layouts/qquickgridlayoutengine_p.h b/src/imports/layouts/qquickgridlayoutengine_p.h
index 2810e2e5d0..c53be89477 100644
--- a/src/imports/layouts/qquickgridlayoutengine_p.h
+++ b/src/imports/layouts/qquickgridlayoutengine_p.h
@@ -63,7 +63,7 @@ QT_BEGIN_NAMESPACE
class QQuickGridLayoutItem : public QGridLayoutItem {
public:
QQuickGridLayoutItem(QQuickItem *item, int row, int column,
- int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = 0)
+ int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = { })
: QGridLayoutItem(row, column, rowSpan, columnSpan, alignment), m_item(item), sizeHintCacheDirty(true), useFallbackToWidthOrHeight(true) {}
diff --git a/src/imports/layouts/qquicklayout.cpp b/src/imports/layouts/qquicklayout.cpp
index 450cf26cea..1ca4056ba9 100644
--- a/src/imports/layouts/qquicklayout.cpp
+++ b/src/imports/layouts/qquicklayout.cpp
@@ -117,8 +117,7 @@ QQuickLayoutAttached::QQuickLayoutAttached(QObject *parent)
m_isLeftMarginSet(false),
m_isTopMarginSet(false),
m_isRightMarginSet(false),
- m_isBottomMarginSet(false),
- m_alignment(nullptr)
+ m_isBottomMarginSet(false)
{
}
diff --git a/src/imports/layouts/qquicklinearlayout.cpp b/src/imports/layouts/qquicklinearlayout.cpp
index c6c9685ae2..344ea7237c 100644
--- a/src/imports/layouts/qquicklinearlayout.cpp
+++ b/src/imports/layouts/qquicklinearlayout.cpp
@@ -645,6 +645,7 @@ void QQuickGridLayout::insertLayoutItems()
int &nextColumn = nextCellPos[0];
int &nextRow = nextCellPos[1];
+ const QSize gridSize(columns(), rows());
const int flowOrientation = flow();
int &flowColumn = nextCellPos[flowOrientation];
int &flowRow = nextCellPos[1 - flowOrientation];
@@ -664,7 +665,7 @@ void QQuickGridLayout::insertLayoutItems()
if (shouldIgnoreItem(child, info, sizeHints))
continue;
- Qt::Alignment alignment = nullptr;
+ Qt::Alignment alignment;
int row = -1;
int column = -1;
int span[2] = {1,1};
@@ -677,8 +678,21 @@ void QQuickGridLayout::insertLayoutItems()
// the unspecified component of the cell position should default to 0
// The getters do this for us, as they will return 0 for an
// unset (or negative) value.
- row = info->row();
- column = info->column();
+ // In addition, if \a rows is less than Layout.row, treat Layout.row as if it was not set
+ // This will basically make it find the next available cell (potentially wrapping to
+ // the next line). Likewise for an invalid Layout.column
+
+ if (gridSize.height() >= 0 && row >= gridSize.height()) {
+ qmlWarning(child) << QString::fromLatin1("Layout: row (%1) should be less than the number of rows (%2)").arg(info->row()).arg(rows());
+ } else {
+ row = info->row();
+ }
+
+ if (gridSize.width() >= 0 && info->column() >= gridSize.width()) {
+ qmlWarning(child) << QString::fromLatin1("Layout: column (%1) should be less than the number of columns (%2)").arg(info->column()).arg(columns());
+ } else {
+ column = info->column();
+ }
}
rowSpan = info->rowSpan();
columnSpan = info->columnSpan();
@@ -840,7 +854,7 @@ void QQuickLinearLayout::insertLayoutItems()
if (shouldIgnoreItem(child, info, sizeHints))
continue;
- Qt::Alignment alignment = nullptr;
+ Qt::Alignment alignment;
if (info)
alignment = info->alignment();
diff --git a/src/imports/localstorage/localstorage.pro b/src/imports/localstorage/localstorage.pro
index 607a6cbbdd..d189808f49 100644
--- a/src/imports/localstorage/localstorage.pro
+++ b/src/imports/localstorage/localstorage.pro
@@ -1,7 +1,7 @@
CXX_MODULE = qml
TARGET = qmllocalstorageplugin
TARGETPATH = QtQuick/LocalStorage
-IMPORT_VERSION = 2.$$QT_MINOR_VERSION
+IMPORT_VERSION = 2.15
QT = sql qml-private core-private
@@ -14,4 +14,5 @@ HEADERS += \
load(qml_plugin)
+CONFIG += qmltypes install_qmltypes
OTHER_FILES += localstorage.json
diff --git a/src/imports/localstorage/plugin.cpp b/src/imports/localstorage/plugin.cpp
index 6366c51b47..ae9f37784d 100644
--- a/src/imports/localstorage/plugin.cpp
+++ b/src/imports/localstorage/plugin.cpp
@@ -44,22 +44,15 @@
QT_BEGIN_NAMESPACE
-class QQmlLocalStoragePlugin : public QQmlExtensionPlugin
+class QQmlLocalStoragePlugin : public QQmlEngineExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
+ Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid)
public:
- QQmlLocalStoragePlugin(QObject *parent = nullptr) : QQmlExtensionPlugin(parent)
+ QQmlLocalStoragePlugin(QObject *parent = nullptr) : QQmlEngineExtensionPlugin(parent)
{
}
- void registerTypes(const char *uri) override
- {
- Q_ASSERT(QLatin1String(uri) == QLatin1String("QtQuick.LocalStorage"));
- qmlRegisterTypesAndRevisions<QQuickLocalStorage>(uri, 2);
-
- qmlRegisterModule(uri, 2, 15);
- }
};
QT_END_NAMESPACE
diff --git a/src/imports/localstorage/plugins.qmltypes b/src/imports/localstorage/plugins.qmltypes
deleted file mode 100644
index 6ed334cc9d..0000000000
--- a/src/imports/localstorage/plugins.qmltypes
+++ /dev/null
@@ -1,23 +0,0 @@
-import QtQuick.tooling 1.2
-
-// This file describes the plugin-supplied types contained in the library.
-// It is used for QML tooling purposes only.
-//
-// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQuick.LocalStorage 2.14'
-
-Module {
- dependencies: []
- Component {
- name: "QQuickLocalStorage"
- prototype: "QObject"
- exports: ["QtQuick.LocalStorage/LocalStorage 2.0"]
- isCreatable: false
- isSingleton: true
- exportMetaObjectRevisions: [0]
- Method {
- name: "openDatabaseSync"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- }
-}
diff --git a/src/imports/models/models.pro b/src/imports/models/models.pro
index fd13b12401..0eb9958631 100644
--- a/src/imports/models/models.pro
+++ b/src/imports/models/models.pro
@@ -1,7 +1,7 @@
CXX_MODULE = qml
TARGET = modelsplugin
TARGETPATH = QtQml/Models.2
-IMPORT_VERSION = 2.$$QT_MINOR_VERSION
+IMPORT_VERSION = 2.15
SOURCES += \
plugin.cpp
diff --git a/src/imports/models/plugin.cpp b/src/imports/models/plugin.cpp
index fd99f243b0..4aa9f27766 100644
--- a/src/imports/models/plugin.cpp
+++ b/src/imports/models/plugin.cpp
@@ -37,13 +37,17 @@
**
****************************************************************************/
+#include <QtQmlModels/private/qqmlobjectmodel_p.h>
+
#include <QtQml/qqmlextensionplugin.h>
#include <QtQml/qqml.h>
-#include <private/qqmlmodelsmodule_p.h>
+#include <QtCore/qloggingcategory.h>
QT_BEGIN_NAMESPACE
+Q_LOGGING_CATEGORY(qmlModelsPlugin, "qt.qmlModelsPlugin")
+
/*!
\qmlmodule QtQml.Models 2.\QtMinorVersion
\title Qt QML Models QML Types
@@ -59,25 +63,42 @@ QT_BEGIN_NAMESPACE
import QtQml.Models 2.\1
\endqml
- Note that QtQml.Models module started at version 2.1 to match the version
+ \note QtQml.Models module started at version 2.1 to match the version
of the parent module, \l{Qt QML}.
+
+ In addition, Qt.labs.qmlmodels provides experimental QML types for models.
+ To use these experimental types, import the module with the following line:
+
+ \qml
+ import Qt.labs.qmlmodels 1.0
+ \endqml
+
+ \section1 QML Types
+ \generatelist qmltypesbymodule QtQml.Models
+
+ \section1 Experimental QML Types
+ \generatelist qmltypesbymodule Qt.labs.qmlmodels
+
+ \noautolist
*/
//![class decl]
-class QtQmlModelsPlugin : public QQmlExtensionPlugin
+class QtQmlModelsPlugin : public QQmlEngineExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
+ Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid)
public:
- QtQmlModelsPlugin(QObject *parent = nullptr) : QQmlExtensionPlugin(parent) { }
- void registerTypes(const char *uri) override
+ QtQmlModelsPlugin(QObject *parent = nullptr) : QQmlEngineExtensionPlugin(parent)
{
- Q_ASSERT(QLatin1String(uri) == QLatin1String("QtQml.Models"));
- QQmlModelsModule::defineModule();
-
- qmlRegisterModule(uri, 2, 15);
+ if (qmlModelsPlugin().isDebugEnabled()) {
+ // Superficial debug message that causes the dependency between QtQmlWorkerScript
+ // and the workerscript plugin to be retained.
+ // As qCDebug() can be a noop, retrieve the className in a separate step.
+ const QString className = QQmlObjectModel::staticMetaObject.className();
+ qCDebug(qmlModelsPlugin) << "Loading QmlModels plugin:" << className;
+ }
}
};
//![class decl]
diff --git a/src/imports/models/plugins.qmltypes b/src/imports/models/plugins.qmltypes
deleted file mode 100644
index 89a839e502..0000000000
--- a/src/imports/models/plugins.qmltypes
+++ /dev/null
@@ -1,710 +0,0 @@
-import QtQuick.tooling 1.2
-
-// This file describes the plugin-supplied types contained in the library.
-// It is used for QML tooling purposes only.
-//
-// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQml.Models 2.14'
-
-Module {
- dependencies: []
- Component {
- name: "QAbstractItemModel"
- prototype: "QObject"
- Enum {
- name: "LayoutChangeHint"
- values: {
- "NoLayoutChangeHint": 0,
- "VerticalSortHint": 1,
- "HorizontalSortHint": 2
- }
- }
- Enum {
- name: "CheckIndexOption"
- values: {
- "NoOption": 0,
- "IndexIsValid": 1,
- "DoNotUseParent": 2,
- "ParentIsInvalid": 4
- }
- }
- Signal {
- name: "dataChanged"
- Parameter { name: "topLeft"; type: "QModelIndex" }
- Parameter { name: "bottomRight"; type: "QModelIndex" }
- Parameter { name: "roles"; type: "QVector<int>" }
- }
- Signal {
- name: "dataChanged"
- Parameter { name: "topLeft"; type: "QModelIndex" }
- Parameter { name: "bottomRight"; type: "QModelIndex" }
- }
- Signal {
- name: "headerDataChanged"
- Parameter { name: "orientation"; type: "Qt::Orientation" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "layoutChanged"
- Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
- Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" }
- }
- Signal {
- name: "layoutChanged"
- Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
- }
- Signal { name: "layoutChanged" }
- Signal {
- name: "layoutAboutToBeChanged"
- Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
- Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" }
- }
- Signal {
- name: "layoutAboutToBeChanged"
- Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
- }
- Signal { name: "layoutAboutToBeChanged" }
- Signal {
- name: "rowsAboutToBeInserted"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "rowsInserted"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "rowsAboutToBeRemoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "rowsRemoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "columnsAboutToBeInserted"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "columnsInserted"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "columnsAboutToBeRemoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "columnsRemoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal { name: "modelAboutToBeReset" }
- Signal { name: "modelReset" }
- Signal {
- name: "rowsAboutToBeMoved"
- Parameter { name: "sourceParent"; type: "QModelIndex" }
- Parameter { name: "sourceStart"; type: "int" }
- Parameter { name: "sourceEnd"; type: "int" }
- Parameter { name: "destinationParent"; type: "QModelIndex" }
- Parameter { name: "destinationRow"; type: "int" }
- }
- Signal {
- name: "rowsMoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "start"; type: "int" }
- Parameter { name: "end"; type: "int" }
- Parameter { name: "destination"; type: "QModelIndex" }
- Parameter { name: "row"; type: "int" }
- }
- Signal {
- name: "columnsAboutToBeMoved"
- Parameter { name: "sourceParent"; type: "QModelIndex" }
- Parameter { name: "sourceStart"; type: "int" }
- Parameter { name: "sourceEnd"; type: "int" }
- Parameter { name: "destinationParent"; type: "QModelIndex" }
- Parameter { name: "destinationColumn"; type: "int" }
- }
- Signal {
- name: "columnsMoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "start"; type: "int" }
- Parameter { name: "end"; type: "int" }
- Parameter { name: "destination"; type: "QModelIndex" }
- Parameter { name: "column"; type: "int" }
- }
- Method { name: "submit"; type: "bool" }
- Method { name: "revert" }
- Method {
- name: "hasIndex"
- type: "bool"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "hasIndex"
- type: "bool"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- }
- Method {
- name: "index"
- type: "QModelIndex"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "index"
- type: "QModelIndex"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- }
- Method {
- name: "parent"
- type: "QModelIndex"
- Parameter { name: "child"; type: "QModelIndex" }
- }
- Method {
- name: "sibling"
- type: "QModelIndex"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- Parameter { name: "idx"; type: "QModelIndex" }
- }
- Method {
- name: "rowCount"
- type: "int"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method { name: "rowCount"; type: "int" }
- Method {
- name: "columnCount"
- type: "int"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method { name: "columnCount"; type: "int" }
- Method {
- name: "hasChildren"
- type: "bool"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method { name: "hasChildren"; type: "bool" }
- Method {
- name: "data"
- type: "QVariant"
- Parameter { name: "index"; type: "QModelIndex" }
- Parameter { name: "role"; type: "int" }
- }
- Method {
- name: "data"
- type: "QVariant"
- Parameter { name: "index"; type: "QModelIndex" }
- }
- Method {
- name: "setData"
- type: "bool"
- Parameter { name: "index"; type: "QModelIndex" }
- Parameter { name: "value"; type: "QVariant" }
- Parameter { name: "role"; type: "int" }
- }
- Method {
- name: "setData"
- type: "bool"
- Parameter { name: "index"; type: "QModelIndex" }
- Parameter { name: "value"; type: "QVariant" }
- }
- Method {
- name: "headerData"
- type: "QVariant"
- Parameter { name: "section"; type: "int" }
- Parameter { name: "orientation"; type: "Qt::Orientation" }
- Parameter { name: "role"; type: "int" }
- }
- Method {
- name: "headerData"
- type: "QVariant"
- Parameter { name: "section"; type: "int" }
- Parameter { name: "orientation"; type: "Qt::Orientation" }
- }
- Method {
- name: "fetchMore"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "canFetchMore"
- type: "bool"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "flags"
- type: "Qt::ItemFlags"
- Parameter { name: "index"; type: "QModelIndex" }
- }
- Method {
- name: "match"
- type: "QModelIndexList"
- Parameter { name: "start"; type: "QModelIndex" }
- Parameter { name: "role"; type: "int" }
- Parameter { name: "value"; type: "QVariant" }
- Parameter { name: "hits"; type: "int" }
- Parameter { name: "flags"; type: "Qt::MatchFlags" }
- }
- Method {
- name: "match"
- type: "QModelIndexList"
- Parameter { name: "start"; type: "QModelIndex" }
- Parameter { name: "role"; type: "int" }
- Parameter { name: "value"; type: "QVariant" }
- Parameter { name: "hits"; type: "int" }
- }
- Method {
- name: "match"
- type: "QModelIndexList"
- Parameter { name: "start"; type: "QModelIndex" }
- Parameter { name: "role"; type: "int" }
- Parameter { name: "value"; type: "QVariant" }
- }
- }
- Component { name: "QAbstractListModel"; prototype: "QAbstractItemModel" }
- Component {
- name: "QItemSelectionModel"
- prototype: "QObject"
- exports: ["QtQml.Models/ItemSelectionModel 2.2"]
- exportMetaObjectRevisions: [0]
- Enum {
- name: "SelectionFlags"
- values: {
- "NoUpdate": 0,
- "Clear": 1,
- "Select": 2,
- "Deselect": 4,
- "Toggle": 8,
- "Current": 16,
- "Rows": 32,
- "Columns": 64,
- "SelectCurrent": 18,
- "ToggleCurrent": 24,
- "ClearAndSelect": 3
- }
- }
- Property { name: "model"; type: "QAbstractItemModel"; isPointer: true }
- Property { name: "hasSelection"; type: "bool"; isReadonly: true }
- Property { name: "currentIndex"; type: "QModelIndex"; isReadonly: true }
- Property { name: "selection"; type: "QItemSelection"; isReadonly: true }
- Property { name: "selectedIndexes"; type: "QModelIndexList"; isReadonly: true }
- Signal {
- name: "selectionChanged"
- Parameter { name: "selected"; type: "QItemSelection" }
- Parameter { name: "deselected"; type: "QItemSelection" }
- }
- Signal {
- name: "currentChanged"
- Parameter { name: "current"; type: "QModelIndex" }
- Parameter { name: "previous"; type: "QModelIndex" }
- }
- Signal {
- name: "currentRowChanged"
- Parameter { name: "current"; type: "QModelIndex" }
- Parameter { name: "previous"; type: "QModelIndex" }
- }
- Signal {
- name: "currentColumnChanged"
- Parameter { name: "current"; type: "QModelIndex" }
- Parameter { name: "previous"; type: "QModelIndex" }
- }
- Signal {
- name: "modelChanged"
- Parameter { name: "model"; type: "QAbstractItemModel"; isPointer: true }
- }
- Method {
- name: "setCurrentIndex"
- Parameter { name: "index"; type: "QModelIndex" }
- Parameter { name: "command"; type: "QItemSelectionModel::SelectionFlags" }
- }
- Method {
- name: "select"
- Parameter { name: "index"; type: "QModelIndex" }
- Parameter { name: "command"; type: "QItemSelectionModel::SelectionFlags" }
- }
- Method {
- name: "select"
- Parameter { name: "selection"; type: "QItemSelection" }
- Parameter { name: "command"; type: "QItemSelectionModel::SelectionFlags" }
- }
- Method { name: "clear" }
- Method { name: "reset" }
- Method { name: "clearSelection" }
- Method { name: "clearCurrentIndex" }
- Method {
- name: "isSelected"
- type: "bool"
- Parameter { name: "index"; type: "QModelIndex" }
- }
- Method {
- name: "isRowSelected"
- type: "bool"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "isColumnSelected"
- type: "bool"
- Parameter { name: "column"; type: "int" }
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "rowIntersectsSelection"
- type: "bool"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "columnIntersectsSelection"
- type: "bool"
- Parameter { name: "column"; type: "int" }
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "selectedRows"
- type: "QModelIndexList"
- Parameter { name: "column"; type: "int" }
- }
- Method { name: "selectedRows"; type: "QModelIndexList" }
- Method {
- name: "selectedColumns"
- type: "QModelIndexList"
- Parameter { name: "row"; type: "int" }
- }
- Method { name: "selectedColumns"; type: "QModelIndexList" }
- }
- Component {
- name: "QQmlDelegateModel"
- defaultProperty: "delegate"
- prototype: "QQmlInstanceModel"
- exports: ["QtQml.Models/DelegateModel 2.1"]
- exportMetaObjectRevisions: [1]
- attachedType: "QQmlDelegateModelAttached"
- Property { name: "model"; type: "QVariant" }
- Property { name: "delegate"; type: "QQmlComponent"; isPointer: true }
- Property { name: "filterOnGroup"; type: "string" }
- Property { name: "items"; type: "QQmlDelegateModelGroup"; isReadonly: true; isPointer: true }
- Property {
- name: "persistedItems"
- type: "QQmlDelegateModelGroup"
- isReadonly: true
- isPointer: true
- }
- Property { name: "groups"; type: "QQmlDelegateModelGroup"; isList: true; isReadonly: true }
- Property { name: "parts"; type: "QObject"; isReadonly: true; isPointer: true }
- Property { name: "rootIndex"; type: "QVariant" }
- Signal { name: "filterGroupChanged" }
- Signal { name: "defaultGroupsChanged" }
- Method {
- name: "modelIndex"
- type: "QVariant"
- Parameter { name: "idx"; type: "int" }
- }
- Method { name: "parentModelIndex"; type: "QVariant" }
- }
- Component {
- name: "QQmlDelegateModelAttached"
- prototype: "QObject"
- Property { name: "model"; type: "QQmlDelegateModel"; isReadonly: true; isPointer: true }
- Property { name: "groups"; type: "QStringList" }
- Property { name: "isUnresolved"; type: "bool"; isReadonly: true }
- Signal { name: "unresolvedChanged" }
- }
- Component {
- name: "QQmlDelegateModelGroup"
- prototype: "QObject"
- exports: ["QtQml.Models/DelegateModelGroup 2.1"]
- exportMetaObjectRevisions: [1]
- Property { name: "count"; type: "int"; isReadonly: true }
- Property { name: "name"; type: "string" }
- Property { name: "includeByDefault"; type: "bool" }
- Signal { name: "defaultIncludeChanged" }
- Signal {
- name: "changed"
- Parameter { name: "removed"; type: "QJSValue" }
- Parameter { name: "inserted"; type: "QJSValue" }
- }
- Method {
- name: "insert"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "create"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "resolve"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "remove"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "addGroups"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "removeGroups"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "setGroups"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "move"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "get"
- type: "QJSValue"
- Parameter { name: "index"; type: "int" }
- }
- }
- Component { name: "QQmlDelegateModelParts"; prototype: "QObject" }
- Component {
- name: "QQmlInstanceModel"
- prototype: "QObject"
- Property { name: "count"; type: "int"; isReadonly: true }
- Signal {
- name: "modelUpdated"
- Parameter { name: "changeSet"; type: "QQmlChangeSet" }
- Parameter { name: "reset"; type: "bool" }
- }
- Signal {
- name: "createdItem"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- Signal {
- name: "initItem"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- Signal {
- name: "destroyingItem"
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- }
- Component {
- name: "QQmlInstantiator"
- defaultProperty: "delegate"
- prototype: "QObject"
- exports: ["QtQml.Models/Instantiator 2.14"]
- exportMetaObjectRevisions: [0]
- Property { name: "active"; type: "bool" }
- Property { name: "asynchronous"; type: "bool" }
- Property { name: "model"; type: "QVariant" }
- Property { name: "count"; type: "int"; isReadonly: true }
- Property { name: "delegate"; type: "QQmlComponent"; isPointer: true }
- Property { name: "object"; type: "QObject"; isReadonly: true; isPointer: true }
- Signal {
- name: "objectAdded"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- Signal {
- name: "objectRemoved"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- Method {
- name: "objectAt"
- type: "QObject*"
- Parameter { name: "index"; type: "int" }
- }
- }
- Component {
- name: "QQmlListElement"
- prototype: "QObject"
- exports: ["QtQml.Models/ListElement 2.1"]
- exportMetaObjectRevisions: [1]
- }
- Component {
- name: "QQmlListModel"
- prototype: "QAbstractListModel"
- exports: ["QtQml.Models/ListModel 2.1", "QtQml.Models/ListModel 2.14"]
- exportMetaObjectRevisions: [1, 14]
- Property { name: "count"; type: "int"; isReadonly: true }
- Property { name: "dynamicRoles"; type: "bool" }
- Property { name: "agent"; revision: 14; type: "QObject"; isReadonly: true; isPointer: true }
- Method { name: "clear" }
- Method {
- name: "remove"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "append"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "insert"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "get"
- type: "QJSValue"
- Parameter { name: "index"; type: "int" }
- }
- Method {
- name: "set"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "value"; type: "QJSValue" }
- }
- Method {
- name: "setProperty"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "property"; type: "string" }
- Parameter { name: "value"; type: "QVariant" }
- }
- Method {
- name: "move"
- Parameter { name: "from"; type: "int" }
- Parameter { name: "to"; type: "int" }
- Parameter { name: "count"; type: "int" }
- }
- Method { name: "sync" }
- }
- Component {
- name: "QQmlListModelWorkerAgent"
- prototype: "QObject"
- Property { name: "count"; type: "int"; isReadonly: true }
- Property { name: "engine"; type: "QV4::ExecutionEngine"; isPointer: true }
- Signal {
- name: "engineChanged"
- Parameter { name: "engine"; type: "QV4::ExecutionEngine"; isPointer: true }
- }
- Method { name: "addref" }
- Method { name: "release" }
- Method { name: "clear" }
- Method {
- name: "remove"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "append"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "insert"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "get"
- type: "QJSValue"
- Parameter { name: "index"; type: "int" }
- }
- Method {
- name: "set"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "value"; type: "QJSValue" }
- }
- Method {
- name: "setProperty"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "property"; type: "string" }
- Parameter { name: "value"; type: "QVariant" }
- }
- Method {
- name: "move"
- Parameter { name: "from"; type: "int" }
- Parameter { name: "to"; type: "int" }
- Parameter { name: "count"; type: "int" }
- }
- Method { name: "sync" }
- }
- Component {
- name: "QQmlObjectModel"
- defaultProperty: "children"
- prototype: "QQmlInstanceModel"
- exports: [
- "QtQml.Models/ObjectModel 2.1",
- "QtQml.Models/ObjectModel 2.3"
- ]
- exportMetaObjectRevisions: [1, 3]
- attachedType: "QQmlObjectModelAttached"
- Property { name: "children"; type: "QObject"; isList: true; isReadonly: true }
- Method { name: "clear"; revision: 3 }
- Method {
- name: "get"
- revision: 3
- type: "QObject*"
- Parameter { name: "index"; type: "int" }
- }
- Method {
- name: "append"
- revision: 3
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- Method {
- name: "insert"
- revision: 3
- Parameter { name: "index"; type: "int" }
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- Method {
- name: "move"
- revision: 3
- Parameter { name: "from"; type: "int" }
- Parameter { name: "to"; type: "int" }
- Parameter { name: "n"; type: "int" }
- }
- Method {
- name: "move"
- revision: 3
- Parameter { name: "from"; type: "int" }
- Parameter { name: "to"; type: "int" }
- }
- Method {
- name: "remove"
- revision: 3
- Parameter { name: "index"; type: "int" }
- Parameter { name: "n"; type: "int" }
- }
- Method {
- name: "remove"
- revision: 3
- Parameter { name: "index"; type: "int" }
- }
- }
- Component {
- name: "QQmlObjectModelAttached"
- prototype: "QObject"
- Property { name: "index"; type: "int"; isReadonly: true }
- }
- Component {
- name: "QQuickPackage"
- defaultProperty: "data"
- prototype: "QObject"
- exports: ["QtQml.Models/Package 2.14"]
- exportMetaObjectRevisions: [14]
- attachedType: "QQuickPackageAttached"
- Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
- }
- Component {
- name: "QQuickPackageAttached"
- prototype: "QObject"
- Property { name: "name"; type: "string" }
- }
-}
diff --git a/src/imports/particles/particles.pro b/src/imports/particles/particles.pro
index 41146c75b0..d13babf30c 100644
--- a/src/imports/particles/particles.pro
+++ b/src/imports/particles/particles.pro
@@ -1,7 +1,7 @@
CXX_MODULE = qml
TARGET = particlesplugin
TARGETPATH = QtQuick/Particles.2
-IMPORT_VERSION = 2.$$QT_MINOR_VERSION
+IMPORT_VERSION = 2.15
SOURCES += \
plugin.cpp
diff --git a/src/imports/particles/plugin.cpp b/src/imports/particles/plugin.cpp
index 704eb0ffbe..4f319db9f1 100644
--- a/src/imports/particles/plugin.cpp
+++ b/src/imports/particles/plugin.cpp
@@ -53,10 +53,8 @@ public:
QtQuick2ParticlesPlugin(QObject *parent = nullptr) : QQmlExtensionPlugin(parent) { }
void registerTypes(const char *uri) override
{
- Q_ASSERT(QLatin1String(uri) == QLatin1String("QtQuick.Particles"));
+ Q_UNUSED(uri);
QQuickParticlesModule::defineModule();
-
- qmlRegisterModule(uri, 2, 15);
}
};
//![class decl]
diff --git a/src/imports/particles/plugins.qmltypes b/src/imports/particles/plugins.qmltypes
deleted file mode 100644
index 48da0b26ed..0000000000
--- a/src/imports/particles/plugins.qmltypes
+++ /dev/null
@@ -1,1359 +0,0 @@
-import QtQuick.tooling 1.2
-
-// This file describes the plugin-supplied types contained in the library.
-// It is used for QML tooling purposes only.
-//
-// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable QtQuick.Particles 2.14'
-
-Module {
- dependencies: ["QtQuick 2.0"]
- Component {
- name: "QQuickAgeAffector"
- defaultProperty: "data"
- prototype: "QQuickParticleAffector"
- exports: [
- "QtQuick.Particles/Age 2.0",
- "QtQuick.Particles/Age 2.1",
- "QtQuick.Particles/Age 2.11",
- "QtQuick.Particles/Age 2.4",
- "QtQuick.Particles/Age 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Property { name: "lifeLeft"; type: "int" }
- Property { name: "advancePosition"; type: "bool" }
- Signal {
- name: "lifeLeftChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "advancePositionChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setLifeLeft"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setAdvancePosition"
- Parameter { name: "arg"; type: "bool" }
- }
- }
- Component {
- name: "QQuickAngleDirection"
- prototype: "QQuickDirection"
- exports: ["QtQuick.Particles/AngleDirection 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "angle"; type: "double" }
- Property { name: "magnitude"; type: "double" }
- Property { name: "angleVariation"; type: "double" }
- Property { name: "magnitudeVariation"; type: "double" }
- Signal {
- name: "angleChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "magnitudeChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "angleVariationChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "magnitudeVariationChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setAngle"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setMagnitude"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setAngleVariation"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setMagnitudeVariation"
- Parameter { name: "arg"; type: "double" }
- }
- }
- Component {
- name: "QQuickAttractorAffector"
- defaultProperty: "data"
- prototype: "QQuickParticleAffector"
- exports: [
- "QtQuick.Particles/Attractor 2.0",
- "QtQuick.Particles/Attractor 2.1",
- "QtQuick.Particles/Attractor 2.11",
- "QtQuick.Particles/Attractor 2.4",
- "QtQuick.Particles/Attractor 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Enum {
- name: "Proportion"
- values: {
- "Constant": 0,
- "Linear": 1,
- "Quadratic": 2,
- "InverseLinear": 3,
- "InverseQuadratic": 4
- }
- }
- Enum {
- name: "AffectableParameters"
- values: {
- "Position": 0,
- "Velocity": 1,
- "Acceleration": 2
- }
- }
- Property { name: "strength"; type: "double" }
- Property { name: "pointX"; type: "double" }
- Property { name: "pointY"; type: "double" }
- Property { name: "affectedParameter"; type: "AffectableParameters" }
- Property { name: "proportionalToDistance"; type: "Proportion" }
- Signal {
- name: "strengthChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "pointXChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "pointYChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "affectedParameterChanged"
- Parameter { name: "arg"; type: "AffectableParameters" }
- }
- Signal {
- name: "proportionalToDistanceChanged"
- Parameter { name: "arg"; type: "Proportion" }
- }
- Method {
- name: "setStrength"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setPointX"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setPointY"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setAffectedParameter"
- Parameter { name: "arg"; type: "AffectableParameters" }
- }
- Method {
- name: "setProportionalToDistance"
- Parameter { name: "arg"; type: "Proportion" }
- }
- }
- Component {
- name: "QQuickCumulativeDirection"
- defaultProperty: "directions"
- prototype: "QQuickDirection"
- exports: ["QtQuick.Particles/CumulativeDirection 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "directions"; type: "QQuickDirection"; isList: true; isReadonly: true }
- }
- Component {
- name: "QQuickCustomAffector"
- defaultProperty: "data"
- prototype: "QQuickParticleAffector"
- exports: [
- "QtQuick.Particles/Affector 2.0",
- "QtQuick.Particles/Affector 2.1",
- "QtQuick.Particles/Affector 2.11",
- "QtQuick.Particles/Affector 2.4",
- "QtQuick.Particles/Affector 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Property { name: "relative"; type: "bool" }
- Property { name: "position"; type: "QQuickDirection"; isPointer: true }
- Property { name: "velocity"; type: "QQuickDirection"; isPointer: true }
- Property { name: "acceleration"; type: "QQuickDirection"; isPointer: true }
- Signal {
- name: "affectParticles"
- Parameter { name: "particles"; type: "QJSValue" }
- Parameter { name: "dt"; type: "double" }
- }
- Signal {
- name: "positionChanged"
- Parameter { name: "arg"; type: "QQuickDirection"; isPointer: true }
- }
- Signal {
- name: "velocityChanged"
- Parameter { name: "arg"; type: "QQuickDirection"; isPointer: true }
- }
- Signal {
- name: "accelerationChanged"
- Parameter { name: "arg"; type: "QQuickDirection"; isPointer: true }
- }
- Signal {
- name: "relativeChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setPosition"
- Parameter { name: "arg"; type: "QQuickDirection"; isPointer: true }
- }
- Method {
- name: "setVelocity"
- Parameter { name: "arg"; type: "QQuickDirection"; isPointer: true }
- }
- Method {
- name: "setAcceleration"
- Parameter { name: "arg"; type: "QQuickDirection"; isPointer: true }
- }
- Method {
- name: "setRelative"
- Parameter { name: "arg"; type: "bool" }
- }
- }
- Component {
- name: "QQuickCustomParticle"
- defaultProperty: "data"
- prototype: "QQuickParticlePainter"
- exports: [
- "QtQuick.Particles/CustomParticle 2.0",
- "QtQuick.Particles/CustomParticle 2.1",
- "QtQuick.Particles/CustomParticle 2.11",
- "QtQuick.Particles/CustomParticle 2.4",
- "QtQuick.Particles/CustomParticle 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Property { name: "fragmentShader"; type: "QByteArray" }
- Property { name: "vertexShader"; type: "QByteArray" }
- }
- Component {
- name: "QQuickDirection"
- prototype: "QObject"
- exports: ["QtQuick.Particles/NullVector 2.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- }
- Component {
- name: "QQuickEllipseExtruder"
- prototype: "QQuickParticleExtruder"
- exports: ["QtQuick.Particles/EllipseShape 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "fill"; type: "bool" }
- Signal {
- name: "fillChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setFill"
- Parameter { name: "arg"; type: "bool" }
- }
- }
- Component {
- name: "QQuickFrictionAffector"
- defaultProperty: "data"
- prototype: "QQuickParticleAffector"
- exports: [
- "QtQuick.Particles/Friction 2.0",
- "QtQuick.Particles/Friction 2.1",
- "QtQuick.Particles/Friction 2.11",
- "QtQuick.Particles/Friction 2.4",
- "QtQuick.Particles/Friction 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Property { name: "factor"; type: "double" }
- Property { name: "threshold"; type: "double" }
- Signal {
- name: "factorChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "thresholdChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setFactor"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setThreshold"
- Parameter { name: "arg"; type: "double" }
- }
- }
- Component {
- name: "QQuickGravityAffector"
- defaultProperty: "data"
- prototype: "QQuickParticleAffector"
- exports: [
- "QtQuick.Particles/Gravity 2.0",
- "QtQuick.Particles/Gravity 2.1",
- "QtQuick.Particles/Gravity 2.11",
- "QtQuick.Particles/Gravity 2.4",
- "QtQuick.Particles/Gravity 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Property { name: "magnitude"; type: "double" }
- Property { name: "acceleration"; type: "double" }
- Property { name: "angle"; type: "double" }
- Signal {
- name: "magnitudeChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "angleChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setMagnitude"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setAcceleration"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setAngle"
- Parameter { name: "arg"; type: "double" }
- }
- }
- Component {
- name: "QQuickGroupGoalAffector"
- defaultProperty: "data"
- prototype: "QQuickParticleAffector"
- exports: [
- "QtQuick.Particles/GroupGoal 2.0",
- "QtQuick.Particles/GroupGoal 2.1",
- "QtQuick.Particles/GroupGoal 2.11",
- "QtQuick.Particles/GroupGoal 2.4",
- "QtQuick.Particles/GroupGoal 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Property { name: "goalState"; type: "string" }
- Property { name: "jump"; type: "bool" }
- Signal {
- name: "goalStateChanged"
- Parameter { name: "arg"; type: "string" }
- }
- Signal {
- name: "jumpChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setGoalState"
- Parameter { name: "arg"; type: "string" }
- }
- Method {
- name: "setJump"
- Parameter { name: "arg"; type: "bool" }
- }
- }
- Component {
- name: "QQuickImageParticle"
- defaultProperty: "data"
- prototype: "QQuickParticlePainter"
- exports: [
- "QtQuick.Particles/ImageParticle 2.0",
- "QtQuick.Particles/ImageParticle 2.1",
- "QtQuick.Particles/ImageParticle 2.11",
- "QtQuick.Particles/ImageParticle 2.4",
- "QtQuick.Particles/ImageParticle 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Enum {
- name: "Status"
- values: {
- "Null": 0,
- "Ready": 1,
- "Loading": 2,
- "Error": 3
- }
- }
- Enum {
- name: "EntryEffect"
- values: {
- "None": 0,
- "Fade": 1,
- "Scale": 2
- }
- }
- Property { name: "source"; type: "QUrl" }
- Property { name: "sprites"; type: "QQuickSprite"; isList: true; isReadonly: true }
- Property { name: "status"; type: "Status"; isReadonly: true }
- Property { name: "colorTable"; type: "QUrl" }
- Property { name: "sizeTable"; type: "QUrl" }
- Property { name: "opacityTable"; type: "QUrl" }
- Property { name: "color"; type: "QColor" }
- Property { name: "colorVariation"; type: "double" }
- Property { name: "redVariation"; type: "double" }
- Property { name: "greenVariation"; type: "double" }
- Property { name: "blueVariation"; type: "double" }
- Property { name: "alpha"; type: "double" }
- Property { name: "alphaVariation"; type: "double" }
- Property { name: "rotation"; type: "double" }
- Property { name: "rotationVariation"; type: "double" }
- Property { name: "rotationVelocity"; type: "double" }
- Property { name: "rotationVelocityVariation"; type: "double" }
- Property { name: "autoRotation"; type: "bool" }
- Property { name: "xVector"; type: "QQuickDirection"; isPointer: true }
- Property { name: "yVector"; type: "QQuickDirection"; isPointer: true }
- Property { name: "spritesInterpolate"; type: "bool" }
- Property { name: "entryEffect"; type: "EntryEffect" }
- Signal { name: "imageChanged" }
- Signal { name: "colortableChanged" }
- Signal { name: "sizetableChanged" }
- Signal { name: "opacitytableChanged" }
- Signal {
- name: "alphaVariationChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "alphaChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "redVariationChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "greenVariationChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "blueVariationChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "rotationChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "rotationVariationChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "rotationVelocityChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "rotationVelocityVariationChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "autoRotationChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "xVectorChanged"
- Parameter { name: "arg"; type: "QQuickDirection"; isPointer: true }
- }
- Signal {
- name: "yVectorChanged"
- Parameter { name: "arg"; type: "QQuickDirection"; isPointer: true }
- }
- Signal {
- name: "spritesInterpolateChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "bypassOptimizationsChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "entryEffectChanged"
- Parameter { name: "arg"; type: "EntryEffect" }
- }
- Signal {
- name: "statusChanged"
- Parameter { name: "arg"; type: "Status" }
- }
- Method {
- name: "reloadColor"
- Parameter { name: "c"; type: "Color4ub" }
- Parameter { name: "d"; type: "QQuickParticleData"; isPointer: true }
- }
- Method {
- name: "setAlphaVariation"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setAlpha"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setRedVariation"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setGreenVariation"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setBlueVariation"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setRotation"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setRotationVariation"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setRotationVelocity"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setRotationVelocityVariation"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setAutoRotation"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setXVector"
- Parameter { name: "arg"; type: "QQuickDirection"; isPointer: true }
- }
- Method {
- name: "setYVector"
- Parameter { name: "arg"; type: "QQuickDirection"; isPointer: true }
- }
- Method {
- name: "setSpritesInterpolate"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setBypassOptimizations"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setEntryEffect"
- Parameter { name: "arg"; type: "EntryEffect" }
- }
- }
- Component {
- name: "QQuickItemParticle"
- defaultProperty: "data"
- prototype: "QQuickParticlePainter"
- exports: [
- "QtQuick.Particles/ItemParticle 2.0",
- "QtQuick.Particles/ItemParticle 2.1",
- "QtQuick.Particles/ItemParticle 2.11",
- "QtQuick.Particles/ItemParticle 2.4",
- "QtQuick.Particles/ItemParticle 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- attachedType: "QQuickItemParticleAttached"
- Property { name: "fade"; type: "bool" }
- Property { name: "delegate"; type: "QQmlComponent"; isPointer: true }
- Signal {
- name: "delegateChanged"
- Parameter { name: "arg"; type: "QQmlComponent"; isPointer: true }
- }
- Method {
- name: "freeze"
- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
- }
- Method {
- name: "unfreeze"
- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
- }
- Method {
- name: "take"
- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
- Parameter { name: "prioritize"; type: "bool" }
- }
- Method {
- name: "take"
- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
- }
- Method {
- name: "give"
- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
- }
- Method {
- name: "setFade"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setDelegate"
- Parameter { name: "arg"; type: "QQmlComponent"; isPointer: true }
- }
- }
- Component {
- name: "QQuickItemParticleAttached"
- prototype: "QObject"
- Property { name: "particle"; type: "QQuickItemParticle"; isReadonly: true; isPointer: true }
- Signal { name: "detached" }
- Signal { name: "attached" }
- }
- Component {
- name: "QQuickLineExtruder"
- prototype: "QQuickParticleExtruder"
- exports: ["QtQuick.Particles/LineShape 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "mirrored"; type: "bool" }
- Signal {
- name: "mirroredChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setMirrored"
- Parameter { name: "arg"; type: "bool" }
- }
- }
- Component {
- name: "QQuickMaskExtruder"
- prototype: "QQuickParticleExtruder"
- exports: ["QtQuick.Particles/MaskShape 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "source"; type: "QUrl" }
- Signal {
- name: "sourceChanged"
- Parameter { name: "arg"; type: "QUrl" }
- }
- Method {
- name: "setSource"
- Parameter { name: "arg"; type: "QUrl" }
- }
- }
- Component {
- name: "QQuickParticleAffector"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick.Particles/ParticleAffector 2.0",
- "QtQuick.Particles/ParticleAffector 2.1",
- "QtQuick.Particles/ParticleAffector 2.11",
- "QtQuick.Particles/ParticleAffector 2.4",
- "QtQuick.Particles/ParticleAffector 2.7"
- ]
- isCreatable: false
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Property { name: "system"; type: "QQuickParticleSystem"; isPointer: true }
- Property { name: "groups"; type: "QStringList" }
- Property { name: "whenCollidingWith"; type: "QStringList" }
- Property { name: "enabled"; type: "bool" }
- Property { name: "once"; type: "bool" }
- Property { name: "shape"; type: "QQuickParticleExtruder"; isPointer: true }
- Signal {
- name: "systemChanged"
- Parameter { name: "arg"; type: "QQuickParticleSystem"; isPointer: true }
- }
- Signal {
- name: "groupsChanged"
- Parameter { name: "arg"; type: "QStringList" }
- }
- Signal {
- name: "enabledChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "onceChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "shapeChanged"
- Parameter { name: "arg"; type: "QQuickParticleExtruder"; isPointer: true }
- }
- Signal {
- name: "affected"
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- }
- Signal {
- name: "whenCollidingWithChanged"
- Parameter { name: "arg"; type: "QStringList" }
- }
- Method {
- name: "setSystem"
- Parameter { name: "arg"; type: "QQuickParticleSystem"; isPointer: true }
- }
- Method {
- name: "setGroups"
- Parameter { name: "arg"; type: "QStringList" }
- }
- Method {
- name: "setEnabled"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setOnceOff"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setShape"
- Parameter { name: "arg"; type: "QQuickParticleExtruder"; isPointer: true }
- }
- Method {
- name: "setWhenCollidingWith"
- Parameter { name: "arg"; type: "QStringList" }
- }
- Method { name: "updateOffsets" }
- }
- Component {
- name: "QQuickParticleEmitter"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick.Particles/Emitter 2.0",
- "QtQuick.Particles/Emitter 2.1",
- "QtQuick.Particles/Emitter 2.11",
- "QtQuick.Particles/Emitter 2.4",
- "QtQuick.Particles/Emitter 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Enum {
- name: "Lifetime"
- values: {
- "InfiniteLife": 600000
- }
- }
- Property { name: "system"; type: "QQuickParticleSystem"; isPointer: true }
- Property { name: "group"; type: "string" }
- Property { name: "shape"; type: "QQuickParticleExtruder"; isPointer: true }
- Property { name: "enabled"; type: "bool" }
- Property { name: "startTime"; type: "int" }
- Property { name: "emitRate"; type: "double" }
- Property { name: "lifeSpan"; type: "int" }
- Property { name: "lifeSpanVariation"; type: "int" }
- Property { name: "maximumEmitted"; type: "int" }
- Property { name: "size"; type: "double" }
- Property { name: "endSize"; type: "double" }
- Property { name: "sizeVariation"; type: "double" }
- Property { name: "velocity"; type: "QQuickDirection"; isPointer: true }
- Property { name: "acceleration"; type: "QQuickDirection"; isPointer: true }
- Property { name: "velocityFromMovement"; type: "double" }
- Signal {
- name: "emitParticles"
- Parameter { name: "particles"; type: "QJSValue" }
- }
- Signal {
- name: "particlesPerSecondChanged"
- Parameter { type: "double" }
- }
- Signal {
- name: "particleDurationChanged"
- Parameter { type: "int" }
- }
- Signal {
- name: "enabledChanged"
- Parameter { type: "bool" }
- }
- Signal {
- name: "systemChanged"
- Parameter { name: "arg"; type: "QQuickParticleSystem"; isPointer: true }
- }
- Signal {
- name: "groupChanged"
- Parameter { name: "arg"; type: "string" }
- }
- Signal {
- name: "particleDurationVariationChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "extruderChanged"
- Parameter { name: "arg"; type: "QQuickParticleExtruder"; isPointer: true }
- }
- Signal {
- name: "particleSizeChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "particleEndSizeChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "particleSizeVariationChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "velocityChanged"
- Parameter { name: "arg"; type: "QQuickDirection"; isPointer: true }
- }
- Signal {
- name: "accelerationChanged"
- Parameter { name: "arg"; type: "QQuickDirection"; isPointer: true }
- }
- Signal {
- name: "maximumEmittedChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal { name: "particleCountChanged" }
- Signal {
- name: "startTimeChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "pulse"
- Parameter { name: "milliseconds"; type: "int" }
- }
- Method {
- name: "burst"
- Parameter { name: "num"; type: "int" }
- }
- Method {
- name: "burst"
- Parameter { name: "num"; type: "int" }
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- }
- Method {
- name: "setEnabled"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setParticlesPerSecond"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setParticleDuration"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setSystem"
- Parameter { name: "arg"; type: "QQuickParticleSystem"; isPointer: true }
- }
- Method {
- name: "setGroup"
- Parameter { name: "arg"; type: "string" }
- }
- Method {
- name: "setParticleDurationVariation"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setExtruder"
- Parameter { name: "arg"; type: "QQuickParticleExtruder"; isPointer: true }
- }
- Method {
- name: "setParticleSize"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setParticleEndSize"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setParticleSizeVariation"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setVelocity"
- Parameter { name: "arg"; type: "QQuickDirection"; isPointer: true }
- }
- Method {
- name: "setAcceleration"
- Parameter { name: "arg"; type: "QQuickDirection"; isPointer: true }
- }
- Method {
- name: "setMaxParticleCount"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setStartTime"
- Parameter { name: "arg"; type: "int" }
- }
- Method { name: "reset" }
- }
- Component {
- name: "QQuickParticleExtruder"
- prototype: "QObject"
- exports: ["QtQuick.Particles/ParticleExtruder 2.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- }
- Component {
- name: "QQuickParticleGroup"
- defaultProperty: "particleChildren"
- prototype: "QQuickStochasticState"
- exports: ["QtQuick.Particles/ParticleGroup 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "system"; type: "QQuickParticleSystem"; isPointer: true }
- Property { name: "particleChildren"; type: "QObject"; isList: true; isReadonly: true }
- Signal {
- name: "maximumAliveChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "systemChanged"
- Parameter { name: "arg"; type: "QQuickParticleSystem"; isPointer: true }
- }
- Method {
- name: "setMaximumAlive"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setSystem"
- Parameter { name: "arg"; type: "QQuickParticleSystem"; isPointer: true }
- }
- Method {
- name: "delayRedirect"
- Parameter { name: "obj"; type: "QObject"; isPointer: true }
- }
- }
- Component {
- name: "QQuickParticlePainter"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick.Particles/ParticlePainter 2.0",
- "QtQuick.Particles/ParticlePainter 2.1",
- "QtQuick.Particles/ParticlePainter 2.11",
- "QtQuick.Particles/ParticlePainter 2.4",
- "QtQuick.Particles/ParticlePainter 2.7"
- ]
- isCreatable: false
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Property { name: "system"; type: "QQuickParticleSystem"; isPointer: true }
- Property { name: "groups"; type: "QStringList" }
- Signal { name: "countChanged" }
- Signal {
- name: "systemChanged"
- Parameter { name: "arg"; type: "QQuickParticleSystem"; isPointer: true }
- }
- Signal {
- name: "groupsChanged"
- Parameter { name: "arg"; type: "QStringList" }
- }
- Method {
- name: "setSystem"
- Parameter { name: "arg"; type: "QQuickParticleSystem"; isPointer: true }
- }
- Method {
- name: "setGroups"
- Parameter { name: "arg"; type: "QStringList" }
- }
- Method {
- name: "calcSystemOffset"
- Parameter { name: "resetPending"; type: "bool" }
- }
- Method { name: "calcSystemOffset" }
- }
- Component {
- name: "QQuickParticleSystem"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick.Particles/ParticleSystem 2.0",
- "QtQuick.Particles/ParticleSystem 2.1",
- "QtQuick.Particles/ParticleSystem 2.11",
- "QtQuick.Particles/ParticleSystem 2.4",
- "QtQuick.Particles/ParticleSystem 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Property { name: "running"; type: "bool" }
- Property { name: "paused"; type: "bool" }
- Property { name: "empty"; type: "bool"; isReadonly: true }
- Signal { name: "systemInitialized" }
- Signal {
- name: "runningChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "pausedChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "emptyChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Method { name: "start" }
- Method { name: "stop" }
- Method { name: "restart" }
- Method { name: "pause" }
- Method { name: "resume" }
- Method { name: "reset" }
- Method {
- name: "setRunning"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setPaused"
- Parameter { name: "arg"; type: "bool" }
- }
- Method { name: "duration"; type: "int" }
- }
- Component {
- name: "QQuickPointDirection"
- prototype: "QQuickDirection"
- exports: ["QtQuick.Particles/PointDirection 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "x"; type: "double" }
- Property { name: "y"; type: "double" }
- Property { name: "xVariation"; type: "double" }
- Property { name: "yVariation"; type: "double" }
- Signal {
- name: "xChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "yChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "xVariationChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "yVariationChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setX"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setY"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setXVariation"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setYVariation"
- Parameter { name: "arg"; type: "double" }
- }
- }
- Component {
- name: "QQuickRectangleExtruder"
- prototype: "QQuickParticleExtruder"
- exports: ["QtQuick.Particles/RectangleShape 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "fill"; type: "bool" }
- Signal {
- name: "fillChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setFill"
- Parameter { name: "arg"; type: "bool" }
- }
- }
- Component {
- name: "QQuickSpriteGoalAffector"
- defaultProperty: "data"
- prototype: "QQuickParticleAffector"
- exports: [
- "QtQuick.Particles/SpriteGoal 2.0",
- "QtQuick.Particles/SpriteGoal 2.1",
- "QtQuick.Particles/SpriteGoal 2.11",
- "QtQuick.Particles/SpriteGoal 2.4",
- "QtQuick.Particles/SpriteGoal 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Property { name: "goalState"; type: "string" }
- Property { name: "jump"; type: "bool" }
- Property { name: "systemStates"; type: "bool" }
- Signal {
- name: "goalStateChanged"
- Parameter { name: "arg"; type: "string" }
- }
- Signal {
- name: "jumpChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "systemStatesChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setGoalState"
- Parameter { name: "arg"; type: "string" }
- }
- Method {
- name: "setJump"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setSystemStates"
- Parameter { name: "arg"; type: "bool" }
- }
- }
- Component {
- name: "QQuickStochasticState"
- prototype: "QObject"
- Property { name: "duration"; type: "int" }
- Property { name: "durationVariation"; type: "int" }
- Property { name: "randomStart"; type: "bool" }
- Property { name: "to"; type: "QVariantMap" }
- Property { name: "name"; type: "string" }
- Signal {
- name: "durationChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "nameChanged"
- Parameter { name: "arg"; type: "string" }
- }
- Signal {
- name: "toChanged"
- Parameter { name: "arg"; type: "QVariantMap" }
- }
- Signal {
- name: "durationVariationChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal { name: "entered" }
- Signal {
- name: "randomStartChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setDuration"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setName"
- Parameter { name: "arg"; type: "string" }
- }
- Method {
- name: "setTo"
- Parameter { name: "arg"; type: "QVariantMap" }
- }
- Method {
- name: "setDurationVariation"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setRandomStart"
- Parameter { name: "arg"; type: "bool" }
- }
- }
- Component {
- name: "QQuickTargetDirection"
- prototype: "QQuickDirection"
- exports: ["QtQuick.Particles/TargetDirection 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "targetX"; type: "double" }
- Property { name: "targetY"; type: "double" }
- Property { name: "targetItem"; type: "QQuickItem"; isPointer: true }
- Property { name: "targetVariation"; type: "double" }
- Property { name: "proportionalMagnitude"; type: "bool" }
- Property { name: "magnitude"; type: "double" }
- Property { name: "magnitudeVariation"; type: "double" }
- Signal {
- name: "targetXChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "targetYChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "targetVariationChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "magnitudeChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "proprotionalMagnitudeChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "magnitudeVariationChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "targetItemChanged"
- Parameter { name: "arg"; type: "QQuickItem"; isPointer: true }
- }
- Method {
- name: "setTargetX"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setTargetY"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setTargetVariation"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setMagnitude"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setProportionalMagnitude"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setMagnitudeVariation"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setTargetItem"
- Parameter { name: "arg"; type: "QQuickItem"; isPointer: true }
- }
- }
- Component {
- name: "QQuickTrailEmitter"
- defaultProperty: "data"
- prototype: "QQuickParticleEmitter"
- exports: [
- "QtQuick.Particles/TrailEmitter 2.0",
- "QtQuick.Particles/TrailEmitter 2.1",
- "QtQuick.Particles/TrailEmitter 2.11",
- "QtQuick.Particles/TrailEmitter 2.4",
- "QtQuick.Particles/TrailEmitter 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Enum {
- name: "EmitSize"
- values: {
- "ParticleSize": -2
- }
- }
- Property { name: "follow"; type: "string" }
- Property { name: "emitRatePerParticle"; type: "int" }
- Property { name: "emitShape"; type: "QQuickParticleExtruder"; isPointer: true }
- Property { name: "emitHeight"; type: "double" }
- Property { name: "emitWidth"; type: "double" }
- Signal {
- name: "emitFollowParticles"
- Parameter { name: "particles"; type: "QJSValue" }
- Parameter { name: "followed"; type: "QJSValue" }
- }
- Signal {
- name: "particlesPerParticlePerSecondChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "emitterXVariationChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "emitterYVariationChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "followChanged"
- Parameter { name: "arg"; type: "string" }
- }
- Signal {
- name: "emissionShapeChanged"
- Parameter { name: "arg"; type: "QQuickParticleExtruder"; isPointer: true }
- }
- Method {
- name: "setParticlesPerParticlePerSecond"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setEmitterXVariation"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setEmitterYVariation"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setFollow"
- Parameter { name: "arg"; type: "string" }
- }
- Method {
- name: "setEmissionShape"
- Parameter { name: "arg"; type: "QQuickParticleExtruder"; isPointer: true }
- }
- }
- Component {
- name: "QQuickTurbulenceAffector"
- defaultProperty: "data"
- prototype: "QQuickParticleAffector"
- exports: [
- "QtQuick.Particles/Turbulence 2.0",
- "QtQuick.Particles/Turbulence 2.1",
- "QtQuick.Particles/Turbulence 2.11",
- "QtQuick.Particles/Turbulence 2.4",
- "QtQuick.Particles/Turbulence 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Property { name: "strength"; type: "double" }
- Property { name: "noiseSource"; type: "QUrl" }
- Signal {
- name: "strengthChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "noiseSourceChanged"
- Parameter { name: "arg"; type: "QUrl" }
- }
- Method {
- name: "setStrength"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setNoiseSource"
- Parameter { name: "arg"; type: "QUrl" }
- }
- }
- Component {
- name: "QQuickWanderAffector"
- defaultProperty: "data"
- prototype: "QQuickParticleAffector"
- exports: [
- "QtQuick.Particles/Wander 2.0",
- "QtQuick.Particles/Wander 2.1",
- "QtQuick.Particles/Wander 2.11",
- "QtQuick.Particles/Wander 2.4",
- "QtQuick.Particles/Wander 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Enum {
- name: "AffectableParameters"
- values: {
- "Position": 0,
- "Velocity": 1,
- "Acceleration": 2
- }
- }
- Property { name: "pace"; type: "double" }
- Property { name: "xVariance"; type: "double" }
- Property { name: "yVariance"; type: "double" }
- Property { name: "affectedParameter"; type: "AffectableParameters" }
- Signal {
- name: "xVarianceChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "yVarianceChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "paceChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "affectedParameterChanged"
- Parameter { name: "arg"; type: "AffectableParameters" }
- }
- Method {
- name: "setXVariance"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setYVariance"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setPace"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setAffectedParameter"
- Parameter { name: "arg"; type: "AffectableParameters" }
- }
- }
-}
diff --git a/src/imports/qtqml/plugin.cpp b/src/imports/qtqml/plugin.cpp
index f63e04c3b9..ec08992355 100644
--- a/src/imports/qtqml/plugin.cpp
+++ b/src/imports/qtqml/plugin.cpp
@@ -61,19 +61,12 @@ QT_BEGIN_NAMESPACE
*/
//![class decl]
-class QtQmlPlugin : public QQmlExtensionPlugin
+class QtQmlPlugin : public QQmlEngineExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
+ Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid)
public:
- QtQmlPlugin(QObject *parent = nullptr) : QQmlExtensionPlugin(parent) { }
- void registerTypes(const char *uri) override
- {
- Q_ASSERT(QLatin1String(uri) == QLatin1String("QtQml"));
- QQmlEnginePrivate::defineModule();
-
- qmlRegisterModule(uri, 2, 15);
- }
+ QtQmlPlugin(QObject *parent = nullptr) : QQmlEngineExtensionPlugin(parent) {}
};
//![class decl]
diff --git a/src/imports/qtqml/plugins.qmltypes b/src/imports/qtqml/plugins.qmltypes
deleted file mode 100644
index e4ddb3ddd1..0000000000
--- a/src/imports/qtqml/plugins.qmltypes
+++ /dev/null
@@ -1,245 +0,0 @@
-import QtQuick.tooling 1.2
-
-// This file describes the plugin-supplied types contained in the library.
-// It is used for QML tooling purposes only.
-//
-// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQml 2.14'
-
-Module {
- dependencies: []
- Component {
- name: "QObject"
- exports: ["QtQml/QtObject 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "objectName"; type: "string" }
- Signal {
- name: "objectNameChanged"
- Parameter { name: "objectName"; type: "string" }
- }
- Method { name: "toString" }
- Method { name: "destroy" }
- Method {
- name: "destroy"
- Parameter { name: "delay"; type: "int" }
- }
- }
- Component {
- name: "QQmlBind"
- prototype: "QObject"
- exports: [
- "QtQml/Binding 2.0",
- "QtQml/Binding 2.14",
- "QtQml/Binding 2.8"
- ]
- exportMetaObjectRevisions: [0, 14, 8]
- Enum {
- name: "RestorationMode"
- values: {
- "RestoreNone": 0,
- "RestoreBinding": 1,
- "RestoreValue": 2,
- "RestoreBindingOrValue": 3
- }
- }
- Property { name: "target"; type: "QObject"; isPointer: true }
- Property { name: "property"; type: "string" }
- Property { name: "value"; type: "QVariant" }
- Property { name: "when"; type: "bool" }
- Property { name: "delayed"; revision: 8; type: "bool" }
- Property { name: "restoreMode"; revision: 14; type: "RestorationMode" }
- }
- Component {
- name: "QQmlComponent"
- prototype: "QObject"
- exports: ["QtQml/Component 2.0"]
- exportMetaObjectRevisions: [0]
- attachedType: "QQmlComponentAttached"
- Enum {
- name: "CompilationMode"
- values: {
- "PreferSynchronous": 0,
- "Asynchronous": 1
- }
- }
- Enum {
- name: "Status"
- values: {
- "Null": 0,
- "Ready": 1,
- "Loading": 2,
- "Error": 3
- }
- }
- Property { name: "progress"; type: "double"; isReadonly: true }
- Property { name: "status"; type: "Status"; isReadonly: true }
- Property { name: "url"; type: "QUrl"; isReadonly: true }
- Signal {
- name: "statusChanged"
- Parameter { type: "QQmlComponent::Status" }
- }
- Signal {
- name: "progressChanged"
- Parameter { type: "double" }
- }
- Method {
- name: "loadUrl"
- Parameter { name: "url"; type: "QUrl" }
- }
- Method {
- name: "loadUrl"
- Parameter { name: "url"; type: "QUrl" }
- Parameter { name: "mode"; type: "CompilationMode" }
- }
- Method {
- name: "setData"
- Parameter { type: "QByteArray" }
- Parameter { name: "baseUrl"; type: "QUrl" }
- }
- Method { name: "errorString"; type: "string" }
- }
- Component {
- name: "QQmlComponentAttached"
- prototype: "QObject"
- Signal { name: "completed" }
- Signal { name: "destruction" }
- }
- Component {
- name: "QQmlConnections"
- prototype: "QObject"
- exports: ["QtQml/Connections 2.0", "QtQml/Connections 2.3"]
- exportMetaObjectRevisions: [0, 3]
- Property { name: "target"; type: "QObject"; isPointer: true }
- Property { name: "enabled"; revision: 3; type: "bool" }
- Property { name: "ignoreUnknownSignals"; type: "bool" }
- Signal { name: "enabledChanged"; revision: 3 }
- }
- Component {
- name: "QQmlInstanceModel"
- prototype: "QObject"
- Property { name: "count"; type: "int"; isReadonly: true }
- Signal {
- name: "modelUpdated"
- Parameter { name: "changeSet"; type: "QQmlChangeSet" }
- Parameter { name: "reset"; type: "bool" }
- }
- Signal {
- name: "createdItem"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- Signal {
- name: "initItem"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- Signal {
- name: "destroyingItem"
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- }
- Component {
- name: "QQmlInstantiator"
- defaultProperty: "delegate"
- prototype: "QObject"
- exports: ["QtQml/Instantiator 2.1"]
- exportMetaObjectRevisions: [0]
- Property { name: "active"; type: "bool" }
- Property { name: "asynchronous"; type: "bool" }
- Property { name: "model"; type: "QVariant" }
- Property { name: "count"; type: "int"; isReadonly: true }
- Property { name: "delegate"; type: "QQmlComponent"; isPointer: true }
- Property { name: "object"; type: "QObject"; isReadonly: true; isPointer: true }
- Signal {
- name: "objectAdded"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- Signal {
- name: "objectRemoved"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- Method {
- name: "objectAt"
- type: "QObject*"
- Parameter { name: "index"; type: "int" }
- }
- }
- Component {
- name: "QQmlLocale"
- exports: ["QtQml/Locale 2.2"]
- isCreatable: false
- exportMetaObjectRevisions: [2]
- Enum {
- name: "MeasurementSystem"
- values: {
- "MetricSystem": 0,
- "ImperialSystem": 1,
- "ImperialUSSystem": 1,
- "ImperialUKSystem": 2
- }
- }
- Enum {
- name: "FormatType"
- values: {
- "LongFormat": 0,
- "ShortFormat": 1,
- "NarrowFormat": 2
- }
- }
- Enum {
- name: "CurrencySymbolFormat"
- values: {
- "CurrencyIsoCode": 0,
- "CurrencySymbol": 1,
- "CurrencyDisplayName": 2
- }
- }
- Enum {
- name: "DayOfWeek"
- values: {
- "Sunday": 0,
- "Monday": 1,
- "Tuesday": 2,
- "Wednesday": 3,
- "Thursday": 4,
- "Friday": 5,
- "Saturday": 6
- }
- }
- }
- Component {
- name: "QQmlLoggingCategory"
- prototype: "QObject"
- exports: ["QtQml/LoggingCategory 2.12", "QtQml/LoggingCategory 2.8"]
- exportMetaObjectRevisions: [12, 8]
- Enum {
- name: "DefaultLogLevel"
- values: {
- "Debug": 0,
- "Info": 4,
- "Warning": 1,
- "Critical": 2,
- "Fatal": 3
- }
- }
- Property { name: "name"; type: "string" }
- Property { name: "defaultLogLevel"; revision: 12; type: "DefaultLogLevel" }
- }
- Component {
- name: "QQmlTimer"
- prototype: "QObject"
- exports: ["QtQml/Timer 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "interval"; type: "int" }
- Property { name: "running"; type: "bool" }
- Property { name: "repeat"; type: "bool" }
- Property { name: "triggeredOnStart"; type: "bool" }
- Property { name: "parent"; type: "QObject"; isReadonly: true; isPointer: true }
- Signal { name: "triggered" }
- Method { name: "start" }
- Method { name: "stop" }
- Method { name: "restart" }
- }
-}
diff --git a/src/imports/qtqml/qtqml.pro b/src/imports/qtqml/qtqml.pro
index 902f0b1247..0211844b14 100644
--- a/src/imports/qtqml/qtqml.pro
+++ b/src/imports/qtqml/qtqml.pro
@@ -1,7 +1,7 @@
TARGETPATH = QtQml
CXX_MODULE = qml
TARGET = qmlplugin
-IMPORT_VERSION = 2.$$QT_MINOR_VERSION
+IMPORT_VERSION = 2.15
SOURCES += \
plugin.cpp
diff --git a/src/imports/qtquick2/plugin.cpp b/src/imports/qtquick2/plugin.cpp
index 1b14e9f0e5..98056aa551 100644
--- a/src/imports/qtquick2/plugin.cpp
+++ b/src/imports/qtquick2/plugin.cpp
@@ -57,8 +57,6 @@ public:
Q_UNUSED(uri);
moduleDefined = true;
QQmlQtQuick2Module::defineModule();
-
- qmlRegisterModule("QtQuick", 2, 15);
}
~QtQuick2Plugin() override
diff --git a/src/imports/qtquick2/plugins.qmltypes b/src/imports/qtquick2/plugins.qmltypes
deleted file mode 100644
index a773a8c428..0000000000
--- a/src/imports/qtquick2/plugins.qmltypes
+++ /dev/null
@@ -1,5921 +0,0 @@
-import QtQuick.tooling 1.2
-
-// This file describes the plugin-supplied types contained in the library.
-// It is used for QML tooling purposes only.
-//
-// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQuick 2.14'
-
-Module {
- dependencies: []
- Component {
- name: "QAbstractItemModel"
- prototype: "QObject"
- Enum {
- name: "LayoutChangeHint"
- values: {
- "NoLayoutChangeHint": 0,
- "VerticalSortHint": 1,
- "HorizontalSortHint": 2
- }
- }
- Enum {
- name: "CheckIndexOption"
- values: {
- "NoOption": 0,
- "IndexIsValid": 1,
- "DoNotUseParent": 2,
- "ParentIsInvalid": 4
- }
- }
- Signal {
- name: "dataChanged"
- Parameter { name: "topLeft"; type: "QModelIndex" }
- Parameter { name: "bottomRight"; type: "QModelIndex" }
- Parameter { name: "roles"; type: "QVector<int>" }
- }
- Signal {
- name: "dataChanged"
- Parameter { name: "topLeft"; type: "QModelIndex" }
- Parameter { name: "bottomRight"; type: "QModelIndex" }
- }
- Signal {
- name: "headerDataChanged"
- Parameter { name: "orientation"; type: "Qt::Orientation" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "layoutChanged"
- Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
- Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" }
- }
- Signal {
- name: "layoutChanged"
- Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
- }
- Signal { name: "layoutChanged" }
- Signal {
- name: "layoutAboutToBeChanged"
- Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
- Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" }
- }
- Signal {
- name: "layoutAboutToBeChanged"
- Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
- }
- Signal { name: "layoutAboutToBeChanged" }
- Signal {
- name: "rowsAboutToBeInserted"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "rowsInserted"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "rowsAboutToBeRemoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "rowsRemoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "columnsAboutToBeInserted"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "columnsInserted"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "columnsAboutToBeRemoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal {
- name: "columnsRemoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "first"; type: "int" }
- Parameter { name: "last"; type: "int" }
- }
- Signal { name: "modelAboutToBeReset" }
- Signal { name: "modelReset" }
- Signal {
- name: "rowsAboutToBeMoved"
- Parameter { name: "sourceParent"; type: "QModelIndex" }
- Parameter { name: "sourceStart"; type: "int" }
- Parameter { name: "sourceEnd"; type: "int" }
- Parameter { name: "destinationParent"; type: "QModelIndex" }
- Parameter { name: "destinationRow"; type: "int" }
- }
- Signal {
- name: "rowsMoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "start"; type: "int" }
- Parameter { name: "end"; type: "int" }
- Parameter { name: "destination"; type: "QModelIndex" }
- Parameter { name: "row"; type: "int" }
- }
- Signal {
- name: "columnsAboutToBeMoved"
- Parameter { name: "sourceParent"; type: "QModelIndex" }
- Parameter { name: "sourceStart"; type: "int" }
- Parameter { name: "sourceEnd"; type: "int" }
- Parameter { name: "destinationParent"; type: "QModelIndex" }
- Parameter { name: "destinationColumn"; type: "int" }
- }
- Signal {
- name: "columnsMoved"
- Parameter { name: "parent"; type: "QModelIndex" }
- Parameter { name: "start"; type: "int" }
- Parameter { name: "end"; type: "int" }
- Parameter { name: "destination"; type: "QModelIndex" }
- Parameter { name: "column"; type: "int" }
- }
- Method { name: "submit"; type: "bool" }
- Method { name: "revert" }
- Method {
- name: "hasIndex"
- type: "bool"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "hasIndex"
- type: "bool"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- }
- Method {
- name: "index"
- type: "QModelIndex"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "index"
- type: "QModelIndex"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- }
- Method {
- name: "parent"
- type: "QModelIndex"
- Parameter { name: "child"; type: "QModelIndex" }
- }
- Method {
- name: "sibling"
- type: "QModelIndex"
- Parameter { name: "row"; type: "int" }
- Parameter { name: "column"; type: "int" }
- Parameter { name: "idx"; type: "QModelIndex" }
- }
- Method {
- name: "rowCount"
- type: "int"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method { name: "rowCount"; type: "int" }
- Method {
- name: "columnCount"
- type: "int"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method { name: "columnCount"; type: "int" }
- Method {
- name: "hasChildren"
- type: "bool"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method { name: "hasChildren"; type: "bool" }
- Method {
- name: "data"
- type: "QVariant"
- Parameter { name: "index"; type: "QModelIndex" }
- Parameter { name: "role"; type: "int" }
- }
- Method {
- name: "data"
- type: "QVariant"
- Parameter { name: "index"; type: "QModelIndex" }
- }
- Method {
- name: "setData"
- type: "bool"
- Parameter { name: "index"; type: "QModelIndex" }
- Parameter { name: "value"; type: "QVariant" }
- Parameter { name: "role"; type: "int" }
- }
- Method {
- name: "setData"
- type: "bool"
- Parameter { name: "index"; type: "QModelIndex" }
- Parameter { name: "value"; type: "QVariant" }
- }
- Method {
- name: "headerData"
- type: "QVariant"
- Parameter { name: "section"; type: "int" }
- Parameter { name: "orientation"; type: "Qt::Orientation" }
- Parameter { name: "role"; type: "int" }
- }
- Method {
- name: "headerData"
- type: "QVariant"
- Parameter { name: "section"; type: "int" }
- Parameter { name: "orientation"; type: "Qt::Orientation" }
- }
- Method {
- name: "fetchMore"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "canFetchMore"
- type: "bool"
- Parameter { name: "parent"; type: "QModelIndex" }
- }
- Method {
- name: "flags"
- type: "Qt::ItemFlags"
- Parameter { name: "index"; type: "QModelIndex" }
- }
- Method {
- name: "match"
- type: "QModelIndexList"
- Parameter { name: "start"; type: "QModelIndex" }
- Parameter { name: "role"; type: "int" }
- Parameter { name: "value"; type: "QVariant" }
- Parameter { name: "hits"; type: "int" }
- Parameter { name: "flags"; type: "Qt::MatchFlags" }
- }
- Method {
- name: "match"
- type: "QModelIndexList"
- Parameter { name: "start"; type: "QModelIndex" }
- Parameter { name: "role"; type: "int" }
- Parameter { name: "value"; type: "QVariant" }
- Parameter { name: "hits"; type: "int" }
- }
- Method {
- name: "match"
- type: "QModelIndexList"
- Parameter { name: "start"; type: "QModelIndex" }
- Parameter { name: "role"; type: "int" }
- Parameter { name: "value"; type: "QVariant" }
- }
- }
- Component { name: "QAbstractListModel"; prototype: "QAbstractItemModel" }
- Component {
- name: "QDoubleValidator"
- prototype: "QValidator"
- Enum {
- name: "Notation"
- values: {
- "StandardNotation": 0,
- "ScientificNotation": 1
- }
- }
- Property { name: "bottom"; type: "double" }
- Property { name: "top"; type: "double" }
- Property { name: "decimals"; type: "int" }
- Property { name: "notation"; type: "Notation" }
- Signal {
- name: "bottomChanged"
- Parameter { name: "bottom"; type: "double" }
- }
- Signal {
- name: "topChanged"
- Parameter { name: "top"; type: "double" }
- }
- Signal {
- name: "decimalsChanged"
- Parameter { name: "decimals"; type: "int" }
- }
- Signal {
- name: "notationChanged"
- Parameter { name: "notation"; type: "QDoubleValidator::Notation" }
- }
- }
- Component {
- name: "QInputMethod"
- prototype: "QObject"
- exports: ["QtQuick/InputMethod 2.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Enum {
- name: "Action"
- values: {
- "Click": 0,
- "ContextMenu": 1
- }
- }
- Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true }
- Property { name: "anchorRectangle"; type: "QRectF"; isReadonly: true }
- Property { name: "keyboardRectangle"; type: "QRectF"; isReadonly: true }
- Property { name: "inputItemClipRectangle"; type: "QRectF"; isReadonly: true }
- Property { name: "visible"; type: "bool"; isReadonly: true }
- Property { name: "animating"; type: "bool"; isReadonly: true }
- Property { name: "locale"; type: "QLocale"; isReadonly: true }
- Property { name: "inputDirection"; type: "Qt::LayoutDirection"; isReadonly: true }
- Signal {
- name: "inputDirectionChanged"
- Parameter { name: "newDirection"; type: "Qt::LayoutDirection" }
- }
- Method { name: "show" }
- Method { name: "hide" }
- Method {
- name: "update"
- Parameter { name: "queries"; type: "Qt::InputMethodQueries" }
- }
- Method { name: "reset" }
- Method { name: "commit" }
- Method {
- name: "invokeAction"
- Parameter { name: "a"; type: "Action" }
- Parameter { name: "cursorPosition"; type: "int" }
- }
- }
- Component {
- name: "QIntValidator"
- prototype: "QValidator"
- Property { name: "bottom"; type: "int" }
- Property { name: "top"; type: "int" }
- Signal {
- name: "bottomChanged"
- Parameter { name: "bottom"; type: "int" }
- }
- Signal {
- name: "topChanged"
- Parameter { name: "top"; type: "int" }
- }
- }
- Component {
- name: "QKeySequence"
- exports: ["QtQuick/StandardKey 2.2"]
- isCreatable: false
- exportMetaObjectRevisions: [2]
- Enum {
- name: "StandardKey"
- values: {
- "UnknownKey": 0,
- "HelpContents": 1,
- "WhatsThis": 2,
- "Open": 3,
- "Close": 4,
- "Save": 5,
- "New": 6,
- "Delete": 7,
- "Cut": 8,
- "Copy": 9,
- "Paste": 10,
- "Undo": 11,
- "Redo": 12,
- "Back": 13,
- "Forward": 14,
- "Refresh": 15,
- "ZoomIn": 16,
- "ZoomOut": 17,
- "Print": 18,
- "AddTab": 19,
- "NextChild": 20,
- "PreviousChild": 21,
- "Find": 22,
- "FindNext": 23,
- "FindPrevious": 24,
- "Replace": 25,
- "SelectAll": 26,
- "Bold": 27,
- "Italic": 28,
- "Underline": 29,
- "MoveToNextChar": 30,
- "MoveToPreviousChar": 31,
- "MoveToNextWord": 32,
- "MoveToPreviousWord": 33,
- "MoveToNextLine": 34,
- "MoveToPreviousLine": 35,
- "MoveToNextPage": 36,
- "MoveToPreviousPage": 37,
- "MoveToStartOfLine": 38,
- "MoveToEndOfLine": 39,
- "MoveToStartOfBlock": 40,
- "MoveToEndOfBlock": 41,
- "MoveToStartOfDocument": 42,
- "MoveToEndOfDocument": 43,
- "SelectNextChar": 44,
- "SelectPreviousChar": 45,
- "SelectNextWord": 46,
- "SelectPreviousWord": 47,
- "SelectNextLine": 48,
- "SelectPreviousLine": 49,
- "SelectNextPage": 50,
- "SelectPreviousPage": 51,
- "SelectStartOfLine": 52,
- "SelectEndOfLine": 53,
- "SelectStartOfBlock": 54,
- "SelectEndOfBlock": 55,
- "SelectStartOfDocument": 56,
- "SelectEndOfDocument": 57,
- "DeleteStartOfWord": 58,
- "DeleteEndOfWord": 59,
- "DeleteEndOfLine": 60,
- "InsertParagraphSeparator": 61,
- "InsertLineSeparator": 62,
- "SaveAs": 63,
- "Preferences": 64,
- "Quit": 65,
- "FullScreen": 66,
- "Deselect": 67,
- "DeleteCompleteLine": 68,
- "Backspace": 69,
- "Cancel": 70
- }
- }
- }
- Component {
- name: "QObject"
- exports: ["QtQuick/QtObject 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "objectName"; type: "string" }
- Signal {
- name: "objectNameChanged"
- Parameter { name: "objectName"; type: "string" }
- }
- Method { name: "toString" }
- Method { name: "destroy" }
- Method {
- name: "destroy"
- Parameter { name: "delay"; type: "int" }
- }
- }
- Component {
- name: "QPointingDeviceUniqueId"
- exports: ["QtQuick/PointingDeviceUniqueId 2.9"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Property { name: "numericId"; type: "qlonglong"; isReadonly: true }
- }
- Component {
- name: "QQmlApplication"
- prototype: "QObject"
- Property { name: "arguments"; type: "QStringList"; isReadonly: true }
- Property { name: "name"; type: "string" }
- Property { name: "version"; type: "string" }
- Property { name: "organization"; type: "string" }
- Property { name: "domain"; type: "string" }
- Signal { name: "aboutToQuit" }
- Method {
- name: "setName"
- Parameter { name: "arg"; type: "string" }
- }
- Method {
- name: "setVersion"
- Parameter { name: "arg"; type: "string" }
- }
- Method {
- name: "setOrganization"
- Parameter { name: "arg"; type: "string" }
- }
- Method {
- name: "setDomain"
- Parameter { name: "arg"; type: "string" }
- }
- }
- Component {
- name: "QQmlBind"
- prototype: "QObject"
- exports: ["QtQuick/Binding 2.0", "QtQuick/Binding 2.8"]
- exportMetaObjectRevisions: [0, 8]
- Enum {
- name: "RestorationMode"
- values: {
- "RestoreNone": 0,
- "RestoreBinding": 1,
- "RestoreValue": 2,
- "RestoreBindingOrValue": 3
- }
- }
- Property { name: "target"; type: "QObject"; isPointer: true }
- Property { name: "property"; type: "string" }
- Property { name: "value"; type: "QVariant" }
- Property { name: "when"; type: "bool" }
- Property { name: "delayed"; revision: 8; type: "bool" }
- Property { name: "restoreMode"; revision: 14; type: "RestorationMode" }
- }
- Component {
- name: "QQmlComponent"
- prototype: "QObject"
- exports: ["QtQuick/Component 2.0"]
- exportMetaObjectRevisions: [0]
- attachedType: "QQmlComponentAttached"
- Enum {
- name: "CompilationMode"
- values: {
- "PreferSynchronous": 0,
- "Asynchronous": 1
- }
- }
- Enum {
- name: "Status"
- values: {
- "Null": 0,
- "Ready": 1,
- "Loading": 2,
- "Error": 3
- }
- }
- Property { name: "progress"; type: "double"; isReadonly: true }
- Property { name: "status"; type: "Status"; isReadonly: true }
- Property { name: "url"; type: "QUrl"; isReadonly: true }
- Signal {
- name: "statusChanged"
- Parameter { type: "QQmlComponent::Status" }
- }
- Signal {
- name: "progressChanged"
- Parameter { type: "double" }
- }
- Method {
- name: "loadUrl"
- Parameter { name: "url"; type: "QUrl" }
- }
- Method {
- name: "loadUrl"
- Parameter { name: "url"; type: "QUrl" }
- Parameter { name: "mode"; type: "CompilationMode" }
- }
- Method {
- name: "setData"
- Parameter { type: "QByteArray" }
- Parameter { name: "baseUrl"; type: "QUrl" }
- }
- Method { name: "errorString"; type: "string" }
- }
- Component {
- name: "QQmlComponentAttached"
- prototype: "QObject"
- Signal { name: "completed" }
- Signal { name: "destruction" }
- }
- Component {
- name: "QQmlConnections"
- prototype: "QObject"
- exports: ["QtQuick/Connections 2.0", "QtQuick/Connections 2.7"]
- exportMetaObjectRevisions: [0, 3]
- Property { name: "target"; type: "QObject"; isPointer: true }
- Property { name: "enabled"; revision: 3; type: "bool" }
- Property { name: "ignoreUnknownSignals"; type: "bool" }
- Signal { name: "enabledChanged"; revision: 3 }
- }
- Component {
- name: "QQmlDelegateModel"
- defaultProperty: "delegate"
- prototype: "QQmlInstanceModel"
- exports: ["QtQuick/VisualDataModel 2.0"]
- exportMetaObjectRevisions: [0]
- attachedType: "QQmlDelegateModelAttached"
- Property { name: "model"; type: "QVariant" }
- Property { name: "delegate"; type: "QQmlComponent"; isPointer: true }
- Property { name: "filterOnGroup"; type: "string" }
- Property { name: "items"; type: "QQmlDelegateModelGroup"; isReadonly: true; isPointer: true }
- Property {
- name: "persistedItems"
- type: "QQmlDelegateModelGroup"
- isReadonly: true
- isPointer: true
- }
- Property { name: "groups"; type: "QQmlDelegateModelGroup"; isList: true; isReadonly: true }
- Property { name: "parts"; type: "QObject"; isReadonly: true; isPointer: true }
- Property { name: "rootIndex"; type: "QVariant" }
- Signal { name: "filterGroupChanged" }
- Signal { name: "defaultGroupsChanged" }
- Method {
- name: "modelIndex"
- type: "QVariant"
- Parameter { name: "idx"; type: "int" }
- }
- Method { name: "parentModelIndex"; type: "QVariant" }
- }
- Component {
- name: "QQmlDelegateModelAttached"
- prototype: "QObject"
- Property { name: "model"; type: "QQmlDelegateModel"; isReadonly: true; isPointer: true }
- Property { name: "groups"; type: "QStringList" }
- Property { name: "isUnresolved"; type: "bool"; isReadonly: true }
- Signal { name: "unresolvedChanged" }
- }
- Component {
- name: "QQmlDelegateModelGroup"
- prototype: "QObject"
- exports: ["QtQuick/VisualDataGroup 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "count"; type: "int"; isReadonly: true }
- Property { name: "name"; type: "string" }
- Property { name: "includeByDefault"; type: "bool" }
- Signal { name: "defaultIncludeChanged" }
- Signal {
- name: "changed"
- Parameter { name: "removed"; type: "QJSValue" }
- Parameter { name: "inserted"; type: "QJSValue" }
- }
- Method {
- name: "insert"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "create"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "resolve"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "remove"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "addGroups"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "removeGroups"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "setGroups"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "move"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "get"
- type: "QJSValue"
- Parameter { name: "index"; type: "int" }
- }
- }
- Component { name: "QQmlDelegateModelParts"; prototype: "QObject" }
- Component {
- name: "QQmlEasingValueType"
- exports: ["QtQuick/Easing 2.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Enum {
- name: "Type"
- values: {
- "Linear": 0,
- "InQuad": 1,
- "OutQuad": 2,
- "InOutQuad": 3,
- "OutInQuad": 4,
- "InCubic": 5,
- "OutCubic": 6,
- "InOutCubic": 7,
- "OutInCubic": 8,
- "InQuart": 9,
- "OutQuart": 10,
- "InOutQuart": 11,
- "OutInQuart": 12,
- "InQuint": 13,
- "OutQuint": 14,
- "InOutQuint": 15,
- "OutInQuint": 16,
- "InSine": 17,
- "OutSine": 18,
- "InOutSine": 19,
- "OutInSine": 20,
- "InExpo": 21,
- "OutExpo": 22,
- "InOutExpo": 23,
- "OutInExpo": 24,
- "InCirc": 25,
- "OutCirc": 26,
- "InOutCirc": 27,
- "OutInCirc": 28,
- "InElastic": 29,
- "OutElastic": 30,
- "InOutElastic": 31,
- "OutInElastic": 32,
- "InBack": 33,
- "OutBack": 34,
- "InOutBack": 35,
- "OutInBack": 36,
- "InBounce": 37,
- "OutBounce": 38,
- "InOutBounce": 39,
- "OutInBounce": 40,
- "InCurve": 41,
- "OutCurve": 42,
- "SineCurve": 43,
- "CosineCurve": 44,
- "Bezier": 45
- }
- }
- Property { name: "type"; type: "Type" }
- Property { name: "amplitude"; type: "double" }
- Property { name: "overshoot"; type: "double" }
- Property { name: "period"; type: "double" }
- Property { name: "bezierCurve"; type: "QVariantList" }
- }
- Component {
- name: "QQmlInstanceModel"
- prototype: "QObject"
- Property { name: "count"; type: "int"; isReadonly: true }
- Signal {
- name: "modelUpdated"
- Parameter { name: "changeSet"; type: "QQmlChangeSet" }
- Parameter { name: "reset"; type: "bool" }
- }
- Signal {
- name: "createdItem"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- Signal {
- name: "initItem"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- Signal {
- name: "destroyingItem"
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- }
- Component {
- name: "QQmlInstantiator"
- defaultProperty: "delegate"
- prototype: "QObject"
- exports: ["QtQuick/Instantiator 2.1"]
- exportMetaObjectRevisions: [0]
- Property { name: "active"; type: "bool" }
- Property { name: "asynchronous"; type: "bool" }
- Property { name: "model"; type: "QVariant" }
- Property { name: "count"; type: "int"; isReadonly: true }
- Property { name: "delegate"; type: "QQmlComponent"; isPointer: true }
- Property { name: "object"; type: "QObject"; isReadonly: true; isPointer: true }
- Signal {
- name: "objectAdded"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- Signal {
- name: "objectRemoved"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- Method {
- name: "objectAt"
- type: "QObject*"
- Parameter { name: "index"; type: "int" }
- }
- }
- Component {
- name: "QQmlListElement"
- prototype: "QObject"
- exports: ["QtQuick/ListElement 2.0"]
- exportMetaObjectRevisions: [0]
- }
- Component {
- name: "QQmlListModel"
- prototype: "QAbstractListModel"
- exports: ["QtQuick/ListModel 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "count"; type: "int"; isReadonly: true }
- Property { name: "dynamicRoles"; type: "bool" }
- Property { name: "agent"; revision: 14; type: "QObject"; isReadonly: true; isPointer: true }
- Method { name: "clear" }
- Method {
- name: "remove"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "append"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "insert"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "get"
- type: "QJSValue"
- Parameter { name: "index"; type: "int" }
- }
- Method {
- name: "set"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "value"; type: "QJSValue" }
- }
- Method {
- name: "setProperty"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "property"; type: "string" }
- Parameter { name: "value"; type: "QVariant" }
- }
- Method {
- name: "move"
- Parameter { name: "from"; type: "int" }
- Parameter { name: "to"; type: "int" }
- Parameter { name: "count"; type: "int" }
- }
- Method { name: "sync" }
- }
- Component {
- name: "QQmlListModelWorkerAgent"
- prototype: "QObject"
- Property { name: "count"; type: "int"; isReadonly: true }
- Property { name: "engine"; type: "QV4::ExecutionEngine"; isPointer: true }
- Signal {
- name: "engineChanged"
- Parameter { name: "engine"; type: "QV4::ExecutionEngine"; isPointer: true }
- }
- Method { name: "addref" }
- Method { name: "release" }
- Method { name: "clear" }
- Method {
- name: "remove"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "append"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "insert"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "get"
- type: "QJSValue"
- Parameter { name: "index"; type: "int" }
- }
- Method {
- name: "set"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "value"; type: "QJSValue" }
- }
- Method {
- name: "setProperty"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "property"; type: "string" }
- Parameter { name: "value"; type: "QVariant" }
- }
- Method {
- name: "move"
- Parameter { name: "from"; type: "int" }
- Parameter { name: "to"; type: "int" }
- Parameter { name: "count"; type: "int" }
- }
- Method { name: "sync" }
- }
- Component {
- name: "QQmlLocale"
- exports: ["QtQuick/Locale 2.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Enum {
- name: "MeasurementSystem"
- values: {
- "MetricSystem": 0,
- "ImperialSystem": 1,
- "ImperialUSSystem": 1,
- "ImperialUKSystem": 2
- }
- }
- Enum {
- name: "FormatType"
- values: {
- "LongFormat": 0,
- "ShortFormat": 1,
- "NarrowFormat": 2
- }
- }
- Enum {
- name: "CurrencySymbolFormat"
- values: {
- "CurrencyIsoCode": 0,
- "CurrencySymbol": 1,
- "CurrencyDisplayName": 2
- }
- }
- Enum {
- name: "DayOfWeek"
- values: {
- "Sunday": 0,
- "Monday": 1,
- "Tuesday": 2,
- "Wednesday": 3,
- "Thursday": 4,
- "Friday": 5,
- "Saturday": 6
- }
- }
- }
- Component {
- name: "QQmlLoggingCategory"
- prototype: "QObject"
- exports: [
- "QtQuick/LoggingCategory 2.12",
- "QtQuick/LoggingCategory 2.8"
- ]
- exportMetaObjectRevisions: [12, 0]
- Enum {
- name: "DefaultLogLevel"
- values: {
- "Debug": 0,
- "Info": 4,
- "Warning": 1,
- "Critical": 2,
- "Fatal": 3
- }
- }
- Property { name: "name"; type: "string" }
- Property { name: "defaultLogLevel"; revision: 12; type: "DefaultLogLevel" }
- }
- Component {
- name: "QQmlObjectModel"
- defaultProperty: "children"
- prototype: "QQmlInstanceModel"
- exports: ["QtQuick/VisualItemModel 2.0"]
- exportMetaObjectRevisions: [0]
- attachedType: "QQmlObjectModelAttached"
- Property { name: "children"; type: "QObject"; isList: true; isReadonly: true }
- Method { name: "clear"; revision: 3 }
- Method {
- name: "get"
- revision: 3
- type: "QObject*"
- Parameter { name: "index"; type: "int" }
- }
- Method {
- name: "append"
- revision: 3
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- Method {
- name: "insert"
- revision: 3
- Parameter { name: "index"; type: "int" }
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- Method {
- name: "move"
- revision: 3
- Parameter { name: "from"; type: "int" }
- Parameter { name: "to"; type: "int" }
- Parameter { name: "n"; type: "int" }
- }
- Method {
- name: "move"
- revision: 3
- Parameter { name: "from"; type: "int" }
- Parameter { name: "to"; type: "int" }
- }
- Method {
- name: "remove"
- revision: 3
- Parameter { name: "index"; type: "int" }
- Parameter { name: "n"; type: "int" }
- }
- Method {
- name: "remove"
- revision: 3
- Parameter { name: "index"; type: "int" }
- }
- }
- Component {
- name: "QQmlObjectModelAttached"
- prototype: "QObject"
- Property { name: "index"; type: "int"; isReadonly: true }
- }
- Component {
- name: "QQmlTimer"
- prototype: "QObject"
- exports: ["QtQuick/Timer 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "interval"; type: "int" }
- Property { name: "running"; type: "bool" }
- Property { name: "repeat"; type: "bool" }
- Property { name: "triggeredOnStart"; type: "bool" }
- Property { name: "parent"; type: "QObject"; isReadonly: true; isPointer: true }
- Signal { name: "triggered" }
- Method { name: "start" }
- Method { name: "stop" }
- Method { name: "restart" }
- }
- Component {
- name: "QQuickAbstractAnimation"
- prototype: "QObject"
- exports: ["QtQuick/Animation 2.0", "QtQuick/Animation 2.12"]
- isCreatable: false
- exportMetaObjectRevisions: [0, 12]
- Enum {
- name: "Loops"
- values: {
- "Infinite": -2
- }
- }
- Property { name: "running"; type: "bool" }
- Property { name: "paused"; type: "bool" }
- Property { name: "alwaysRunToEnd"; type: "bool" }
- Property { name: "loops"; type: "int" }
- Signal { name: "started" }
- Signal { name: "stopped" }
- Signal {
- name: "runningChanged"
- Parameter { type: "bool" }
- }
- Signal {
- name: "pausedChanged"
- Parameter { type: "bool" }
- }
- Signal {
- name: "alwaysRunToEndChanged"
- Parameter { type: "bool" }
- }
- Signal {
- name: "loopCountChanged"
- Parameter { type: "int" }
- }
- Signal { name: "finished"; revision: 12 }
- Method { name: "restart" }
- Method { name: "start" }
- Method { name: "pause" }
- Method { name: "resume" }
- Method { name: "stop" }
- Method { name: "complete" }
- }
- Component {
- name: "QQuickAccessibleAttached"
- prototype: "QObject"
- exports: ["QtQuick/Accessible 2.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Property { name: "role"; type: "QAccessible::Role" }
- Property { name: "name"; type: "string" }
- Property { name: "description"; type: "string" }
- Property { name: "ignored"; type: "bool" }
- Property { name: "checkable"; type: "bool" }
- Property { name: "checked"; type: "bool" }
- Property { name: "editable"; type: "bool" }
- Property { name: "focusable"; type: "bool" }
- Property { name: "focused"; type: "bool" }
- Property { name: "multiLine"; type: "bool" }
- Property { name: "readOnly"; type: "bool" }
- Property { name: "selected"; type: "bool" }
- Property { name: "selectable"; type: "bool" }
- Property { name: "pressed"; type: "bool" }
- Property { name: "checkStateMixed"; type: "bool" }
- Property { name: "defaultButton"; type: "bool" }
- Property { name: "passwordEdit"; type: "bool" }
- Property { name: "selectableText"; type: "bool" }
- Property { name: "searchEdit"; type: "bool" }
- Signal {
- name: "checkableChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "checkedChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "editableChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "focusableChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "focusedChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "multiLineChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "readOnlyChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "selectedChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "selectableChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "pressedChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "checkStateMixedChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "defaultButtonChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "passwordEditChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "selectableTextChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "searchEditChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal { name: "pressAction" }
- Signal { name: "toggleAction" }
- Signal { name: "increaseAction" }
- Signal { name: "decreaseAction" }
- Signal { name: "scrollUpAction" }
- Signal { name: "scrollDownAction" }
- Signal { name: "scrollLeftAction" }
- Signal { name: "scrollRightAction" }
- Signal { name: "previousPageAction" }
- Signal { name: "nextPageAction" }
- Method { name: "valueChanged" }
- Method { name: "cursorPositionChanged" }
- Method {
- name: "setIgnored"
- Parameter { name: "ignored"; type: "bool" }
- }
- }
- Component {
- name: "QQuickAnchorAnimation"
- prototype: "QQuickAbstractAnimation"
- exports: [
- "QtQuick/AnchorAnimation 2.0",
- "QtQuick/AnchorAnimation 2.12"
- ]
- exportMetaObjectRevisions: [0, 12]
- Property { name: "targets"; type: "QQuickItem"; isList: true; isReadonly: true }
- Property { name: "duration"; type: "int" }
- Property { name: "easing"; type: "QEasingCurve" }
- Signal {
- name: "durationChanged"
- Parameter { type: "int" }
- }
- Signal {
- name: "easingChanged"
- Parameter { type: "QEasingCurve" }
- }
- }
- Component {
- name: "QQuickAnchorChanges"
- prototype: "QQuickStateOperation"
- exports: ["QtQuick/AnchorChanges 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "target"; type: "QQuickItem"; isPointer: true }
- Property { name: "anchors"; type: "QQuickAnchorSet"; isReadonly: true; isPointer: true }
- }
- Component {
- name: "QQuickAnchorSet"
- prototype: "QObject"
- Property { name: "left"; type: "QQmlScriptString" }
- Property { name: "right"; type: "QQmlScriptString" }
- Property { name: "horizontalCenter"; type: "QQmlScriptString" }
- Property { name: "top"; type: "QQmlScriptString" }
- Property { name: "bottom"; type: "QQmlScriptString" }
- Property { name: "verticalCenter"; type: "QQmlScriptString" }
- Property { name: "baseline"; type: "QQmlScriptString" }
- }
- Component {
- name: "QQuickAnchors"
- prototype: "QObject"
- Enum {
- name: "Anchors"
- values: {
- "InvalidAnchor": 0,
- "LeftAnchor": 1,
- "RightAnchor": 2,
- "TopAnchor": 4,
- "BottomAnchor": 8,
- "HCenterAnchor": 16,
- "VCenterAnchor": 32,
- "BaselineAnchor": 64,
- "Horizontal_Mask": 19,
- "Vertical_Mask": 108
- }
- }
- Property { name: "left"; type: "QQuickAnchorLine" }
- Property { name: "right"; type: "QQuickAnchorLine" }
- Property { name: "horizontalCenter"; type: "QQuickAnchorLine" }
- Property { name: "top"; type: "QQuickAnchorLine" }
- Property { name: "bottom"; type: "QQuickAnchorLine" }
- Property { name: "verticalCenter"; type: "QQuickAnchorLine" }
- Property { name: "baseline"; type: "QQuickAnchorLine" }
- Property { name: "margins"; type: "double" }
- Property { name: "leftMargin"; type: "double" }
- Property { name: "rightMargin"; type: "double" }
- Property { name: "horizontalCenterOffset"; type: "double" }
- Property { name: "topMargin"; type: "double" }
- Property { name: "bottomMargin"; type: "double" }
- Property { name: "verticalCenterOffset"; type: "double" }
- Property { name: "baselineOffset"; type: "double" }
- Property { name: "fill"; type: "QQuickItem"; isPointer: true }
- Property { name: "centerIn"; type: "QQuickItem"; isPointer: true }
- Property { name: "alignWhenCentered"; type: "bool" }
- Signal { name: "centerAlignedChanged" }
- }
- Component {
- name: "QQuickAnimatedImage"
- defaultProperty: "data"
- prototype: "QQuickImage"
- exports: [
- "QtQuick/AnimatedImage 2.0",
- "QtQuick/AnimatedImage 2.1",
- "QtQuick/AnimatedImage 2.11",
- "QtQuick/AnimatedImage 2.3",
- "QtQuick/AnimatedImage 2.4",
- "QtQuick/AnimatedImage 2.5",
- "QtQuick/AnimatedImage 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 3, 4, 5, 7]
- Property { name: "playing"; type: "bool" }
- Property { name: "paused"; type: "bool" }
- Property { name: "currentFrame"; type: "int" }
- Property { name: "frameCount"; type: "int"; isReadonly: true }
- Property { name: "speed"; revision: 11; type: "double" }
- Property { name: "sourceSize"; type: "QSize"; isReadonly: true }
- Signal { name: "frameChanged" }
- Signal { name: "speedChanged"; revision: 11 }
- }
- Component {
- name: "QQuickAnimatedSprite"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick/AnimatedSprite 2.0",
- "QtQuick/AnimatedSprite 2.1",
- "QtQuick/AnimatedSprite 2.11",
- "QtQuick/AnimatedSprite 2.12",
- "QtQuick/AnimatedSprite 2.4",
- "QtQuick/AnimatedSprite 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 12, 4, 7]
- Enum {
- name: "LoopParameters"
- values: {
- "Infinite": -1
- }
- }
- Property { name: "running"; type: "bool" }
- Property { name: "interpolate"; type: "bool" }
- Property { name: "source"; type: "QUrl" }
- Property { name: "reverse"; type: "bool" }
- Property { name: "frameSync"; type: "bool" }
- Property { name: "frameCount"; type: "int" }
- Property { name: "frameHeight"; type: "int" }
- Property { name: "frameWidth"; type: "int" }
- Property { name: "frameX"; type: "int" }
- Property { name: "frameY"; type: "int" }
- Property { name: "frameRate"; type: "double" }
- Property { name: "frameDuration"; type: "int" }
- Property { name: "loops"; type: "int" }
- Property { name: "paused"; type: "bool" }
- Property { name: "currentFrame"; type: "int" }
- Signal {
- name: "pausedChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "runningChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "interpolateChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "sourceChanged"
- Parameter { name: "arg"; type: "QUrl" }
- }
- Signal {
- name: "reverseChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "frameSyncChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "frameCountChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "frameHeightChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "frameWidthChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "frameXChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "frameYChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "frameRateChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "frameDurationChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "loopsChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "currentFrameChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal { name: "finished"; revision: 12 }
- Method { name: "start" }
- Method { name: "stop" }
- Method { name: "restart" }
- Method {
- name: "advance"
- Parameter { name: "frames"; type: "int" }
- }
- Method { name: "advance" }
- Method { name: "pause" }
- Method { name: "resume" }
- Method {
- name: "setRunning"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setPaused"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setInterpolate"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setSource"
- Parameter { name: "arg"; type: "QUrl" }
- }
- Method {
- name: "setReverse"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setFrameSync"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setFrameCount"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setFrameHeight"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setFrameWidth"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setFrameX"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setFrameY"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setFrameRate"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setFrameDuration"
- Parameter { name: "arg"; type: "int" }
- }
- Method { name: "resetFrameRate" }
- Method { name: "resetFrameDuration" }
- Method {
- name: "setLoops"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setCurrentFrame"
- Parameter { name: "arg"; type: "int" }
- }
- }
- Component {
- name: "QQuickAnimationController"
- defaultProperty: "animation"
- prototype: "QObject"
- exports: ["QtQuick/AnimationController 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "progress"; type: "double" }
- Property { name: "animation"; type: "QQuickAbstractAnimation"; isPointer: true }
- Method { name: "reload" }
- Method { name: "completeToBeginning" }
- Method { name: "completeToEnd" }
- }
- Component {
- name: "QQuickAnimationGroup"
- defaultProperty: "animations"
- prototype: "QQuickAbstractAnimation"
- Property { name: "animations"; type: "QQuickAbstractAnimation"; isList: true; isReadonly: true }
- }
- Component {
- name: "QQuickAnimator"
- prototype: "QQuickAbstractAnimation"
- exports: ["QtQuick/Animator 2.12", "QtQuick/Animator 2.2"]
- isCreatable: false
- exportMetaObjectRevisions: [12, 2]
- Property { name: "target"; type: "QQuickItem"; isPointer: true }
- Property { name: "easing"; type: "QEasingCurve" }
- Property { name: "duration"; type: "int" }
- Property { name: "to"; type: "double" }
- Property { name: "from"; type: "double" }
- Signal {
- name: "targetItemChanged"
- Parameter { type: "QQuickItem"; isPointer: true }
- }
- Signal {
- name: "durationChanged"
- Parameter { name: "duration"; type: "int" }
- }
- Signal {
- name: "easingChanged"
- Parameter { name: "curve"; type: "QEasingCurve" }
- }
- Signal {
- name: "toChanged"
- Parameter { name: "to"; type: "double" }
- }
- Signal {
- name: "fromChanged"
- Parameter { name: "from"; type: "double" }
- }
- }
- Component {
- name: "QQuickApplication"
- prototype: "QQmlApplication"
- exports: ["QtQuick/Application 2.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Property { name: "active"; type: "bool"; isReadonly: true }
- Property { name: "layoutDirection"; type: "Qt::LayoutDirection"; isReadonly: true }
- Property { name: "supportsMultipleWindows"; type: "bool"; isReadonly: true }
- Property { name: "state"; type: "Qt::ApplicationState"; isReadonly: true }
- Property { name: "font"; type: "QFont"; isReadonly: true }
- Property { name: "displayName"; type: "string" }
- Property { name: "screens"; type: "QQuickScreenInfo"; isList: true; isReadonly: true }
- Signal {
- name: "stateChanged"
- Parameter { name: "state"; type: "Qt::ApplicationState" }
- }
- }
- Component {
- name: "QQuickBasePositioner"
- defaultProperty: "data"
- prototype: "QQuickImplicitSizeItem"
- exports: [
- "QtQuick/Positioner 2.0",
- "QtQuick/Positioner 2.1",
- "QtQuick/Positioner 2.11",
- "QtQuick/Positioner 2.4",
- "QtQuick/Positioner 2.6",
- "QtQuick/Positioner 2.7",
- "QtQuick/Positioner 2.9"
- ]
- isCreatable: false
- exportMetaObjectRevisions: [0, 1, 11, 4, 6, 7, 9]
- attachedType: "QQuickPositionerAttached"
- Property { name: "spacing"; type: "double" }
- Property { name: "populate"; type: "QQuickTransition"; isPointer: true }
- Property { name: "move"; type: "QQuickTransition"; isPointer: true }
- Property { name: "add"; type: "QQuickTransition"; isPointer: true }
- Property { name: "padding"; revision: 6; type: "double" }
- Property { name: "topPadding"; revision: 6; type: "double" }
- Property { name: "leftPadding"; revision: 6; type: "double" }
- Property { name: "rightPadding"; revision: 6; type: "double" }
- Property { name: "bottomPadding"; revision: 6; type: "double" }
- Signal { name: "paddingChanged"; revision: 6 }
- Signal { name: "topPaddingChanged"; revision: 6 }
- Signal { name: "leftPaddingChanged"; revision: 6 }
- Signal { name: "rightPaddingChanged"; revision: 6 }
- Signal { name: "bottomPaddingChanged"; revision: 6 }
- Signal { name: "positioningComplete"; revision: 9 }
- Method { name: "forceLayout"; revision: 9 }
- }
- Component {
- name: "QQuickBehavior"
- defaultProperty: "animation"
- prototype: "QObject"
- exports: ["QtQuick/Behavior 2.0", "QtQuick/Behavior 2.13"]
- exportMetaObjectRevisions: [0, 13]
- Property { name: "animation"; type: "QQuickAbstractAnimation"; isPointer: true }
- Property { name: "enabled"; type: "bool" }
- Property { name: "targetValue"; revision: 13; type: "QVariant"; isReadonly: true }
- }
- Component {
- name: "QQuickBorderImage"
- defaultProperty: "data"
- prototype: "QQuickImageBase"
- exports: [
- "QtQuick/BorderImage 2.0",
- "QtQuick/BorderImage 2.1",
- "QtQuick/BorderImage 2.11",
- "QtQuick/BorderImage 2.4",
- "QtQuick/BorderImage 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Enum {
- name: "TileMode"
- values: {
- "Stretch": 0,
- "Repeat": 1,
- "Round": 2
- }
- }
- Property { name: "border"; type: "QQuickScaleGrid"; isReadonly: true; isPointer: true }
- Property { name: "horizontalTileMode"; type: "TileMode" }
- Property { name: "verticalTileMode"; type: "TileMode" }
- Property { name: "sourceSize"; type: "QSize"; isReadonly: true }
- }
- Component {
- name: "QQuickBorderImageMesh"
- prototype: "QQuickShaderEffectMesh"
- exports: ["QtQuick/BorderImageMesh 2.8"]
- exportMetaObjectRevisions: [8]
- Enum {
- name: "TileMode"
- values: {
- "Stretch": 0,
- "Repeat": 1,
- "Round": 2
- }
- }
- Property { name: "border"; type: "QQuickScaleGrid"; isReadonly: true; isPointer: true }
- Property { name: "size"; type: "QSize" }
- Property { name: "horizontalTileMode"; type: "TileMode" }
- Property { name: "verticalTileMode"; type: "TileMode" }
- }
- Component {
- name: "QQuickCanvasItem"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick/Canvas 2.0",
- "QtQuick/Canvas 2.1",
- "QtQuick/Canvas 2.11",
- "QtQuick/Canvas 2.4",
- "QtQuick/Canvas 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Enum {
- name: "RenderTarget"
- values: {
- "Image": 0,
- "FramebufferObject": 1
- }
- }
- Enum {
- name: "RenderStrategy"
- values: {
- "Immediate": 0,
- "Threaded": 1,
- "Cooperative": 2
- }
- }
- Property { name: "available"; type: "bool"; isReadonly: true }
- Property { name: "contextType"; type: "string" }
- Property { name: "context"; type: "QJSValue"; isReadonly: true }
- Property { name: "canvasSize"; type: "QSizeF" }
- Property { name: "tileSize"; type: "QSize" }
- Property { name: "canvasWindow"; type: "QRectF" }
- Property { name: "renderTarget"; type: "RenderTarget" }
- Property { name: "renderStrategy"; type: "RenderStrategy" }
- Signal {
- name: "paint"
- Parameter { name: "region"; type: "QRect" }
- }
- Signal { name: "painted" }
- Signal { name: "imageLoaded" }
- Method {
- name: "loadImage"
- Parameter { name: "url"; type: "QUrl" }
- }
- Method {
- name: "unloadImage"
- Parameter { name: "url"; type: "QUrl" }
- }
- Method {
- name: "isImageLoaded"
- type: "bool"
- Parameter { name: "url"; type: "QUrl" }
- }
- Method {
- name: "isImageLoading"
- type: "bool"
- Parameter { name: "url"; type: "QUrl" }
- }
- Method {
- name: "isImageError"
- type: "bool"
- Parameter { name: "url"; type: "QUrl" }
- }
- Method {
- name: "getContext"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "requestAnimationFrame"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "cancelRequestAnimationFrame"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method { name: "requestPaint" }
- Method {
- name: "markDirty"
- Parameter { name: "dirtyRect"; type: "QRectF" }
- }
- Method { name: "markDirty" }
- Method {
- name: "save"
- type: "bool"
- Parameter { name: "filename"; type: "string" }
- }
- Method {
- name: "toDataURL"
- type: "string"
- Parameter { name: "type"; type: "string" }
- }
- Method { name: "toDataURL"; type: "string" }
- }
- Component {
- name: "QQuickCloseEvent"
- prototype: "QObject"
- Property { name: "accepted"; type: "bool" }
- }
- Component {
- name: "QQuickColorAnimation"
- prototype: "QQuickPropertyAnimation"
- exports: ["QtQuick/ColorAnimation 2.0", "QtQuick/ColorAnimation 2.12"]
- exportMetaObjectRevisions: [0, 12]
- Property { name: "from"; type: "QColor" }
- Property { name: "to"; type: "QColor" }
- }
- Component {
- name: "QQuickColumn"
- defaultProperty: "data"
- prototype: "QQuickBasePositioner"
- exports: [
- "QtQuick/Column 2.0",
- "QtQuick/Column 2.1",
- "QtQuick/Column 2.11",
- "QtQuick/Column 2.4",
- "QtQuick/Column 2.6",
- "QtQuick/Column 2.7",
- "QtQuick/Column 2.9"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 6, 7, 9]
- }
- Component {
- name: "QQuickCurve"
- prototype: "QQuickPathElement"
- Property { name: "x"; type: "double" }
- Property { name: "y"; type: "double" }
- Property { name: "relativeX"; type: "double" }
- Property { name: "relativeY"; type: "double" }
- }
- Component {
- name: "QQuickDoubleValidator"
- prototype: "QDoubleValidator"
- exports: ["QtQuick/DoubleValidator 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "locale"; type: "string" }
- Signal { name: "localeNameChanged" }
- }
- Component {
- name: "QQuickDrag"
- prototype: "QObject"
- exports: ["QtQuick/Drag 2.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- attachedType: "QQuickDragAttached"
- Enum {
- name: "DragType"
- values: {
- "None": 0,
- "Automatic": 1,
- "Internal": 2
- }
- }
- Enum {
- name: "Axis"
- values: {
- "XAxis": 1,
- "YAxis": 2,
- "XAndYAxis": 3,
- "XandYAxis": 3
- }
- }
- Property { name: "target"; type: "QQuickItem"; isPointer: true }
- Property { name: "axis"; type: "Axis" }
- Property { name: "minimumX"; type: "double" }
- Property { name: "maximumX"; type: "double" }
- Property { name: "minimumY"; type: "double" }
- Property { name: "maximumY"; type: "double" }
- Property { name: "active"; type: "bool"; isReadonly: true }
- Property { name: "filterChildren"; type: "bool" }
- Property { name: "smoothed"; type: "bool" }
- Property { name: "threshold"; type: "double" }
- }
- Component {
- name: "QQuickDragAttached"
- prototype: "QObject"
- Property { name: "active"; type: "bool" }
- Property { name: "source"; type: "QObject"; isPointer: true }
- Property { name: "target"; type: "QObject"; isReadonly: true; isPointer: true }
- Property { name: "hotSpot"; type: "QPointF" }
- Property { name: "imageSource"; type: "QUrl" }
- Property { name: "keys"; type: "QStringList" }
- Property { name: "mimeData"; type: "QVariantMap" }
- Property { name: "supportedActions"; type: "Qt::DropActions" }
- Property { name: "proposedAction"; type: "Qt::DropAction" }
- Property { name: "dragType"; type: "QQuickDrag::DragType" }
- Signal { name: "dragStarted" }
- Signal {
- name: "dragFinished"
- Parameter { name: "dropAction"; type: "Qt::DropAction" }
- }
- Method {
- name: "start"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "startDrag"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method { name: "cancel" }
- Method { name: "drop"; type: "int" }
- }
- Component {
- name: "QQuickDragAxis"
- prototype: "QObject"
- exports: ["QtQuick/DragAxis 2.12"]
- isCreatable: false
- exportMetaObjectRevisions: [12]
- Property { name: "minimum"; type: "double" }
- Property { name: "maximum"; type: "double" }
- Property { name: "enabled"; type: "bool" }
- }
- Component {
- name: "QQuickDragHandler"
- prototype: "QQuickMultiPointHandler"
- exports: ["QtQuick/DragHandler 2.12", "QtQuick/DragHandler 2.14"]
- exportMetaObjectRevisions: [12, 14]
- Enum {
- name: "SnapMode"
- values: {
- "NoSnap": 0,
- "SnapAuto": 1,
- "SnapIfPressedOutsideTarget": 2,
- "SnapAlways": 3
- }
- }
- Property { name: "xAxis"; type: "QQuickDragAxis"; isReadonly: true; isPointer: true }
- Property { name: "yAxis"; type: "QQuickDragAxis"; isReadonly: true; isPointer: true }
- Property { name: "translation"; type: "QVector2D"; isReadonly: true }
- Property { name: "snapMode"; revision: 14; type: "SnapMode" }
- Signal { name: "snapModeChanged"; revision: 14 }
- }
- Component {
- name: "QQuickDropArea"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick/DropArea 2.0",
- "QtQuick/DropArea 2.1",
- "QtQuick/DropArea 2.11",
- "QtQuick/DropArea 2.4",
- "QtQuick/DropArea 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Property { name: "containsDrag"; type: "bool"; isReadonly: true }
- Property { name: "keys"; type: "QStringList" }
- Property { name: "drag"; type: "QQuickDropAreaDrag"; isReadonly: true; isPointer: true }
- Signal { name: "sourceChanged" }
- Signal {
- name: "entered"
- Parameter { name: "drag"; type: "QQuickDropEvent"; isPointer: true }
- }
- Signal { name: "exited" }
- Signal {
- name: "positionChanged"
- Parameter { name: "drag"; type: "QQuickDropEvent"; isPointer: true }
- }
- Signal {
- name: "dropped"
- Parameter { name: "drop"; type: "QQuickDropEvent"; isPointer: true }
- }
- }
- Component {
- name: "QQuickDropAreaDrag"
- prototype: "QObject"
- Property { name: "x"; type: "double"; isReadonly: true }
- Property { name: "y"; type: "double"; isReadonly: true }
- Property { name: "source"; type: "QObject"; isReadonly: true; isPointer: true }
- Signal { name: "positionChanged" }
- }
- Component {
- name: "QQuickDropEvent"
- prototype: "QObject"
- Property { name: "x"; type: "double"; isReadonly: true }
- Property { name: "y"; type: "double"; isReadonly: true }
- Property { name: "source"; type: "QObject"; isReadonly: true; isPointer: true }
- Property { name: "keys"; type: "QStringList"; isReadonly: true }
- Property { name: "supportedActions"; type: "Qt::DropActions"; isReadonly: true }
- Property { name: "proposedAction"; type: "Qt::DropActions"; isReadonly: true }
- Property { name: "action"; type: "Qt::DropAction" }
- Property { name: "accepted"; type: "bool" }
- Property { name: "hasColor"; type: "bool"; isReadonly: true }
- Property { name: "hasHtml"; type: "bool"; isReadonly: true }
- Property { name: "hasText"; type: "bool"; isReadonly: true }
- Property { name: "hasUrls"; type: "bool"; isReadonly: true }
- Property { name: "colorData"; type: "QVariant"; isReadonly: true }
- Property { name: "html"; type: "string"; isReadonly: true }
- Property { name: "text"; type: "string"; isReadonly: true }
- Property { name: "urls"; type: "QList<QUrl>"; isReadonly: true }
- Property { name: "formats"; type: "QStringList"; isReadonly: true }
- Method {
- name: "getDataAsString"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "getDataAsArrayBuffer"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "acceptProposedAction"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "accept"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- }
- Component {
- name: "QQuickEnterKeyAttached"
- prototype: "QObject"
- exports: ["QtQuick/EnterKey 2.6"]
- isCreatable: false
- exportMetaObjectRevisions: [6]
- Property { name: "type"; type: "Qt::EnterKeyType" }
- }
- Component {
- name: "QQuickEventPoint"
- prototype: "QObject"
- exports: ["QtQuick/EventPoint 2.12"]
- isCreatable: false
- exportMetaObjectRevisions: [12]
- Enum {
- name: "States"
- values: {
- "Pressed": 1,
- "Updated": 2,
- "Stationary": 4,
- "Released": 8
- }
- }
- Enum {
- name: "GrabTransition"
- values: {
- "GrabPassive": 1,
- "UngrabPassive": 2,
- "CancelGrabPassive": 3,
- "OverrideGrabPassive": 4,
- "GrabExclusive": 16,
- "UngrabExclusive": 32,
- "CancelGrabExclusive": 48
- }
- }
- Property { name: "event"; type: "QQuickPointerEvent"; isReadonly: true; isPointer: true }
- Property { name: "position"; type: "QPointF"; isReadonly: true }
- Property { name: "scenePosition"; type: "QPointF"; isReadonly: true }
- Property { name: "scenePressPosition"; type: "QPointF"; isReadonly: true }
- Property { name: "sceneGrabPosition"; type: "QPointF"; isReadonly: true }
- Property { name: "state"; type: "State"; isReadonly: true }
- Property { name: "pointId"; type: "int"; isReadonly: true }
- Property { name: "timeHeld"; type: "double"; isReadonly: true }
- Property { name: "velocity"; type: "QVector2D"; isReadonly: true }
- Property { name: "accepted"; type: "bool" }
- Property { name: "exclusiveGrabber"; type: "QObject"; isPointer: true }
- }
- Component {
- name: "QQuickEventTouchPoint"
- prototype: "QQuickEventPoint"
- exports: ["QtQuick/EventTouchPoint 2.12"]
- isCreatable: false
- exportMetaObjectRevisions: [12]
- Property { name: "rotation"; type: "double"; isReadonly: true }
- Property { name: "pressure"; type: "double"; isReadonly: true }
- Property { name: "ellipseDiameters"; type: "QSizeF"; isReadonly: true }
- Property { name: "uniqueId"; type: "QPointingDeviceUniqueId"; isReadonly: true }
- }
- Component {
- name: "QQuickFlickable"
- defaultProperty: "flickableData"
- prototype: "QQuickItem"
- exports: [
- "QtQuick/Flickable 2.0",
- "QtQuick/Flickable 2.1",
- "QtQuick/Flickable 2.10",
- "QtQuick/Flickable 2.11",
- "QtQuick/Flickable 2.12",
- "QtQuick/Flickable 2.4",
- "QtQuick/Flickable 2.7",
- "QtQuick/Flickable 2.9"
- ]
- exportMetaObjectRevisions: [0, 1, 10, 11, 12, 4, 7, 9]
- Enum {
- name: "BoundsBehavior"
- values: {
- "StopAtBounds": 0,
- "DragOverBounds": 1,
- "OvershootBounds": 2,
- "DragAndOvershootBounds": 3
- }
- }
- Enum {
- name: "BoundsMovement"
- values: {
- "FollowBoundsBehavior": 1
- }
- }
- Enum {
- name: "FlickableDirection"
- values: {
- "AutoFlickDirection": 0,
- "HorizontalFlick": 1,
- "VerticalFlick": 2,
- "HorizontalAndVerticalFlick": 3,
- "AutoFlickIfNeeded": 12
- }
- }
- Property { name: "contentWidth"; type: "double" }
- Property { name: "contentHeight"; type: "double" }
- Property { name: "contentX"; type: "double" }
- Property { name: "contentY"; type: "double" }
- Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "topMargin"; type: "double" }
- Property { name: "bottomMargin"; type: "double" }
- Property { name: "originY"; type: "double"; isReadonly: true }
- Property { name: "leftMargin"; type: "double" }
- Property { name: "rightMargin"; type: "double" }
- Property { name: "originX"; type: "double"; isReadonly: true }
- Property { name: "horizontalVelocity"; type: "double"; isReadonly: true }
- Property { name: "verticalVelocity"; type: "double"; isReadonly: true }
- Property { name: "boundsBehavior"; type: "BoundsBehavior" }
- Property { name: "boundsMovement"; revision: 10; type: "BoundsMovement" }
- Property { name: "rebound"; type: "QQuickTransition"; isPointer: true }
- Property { name: "maximumFlickVelocity"; type: "double" }
- Property { name: "flickDeceleration"; type: "double" }
- Property { name: "moving"; type: "bool"; isReadonly: true }
- Property { name: "movingHorizontally"; type: "bool"; isReadonly: true }
- Property { name: "movingVertically"; type: "bool"; isReadonly: true }
- Property { name: "flicking"; type: "bool"; isReadonly: true }
- Property { name: "flickingHorizontally"; type: "bool"; isReadonly: true }
- Property { name: "flickingVertically"; type: "bool"; isReadonly: true }
- Property { name: "dragging"; type: "bool"; isReadonly: true }
- Property { name: "draggingHorizontally"; type: "bool"; isReadonly: true }
- Property { name: "draggingVertically"; type: "bool"; isReadonly: true }
- Property { name: "flickableDirection"; type: "FlickableDirection" }
- Property { name: "interactive"; type: "bool" }
- Property { name: "pressDelay"; type: "int" }
- Property { name: "atXEnd"; type: "bool"; isReadonly: true }
- Property { name: "atYEnd"; type: "bool"; isReadonly: true }
- Property { name: "atXBeginning"; type: "bool"; isReadonly: true }
- Property { name: "atYBeginning"; type: "bool"; isReadonly: true }
- Property {
- name: "visibleArea"
- type: "QQuickFlickableVisibleArea"
- isReadonly: true
- isPointer: true
- }
- Property { name: "pixelAligned"; type: "bool" }
- Property { name: "synchronousDrag"; revision: 12; type: "bool" }
- Property { name: "horizontalOvershoot"; revision: 9; type: "double"; isReadonly: true }
- Property { name: "verticalOvershoot"; revision: 9; type: "double"; isReadonly: true }
- Property { name: "flickableData"; type: "QObject"; isList: true; isReadonly: true }
- Property { name: "flickableChildren"; type: "QQuickItem"; isList: true; isReadonly: true }
- Signal { name: "isAtBoundaryChanged" }
- Signal { name: "boundsMovementChanged"; revision: 10 }
- Signal { name: "movementStarted" }
- Signal { name: "movementEnded" }
- Signal { name: "flickStarted" }
- Signal { name: "flickEnded" }
- Signal { name: "dragStarted" }
- Signal { name: "dragEnded" }
- Signal { name: "synchronousDragChanged"; revision: 12 }
- Signal { name: "horizontalOvershootChanged"; revision: 9 }
- Signal { name: "verticalOvershootChanged"; revision: 9 }
- Method {
- name: "resizeContent"
- Parameter { name: "w"; type: "double" }
- Parameter { name: "h"; type: "double" }
- Parameter { name: "center"; type: "QPointF" }
- }
- Method { name: "returnToBounds" }
- Method {
- name: "flick"
- Parameter { name: "xVelocity"; type: "double" }
- Parameter { name: "yVelocity"; type: "double" }
- }
- Method { name: "cancelFlick" }
- }
- Component {
- name: "QQuickFlickableVisibleArea"
- prototype: "QObject"
- Property { name: "xPosition"; type: "double"; isReadonly: true }
- Property { name: "yPosition"; type: "double"; isReadonly: true }
- Property { name: "widthRatio"; type: "double"; isReadonly: true }
- Property { name: "heightRatio"; type: "double"; isReadonly: true }
- Signal {
- name: "xPositionChanged"
- Parameter { name: "xPosition"; type: "double" }
- }
- Signal {
- name: "yPositionChanged"
- Parameter { name: "yPosition"; type: "double" }
- }
- Signal {
- name: "widthRatioChanged"
- Parameter { name: "widthRatio"; type: "double" }
- }
- Signal {
- name: "heightRatioChanged"
- Parameter { name: "heightRatio"; type: "double" }
- }
- }
- Component {
- name: "QQuickFlipable"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick/Flipable 2.0",
- "QtQuick/Flipable 2.1",
- "QtQuick/Flipable 2.11",
- "QtQuick/Flipable 2.4",
- "QtQuick/Flipable 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Enum {
- name: "Side"
- values: {
- "Front": 0,
- "Back": 1
- }
- }
- Property { name: "front"; type: "QQuickItem"; isPointer: true }
- Property { name: "back"; type: "QQuickItem"; isPointer: true }
- Property { name: "side"; type: "Side"; isReadonly: true }
- }
- Component {
- name: "QQuickFlow"
- defaultProperty: "data"
- prototype: "QQuickBasePositioner"
- exports: [
- "QtQuick/Flow 2.0",
- "QtQuick/Flow 2.1",
- "QtQuick/Flow 2.11",
- "QtQuick/Flow 2.4",
- "QtQuick/Flow 2.6",
- "QtQuick/Flow 2.7",
- "QtQuick/Flow 2.9"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 6, 7, 9]
- Enum {
- name: "Flow"
- values: {
- "LeftToRight": 0,
- "TopToBottom": 1
- }
- }
- Property { name: "flow"; type: "Flow" }
- Property { name: "layoutDirection"; type: "Qt::LayoutDirection" }
- Property { name: "effectiveLayoutDirection"; type: "Qt::LayoutDirection"; isReadonly: true }
- }
- Component {
- name: "QQuickFocusScope"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick/FocusScope 2.0",
- "QtQuick/FocusScope 2.1",
- "QtQuick/FocusScope 2.11",
- "QtQuick/FocusScope 2.4",
- "QtQuick/FocusScope 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- }
- Component {
- name: "QQuickFontLoader"
- prototype: "QObject"
- exports: ["QtQuick/FontLoader 2.0"]
- exportMetaObjectRevisions: [0]
- Enum {
- name: "Status"
- values: {
- "Null": 0,
- "Ready": 1,
- "Loading": 2,
- "Error": 3
- }
- }
- Property { name: "source"; type: "QUrl" }
- Property { name: "name"; type: "string" }
- Property { name: "status"; type: "Status"; isReadonly: true }
- }
- Component {
- name: "QQuickFontMetrics"
- prototype: "QObject"
- exports: ["QtQuick/FontMetrics 2.4"]
- exportMetaObjectRevisions: [4]
- Property { name: "font"; type: "QFont" }
- Property { name: "ascent"; type: "double"; isReadonly: true }
- Property { name: "descent"; type: "double"; isReadonly: true }
- Property { name: "height"; type: "double"; isReadonly: true }
- Property { name: "leading"; type: "double"; isReadonly: true }
- Property { name: "lineSpacing"; type: "double"; isReadonly: true }
- Property { name: "minimumLeftBearing"; type: "double"; isReadonly: true }
- Property { name: "minimumRightBearing"; type: "double"; isReadonly: true }
- Property { name: "maximumCharacterWidth"; type: "double"; isReadonly: true }
- Property { name: "xHeight"; type: "double"; isReadonly: true }
- Property { name: "averageCharacterWidth"; type: "double"; isReadonly: true }
- Property { name: "underlinePosition"; type: "double"; isReadonly: true }
- Property { name: "overlinePosition"; type: "double"; isReadonly: true }
- Property { name: "strikeOutPosition"; type: "double"; isReadonly: true }
- Property { name: "lineWidth"; type: "double"; isReadonly: true }
- Signal {
- name: "fontChanged"
- Parameter { name: "font"; type: "QFont" }
- }
- Method {
- name: "advanceWidth"
- type: "double"
- Parameter { name: "text"; type: "string" }
- }
- Method {
- name: "boundingRect"
- type: "QRectF"
- Parameter { name: "text"; type: "string" }
- }
- Method {
- name: "tightBoundingRect"
- type: "QRectF"
- Parameter { name: "text"; type: "string" }
- }
- Method {
- name: "elidedText"
- type: "string"
- Parameter { name: "text"; type: "string" }
- Parameter { name: "mode"; type: "Qt::TextElideMode" }
- Parameter { name: "width"; type: "double" }
- Parameter { name: "flags"; type: "int" }
- }
- Method {
- name: "elidedText"
- type: "string"
- Parameter { name: "text"; type: "string" }
- Parameter { name: "mode"; type: "Qt::TextElideMode" }
- Parameter { name: "width"; type: "double" }
- }
- }
- Component {
- name: "QQuickFontValueType"
- exports: ["QtQuick/Font 2.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Enum {
- name: "FontWeight"
- values: {
- "Thin": 0,
- "ExtraLight": 12,
- "Light": 25,
- "Normal": 50,
- "Medium": 57,
- "DemiBold": 63,
- "Bold": 75,
- "ExtraBold": 81,
- "Black": 87
- }
- }
- Enum {
- name: "Capitalization"
- values: {
- "MixedCase": 0,
- "AllUppercase": 1,
- "AllLowercase": 2,
- "SmallCaps": 3,
- "Capitalize": 4
- }
- }
- Enum {
- name: "HintingPreference"
- values: {
- "PreferDefaultHinting": 0,
- "PreferNoHinting": 1,
- "PreferVerticalHinting": 2,
- "PreferFullHinting": 3
- }
- }
- Property { name: "family"; type: "string" }
- Property { name: "styleName"; type: "string" }
- Property { name: "bold"; type: "bool" }
- Property { name: "weight"; type: "FontWeight" }
- Property { name: "italic"; type: "bool" }
- Property { name: "underline"; type: "bool" }
- Property { name: "overline"; type: "bool" }
- Property { name: "strikeout"; type: "bool" }
- Property { name: "pointSize"; type: "double" }
- Property { name: "pixelSize"; type: "int" }
- Property { name: "capitalization"; type: "Capitalization" }
- Property { name: "letterSpacing"; type: "double" }
- Property { name: "wordSpacing"; type: "double" }
- Property { name: "hintingPreference"; type: "HintingPreference" }
- Property { name: "kerning"; type: "bool" }
- Property { name: "preferShaping"; type: "bool" }
- Method { name: "toString"; type: "string" }
- }
- Component {
- name: "QQuickGrabGestureEvent"
- prototype: "QObject"
- exports: ["QtQuick/GestureEvent 2.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Property { name: "touchPoints"; type: "QObject"; isList: true; isReadonly: true }
- Property { name: "dragThreshold"; type: "double"; isReadonly: true }
- Method { name: "grab" }
- }
- Component {
- name: "QQuickGradient"
- defaultProperty: "stops"
- prototype: "QObject"
- exports: ["QtQuick/Gradient 2.0", "QtQuick/Gradient 2.12"]
- exportMetaObjectRevisions: [0, 12]
- Enum {
- name: "Orientation"
- values: {
- "Vertical": 2,
- "Horizontal": 1
- }
- }
- Property { name: "stops"; type: "QQuickGradientStop"; isList: true; isReadonly: true }
- Property { name: "orientation"; revision: 12; type: "Orientation" }
- Signal { name: "updated" }
- }
- Component {
- name: "QQuickGradientStop"
- prototype: "QObject"
- exports: ["QtQuick/GradientStop 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "position"; type: "double" }
- Property { name: "color"; type: "QColor" }
- }
- Component {
- name: "QQuickGraphicsInfo"
- prototype: "QObject"
- exports: ["QtQuick/GraphicsInfo 2.8"]
- isCreatable: false
- exportMetaObjectRevisions: [8]
- Enum {
- name: "GraphicsApi"
- values: {
- "Unknown": 0,
- "Software": 1,
- "OpenGL": 2,
- "Direct3D12": 3,
- "OpenVG": 4,
- "OpenGLRhi": 5,
- "Direct3D11Rhi": 6,
- "VulkanRhi": 7,
- "MetalRhi": 8,
- "NullRhi": 9
- }
- }
- Enum {
- name: "ShaderType"
- values: {
- "UnknownShadingLanguage": 0,
- "GLSL": 1,
- "HLSL": 2,
- "RhiShader": 3
- }
- }
- Enum {
- name: "ShaderCompilationType"
- values: {
- "RuntimeCompilation": 1,
- "OfflineCompilation": 2
- }
- }
- Enum {
- name: "ShaderSourceType"
- values: {
- "ShaderSourceString": 1,
- "ShaderSourceFile": 2,
- "ShaderByteCode": 4
- }
- }
- Enum {
- name: "OpenGLContextProfile"
- values: {
- "OpenGLNoProfile": 0,
- "OpenGLCoreProfile": 1,
- "OpenGLCompatibilityProfile": 2
- }
- }
- Enum {
- name: "RenderableType"
- values: {
- "SurfaceFormatUnspecified": 0,
- "SurfaceFormatOpenGL": 1,
- "SurfaceFormatOpenGLES": 2
- }
- }
- Property { name: "api"; type: "GraphicsApi"; isReadonly: true }
- Property { name: "shaderType"; type: "ShaderType"; isReadonly: true }
- Property { name: "shaderCompilationType"; type: "ShaderCompilationType"; isReadonly: true }
- Property { name: "shaderSourceType"; type: "ShaderSourceType"; isReadonly: true }
- Property { name: "majorVersion"; type: "int"; isReadonly: true }
- Property { name: "minorVersion"; type: "int"; isReadonly: true }
- Property { name: "profile"; type: "OpenGLContextProfile"; isReadonly: true }
- Property { name: "renderableType"; type: "RenderableType"; isReadonly: true }
- }
- Component {
- name: "QQuickGrid"
- defaultProperty: "data"
- prototype: "QQuickBasePositioner"
- exports: [
- "QtQuick/Grid 2.0",
- "QtQuick/Grid 2.1",
- "QtQuick/Grid 2.11",
- "QtQuick/Grid 2.4",
- "QtQuick/Grid 2.6",
- "QtQuick/Grid 2.7",
- "QtQuick/Grid 2.9"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 6, 7, 9]
- Enum {
- name: "Flow"
- values: {
- "LeftToRight": 0,
- "TopToBottom": 1
- }
- }
- Enum {
- name: "HAlignment"
- values: {
- "AlignLeft": 1,
- "AlignRight": 2,
- "AlignHCenter": 4
- }
- }
- Enum {
- name: "VAlignment"
- values: {
- "AlignTop": 32,
- "AlignBottom": 64,
- "AlignVCenter": 128
- }
- }
- Property { name: "rows"; type: "int" }
- Property { name: "columns"; type: "int" }
- Property { name: "rowSpacing"; type: "double" }
- Property { name: "columnSpacing"; type: "double" }
- Property { name: "flow"; type: "Flow" }
- Property { name: "layoutDirection"; type: "Qt::LayoutDirection" }
- Property { name: "effectiveLayoutDirection"; type: "Qt::LayoutDirection"; isReadonly: true }
- Property { name: "horizontalItemAlignment"; revision: 1; type: "HAlignment" }
- Property {
- name: "effectiveHorizontalItemAlignment"
- revision: 1
- type: "HAlignment"
- isReadonly: true
- }
- Property { name: "verticalItemAlignment"; revision: 1; type: "VAlignment" }
- Signal {
- name: "horizontalAlignmentChanged"
- revision: 1
- Parameter { name: "alignment"; type: "HAlignment" }
- }
- Signal {
- name: "effectiveHorizontalAlignmentChanged"
- revision: 1
- Parameter { name: "alignment"; type: "HAlignment" }
- }
- Signal {
- name: "verticalAlignmentChanged"
- revision: 1
- Parameter { name: "alignment"; type: "VAlignment" }
- }
- }
- Component {
- name: "QQuickGridMesh"
- prototype: "QQuickShaderEffectMesh"
- exports: ["QtQuick/GridMesh 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "resolution"; type: "QSize" }
- }
- Component {
- name: "QQuickGridView"
- defaultProperty: "data"
- prototype: "QQuickItemView"
- exports: [
- "QtQuick/GridView 2.0",
- "QtQuick/GridView 2.1",
- "QtQuick/GridView 2.10",
- "QtQuick/GridView 2.11",
- "QtQuick/GridView 2.12",
- "QtQuick/GridView 2.13",
- "QtQuick/GridView 2.3",
- "QtQuick/GridView 2.4",
- "QtQuick/GridView 2.7",
- "QtQuick/GridView 2.9"
- ]
- exportMetaObjectRevisions: [0, 1, 10, 11, 12, 13, 3, 4, 7, 9]
- attachedType: "QQuickGridViewAttached"
- Enum {
- name: "Flow"
- values: {
- "FlowLeftToRight": 0,
- "FlowTopToBottom": 2
- }
- }
- Enum {
- name: "SnapMode"
- values: {
- "NoSnap": 0,
- "SnapToRow": 1,
- "SnapOneRow": 2
- }
- }
- Property { name: "flow"; type: "Flow" }
- Property { name: "cellWidth"; type: "double" }
- Property { name: "cellHeight"; type: "double" }
- Property { name: "snapMode"; type: "SnapMode" }
- Signal { name: "highlightMoveDurationChanged" }
- Method { name: "moveCurrentIndexUp" }
- Method { name: "moveCurrentIndexDown" }
- Method { name: "moveCurrentIndexLeft" }
- Method { name: "moveCurrentIndexRight" }
- }
- Component { name: "QQuickGridViewAttached"; prototype: "QQuickItemViewAttached" }
- Component {
- name: "QQuickHoverHandler"
- prototype: "QQuickSinglePointHandler"
- exports: ["QtQuick/HoverHandler 2.12"]
- exportMetaObjectRevisions: [12]
- Property { name: "hovered"; type: "bool"; isReadonly: true }
- }
- Component {
- name: "QQuickImage"
- defaultProperty: "data"
- prototype: "QQuickImageBase"
- exports: [
- "QtQuick/Image 2.0",
- "QtQuick/Image 2.1",
- "QtQuick/Image 2.11",
- "QtQuick/Image 2.14",
- "QtQuick/Image 2.3",
- "QtQuick/Image 2.4",
- "QtQuick/Image 2.5",
- "QtQuick/Image 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 14, 3, 4, 5, 7]
- Enum {
- name: "HAlignment"
- values: {
- "AlignLeft": 1,
- "AlignRight": 2,
- "AlignHCenter": 4
- }
- }
- Enum {
- name: "VAlignment"
- values: {
- "AlignTop": 32,
- "AlignBottom": 64,
- "AlignVCenter": 128
- }
- }
- Enum {
- name: "FillMode"
- values: {
- "Stretch": 0,
- "PreserveAspectFit": 1,
- "PreserveAspectCrop": 2,
- "Tile": 3,
- "TileVertically": 4,
- "TileHorizontally": 5,
- "Pad": 6
- }
- }
- Property { name: "fillMode"; type: "FillMode" }
- Property { name: "paintedWidth"; type: "double"; isReadonly: true }
- Property { name: "paintedHeight"; type: "double"; isReadonly: true }
- Property { name: "horizontalAlignment"; type: "HAlignment" }
- Property { name: "verticalAlignment"; type: "VAlignment" }
- Property { name: "mipmap"; revision: 3; type: "bool" }
- Property { name: "autoTransform"; revision: 5; type: "bool" }
- Signal { name: "paintedGeometryChanged" }
- Signal {
- name: "horizontalAlignmentChanged"
- Parameter { name: "alignment"; type: "HAlignment" }
- }
- Signal {
- name: "verticalAlignmentChanged"
- Parameter { name: "alignment"; type: "VAlignment" }
- }
- Signal {
- name: "mipmapChanged"
- revision: 3
- Parameter { type: "bool" }
- }
- Signal { name: "autoTransformChanged"; revision: 5 }
- }
- Component {
- name: "QQuickImageBase"
- defaultProperty: "data"
- prototype: "QQuickImplicitSizeItem"
- exports: ["QtQuick/ImageBase 2.14"]
- isCreatable: false
- exportMetaObjectRevisions: [14]
- Enum {
- name: "Status"
- values: {
- "Null": 0,
- "Ready": 1,
- "Loading": 2,
- "Error": 3
- }
- }
- Property { name: "status"; type: "Status"; isReadonly: true }
- Property { name: "source"; type: "QUrl" }
- Property { name: "progress"; type: "double"; isReadonly: true }
- Property { name: "asynchronous"; type: "bool" }
- Property { name: "cache"; type: "bool" }
- Property { name: "sourceSize"; type: "QSize" }
- Property { name: "mirror"; type: "bool" }
- Property { name: "currentFrame"; revision: 14; type: "int" }
- Property { name: "frameCount"; revision: 14; type: "int"; isReadonly: true }
- Signal {
- name: "sourceChanged"
- Parameter { type: "QUrl" }
- }
- Signal {
- name: "statusChanged"
- Parameter { type: "QQuickImageBase::Status" }
- }
- Signal {
- name: "progressChanged"
- Parameter { name: "progress"; type: "double" }
- }
- Signal { name: "currentFrameChanged"; revision: 14 }
- Signal { name: "frameCountChanged"; revision: 14 }
- }
- Component {
- name: "QQuickImplicitSizeItem"
- defaultProperty: "data"
- prototype: "QQuickItem"
- Property { name: "implicitWidth"; type: "double"; isReadonly: true }
- Property { name: "implicitHeight"; type: "double"; isReadonly: true }
- }
- Component {
- name: "QQuickIntValidator"
- prototype: "QIntValidator"
- exports: ["QtQuick/IntValidator 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "locale"; type: "string" }
- Signal { name: "localeNameChanged" }
- }
- Component {
- name: "QQuickItem"
- defaultProperty: "data"
- prototype: "QObject"
- exports: [
- "QtQuick/Item 2.0",
- "QtQuick/Item 2.1",
- "QtQuick/Item 2.11",
- "QtQuick/Item 2.4",
- "QtQuick/Item 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Enum {
- name: "Flags"
- values: {
- "ItemClipsChildrenToShape": 1,
- "ItemAcceptsInputMethod": 2,
- "ItemIsFocusScope": 4,
- "ItemHasContents": 8,
- "ItemAcceptsDrops": 16
- }
- }
- Enum {
- name: "TransformOrigin"
- values: {
- "TopLeft": 0,
- "Top": 1,
- "TopRight": 2,
- "Left": 3,
- "Center": 4,
- "Right": 5,
- "BottomLeft": 6,
- "Bottom": 7,
- "BottomRight": 8
- }
- }
- Property { name: "parent"; type: "QQuickItem"; isPointer: true }
- Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
- Property { name: "resources"; type: "QObject"; isList: true; isReadonly: true }
- Property { name: "children"; type: "QQuickItem"; isList: true; isReadonly: true }
- Property { name: "x"; type: "double" }
- Property { name: "y"; type: "double" }
- Property { name: "z"; type: "double" }
- Property { name: "width"; type: "double" }
- Property { name: "height"; type: "double" }
- Property { name: "opacity"; type: "double" }
- Property { name: "enabled"; type: "bool" }
- Property { name: "visible"; type: "bool" }
- Property { name: "visibleChildren"; type: "QQuickItem"; isList: true; isReadonly: true }
- Property { name: "states"; type: "QQuickState"; isList: true; isReadonly: true }
- Property { name: "transitions"; type: "QQuickTransition"; isList: true; isReadonly: true }
- Property { name: "state"; type: "string" }
- Property { name: "childrenRect"; type: "QRectF"; isReadonly: true }
- Property { name: "anchors"; type: "QQuickAnchors"; isReadonly: true; isPointer: true }
- Property { name: "left"; type: "QQuickAnchorLine"; isReadonly: true }
- Property { name: "right"; type: "QQuickAnchorLine"; isReadonly: true }
- Property { name: "horizontalCenter"; type: "QQuickAnchorLine"; isReadonly: true }
- Property { name: "top"; type: "QQuickAnchorLine"; isReadonly: true }
- Property { name: "bottom"; type: "QQuickAnchorLine"; isReadonly: true }
- Property { name: "verticalCenter"; type: "QQuickAnchorLine"; isReadonly: true }
- Property { name: "baseline"; type: "QQuickAnchorLine"; isReadonly: true }
- Property { name: "baselineOffset"; type: "double" }
- Property { name: "clip"; type: "bool" }
- Property { name: "focus"; type: "bool" }
- Property { name: "activeFocus"; type: "bool"; isReadonly: true }
- Property { name: "activeFocusOnTab"; revision: 1; type: "bool" }
- Property { name: "rotation"; type: "double" }
- Property { name: "scale"; type: "double" }
- Property { name: "transformOrigin"; type: "TransformOrigin" }
- Property { name: "transformOriginPoint"; type: "QPointF"; isReadonly: true }
- Property { name: "transform"; type: "QQuickTransform"; isList: true; isReadonly: true }
- Property { name: "smooth"; type: "bool" }
- Property { name: "antialiasing"; type: "bool" }
- Property { name: "implicitWidth"; type: "double" }
- Property { name: "implicitHeight"; type: "double" }
- Property { name: "containmentMask"; revision: 11; type: "QObject"; isPointer: true }
- Property { name: "layer"; type: "QQuickItemLayer"; isReadonly: true; isPointer: true }
- Signal {
- name: "childrenRectChanged"
- Parameter { type: "QRectF" }
- }
- Signal {
- name: "baselineOffsetChanged"
- Parameter { type: "double" }
- }
- Signal {
- name: "stateChanged"
- Parameter { type: "string" }
- }
- Signal {
- name: "focusChanged"
- Parameter { type: "bool" }
- }
- Signal {
- name: "activeFocusChanged"
- Parameter { type: "bool" }
- }
- Signal {
- name: "activeFocusOnTabChanged"
- revision: 1
- Parameter { type: "bool" }
- }
- Signal {
- name: "parentChanged"
- Parameter { type: "QQuickItem"; isPointer: true }
- }
- Signal {
- name: "transformOriginChanged"
- Parameter { type: "TransformOrigin" }
- }
- Signal {
- name: "smoothChanged"
- Parameter { type: "bool" }
- }
- Signal {
- name: "antialiasingChanged"
- Parameter { type: "bool" }
- }
- Signal {
- name: "clipChanged"
- Parameter { type: "bool" }
- }
- Signal {
- name: "windowChanged"
- revision: 1
- Parameter { name: "window"; type: "QQuickWindow"; isPointer: true }
- }
- Signal { name: "containmentMaskChanged"; revision: 11 }
- Method { name: "update" }
- Method {
- name: "grabToImage"
- revision: 4
- type: "bool"
- Parameter { name: "callback"; type: "QJSValue" }
- Parameter { name: "targetSize"; type: "QSize" }
- }
- Method {
- name: "grabToImage"
- revision: 4
- type: "bool"
- Parameter { name: "callback"; type: "QJSValue" }
- }
- Method {
- name: "contains"
- type: "bool"
- Parameter { name: "point"; type: "QPointF" }
- }
- Method {
- name: "mapFromItem"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "mapToItem"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "mapFromGlobal"
- revision: 7
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "mapToGlobal"
- revision: 7
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- Method { name: "forceActiveFocus" }
- Method {
- name: "forceActiveFocus"
- Parameter { name: "reason"; type: "Qt::FocusReason" }
- }
- Method {
- name: "nextItemInFocusChain"
- revision: 1
- type: "QQuickItem*"
- Parameter { name: "forward"; type: "bool" }
- }
- Method { name: "nextItemInFocusChain"; revision: 1; type: "QQuickItem*" }
- Method {
- name: "childAt"
- type: "QQuickItem*"
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- }
- }
- Component {
- name: "QQuickItemGrabResult"
- prototype: "QObject"
- Property { name: "image"; type: "QImage"; isReadonly: true }
- Property { name: "url"; type: "QUrl"; isReadonly: true }
- Signal { name: "ready" }
- Method {
- name: "saveToFile"
- type: "bool"
- Parameter { name: "fileName"; type: "string" }
- }
- Method {
- name: "saveToFile"
- type: "bool"
- Parameter { name: "fileName"; type: "string" }
- }
- }
- Component {
- name: "QQuickItemLayer"
- prototype: "QObject"
- Property { name: "enabled"; type: "bool" }
- Property { name: "textureSize"; type: "QSize" }
- Property { name: "sourceRect"; type: "QRectF" }
- Property { name: "mipmap"; type: "bool" }
- Property { name: "smooth"; type: "bool" }
- Property { name: "wrapMode"; type: "QQuickShaderEffectSource::WrapMode" }
- Property { name: "format"; type: "QQuickShaderEffectSource::Format" }
- Property { name: "samplerName"; type: "QByteArray" }
- Property { name: "effect"; type: "QQmlComponent"; isPointer: true }
- Property { name: "textureMirroring"; type: "QQuickShaderEffectSource::TextureMirroring" }
- Property { name: "samples"; type: "int" }
- Signal {
- name: "enabledChanged"
- Parameter { name: "enabled"; type: "bool" }
- }
- Signal {
- name: "sizeChanged"
- Parameter { name: "size"; type: "QSize" }
- }
- Signal {
- name: "mipmapChanged"
- Parameter { name: "mipmap"; type: "bool" }
- }
- Signal {
- name: "wrapModeChanged"
- Parameter { name: "mode"; type: "QQuickShaderEffectSource::WrapMode" }
- }
- Signal {
- name: "nameChanged"
- Parameter { name: "name"; type: "QByteArray" }
- }
- Signal {
- name: "effectChanged"
- Parameter { name: "component"; type: "QQmlComponent"; isPointer: true }
- }
- Signal {
- name: "smoothChanged"
- Parameter { name: "smooth"; type: "bool" }
- }
- Signal {
- name: "formatChanged"
- Parameter { name: "format"; type: "QQuickShaderEffectSource::Format" }
- }
- Signal {
- name: "sourceRectChanged"
- Parameter { name: "sourceRect"; type: "QRectF" }
- }
- Signal {
- name: "textureMirroringChanged"
- Parameter { name: "mirroring"; type: "QQuickShaderEffectSource::TextureMirroring" }
- }
- Signal {
- name: "samplesChanged"
- Parameter { name: "count"; type: "int" }
- }
- }
- Component {
- name: "QQuickItemView"
- defaultProperty: "flickableData"
- prototype: "QQuickFlickable"
- exports: [
- "QtQuick/ItemView 2.1",
- "QtQuick/ItemView 2.10",
- "QtQuick/ItemView 2.11",
- "QtQuick/ItemView 2.12",
- "QtQuick/ItemView 2.13",
- "QtQuick/ItemView 2.3",
- "QtQuick/ItemView 2.4",
- "QtQuick/ItemView 2.7",
- "QtQuick/ItemView 2.9"
- ]
- isCreatable: false
- exportMetaObjectRevisions: [1, 10, 11, 12, 13, 3, 4, 7, 9]
- Enum {
- name: "LayoutDirection"
- values: {
- "LeftToRight": 0,
- "RightToLeft": 1,
- "VerticalTopToBottom": 2,
- "VerticalBottomToTop": 3
- }
- }
- Enum {
- name: "VerticalLayoutDirection"
- values: {
- "TopToBottom": 2,
- "BottomToTop": 3
- }
- }
- Enum {
- name: "HighlightRangeMode"
- values: {
- "NoHighlightRange": 0,
- "ApplyRange": 1,
- "StrictlyEnforceRange": 2
- }
- }
- Enum {
- name: "PositionMode"
- values: {
- "Beginning": 0,
- "Center": 1,
- "End": 2,
- "Visible": 3,
- "Contain": 4,
- "SnapPosition": 5
- }
- }
- Property { name: "model"; type: "QVariant" }
- Property { name: "delegate"; type: "QQmlComponent"; isPointer: true }
- Property { name: "count"; type: "int"; isReadonly: true }
- Property { name: "currentIndex"; type: "int" }
- Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "keyNavigationWraps"; type: "bool" }
- Property { name: "keyNavigationEnabled"; revision: 7; type: "bool" }
- Property { name: "cacheBuffer"; type: "int" }
- Property { name: "displayMarginBeginning"; revision: 3; type: "int" }
- Property { name: "displayMarginEnd"; revision: 3; type: "int" }
- Property { name: "layoutDirection"; type: "Qt::LayoutDirection" }
- Property { name: "effectiveLayoutDirection"; type: "Qt::LayoutDirection"; isReadonly: true }
- Property { name: "verticalLayoutDirection"; type: "VerticalLayoutDirection" }
- Property { name: "header"; type: "QQmlComponent"; isPointer: true }
- Property { name: "headerItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "footer"; type: "QQmlComponent"; isPointer: true }
- Property { name: "footerItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "populate"; type: "QQuickTransition"; isPointer: true }
- Property { name: "add"; type: "QQuickTransition"; isPointer: true }
- Property { name: "addDisplaced"; type: "QQuickTransition"; isPointer: true }
- Property { name: "move"; type: "QQuickTransition"; isPointer: true }
- Property { name: "moveDisplaced"; type: "QQuickTransition"; isPointer: true }
- Property { name: "remove"; type: "QQuickTransition"; isPointer: true }
- Property { name: "removeDisplaced"; type: "QQuickTransition"; isPointer: true }
- Property { name: "displaced"; type: "QQuickTransition"; isPointer: true }
- Property { name: "highlight"; type: "QQmlComponent"; isPointer: true }
- Property { name: "highlightItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "highlightFollowsCurrentItem"; type: "bool" }
- Property { name: "highlightRangeMode"; type: "HighlightRangeMode" }
- Property { name: "preferredHighlightBegin"; type: "double" }
- Property { name: "preferredHighlightEnd"; type: "double" }
- Property { name: "highlightMoveDuration"; type: "int" }
- Signal { name: "keyNavigationEnabledChanged"; revision: 7 }
- Signal { name: "populateTransitionChanged" }
- Signal { name: "addTransitionChanged" }
- Signal { name: "addDisplacedTransitionChanged" }
- Signal { name: "moveTransitionChanged" }
- Signal { name: "moveDisplacedTransitionChanged" }
- Signal { name: "removeTransitionChanged" }
- Signal { name: "removeDisplacedTransitionChanged" }
- Signal { name: "displacedTransitionChanged" }
- Method {
- name: "positionViewAtIndex"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "mode"; type: "int" }
- }
- Method {
- name: "indexAt"
- type: "int"
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- }
- Method {
- name: "itemAt"
- type: "QQuickItem*"
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- }
- Method {
- name: "itemAtIndex"
- revision: 13
- type: "QQuickItem*"
- Parameter { name: "index"; type: "int" }
- }
- Method { name: "positionViewAtBeginning" }
- Method { name: "positionViewAtEnd" }
- Method { name: "forceLayout"; revision: 1 }
- }
- Component {
- name: "QQuickItemViewAttached"
- prototype: "QObject"
- Property { name: "view"; type: "QQuickItemView"; isReadonly: true; isPointer: true }
- Property { name: "isCurrentItem"; type: "bool"; isReadonly: true }
- Property { name: "delayRemove"; type: "bool" }
- Property { name: "section"; type: "string"; isReadonly: true }
- Property { name: "previousSection"; type: "string"; isReadonly: true }
- Property { name: "nextSection"; type: "string"; isReadonly: true }
- Signal { name: "currentItemChanged" }
- Signal { name: "add" }
- Signal { name: "remove" }
- Signal { name: "prevSectionChanged" }
- }
- Component {
- name: "QQuickKeyEvent"
- prototype: "QObject"
- Property { name: "key"; type: "int"; isReadonly: true }
- Property { name: "text"; type: "string"; isReadonly: true }
- Property { name: "modifiers"; type: "int"; isReadonly: true }
- Property { name: "isAutoRepeat"; type: "bool"; isReadonly: true }
- Property { name: "count"; type: "int"; isReadonly: true }
- Property { name: "nativeScanCode"; type: "uint"; isReadonly: true }
- Property { name: "accepted"; type: "bool" }
- Method {
- name: "matches"
- revision: 2
- type: "bool"
- Parameter { name: "key"; type: "QKeySequence::StandardKey" }
- }
- }
- Component {
- name: "QQuickKeyNavigationAttached"
- prototype: "QObject"
- exports: ["QtQuick/KeyNavigation 2.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Enum {
- name: "Priority"
- values: {
- "BeforeItem": 0,
- "AfterItem": 1
- }
- }
- Property { name: "left"; type: "QQuickItem"; isPointer: true }
- Property { name: "right"; type: "QQuickItem"; isPointer: true }
- Property { name: "up"; type: "QQuickItem"; isPointer: true }
- Property { name: "down"; type: "QQuickItem"; isPointer: true }
- Property { name: "tab"; type: "QQuickItem"; isPointer: true }
- Property { name: "backtab"; type: "QQuickItem"; isPointer: true }
- Property { name: "priority"; type: "Priority" }
- }
- Component {
- name: "QQuickKeysAttached"
- prototype: "QObject"
- exports: ["QtQuick/Keys 2.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Enum {
- name: "Priority"
- values: {
- "BeforeItem": 0,
- "AfterItem": 1
- }
- }
- Property { name: "enabled"; type: "bool" }
- Property { name: "forwardTo"; type: "QQuickItem"; isList: true; isReadonly: true }
- Property { name: "priority"; type: "Priority" }
- Signal {
- name: "pressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "released"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "shortcutOverride"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "digit0Pressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "digit1Pressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "digit2Pressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "digit3Pressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "digit4Pressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "digit5Pressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "digit6Pressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "digit7Pressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "digit8Pressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "digit9Pressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "leftPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "rightPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "upPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "downPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "tabPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "backtabPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "asteriskPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "numberSignPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "escapePressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "returnPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "enterPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "deletePressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "spacePressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "backPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "cancelPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "selectPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "yesPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "noPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "context1Pressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "context2Pressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "context3Pressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "context4Pressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "callPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "hangupPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "flipPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "menuPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "volumeUpPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- Signal {
- name: "volumeDownPressed"
- Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true }
- }
- }
- Component {
- name: "QQuickLayoutMirroringAttached"
- prototype: "QObject"
- exports: ["QtQuick/LayoutMirroring 2.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Property { name: "enabled"; type: "bool" }
- Property { name: "childrenInherit"; type: "bool" }
- }
- Component {
- name: "QQuickListView"
- defaultProperty: "data"
- prototype: "QQuickItemView"
- exports: [
- "QtQuick/ListView 2.0",
- "QtQuick/ListView 2.1",
- "QtQuick/ListView 2.10",
- "QtQuick/ListView 2.11",
- "QtQuick/ListView 2.12",
- "QtQuick/ListView 2.13",
- "QtQuick/ListView 2.3",
- "QtQuick/ListView 2.4",
- "QtQuick/ListView 2.7",
- "QtQuick/ListView 2.9"
- ]
- exportMetaObjectRevisions: [0, 1, 10, 11, 12, 13, 3, 4, 7, 9]
- attachedType: "QQuickListViewAttached"
- Enum {
- name: "Orientation"
- values: {
- "Horizontal": 1,
- "Vertical": 2
- }
- }
- Enum {
- name: "SnapMode"
- values: {
- "NoSnap": 0,
- "SnapToItem": 1,
- "SnapOneItem": 2
- }
- }
- Enum {
- name: "HeaderPositioning"
- values: {
- "InlineHeader": 0,
- "OverlayHeader": 1,
- "PullBackHeader": 2
- }
- }
- Enum {
- name: "FooterPositioning"
- values: {
- "InlineFooter": 0,
- "OverlayFooter": 1,
- "PullBackFooter": 2
- }
- }
- Property { name: "highlightMoveVelocity"; type: "double" }
- Property { name: "highlightResizeVelocity"; type: "double" }
- Property { name: "highlightResizeDuration"; type: "int" }
- Property { name: "spacing"; type: "double" }
- Property { name: "orientation"; type: "Orientation" }
- Property { name: "section"; type: "QQuickViewSection"; isReadonly: true; isPointer: true }
- Property { name: "currentSection"; type: "string"; isReadonly: true }
- Property { name: "snapMode"; type: "SnapMode" }
- Property { name: "headerPositioning"; revision: 4; type: "HeaderPositioning" }
- Property { name: "footerPositioning"; revision: 4; type: "FooterPositioning" }
- Signal { name: "headerPositioningChanged"; revision: 4 }
- Signal { name: "footerPositioningChanged"; revision: 4 }
- Method { name: "incrementCurrentIndex" }
- Method { name: "decrementCurrentIndex" }
- }
- Component { name: "QQuickListViewAttached"; prototype: "QQuickItemViewAttached" }
- Component {
- name: "QQuickLoader"
- defaultProperty: "data"
- prototype: "QQuickImplicitSizeItem"
- exports: [
- "QtQuick/Loader 2.0",
- "QtQuick/Loader 2.1",
- "QtQuick/Loader 2.11",
- "QtQuick/Loader 2.4",
- "QtQuick/Loader 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Enum {
- name: "Status"
- values: {
- "Null": 0,
- "Ready": 1,
- "Loading": 2,
- "Error": 3
- }
- }
- Property { name: "active"; type: "bool" }
- Property { name: "source"; type: "QUrl" }
- Property { name: "sourceComponent"; type: "QQmlComponent"; isPointer: true }
- Property { name: "item"; type: "QObject"; isReadonly: true; isPointer: true }
- Property { name: "status"; type: "Status"; isReadonly: true }
- Property { name: "progress"; type: "double"; isReadonly: true }
- Property { name: "asynchronous"; type: "bool" }
- Signal { name: "loaded" }
- Method {
- name: "setSource"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- }
- Component {
- name: "QQuickMatrix4x4"
- prototype: "QQuickTransform"
- exports: ["QtQuick/Matrix4x4 2.3"]
- exportMetaObjectRevisions: [3]
- Property { name: "matrix"; type: "QMatrix4x4" }
- }
- Component {
- name: "QQuickMouseArea"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick/MouseArea 2.0",
- "QtQuick/MouseArea 2.1",
- "QtQuick/MouseArea 2.11",
- "QtQuick/MouseArea 2.4",
- "QtQuick/MouseArea 2.5",
- "QtQuick/MouseArea 2.7",
- "QtQuick/MouseArea 2.9"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 5, 7, 9]
- Property { name: "mouseX"; type: "double"; isReadonly: true }
- Property { name: "mouseY"; type: "double"; isReadonly: true }
- Property { name: "containsMouse"; type: "bool"; isReadonly: true }
- Property { name: "pressed"; type: "bool"; isReadonly: true }
- Property { name: "enabled"; type: "bool" }
- Property { name: "scrollGestureEnabled"; revision: 5; type: "bool" }
- Property { name: "pressedButtons"; type: "Qt::MouseButtons"; isReadonly: true }
- Property { name: "acceptedButtons"; type: "Qt::MouseButtons" }
- Property { name: "hoverEnabled"; type: "bool" }
- Property { name: "drag"; type: "QQuickDrag"; isReadonly: true; isPointer: true }
- Property { name: "preventStealing"; type: "bool" }
- Property { name: "propagateComposedEvents"; type: "bool" }
- Property { name: "cursorShape"; type: "Qt::CursorShape" }
- Property { name: "containsPress"; revision: 4; type: "bool"; isReadonly: true }
- Property { name: "pressAndHoldInterval"; revision: 9; type: "int" }
- Signal { name: "hoveredChanged" }
- Signal { name: "scrollGestureEnabledChanged"; revision: 5 }
- Signal {
- name: "positionChanged"
- Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true }
- }
- Signal {
- name: "mouseXChanged"
- Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true }
- }
- Signal {
- name: "mouseYChanged"
- Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true }
- }
- Signal {
- name: "pressed"
- Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true }
- }
- Signal {
- name: "pressAndHold"
- Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true }
- }
- Signal {
- name: "released"
- Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true }
- }
- Signal {
- name: "clicked"
- Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true }
- }
- Signal {
- name: "doubleClicked"
- Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true }
- }
- Signal {
- name: "wheel"
- Parameter { name: "wheel"; type: "QQuickWheelEvent"; isPointer: true }
- }
- Signal { name: "entered" }
- Signal { name: "exited" }
- Signal { name: "canceled" }
- Signal { name: "containsPressChanged"; revision: 4 }
- Signal { name: "pressAndHoldIntervalChanged"; revision: 9 }
- }
- Component {
- name: "QQuickMouseEvent"
- prototype: "QObject"
- Property { name: "x"; type: "double"; isReadonly: true }
- Property { name: "y"; type: "double"; isReadonly: true }
- Property { name: "button"; type: "int"; isReadonly: true }
- Property { name: "buttons"; type: "int"; isReadonly: true }
- Property { name: "modifiers"; type: "int"; isReadonly: true }
- Property { name: "source"; revision: 7; type: "int"; isReadonly: true }
- Property { name: "wasHeld"; type: "bool"; isReadonly: true }
- Property { name: "isClick"; type: "bool"; isReadonly: true }
- Property { name: "accepted"; type: "bool" }
- Property { name: "flags"; revision: 11; type: "int"; isReadonly: true }
- }
- Component {
- name: "QQuickMultiPointHandler"
- prototype: "QQuickPointerDeviceHandler"
- Property { name: "minimumPointCount"; type: "int" }
- Property { name: "maximumPointCount"; type: "int" }
- Property { name: "centroid"; type: "QQuickHandlerPoint"; isReadonly: true }
- Signal { name: "marginChanged" }
- }
- Component {
- name: "QQuickMultiPointTouchArea"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick/MultiPointTouchArea 2.0",
- "QtQuick/MultiPointTouchArea 2.1",
- "QtQuick/MultiPointTouchArea 2.11",
- "QtQuick/MultiPointTouchArea 2.4",
- "QtQuick/MultiPointTouchArea 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Property { name: "touchPoints"; type: "QQuickTouchPoint"; isList: true; isReadonly: true }
- Property { name: "minimumTouchPoints"; type: "int" }
- Property { name: "maximumTouchPoints"; type: "int" }
- Property { name: "mouseEnabled"; type: "bool" }
- Signal {
- name: "pressed"
- Parameter { name: "touchPoints"; type: "QList<QObject*>" }
- }
- Signal {
- name: "updated"
- Parameter { name: "touchPoints"; type: "QList<QObject*>" }
- }
- Signal {
- name: "released"
- Parameter { name: "touchPoints"; type: "QList<QObject*>" }
- }
- Signal {
- name: "canceled"
- Parameter { name: "touchPoints"; type: "QList<QObject*>" }
- }
- Signal {
- name: "gestureStarted"
- Parameter { name: "gesture"; type: "QQuickGrabGestureEvent"; isPointer: true }
- }
- Signal {
- name: "touchUpdated"
- Parameter { name: "touchPoints"; type: "QList<QObject*>" }
- }
- }
- Component {
- name: "QQuickNumberAnimation"
- prototype: "QQuickPropertyAnimation"
- exports: [
- "QtQuick/NumberAnimation 2.0",
- "QtQuick/NumberAnimation 2.12"
- ]
- exportMetaObjectRevisions: [0, 12]
- Property { name: "from"; type: "double" }
- Property { name: "to"; type: "double" }
- }
- Component {
- name: "QQuickOpacityAnimator"
- prototype: "QQuickAnimator"
- exports: [
- "QtQuick/OpacityAnimator 2.12",
- "QtQuick/OpacityAnimator 2.2"
- ]
- exportMetaObjectRevisions: [12, 2]
- }
- Component {
- name: "QQuickOpenGLInfo"
- prototype: "QObject"
- exports: ["QtQuick/OpenGLInfo 2.4"]
- isCreatable: false
- exportMetaObjectRevisions: [4]
- Enum {
- name: "ContextProfile"
- values: {
- "NoProfile": 0,
- "CoreProfile": 1,
- "CompatibilityProfile": 2
- }
- }
- Enum {
- name: "RenderableType"
- values: {
- "Unspecified": 0,
- "OpenGL": 1,
- "OpenGLES": 2
- }
- }
- Property { name: "majorVersion"; type: "int"; isReadonly: true }
- Property { name: "minorVersion"; type: "int"; isReadonly: true }
- Property { name: "profile"; type: "ContextProfile"; isReadonly: true }
- Property { name: "renderableType"; type: "RenderableType"; isReadonly: true }
- }
- Component {
- name: "QQuickPackage"
- defaultProperty: "data"
- prototype: "QObject"
- exports: ["QtQuick/Package 2.0"]
- exportMetaObjectRevisions: [0]
- attachedType: "QQuickPackageAttached"
- Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
- }
- Component {
- name: "QQuickPackageAttached"
- prototype: "QObject"
- Property { name: "name"; type: "string" }
- }
- Component {
- name: "QQuickPaintedItem"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick/PaintedItem 2.0",
- "QtQuick/PaintedItem 2.1",
- "QtQuick/PaintedItem 2.11",
- "QtQuick/PaintedItem 2.4",
- "QtQuick/PaintedItem 2.7"
- ]
- isCreatable: false
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Enum {
- name: "RenderTarget"
- values: {
- "Image": 0,
- "FramebufferObject": 1,
- "InvertedYFramebufferObject": 2
- }
- }
- Enum {
- name: "PerformanceHints"
- values: {
- "FastFBOResizing": 1
- }
- }
- Property { name: "contentsSize"; type: "QSize" }
- Property { name: "fillColor"; type: "QColor" }
- Property { name: "contentsScale"; type: "double" }
- Property { name: "renderTarget"; type: "RenderTarget" }
- Property { name: "textureSize"; type: "QSize" }
- }
- Component {
- name: "QQuickParallelAnimation"
- defaultProperty: "animations"
- prototype: "QQuickAnimationGroup"
- exports: [
- "QtQuick/ParallelAnimation 2.0",
- "QtQuick/ParallelAnimation 2.12"
- ]
- exportMetaObjectRevisions: [0, 12]
- }
- Component {
- name: "QQuickParentAnimation"
- defaultProperty: "animations"
- prototype: "QQuickAnimationGroup"
- exports: [
- "QtQuick/ParentAnimation 2.0",
- "QtQuick/ParentAnimation 2.12"
- ]
- exportMetaObjectRevisions: [0, 12]
- Property { name: "target"; type: "QQuickItem"; isPointer: true }
- Property { name: "newParent"; type: "QQuickItem"; isPointer: true }
- Property { name: "via"; type: "QQuickItem"; isPointer: true }
- }
- Component {
- name: "QQuickParentChange"
- prototype: "QQuickStateOperation"
- exports: ["QtQuick/ParentChange 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "target"; type: "QQuickItem"; isPointer: true }
- Property { name: "parent"; type: "QQuickItem"; isPointer: true }
- Property { name: "x"; type: "QQmlScriptString" }
- Property { name: "y"; type: "QQmlScriptString" }
- Property { name: "width"; type: "QQmlScriptString" }
- Property { name: "height"; type: "QQmlScriptString" }
- Property { name: "scale"; type: "QQmlScriptString" }
- Property { name: "rotation"; type: "QQmlScriptString" }
- }
- Component {
- name: "QQuickPath"
- defaultProperty: "pathElements"
- prototype: "QObject"
- exports: ["QtQuick/Path 2.0", "QtQuick/Path 2.14"]
- exportMetaObjectRevisions: [0, 14]
- Property { name: "pathElements"; type: "QQuickPathElement"; isList: true; isReadonly: true }
- Property { name: "startX"; type: "double" }
- Property { name: "startY"; type: "double" }
- Property { name: "closed"; type: "bool"; isReadonly: true }
- Property { name: "scale"; revision: 14; type: "QSizeF" }
- Signal { name: "changed" }
- Signal { name: "scaleChanged"; revision: 14 }
- Method {
- name: "pointAtPercent"
- revision: 14
- type: "QPointF"
- Parameter { name: "t"; type: "double" }
- }
- }
- Component {
- name: "QQuickPathAngleArc"
- prototype: "QQuickCurve"
- exports: ["QtQuick/PathAngleArc 2.11"]
- exportMetaObjectRevisions: [11]
- Property { name: "centerX"; type: "double" }
- Property { name: "centerY"; type: "double" }
- Property { name: "radiusX"; type: "double" }
- Property { name: "radiusY"; type: "double" }
- Property { name: "startAngle"; type: "double" }
- Property { name: "sweepAngle"; type: "double" }
- Property { name: "moveToStart"; type: "bool" }
- }
- Component {
- name: "QQuickPathAnimation"
- prototype: "QQuickAbstractAnimation"
- exports: ["QtQuick/PathAnimation 2.0", "QtQuick/PathAnimation 2.12"]
- exportMetaObjectRevisions: [0, 12]
- Enum {
- name: "Orientation"
- values: {
- "Fixed": 0,
- "RightFirst": 1,
- "LeftFirst": 2,
- "BottomFirst": 3,
- "TopFirst": 4
- }
- }
- Property { name: "duration"; type: "int" }
- Property { name: "easing"; type: "QEasingCurve" }
- Property { name: "path"; type: "QQuickPath"; isPointer: true }
- Property { name: "target"; type: "QQuickItem"; isPointer: true }
- Property { name: "orientation"; type: "Orientation" }
- Property { name: "anchorPoint"; type: "QPointF" }
- Property { name: "orientationEntryDuration"; type: "int" }
- Property { name: "orientationExitDuration"; type: "int" }
- Property { name: "endRotation"; type: "double" }
- Signal {
- name: "durationChanged"
- Parameter { type: "int" }
- }
- Signal {
- name: "easingChanged"
- Parameter { type: "QEasingCurve" }
- }
- Signal {
- name: "orientationChanged"
- Parameter { type: "Orientation" }
- }
- Signal {
- name: "anchorPointChanged"
- Parameter { type: "QPointF" }
- }
- Signal {
- name: "orientationEntryDurationChanged"
- Parameter { type: "double" }
- }
- Signal {
- name: "orientationExitDurationChanged"
- Parameter { type: "double" }
- }
- Signal {
- name: "endRotationChanged"
- Parameter { type: "double" }
- }
- }
- Component {
- name: "QQuickPathArc"
- prototype: "QQuickCurve"
- exports: ["QtQuick/PathArc 2.0", "QtQuick/PathArc 2.9"]
- exportMetaObjectRevisions: [0, 9]
- Enum {
- name: "ArcDirection"
- values: {
- "Clockwise": 0,
- "Counterclockwise": 1
- }
- }
- Property { name: "radiusX"; type: "double" }
- Property { name: "radiusY"; type: "double" }
- Property { name: "useLargeArc"; type: "bool" }
- Property { name: "direction"; type: "ArcDirection" }
- Property { name: "xAxisRotation"; revision: 9; type: "double" }
- Signal { name: "xAxisRotationChanged"; revision: 9 }
- }
- Component {
- name: "QQuickPathAttribute"
- prototype: "QQuickPathElement"
- exports: ["QtQuick/PathAttribute 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "name"; type: "string" }
- Property { name: "value"; type: "double" }
- }
- Component {
- name: "QQuickPathCatmullRomCurve"
- prototype: "QQuickCurve"
- exports: ["QtQuick/PathCurve 2.0"]
- exportMetaObjectRevisions: [0]
- }
- Component {
- name: "QQuickPathCubic"
- prototype: "QQuickCurve"
- exports: ["QtQuick/PathCubic 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "control1X"; type: "double" }
- Property { name: "control1Y"; type: "double" }
- Property { name: "control2X"; type: "double" }
- Property { name: "control2Y"; type: "double" }
- Property { name: "relativeControl1X"; type: "double" }
- Property { name: "relativeControl1Y"; type: "double" }
- Property { name: "relativeControl2X"; type: "double" }
- Property { name: "relativeControl2Y"; type: "double" }
- }
- Component {
- name: "QQuickPathElement"
- prototype: "QObject"
- Signal { name: "changed" }
- }
- Component {
- name: "QQuickPathInterpolator"
- prototype: "QObject"
- exports: ["QtQuick/PathInterpolator 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "path"; type: "QQuickPath"; isPointer: true }
- Property { name: "progress"; type: "double" }
- Property { name: "x"; type: "double"; isReadonly: true }
- Property { name: "y"; type: "double"; isReadonly: true }
- Property { name: "angle"; type: "double"; isReadonly: true }
- }
- Component {
- name: "QQuickPathLine"
- prototype: "QQuickCurve"
- exports: ["QtQuick/PathLine 2.0"]
- exportMetaObjectRevisions: [0]
- }
- Component {
- name: "QQuickPathMove"
- prototype: "QQuickCurve"
- exports: ["QtQuick/PathMove 2.9"]
- exportMetaObjectRevisions: [9]
- }
- Component {
- name: "QQuickPathMultiline"
- prototype: "QQuickCurve"
- exports: ["QtQuick/PathMultiline 2.14"]
- exportMetaObjectRevisions: [14]
- Property { name: "start"; type: "QPointF"; isReadonly: true }
- Property { name: "paths"; type: "QVariant" }
- }
- Component {
- name: "QQuickPathPercent"
- prototype: "QQuickPathElement"
- exports: ["QtQuick/PathPercent 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "value"; type: "double" }
- }
- Component {
- name: "QQuickPathPolyline"
- prototype: "QQuickCurve"
- exports: ["QtQuick/PathPolyline 2.14"]
- exportMetaObjectRevisions: [14]
- Property { name: "start"; type: "QPointF"; isReadonly: true }
- Property { name: "path"; type: "QVariant" }
- }
- Component {
- name: "QQuickPathQuad"
- prototype: "QQuickCurve"
- exports: ["QtQuick/PathQuad 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "controlX"; type: "double" }
- Property { name: "controlY"; type: "double" }
- Property { name: "relativeControlX"; type: "double" }
- Property { name: "relativeControlY"; type: "double" }
- }
- Component {
- name: "QQuickPathSvg"
- prototype: "QQuickCurve"
- exports: ["QtQuick/PathSvg 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "path"; type: "string" }
- }
- Component {
- name: "QQuickPathView"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick/PathView 2.0",
- "QtQuick/PathView 2.1",
- "QtQuick/PathView 2.11",
- "QtQuick/PathView 2.13",
- "QtQuick/PathView 2.4",
- "QtQuick/PathView 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 13, 4, 7]
- attachedType: "QQuickPathViewAttached"
- Enum {
- name: "HighlightRangeMode"
- values: {
- "NoHighlightRange": 0,
- "ApplyRange": 1,
- "StrictlyEnforceRange": 2
- }
- }
- Enum {
- name: "SnapMode"
- values: {
- "NoSnap": 0,
- "SnapToItem": 1,
- "SnapOneItem": 2
- }
- }
- Enum {
- name: "MovementDirection"
- values: {
- "Shortest": 0,
- "Negative": 1,
- "Positive": 2
- }
- }
- Enum {
- name: "PositionMode"
- values: {
- "Beginning": 0,
- "Center": 1,
- "End": 2,
- "Contain": 4,
- "SnapPosition": 5
- }
- }
- Property { name: "model"; type: "QVariant" }
- Property { name: "path"; type: "QQuickPath"; isPointer: true }
- Property { name: "currentIndex"; type: "int" }
- Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "offset"; type: "double" }
- Property { name: "highlight"; type: "QQmlComponent"; isPointer: true }
- Property { name: "highlightItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "preferredHighlightBegin"; type: "double" }
- Property { name: "preferredHighlightEnd"; type: "double" }
- Property { name: "highlightRangeMode"; type: "HighlightRangeMode" }
- Property { name: "highlightMoveDuration"; type: "int" }
- Property { name: "dragMargin"; type: "double" }
- Property { name: "maximumFlickVelocity"; type: "double" }
- Property { name: "flickDeceleration"; type: "double" }
- Property { name: "interactive"; type: "bool" }
- Property { name: "moving"; type: "bool"; isReadonly: true }
- Property { name: "flicking"; type: "bool"; isReadonly: true }
- Property { name: "dragging"; type: "bool"; isReadonly: true }
- Property { name: "count"; type: "int"; isReadonly: true }
- Property { name: "delegate"; type: "QQmlComponent"; isPointer: true }
- Property { name: "pathItemCount"; type: "int" }
- Property { name: "snapMode"; type: "SnapMode" }
- Property { name: "movementDirection"; revision: 7; type: "MovementDirection" }
- Property { name: "cacheItemCount"; type: "int" }
- Signal { name: "snapPositionChanged" }
- Signal { name: "movementStarted" }
- Signal { name: "movementEnded" }
- Signal { name: "movementDirectionChanged"; revision: 7 }
- Signal { name: "flickStarted" }
- Signal { name: "flickEnded" }
- Signal { name: "dragStarted" }
- Signal { name: "dragEnded" }
- Method { name: "incrementCurrentIndex" }
- Method { name: "decrementCurrentIndex" }
- Method {
- name: "positionViewAtIndex"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "mode"; type: "int" }
- }
- Method {
- name: "indexAt"
- type: "int"
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- }
- Method {
- name: "itemAt"
- type: "QQuickItem*"
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- }
- Method {
- name: "itemAtIndex"
- revision: 13
- type: "QQuickItem*"
- Parameter { name: "index"; type: "int" }
- }
- }
- Component {
- name: "QQuickPathViewAttached"
- prototype: "QObject"
- Property { name: "view"; type: "QQuickPathView"; isReadonly: true; isPointer: true }
- Property { name: "isCurrentItem"; type: "bool"; isReadonly: true }
- Property { name: "onPath"; type: "bool"; isReadonly: true }
- Signal { name: "currentItemChanged" }
- Signal { name: "pathChanged" }
- }
- Component {
- name: "QQuickPauseAnimation"
- prototype: "QQuickAbstractAnimation"
- exports: ["QtQuick/PauseAnimation 2.0", "QtQuick/PauseAnimation 2.12"]
- exportMetaObjectRevisions: [0, 12]
- Property { name: "duration"; type: "int" }
- Signal {
- name: "durationChanged"
- Parameter { type: "int" }
- }
- }
- Component {
- name: "QQuickPen"
- prototype: "QObject"
- Property { name: "width"; type: "double" }
- Property { name: "color"; type: "QColor" }
- Property { name: "pixelAligned"; type: "bool" }
- Signal { name: "penChanged" }
- }
- Component {
- name: "QQuickPinch"
- prototype: "QObject"
- exports: ["QtQuick/Pinch 2.0"]
- exportMetaObjectRevisions: [0]
- Enum {
- name: "Axis"
- values: {
- "NoDrag": 0,
- "XAxis": 1,
- "YAxis": 2,
- "XAndYAxis": 3,
- "XandYAxis": 3
- }
- }
- Property { name: "target"; type: "QQuickItem"; isPointer: true }
- Property { name: "minimumScale"; type: "double" }
- Property { name: "maximumScale"; type: "double" }
- Property { name: "minimumRotation"; type: "double" }
- Property { name: "maximumRotation"; type: "double" }
- Property { name: "dragAxis"; type: "Axis" }
- Property { name: "minimumX"; type: "double" }
- Property { name: "maximumX"; type: "double" }
- Property { name: "minimumY"; type: "double" }
- Property { name: "maximumY"; type: "double" }
- Property { name: "active"; type: "bool"; isReadonly: true }
- }
- Component {
- name: "QQuickPinchArea"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick/PinchArea 2.0",
- "QtQuick/PinchArea 2.1",
- "QtQuick/PinchArea 2.11",
- "QtQuick/PinchArea 2.4",
- "QtQuick/PinchArea 2.5",
- "QtQuick/PinchArea 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 5, 7]
- Property { name: "enabled"; type: "bool" }
- Property { name: "pinch"; type: "QQuickPinch"; isReadonly: true; isPointer: true }
- Signal {
- name: "pinchStarted"
- Parameter { name: "pinch"; type: "QQuickPinchEvent"; isPointer: true }
- }
- Signal {
- name: "pinchUpdated"
- Parameter { name: "pinch"; type: "QQuickPinchEvent"; isPointer: true }
- }
- Signal {
- name: "pinchFinished"
- Parameter { name: "pinch"; type: "QQuickPinchEvent"; isPointer: true }
- }
- Signal {
- name: "smartZoom"
- revision: 5
- Parameter { name: "pinch"; type: "QQuickPinchEvent"; isPointer: true }
- }
- }
- Component {
- name: "QQuickPinchEvent"
- prototype: "QObject"
- Property { name: "center"; type: "QPointF"; isReadonly: true }
- Property { name: "startCenter"; type: "QPointF"; isReadonly: true }
- Property { name: "previousCenter"; type: "QPointF"; isReadonly: true }
- Property { name: "scale"; type: "double"; isReadonly: true }
- Property { name: "previousScale"; type: "double"; isReadonly: true }
- Property { name: "angle"; type: "double"; isReadonly: true }
- Property { name: "previousAngle"; type: "double"; isReadonly: true }
- Property { name: "rotation"; type: "double"; isReadonly: true }
- Property { name: "point1"; type: "QPointF"; isReadonly: true }
- Property { name: "startPoint1"; type: "QPointF"; isReadonly: true }
- Property { name: "point2"; type: "QPointF"; isReadonly: true }
- Property { name: "startPoint2"; type: "QPointF"; isReadonly: true }
- Property { name: "pointCount"; type: "int"; isReadonly: true }
- Property { name: "accepted"; type: "bool" }
- }
- Component {
- name: "QQuickPinchHandler"
- prototype: "QQuickMultiPointHandler"
- exports: ["QtQuick/PinchHandler 2.12"]
- exportMetaObjectRevisions: [12]
- Property { name: "minimumScale"; type: "double" }
- Property { name: "maximumScale"; type: "double" }
- Property { name: "minimumRotation"; type: "double" }
- Property { name: "maximumRotation"; type: "double" }
- Property { name: "scale"; type: "double"; isReadonly: true }
- Property { name: "activeScale"; type: "double"; isReadonly: true }
- Property { name: "rotation"; type: "double"; isReadonly: true }
- Property { name: "translation"; type: "QVector2D"; isReadonly: true }
- Property { name: "minimumX"; type: "double" }
- Property { name: "maximumX"; type: "double" }
- Property { name: "minimumY"; type: "double" }
- Property { name: "maximumY"; type: "double" }
- Property { name: "xAxis"; type: "QQuickDragAxis"; isReadonly: true; isPointer: true }
- Property { name: "yAxis"; type: "QQuickDragAxis"; isReadonly: true; isPointer: true }
- Signal { name: "updated" }
- }
- Component {
- name: "QQuickPointHandler"
- prototype: "QQuickSinglePointHandler"
- exports: ["QtQuick/PointHandler 2.12"]
- exportMetaObjectRevisions: [12]
- Property { name: "translation"; type: "QVector2D"; isReadonly: true }
- }
- Component {
- name: "QQuickPointerDevice"
- prototype: "QObject"
- exports: ["QtQuick/PointerDevice 2.12"]
- isCreatable: false
- exportMetaObjectRevisions: [12]
- Enum {
- name: "DeviceTypes"
- values: {
- "UnknownDevice": 0,
- "Mouse": 1,
- "TouchScreen": 2,
- "TouchPad": 4,
- "Puck": 8,
- "Stylus": 16,
- "Airbrush": 32,
- "AllDevices": 32767
- }
- }
- Enum {
- name: "PointerTypes"
- values: {
- "GenericPointer": 1,
- "Finger": 2,
- "Pen": 4,
- "Eraser": 8,
- "Cursor": 16,
- "AllPointerTypes": 32767
- }
- }
- Enum {
- name: "Capabilities"
- values: {
- "Position": 1,
- "Area": 2,
- "Pressure": 4,
- "Velocity": 8,
- "MouseEmulation": 64,
- "Scroll": 256,
- "Hover": 512,
- "Rotation": 1024,
- "XTilt": 2048,
- "YTilt": 4096
- }
- }
- Property { name: "type"; type: "DeviceType"; isReadonly: true }
- Property { name: "pointerType"; type: "PointerType"; isReadonly: true }
- Property { name: "capabilities"; type: "Capabilities"; isReadonly: true }
- Property { name: "maximumTouchPoints"; type: "int"; isReadonly: true }
- Property { name: "buttonCount"; type: "int"; isReadonly: true }
- Property { name: "name"; type: "string"; isReadonly: true }
- Property { name: "uniqueId"; type: "QPointingDeviceUniqueId"; isReadonly: true }
- }
- Component {
- name: "QQuickPointerDeviceHandler"
- prototype: "QQuickPointerHandler"
- Property { name: "acceptedDevices"; type: "QQuickPointerDevice::DeviceTypes" }
- Property { name: "acceptedPointerTypes"; type: "QQuickPointerDevice::PointerTypes" }
- Property { name: "acceptedButtons"; type: "Qt::MouseButtons" }
- Property { name: "acceptedModifiers"; type: "Qt::KeyboardModifiers" }
- Method {
- name: "setAcceptedDevices"
- Parameter { name: "acceptedDevices"; type: "QQuickPointerDevice::DeviceTypes" }
- }
- Method {
- name: "setAcceptedPointerTypes"
- Parameter { name: "acceptedPointerTypes"; type: "QQuickPointerDevice::PointerTypes" }
- }
- Method {
- name: "setAcceptedButtons"
- Parameter { name: "buttons"; type: "Qt::MouseButtons" }
- }
- Method {
- name: "setAcceptedModifiers"
- Parameter { name: "acceptedModifiers"; type: "Qt::KeyboardModifiers" }
- }
- }
- Component {
- name: "QQuickPointerEvent"
- prototype: "QObject"
- exports: ["QtQuick/PointerEvent 2.12"]
- isCreatable: false
- exportMetaObjectRevisions: [12]
- Property { name: "device"; type: "QQuickPointerDevice"; isReadonly: true; isPointer: true }
- Property { name: "modifiers"; type: "Qt::KeyboardModifiers"; isReadonly: true }
- Property { name: "button"; type: "Qt::MouseButtons"; isReadonly: true }
- Property { name: "buttons"; type: "Qt::MouseButtons"; isReadonly: true }
- }
- Component {
- name: "QQuickPointerHandler"
- prototype: "QObject"
- exports: ["QtQuick/PointerHandler 2.12"]
- isCreatable: false
- exportMetaObjectRevisions: [12]
- Enum {
- name: "GrabPermissions"
- values: {
- "TakeOverForbidden": 0,
- "CanTakeOverFromHandlersOfSameType": 1,
- "CanTakeOverFromHandlersOfDifferentType": 2,
- "CanTakeOverFromItems": 4,
- "CanTakeOverFromAnything": 15,
- "ApprovesTakeOverByHandlersOfSameType": 16,
- "ApprovesTakeOverByHandlersOfDifferentType": 32,
- "ApprovesTakeOverByItems": 64,
- "ApprovesCancellation": 128,
- "ApprovesTakeOverByAnything": 240
- }
- }
- Property { name: "enabled"; type: "bool" }
- Property { name: "active"; type: "bool"; isReadonly: true }
- Property { name: "target"; type: "QQuickItem"; isPointer: true }
- Property { name: "parent"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "grabPermissions"; type: "GrabPermissions" }
- Property { name: "margin"; type: "double" }
- Signal {
- name: "grabChanged"
- Parameter { name: "transition"; type: "QQuickEventPoint::GrabTransition" }
- Parameter { name: "point"; type: "QQuickEventPoint"; isPointer: true }
- }
- Signal { name: "grabPermissionChanged" }
- Signal {
- name: "canceled"
- Parameter { name: "point"; type: "QQuickEventPoint"; isPointer: true }
- }
- }
- Component {
- name: "QQuickPointerMouseEvent"
- prototype: "QQuickSinglePointEvent"
- exports: ["QtQuick/PointerMouseEvent 2.12"]
- isCreatable: false
- exportMetaObjectRevisions: [12]
- }
- Component {
- name: "QQuickPointerTouchEvent"
- prototype: "QQuickPointerEvent"
- exports: ["QtQuick/PointerTouchEvent 2.12"]
- isCreatable: false
- exportMetaObjectRevisions: [12]
- }
- Component {
- name: "QQuickPositionerAttached"
- prototype: "QObject"
- Property { name: "index"; type: "int"; isReadonly: true }
- Property { name: "isFirstItem"; type: "bool"; isReadonly: true }
- Property { name: "isLastItem"; type: "bool"; isReadonly: true }
- }
- Component {
- name: "QQuickPropertyAction"
- prototype: "QQuickAbstractAnimation"
- exports: ["QtQuick/PropertyAction 2.0", "QtQuick/PropertyAction 2.12"]
- exportMetaObjectRevisions: [0, 12]
- Property { name: "target"; type: "QObject"; isPointer: true }
- Property { name: "property"; type: "string" }
- Property { name: "properties"; type: "string" }
- Property { name: "targets"; type: "QObject"; isList: true; isReadonly: true }
- Property { name: "exclude"; type: "QObject"; isList: true; isReadonly: true }
- Property { name: "value"; type: "QVariant" }
- Signal {
- name: "valueChanged"
- Parameter { type: "QVariant" }
- }
- Signal {
- name: "propertiesChanged"
- Parameter { type: "string" }
- }
- }
- Component {
- name: "QQuickPropertyAnimation"
- prototype: "QQuickAbstractAnimation"
- exports: [
- "QtQuick/PropertyAnimation 2.0",
- "QtQuick/PropertyAnimation 2.12"
- ]
- exportMetaObjectRevisions: [0, 12]
- Property { name: "duration"; type: "int" }
- Property { name: "from"; type: "QVariant" }
- Property { name: "to"; type: "QVariant" }
- Property { name: "easing"; type: "QEasingCurve" }
- Property { name: "target"; type: "QObject"; isPointer: true }
- Property { name: "property"; type: "string" }
- Property { name: "properties"; type: "string" }
- Property { name: "targets"; type: "QObject"; isList: true; isReadonly: true }
- Property { name: "exclude"; type: "QObject"; isList: true; isReadonly: true }
- Signal {
- name: "durationChanged"
- Parameter { type: "int" }
- }
- Signal {
- name: "easingChanged"
- Parameter { type: "QEasingCurve" }
- }
- Signal {
- name: "propertiesChanged"
- Parameter { type: "string" }
- }
- }
- Component {
- name: "QQuickPropertyChanges"
- prototype: "QQuickStateOperation"
- exports: ["QtQuick/PropertyChanges 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "target"; type: "QObject"; isPointer: true }
- Property { name: "restoreEntryValues"; type: "bool" }
- Property { name: "explicit"; type: "bool" }
- }
- Component {
- name: "QQuickRectangle"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick/Rectangle 2.0",
- "QtQuick/Rectangle 2.1",
- "QtQuick/Rectangle 2.11",
- "QtQuick/Rectangle 2.4",
- "QtQuick/Rectangle 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Property { name: "color"; type: "QColor" }
- Property { name: "gradient"; type: "QJSValue" }
- Property { name: "border"; type: "QQuickPen"; isReadonly: true; isPointer: true }
- Property { name: "radius"; type: "double" }
- }
- Component {
- name: "QQuickRepeater"
- defaultProperty: "delegate"
- prototype: "QQuickItem"
- exports: [
- "QtQuick/Repeater 2.0",
- "QtQuick/Repeater 2.1",
- "QtQuick/Repeater 2.11",
- "QtQuick/Repeater 2.4",
- "QtQuick/Repeater 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Property { name: "model"; type: "QVariant" }
- Property { name: "delegate"; type: "QQmlComponent"; isPointer: true }
- Property { name: "count"; type: "int"; isReadonly: true }
- Signal {
- name: "itemAdded"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
- }
- Signal {
- name: "itemRemoved"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
- }
- Method {
- name: "itemAt"
- type: "QQuickItem*"
- Parameter { name: "index"; type: "int" }
- }
- }
- Component {
- name: "QQuickRotation"
- prototype: "QQuickTransform"
- exports: ["QtQuick/Rotation 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "origin"; type: "QVector3D" }
- Property { name: "angle"; type: "double" }
- Property { name: "axis"; type: "QVector3D" }
- }
- Component {
- name: "QQuickRotationAnimation"
- prototype: "QQuickPropertyAnimation"
- exports: [
- "QtQuick/RotationAnimation 2.0",
- "QtQuick/RotationAnimation 2.12"
- ]
- exportMetaObjectRevisions: [0, 12]
- Enum {
- name: "RotationDirection"
- values: {
- "Numerical": 0,
- "Shortest": 1,
- "Clockwise": 2,
- "Counterclockwise": 3
- }
- }
- Property { name: "from"; type: "double" }
- Property { name: "to"; type: "double" }
- Property { name: "direction"; type: "RotationDirection" }
- }
- Component {
- name: "QQuickRotationAnimator"
- prototype: "QQuickAnimator"
- exports: [
- "QtQuick/RotationAnimator 2.12",
- "QtQuick/RotationAnimator 2.2"
- ]
- exportMetaObjectRevisions: [12, 2]
- Enum {
- name: "RotationDirection"
- values: {
- "Numerical": 0,
- "Shortest": 1,
- "Clockwise": 2,
- "Counterclockwise": 3
- }
- }
- Property { name: "direction"; type: "RotationDirection" }
- Signal {
- name: "directionChanged"
- Parameter { name: "dir"; type: "RotationDirection" }
- }
- }
- Component {
- name: "QQuickRow"
- defaultProperty: "data"
- prototype: "QQuickBasePositioner"
- exports: [
- "QtQuick/Row 2.0",
- "QtQuick/Row 2.1",
- "QtQuick/Row 2.11",
- "QtQuick/Row 2.4",
- "QtQuick/Row 2.6",
- "QtQuick/Row 2.7",
- "QtQuick/Row 2.9"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 6, 7, 9]
- Property { name: "layoutDirection"; type: "Qt::LayoutDirection" }
- Property { name: "effectiveLayoutDirection"; type: "Qt::LayoutDirection"; isReadonly: true }
- }
- Component {
- name: "QQuickScale"
- prototype: "QQuickTransform"
- exports: ["QtQuick/Scale 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "origin"; type: "QVector3D" }
- Property { name: "xScale"; type: "double" }
- Property { name: "yScale"; type: "double" }
- Property { name: "zScale"; type: "double" }
- Signal { name: "scaleChanged" }
- }
- Component {
- name: "QQuickScaleAnimator"
- prototype: "QQuickAnimator"
- exports: ["QtQuick/ScaleAnimator 2.12", "QtQuick/ScaleAnimator 2.2"]
- exportMetaObjectRevisions: [12, 2]
- }
- Component {
- name: "QQuickScaleGrid"
- prototype: "QObject"
- Property { name: "left"; type: "int" }
- Property { name: "top"; type: "int" }
- Property { name: "right"; type: "int" }
- Property { name: "bottom"; type: "int" }
- Signal { name: "borderChanged" }
- Signal { name: "leftBorderChanged" }
- Signal { name: "topBorderChanged" }
- Signal { name: "rightBorderChanged" }
- Signal { name: "bottomBorderChanged" }
- }
- Component {
- name: "QQuickScriptAction"
- prototype: "QQuickAbstractAnimation"
- exports: ["QtQuick/ScriptAction 2.0", "QtQuick/ScriptAction 2.12"]
- exportMetaObjectRevisions: [0, 12]
- Property { name: "script"; type: "QQmlScriptString" }
- Property { name: "scriptName"; type: "string" }
- }
- Component {
- name: "QQuickSequentialAnimation"
- defaultProperty: "animations"
- prototype: "QQuickAnimationGroup"
- exports: [
- "QtQuick/SequentialAnimation 2.0",
- "QtQuick/SequentialAnimation 2.12"
- ]
- exportMetaObjectRevisions: [0, 12]
- }
- Component {
- name: "QQuickShaderEffect"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick/ShaderEffect 2.0",
- "QtQuick/ShaderEffect 2.1",
- "QtQuick/ShaderEffect 2.11",
- "QtQuick/ShaderEffect 2.4",
- "QtQuick/ShaderEffect 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Enum {
- name: "CullMode"
- values: {
- "NoCulling": 0,
- "BackFaceCulling": 1,
- "FrontFaceCulling": 2
- }
- }
- Enum {
- name: "Status"
- values: {
- "Compiled": 0,
- "Uncompiled": 1,
- "Error": 2
- }
- }
- Property { name: "fragmentShader"; type: "QByteArray" }
- Property { name: "vertexShader"; type: "QByteArray" }
- Property { name: "blending"; type: "bool" }
- Property { name: "mesh"; type: "QVariant" }
- Property { name: "cullMode"; type: "CullMode" }
- Property { name: "log"; type: "string"; isReadonly: true }
- Property { name: "status"; type: "Status"; isReadonly: true }
- Property { name: "supportsAtlasTextures"; revision: 4; type: "bool" }
- }
- Component {
- name: "QQuickShaderEffectMesh"
- prototype: "QObject"
- exports: ["QtQuick/ShaderEffectMesh 2.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Signal { name: "geometryChanged" }
- }
- Component {
- name: "QQuickShaderEffectSource"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick/ShaderEffectSource 2.0",
- "QtQuick/ShaderEffectSource 2.1",
- "QtQuick/ShaderEffectSource 2.11",
- "QtQuick/ShaderEffectSource 2.4",
- "QtQuick/ShaderEffectSource 2.6",
- "QtQuick/ShaderEffectSource 2.7",
- "QtQuick/ShaderEffectSource 2.9"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 6, 7, 9]
- Enum {
- name: "WrapMode"
- values: {
- "ClampToEdge": 0,
- "RepeatHorizontally": 1,
- "RepeatVertically": 2,
- "Repeat": 3
- }
- }
- Enum {
- name: "Format"
- values: {
- "Alpha": 6406,
- "RGB": 6407,
- "RGBA": 6408
- }
- }
- Enum {
- name: "TextureMirroring"
- values: {
- "NoMirroring": 0,
- "MirrorHorizontally": 1,
- "MirrorVertically": 2
- }
- }
- Property { name: "wrapMode"; type: "WrapMode" }
- Property { name: "sourceItem"; type: "QQuickItem"; isPointer: true }
- Property { name: "sourceRect"; type: "QRectF" }
- Property { name: "textureSize"; type: "QSize" }
- Property { name: "format"; type: "Format" }
- Property { name: "live"; type: "bool" }
- Property { name: "hideSource"; type: "bool" }
- Property { name: "mipmap"; type: "bool" }
- Property { name: "recursive"; type: "bool" }
- Property { name: "textureMirroring"; revision: 6; type: "TextureMirroring" }
- Property { name: "samples"; revision: 9; type: "int" }
- Signal { name: "scheduledUpdateCompleted" }
- Method { name: "scheduleUpdate" }
- }
- Component {
- name: "QQuickShortcut"
- prototype: "QObject"
- exports: [
- "QtQuick/Shortcut 2.5",
- "QtQuick/Shortcut 2.6",
- "QtQuick/Shortcut 2.9"
- ]
- exportMetaObjectRevisions: [5, 6, 9]
- Property { name: "sequence"; type: "QVariant" }
- Property { name: "sequences"; revision: 9; type: "QVariantList" }
- Property { name: "nativeText"; revision: 6; type: "string"; isReadonly: true }
- Property { name: "portableText"; revision: 6; type: "string"; isReadonly: true }
- Property { name: "enabled"; type: "bool" }
- Property { name: "autoRepeat"; type: "bool" }
- Property { name: "context"; type: "Qt::ShortcutContext" }
- Signal { name: "sequencesChanged"; revision: 9 }
- Signal { name: "activated" }
- Signal { name: "activatedAmbiguously" }
- }
- Component { name: "QQuickSinglePointEvent"; prototype: "QQuickPointerEvent" }
- Component {
- name: "QQuickSinglePointHandler"
- prototype: "QQuickPointerDeviceHandler"
- Property { name: "point"; type: "QQuickHandlerPoint"; isReadonly: true }
- }
- Component {
- name: "QQuickSmoothedAnimation"
- prototype: "QQuickNumberAnimation"
- exports: [
- "QtQuick/SmoothedAnimation 2.0",
- "QtQuick/SmoothedAnimation 2.12"
- ]
- exportMetaObjectRevisions: [0, 12]
- Enum {
- name: "ReversingMode"
- values: {
- "Eased": 0,
- "Immediate": 1,
- "Sync": 2
- }
- }
- Property { name: "velocity"; type: "double" }
- Property { name: "reversingMode"; type: "ReversingMode" }
- Property { name: "maximumEasingTime"; type: "double" }
- }
- Component {
- name: "QQuickSpringAnimation"
- prototype: "QQuickNumberAnimation"
- exports: [
- "QtQuick/SpringAnimation 2.0",
- "QtQuick/SpringAnimation 2.12"
- ]
- exportMetaObjectRevisions: [0, 12]
- Property { name: "velocity"; type: "double" }
- Property { name: "spring"; type: "double" }
- Property { name: "damping"; type: "double" }
- Property { name: "epsilon"; type: "double" }
- Property { name: "modulus"; type: "double" }
- Property { name: "mass"; type: "double" }
- Signal { name: "syncChanged" }
- }
- Component {
- name: "QQuickSprite"
- prototype: "QQuickStochasticState"
- exports: ["QtQuick/Sprite 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "source"; type: "QUrl" }
- Property { name: "reverse"; type: "bool" }
- Property { name: "frameSync"; type: "bool" }
- Property { name: "frames"; type: "int" }
- Property { name: "frameCount"; type: "int" }
- Property { name: "frameHeight"; type: "int" }
- Property { name: "frameWidth"; type: "int" }
- Property { name: "frameX"; type: "int" }
- Property { name: "frameY"; type: "int" }
- Property { name: "frameRate"; type: "double" }
- Property { name: "frameRateVariation"; type: "double" }
- Property { name: "frameDuration"; type: "int" }
- Property { name: "frameDurationVariation"; type: "int" }
- Signal {
- name: "sourceChanged"
- Parameter { name: "arg"; type: "QUrl" }
- }
- Signal {
- name: "frameHeightChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "frameWidthChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "reverseChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "frameCountChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "frameXChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "frameYChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "frameRateChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "frameRateVariationChanged"
- Parameter { name: "arg"; type: "double" }
- }
- Signal {
- name: "frameDurationChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "frameDurationVariationChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "frameSyncChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setSource"
- Parameter { name: "arg"; type: "QUrl" }
- }
- Method {
- name: "setFrameHeight"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setFrameWidth"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setReverse"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setFrames"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setFrameCount"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setFrameX"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setFrameY"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setFrameRate"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setFrameRateVariation"
- Parameter { name: "arg"; type: "double" }
- }
- Method {
- name: "setFrameDuration"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setFrameDurationVariation"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setFrameSync"
- Parameter { name: "arg"; type: "bool" }
- }
- }
- Component {
- name: "QQuickSpriteSequence"
- defaultProperty: "sprites"
- prototype: "QQuickItem"
- exports: [
- "QtQuick/SpriteSequence 2.0",
- "QtQuick/SpriteSequence 2.1",
- "QtQuick/SpriteSequence 2.11",
- "QtQuick/SpriteSequence 2.4",
- "QtQuick/SpriteSequence 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Property { name: "running"; type: "bool" }
- Property { name: "interpolate"; type: "bool" }
- Property { name: "goalSprite"; type: "string" }
- Property { name: "currentSprite"; type: "string"; isReadonly: true }
- Property { name: "sprites"; type: "QQuickSprite"; isList: true; isReadonly: true }
- Signal {
- name: "runningChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "interpolateChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "goalSpriteChanged"
- Parameter { name: "arg"; type: "string" }
- }
- Signal {
- name: "currentSpriteChanged"
- Parameter { name: "arg"; type: "string" }
- }
- Method {
- name: "jumpTo"
- Parameter { name: "sprite"; type: "string" }
- }
- Method {
- name: "setGoalSprite"
- Parameter { name: "sprite"; type: "string" }
- }
- Method {
- name: "setRunning"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setInterpolate"
- Parameter { name: "arg"; type: "bool" }
- }
- }
- Component {
- name: "QQuickState"
- defaultProperty: "changes"
- prototype: "QObject"
- exports: ["QtQuick/State 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "name"; type: "string" }
- Property { name: "when"; type: "bool" }
- Property { name: "extend"; type: "string" }
- Property { name: "changes"; type: "QQuickStateOperation"; isList: true; isReadonly: true }
- Signal { name: "completed" }
- }
- Component {
- name: "QQuickStateChangeScript"
- prototype: "QQuickStateOperation"
- exports: ["QtQuick/StateChangeScript 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "script"; type: "QQmlScriptString" }
- Property { name: "name"; type: "string" }
- }
- Component {
- name: "QQuickStateGroup"
- prototype: "QObject"
- exports: ["QtQuick/StateGroup 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "state"; type: "string" }
- Property { name: "states"; type: "QQuickState"; isList: true; isReadonly: true }
- Property { name: "transitions"; type: "QQuickTransition"; isList: true; isReadonly: true }
- Signal {
- name: "stateChanged"
- Parameter { type: "string" }
- }
- }
- Component { name: "QQuickStateOperation"; prototype: "QObject" }
- Component {
- name: "QQuickStochasticState"
- prototype: "QObject"
- Property { name: "duration"; type: "int" }
- Property { name: "durationVariation"; type: "int" }
- Property { name: "randomStart"; type: "bool" }
- Property { name: "to"; type: "QVariantMap" }
- Property { name: "name"; type: "string" }
- Signal {
- name: "durationChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "nameChanged"
- Parameter { name: "arg"; type: "string" }
- }
- Signal {
- name: "toChanged"
- Parameter { name: "arg"; type: "QVariantMap" }
- }
- Signal {
- name: "durationVariationChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal { name: "entered" }
- Signal {
- name: "randomStartChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Method {
- name: "setDuration"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setName"
- Parameter { name: "arg"; type: "string" }
- }
- Method {
- name: "setTo"
- Parameter { name: "arg"; type: "QVariantMap" }
- }
- Method {
- name: "setDurationVariation"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setRandomStart"
- Parameter { name: "arg"; type: "bool" }
- }
- }
- Component {
- name: "QQuickSystemPalette"
- prototype: "QObject"
- exports: ["QtQuick/SystemPalette 2.0"]
- exportMetaObjectRevisions: [0]
- Enum {
- name: "ColorGroup"
- values: {
- "Active": 0,
- "Inactive": 2,
- "Disabled": 1
- }
- }
- Property { name: "colorGroup"; type: "QQuickSystemPalette::ColorGroup" }
- Property { name: "window"; type: "QColor"; isReadonly: true }
- Property { name: "windowText"; type: "QColor"; isReadonly: true }
- Property { name: "base"; type: "QColor"; isReadonly: true }
- Property { name: "text"; type: "QColor"; isReadonly: true }
- Property { name: "alternateBase"; type: "QColor"; isReadonly: true }
- Property { name: "button"; type: "QColor"; isReadonly: true }
- Property { name: "buttonText"; type: "QColor"; isReadonly: true }
- Property { name: "light"; type: "QColor"; isReadonly: true }
- Property { name: "midlight"; type: "QColor"; isReadonly: true }
- Property { name: "dark"; type: "QColor"; isReadonly: true }
- Property { name: "mid"; type: "QColor"; isReadonly: true }
- Property { name: "shadow"; type: "QColor"; isReadonly: true }
- Property { name: "highlight"; type: "QColor"; isReadonly: true }
- Property { name: "highlightedText"; type: "QColor"; isReadonly: true }
- Signal { name: "paletteChanged" }
- }
- Component {
- name: "QQuickTableView"
- defaultProperty: "flickableData"
- prototype: "QQuickFlickable"
- exports: ["QtQuick/TableView 2.12", "QtQuick/TableView 2.14"]
- exportMetaObjectRevisions: [12, 14]
- attachedType: "QQuickTableViewAttached"
- Property { name: "rows"; type: "int"; isReadonly: true }
- Property { name: "columns"; type: "int"; isReadonly: true }
- Property { name: "rowSpacing"; type: "double" }
- Property { name: "columnSpacing"; type: "double" }
- Property { name: "rowHeightProvider"; type: "QJSValue" }
- Property { name: "columnWidthProvider"; type: "QJSValue" }
- Property { name: "model"; type: "QVariant" }
- Property { name: "delegate"; type: "QQmlComponent"; isPointer: true }
- Property { name: "reuseItems"; type: "bool" }
- Property { name: "contentWidth"; type: "double" }
- Property { name: "contentHeight"; type: "double" }
- Property { name: "syncView"; revision: 14; type: "QQuickTableView"; isPointer: true }
- Property { name: "syncDirection"; revision: 14; type: "Qt::Orientations" }
- Signal { name: "syncViewChanged"; revision: 14 }
- Signal { name: "syncDirectionChanged"; revision: 14 }
- Method { name: "forceLayout" }
- }
- Component {
- name: "QQuickTableViewAttached"
- prototype: "QObject"
- Property { name: "view"; type: "QQuickTableView"; isReadonly: true; isPointer: true }
- Signal { name: "pooled" }
- Signal { name: "reused" }
- }
- Component {
- name: "QQuickTapHandler"
- prototype: "QQuickSinglePointHandler"
- exports: ["QtQuick/TapHandler 2.12"]
- exportMetaObjectRevisions: [12]
- Enum {
- name: "GesturePolicy"
- values: {
- "DragThreshold": 0,
- "WithinBounds": 1,
- "ReleaseWithinBounds": 2
- }
- }
- Property { name: "pressed"; type: "bool"; isReadonly: true }
- Property { name: "tapCount"; type: "int"; isReadonly: true }
- Property { name: "timeHeld"; type: "double"; isReadonly: true }
- Property { name: "longPressThreshold"; type: "double" }
- Property { name: "gesturePolicy"; type: "GesturePolicy" }
- Signal {
- name: "tapped"
- Parameter { name: "eventPoint"; type: "QQuickEventPoint"; isPointer: true }
- }
- Signal {
- name: "singleTapped"
- Parameter { name: "eventPoint"; type: "QQuickEventPoint"; isPointer: true }
- }
- Signal {
- name: "doubleTapped"
- Parameter { name: "eventPoint"; type: "QQuickEventPoint"; isPointer: true }
- }
- Signal { name: "longPressed" }
- }
- Component {
- name: "QQuickText"
- defaultProperty: "data"
- prototype: "QQuickImplicitSizeItem"
- exports: [
- "QtQuick/Text 2.0",
- "QtQuick/Text 2.1",
- "QtQuick/Text 2.10",
- "QtQuick/Text 2.11",
- "QtQuick/Text 2.2",
- "QtQuick/Text 2.3",
- "QtQuick/Text 2.4",
- "QtQuick/Text 2.6",
- "QtQuick/Text 2.7",
- "QtQuick/Text 2.9"
- ]
- exportMetaObjectRevisions: [0, 1, 10, 11, 2, 3, 4, 6, 7, 9]
- Enum {
- name: "HAlignment"
- values: {
- "AlignLeft": 1,
- "AlignRight": 2,
- "AlignHCenter": 4,
- "AlignJustify": 8
- }
- }
- Enum {
- name: "VAlignment"
- values: {
- "AlignTop": 32,
- "AlignBottom": 64,
- "AlignVCenter": 128
- }
- }
- Enum {
- name: "TextStyle"
- values: {
- "Normal": 0,
- "Outline": 1,
- "Raised": 2,
- "Sunken": 3
- }
- }
- Enum {
- name: "TextFormat"
- values: {
- "PlainText": 0,
- "RichText": 1,
- "MarkdownText": 3,
- "AutoText": 2,
- "StyledText": 4
- }
- }
- Enum {
- name: "TextElideMode"
- values: {
- "ElideLeft": 0,
- "ElideRight": 1,
- "ElideMiddle": 2,
- "ElideNone": 3
- }
- }
- Enum {
- name: "WrapMode"
- values: {
- "NoWrap": 0,
- "WordWrap": 1,
- "WrapAnywhere": 3,
- "WrapAtWordBoundaryOrAnywhere": 4,
- "Wrap": 4
- }
- }
- Enum {
- name: "RenderType"
- values: {
- "QtRendering": 0,
- "NativeRendering": 1
- }
- }
- Enum {
- name: "LineHeightMode"
- values: {
- "ProportionalHeight": 0,
- "FixedHeight": 1
- }
- }
- Enum {
- name: "FontSizeMode"
- values: {
- "FixedSize": 0,
- "HorizontalFit": 1,
- "VerticalFit": 2,
- "Fit": 3
- }
- }
- Property { name: "text"; type: "string" }
- Property { name: "font"; type: "QFont" }
- Property { name: "color"; type: "QColor" }
- Property { name: "linkColor"; type: "QColor" }
- Property { name: "style"; type: "TextStyle" }
- Property { name: "styleColor"; type: "QColor" }
- Property { name: "horizontalAlignment"; type: "HAlignment" }
- Property { name: "effectiveHorizontalAlignment"; type: "HAlignment"; isReadonly: true }
- Property { name: "verticalAlignment"; type: "VAlignment" }
- Property { name: "wrapMode"; type: "WrapMode" }
- Property { name: "lineCount"; type: "int"; isReadonly: true }
- Property { name: "truncated"; type: "bool"; isReadonly: true }
- Property { name: "maximumLineCount"; type: "int" }
- Property { name: "textFormat"; type: "TextFormat" }
- Property { name: "elide"; type: "TextElideMode" }
- Property { name: "contentWidth"; type: "double"; isReadonly: true }
- Property { name: "contentHeight"; type: "double"; isReadonly: true }
- Property { name: "paintedWidth"; type: "double"; isReadonly: true }
- Property { name: "paintedHeight"; type: "double"; isReadonly: true }
- Property { name: "lineHeight"; type: "double" }
- Property { name: "lineHeightMode"; type: "LineHeightMode" }
- Property { name: "baseUrl"; type: "QUrl" }
- Property { name: "minimumPixelSize"; type: "int" }
- Property { name: "minimumPointSize"; type: "int" }
- Property { name: "fontSizeMode"; type: "FontSizeMode" }
- Property { name: "renderType"; type: "RenderType" }
- Property { name: "hoveredLink"; revision: 2; type: "string"; isReadonly: true }
- Property { name: "padding"; revision: 6; type: "double" }
- Property { name: "topPadding"; revision: 6; type: "double" }
- Property { name: "leftPadding"; revision: 6; type: "double" }
- Property { name: "rightPadding"; revision: 6; type: "double" }
- Property { name: "bottomPadding"; revision: 6; type: "double" }
- Property { name: "fontInfo"; revision: 9; type: "QJSValue"; isReadonly: true }
- Property { name: "advance"; revision: 10; type: "QSizeF"; isReadonly: true }
- Signal {
- name: "textChanged"
- Parameter { name: "text"; type: "string" }
- }
- Signal {
- name: "linkActivated"
- Parameter { name: "link"; type: "string" }
- }
- Signal {
- name: "linkHovered"
- revision: 2
- Parameter { name: "link"; type: "string" }
- }
- Signal {
- name: "fontChanged"
- Parameter { name: "font"; type: "QFont" }
- }
- Signal {
- name: "styleChanged"
- Parameter { name: "style"; type: "QQuickText::TextStyle" }
- }
- Signal {
- name: "horizontalAlignmentChanged"
- Parameter { name: "alignment"; type: "QQuickText::HAlignment" }
- }
- Signal {
- name: "verticalAlignmentChanged"
- Parameter { name: "alignment"; type: "QQuickText::VAlignment" }
- }
- Signal {
- name: "textFormatChanged"
- Parameter { name: "textFormat"; type: "QQuickText::TextFormat" }
- }
- Signal {
- name: "elideModeChanged"
- Parameter { name: "mode"; type: "QQuickText::TextElideMode" }
- }
- Signal { name: "contentSizeChanged" }
- Signal {
- name: "contentWidthChanged"
- Parameter { name: "contentWidth"; type: "double" }
- }
- Signal {
- name: "contentHeightChanged"
- Parameter { name: "contentHeight"; type: "double" }
- }
- Signal {
- name: "lineHeightChanged"
- Parameter { name: "lineHeight"; type: "double" }
- }
- Signal {
- name: "lineHeightModeChanged"
- Parameter { name: "mode"; type: "LineHeightMode" }
- }
- Signal {
- name: "lineLaidOut"
- Parameter { name: "line"; type: "QQuickTextLine"; isPointer: true }
- }
- Signal { name: "paddingChanged"; revision: 6 }
- Signal { name: "topPaddingChanged"; revision: 6 }
- Signal { name: "leftPaddingChanged"; revision: 6 }
- Signal { name: "rightPaddingChanged"; revision: 6 }
- Signal { name: "bottomPaddingChanged"; revision: 6 }
- Signal { name: "fontInfoChanged"; revision: 9 }
- Method { name: "doLayout" }
- Method { name: "forceLayout"; revision: 9 }
- Method {
- name: "linkAt"
- revision: 3
- type: "string"
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- }
- }
- Component { name: "QQuickTextDocument"; prototype: "QObject" }
- Component {
- name: "QQuickTextEdit"
- defaultProperty: "data"
- prototype: "QQuickImplicitSizeItem"
- exports: [
- "QtQuick/TextEdit 2.0",
- "QtQuick/TextEdit 2.1",
- "QtQuick/TextEdit 2.10",
- "QtQuick/TextEdit 2.11",
- "QtQuick/TextEdit 2.2",
- "QtQuick/TextEdit 2.3",
- "QtQuick/TextEdit 2.4",
- "QtQuick/TextEdit 2.6",
- "QtQuick/TextEdit 2.7"
- ]
- exportMetaObjectRevisions: [0, 1, 10, 11, 2, 3, 4, 6, 7]
- Enum {
- name: "HAlignment"
- values: {
- "AlignLeft": 1,
- "AlignRight": 2,
- "AlignHCenter": 4,
- "AlignJustify": 8
- }
- }
- Enum {
- name: "VAlignment"
- values: {
- "AlignTop": 32,
- "AlignBottom": 64,
- "AlignVCenter": 128
- }
- }
- Enum {
- name: "TextFormat"
- values: {
- "PlainText": 0,
- "RichText": 1,
- "AutoText": 2,
- "MarkdownText": 3
- }
- }
- Enum {
- name: "WrapMode"
- values: {
- "NoWrap": 0,
- "WordWrap": 1,
- "WrapAnywhere": 3,
- "WrapAtWordBoundaryOrAnywhere": 4,
- "Wrap": 4
- }
- }
- Enum {
- name: "SelectionMode"
- values: {
- "SelectCharacters": 0,
- "SelectWords": 1
- }
- }
- Enum {
- name: "RenderType"
- values: {
- "QtRendering": 0,
- "NativeRendering": 1
- }
- }
- Property { name: "text"; type: "string" }
- Property { name: "color"; type: "QColor" }
- Property { name: "selectionColor"; type: "QColor" }
- Property { name: "selectedTextColor"; type: "QColor" }
- Property { name: "font"; type: "QFont" }
- Property { name: "horizontalAlignment"; type: "HAlignment" }
- Property { name: "effectiveHorizontalAlignment"; type: "HAlignment"; isReadonly: true }
- Property { name: "verticalAlignment"; type: "VAlignment" }
- Property { name: "wrapMode"; type: "WrapMode" }
- Property { name: "lineCount"; type: "int"; isReadonly: true }
- Property { name: "length"; type: "int"; isReadonly: true }
- Property { name: "contentWidth"; type: "double"; isReadonly: true }
- Property { name: "contentHeight"; type: "double"; isReadonly: true }
- Property { name: "paintedWidth"; type: "double"; isReadonly: true }
- Property { name: "paintedHeight"; type: "double"; isReadonly: true }
- Property { name: "textFormat"; type: "TextFormat" }
- Property { name: "readOnly"; type: "bool" }
- Property { name: "cursorVisible"; type: "bool" }
- Property { name: "cursorPosition"; type: "int" }
- Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true }
- Property { name: "cursorDelegate"; type: "QQmlComponent"; isPointer: true }
- Property { name: "overwriteMode"; type: "bool" }
- Property { name: "selectionStart"; type: "int"; isReadonly: true }
- Property { name: "selectionEnd"; type: "int"; isReadonly: true }
- Property { name: "selectedText"; type: "string"; isReadonly: true }
- Property { name: "activeFocusOnPress"; type: "bool" }
- Property { name: "persistentSelection"; type: "bool" }
- Property { name: "textMargin"; type: "double" }
- Property { name: "inputMethodHints"; type: "Qt::InputMethodHints" }
- Property { name: "selectByKeyboard"; revision: 1; type: "bool" }
- Property { name: "selectByMouse"; type: "bool" }
- Property { name: "mouseSelectionMode"; type: "SelectionMode" }
- Property { name: "canPaste"; type: "bool"; isReadonly: true }
- Property { name: "canUndo"; type: "bool"; isReadonly: true }
- Property { name: "canRedo"; type: "bool"; isReadonly: true }
- Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true }
- Property { name: "baseUrl"; type: "QUrl" }
- Property { name: "renderType"; type: "RenderType" }
- Property {
- name: "textDocument"
- revision: 1
- type: "QQuickTextDocument"
- isReadonly: true
- isPointer: true
- }
- Property { name: "hoveredLink"; revision: 2; type: "string"; isReadonly: true }
- Property { name: "padding"; revision: 6; type: "double" }
- Property { name: "topPadding"; revision: 6; type: "double" }
- Property { name: "leftPadding"; revision: 6; type: "double" }
- Property { name: "rightPadding"; revision: 6; type: "double" }
- Property { name: "bottomPadding"; revision: 6; type: "double" }
- Property { name: "preeditText"; revision: 7; type: "string"; isReadonly: true }
- Property { name: "tabStopDistance"; revision: 10; type: "double" }
- Signal { name: "preeditTextChanged"; revision: 7 }
- Signal { name: "contentSizeChanged" }
- Signal {
- name: "colorChanged"
- Parameter { name: "color"; type: "QColor" }
- }
- Signal {
- name: "selectionColorChanged"
- Parameter { name: "color"; type: "QColor" }
- }
- Signal {
- name: "selectedTextColorChanged"
- Parameter { name: "color"; type: "QColor" }
- }
- Signal {
- name: "fontChanged"
- Parameter { name: "font"; type: "QFont" }
- }
- Signal {
- name: "horizontalAlignmentChanged"
- Parameter { name: "alignment"; type: "QQuickTextEdit::HAlignment" }
- }
- Signal {
- name: "verticalAlignmentChanged"
- Parameter { name: "alignment"; type: "QQuickTextEdit::VAlignment" }
- }
- Signal {
- name: "textFormatChanged"
- Parameter { name: "textFormat"; type: "QQuickTextEdit::TextFormat" }
- }
- Signal {
- name: "readOnlyChanged"
- Parameter { name: "isReadOnly"; type: "bool" }
- }
- Signal {
- name: "cursorVisibleChanged"
- Parameter { name: "isCursorVisible"; type: "bool" }
- }
- Signal {
- name: "overwriteModeChanged"
- Parameter { name: "overwriteMode"; type: "bool" }
- }
- Signal {
- name: "activeFocusOnPressChanged"
- Parameter { name: "activeFocusOnPressed"; type: "bool" }
- }
- Signal {
- name: "persistentSelectionChanged"
- Parameter { name: "isPersistentSelection"; type: "bool" }
- }
- Signal {
- name: "textMarginChanged"
- Parameter { name: "textMargin"; type: "double" }
- }
- Signal {
- name: "selectByKeyboardChanged"
- revision: 1
- Parameter { name: "selectByKeyboard"; type: "bool" }
- }
- Signal {
- name: "selectByMouseChanged"
- Parameter { name: "selectByMouse"; type: "bool" }
- }
- Signal {
- name: "mouseSelectionModeChanged"
- Parameter { name: "mode"; type: "QQuickTextEdit::SelectionMode" }
- }
- Signal {
- name: "linkActivated"
- Parameter { name: "link"; type: "string" }
- }
- Signal {
- name: "linkHovered"
- revision: 2
- Parameter { name: "link"; type: "string" }
- }
- Signal { name: "editingFinished"; revision: 6 }
- Signal { name: "paddingChanged"; revision: 6 }
- Signal { name: "topPaddingChanged"; revision: 6 }
- Signal { name: "leftPaddingChanged"; revision: 6 }
- Signal { name: "rightPaddingChanged"; revision: 6 }
- Signal { name: "bottomPaddingChanged"; revision: 6 }
- Signal {
- name: "tabStopDistanceChanged"
- revision: 10
- Parameter { name: "distance"; type: "double" }
- }
- Method { name: "selectAll" }
- Method { name: "selectWord" }
- Method {
- name: "select"
- Parameter { name: "start"; type: "int" }
- Parameter { name: "end"; type: "int" }
- }
- Method { name: "deselect" }
- Method {
- name: "isRightToLeft"
- type: "bool"
- Parameter { name: "start"; type: "int" }
- Parameter { name: "end"; type: "int" }
- }
- Method { name: "cut" }
- Method { name: "copy" }
- Method { name: "paste" }
- Method { name: "undo" }
- Method { name: "redo" }
- Method {
- name: "insert"
- Parameter { name: "position"; type: "int" }
- Parameter { name: "text"; type: "string" }
- }
- Method {
- name: "remove"
- Parameter { name: "start"; type: "int" }
- Parameter { name: "end"; type: "int" }
- }
- Method {
- name: "append"
- revision: 2
- Parameter { name: "text"; type: "string" }
- }
- Method { name: "clear"; revision: 7 }
- Method {
- name: "inputMethodQuery"
- revision: 4
- type: "QVariant"
- Parameter { name: "query"; type: "Qt::InputMethodQuery" }
- Parameter { name: "argument"; type: "QVariant" }
- }
- Method {
- name: "positionToRectangle"
- type: "QRectF"
- Parameter { type: "int" }
- }
- Method {
- name: "positionAt"
- type: "int"
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- }
- Method {
- name: "moveCursorSelection"
- Parameter { name: "pos"; type: "int" }
- }
- Method {
- name: "moveCursorSelection"
- Parameter { name: "pos"; type: "int" }
- Parameter { name: "mode"; type: "SelectionMode" }
- }
- Method {
- name: "getText"
- type: "string"
- Parameter { name: "start"; type: "int" }
- Parameter { name: "end"; type: "int" }
- }
- Method {
- name: "getFormattedText"
- type: "string"
- Parameter { name: "start"; type: "int" }
- Parameter { name: "end"; type: "int" }
- }
- Method {
- name: "linkAt"
- revision: 3
- type: "string"
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- }
- }
- Component {
- name: "QQuickTextInput"
- defaultProperty: "data"
- prototype: "QQuickImplicitSizeItem"
- exports: [
- "QtQuick/TextInput 2.0",
- "QtQuick/TextInput 2.1",
- "QtQuick/TextInput 2.11",
- "QtQuick/TextInput 2.2",
- "QtQuick/TextInput 2.4",
- "QtQuick/TextInput 2.6",
- "QtQuick/TextInput 2.7",
- "QtQuick/TextInput 2.9"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 2, 4, 6, 7, 9]
- Enum {
- name: "EchoMode"
- values: {
- "Normal": 0,
- "NoEcho": 1,
- "Password": 2,
- "PasswordEchoOnEdit": 3
- }
- }
- Enum {
- name: "HAlignment"
- values: {
- "AlignLeft": 1,
- "AlignRight": 2,
- "AlignHCenter": 4
- }
- }
- Enum {
- name: "VAlignment"
- values: {
- "AlignTop": 32,
- "AlignBottom": 64,
- "AlignVCenter": 128
- }
- }
- Enum {
- name: "WrapMode"
- values: {
- "NoWrap": 0,
- "WordWrap": 1,
- "WrapAnywhere": 3,
- "WrapAtWordBoundaryOrAnywhere": 4,
- "Wrap": 4
- }
- }
- Enum {
- name: "SelectionMode"
- values: {
- "SelectCharacters": 0,
- "SelectWords": 1
- }
- }
- Enum {
- name: "CursorPosition"
- values: {
- "CursorBetweenCharacters": 0,
- "CursorOnCharacter": 1
- }
- }
- Enum {
- name: "RenderType"
- values: {
- "QtRendering": 0,
- "NativeRendering": 1
- }
- }
- Property { name: "text"; type: "string" }
- Property { name: "length"; type: "int"; isReadonly: true }
- Property { name: "color"; type: "QColor" }
- Property { name: "selectionColor"; type: "QColor" }
- Property { name: "selectedTextColor"; type: "QColor" }
- Property { name: "font"; type: "QFont" }
- Property { name: "horizontalAlignment"; type: "HAlignment" }
- Property { name: "effectiveHorizontalAlignment"; type: "HAlignment"; isReadonly: true }
- Property { name: "verticalAlignment"; type: "VAlignment" }
- Property { name: "wrapMode"; type: "WrapMode" }
- Property { name: "readOnly"; type: "bool" }
- Property { name: "cursorVisible"; type: "bool" }
- Property { name: "cursorPosition"; type: "int" }
- Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true }
- Property { name: "cursorDelegate"; type: "QQmlComponent"; isPointer: true }
- Property { name: "overwriteMode"; type: "bool" }
- Property { name: "selectionStart"; type: "int"; isReadonly: true }
- Property { name: "selectionEnd"; type: "int"; isReadonly: true }
- Property { name: "selectedText"; type: "string"; isReadonly: true }
- Property { name: "maximumLength"; type: "int" }
- Property { name: "validator"; type: "QValidator"; isPointer: true }
- Property { name: "inputMask"; type: "string" }
- Property { name: "inputMethodHints"; type: "Qt::InputMethodHints" }
- Property { name: "acceptableInput"; type: "bool"; isReadonly: true }
- Property { name: "echoMode"; type: "EchoMode" }
- Property { name: "activeFocusOnPress"; type: "bool" }
- Property { name: "passwordCharacter"; type: "string" }
- Property { name: "passwordMaskDelay"; revision: 4; type: "int" }
- Property { name: "displayText"; type: "string"; isReadonly: true }
- Property { name: "preeditText"; revision: 7; type: "string"; isReadonly: true }
- Property { name: "autoScroll"; type: "bool" }
- Property { name: "selectByMouse"; type: "bool" }
- Property { name: "mouseSelectionMode"; type: "SelectionMode" }
- Property { name: "persistentSelection"; type: "bool" }
- Property { name: "canPaste"; type: "bool"; isReadonly: true }
- Property { name: "canUndo"; type: "bool"; isReadonly: true }
- Property { name: "canRedo"; type: "bool"; isReadonly: true }
- Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true }
- Property { name: "contentWidth"; type: "double"; isReadonly: true }
- Property { name: "contentHeight"; type: "double"; isReadonly: true }
- Property { name: "renderType"; type: "RenderType" }
- Property { name: "padding"; revision: 6; type: "double" }
- Property { name: "topPadding"; revision: 6; type: "double" }
- Property { name: "leftPadding"; revision: 6; type: "double" }
- Property { name: "rightPadding"; revision: 6; type: "double" }
- Property { name: "bottomPadding"; revision: 6; type: "double" }
- Signal { name: "accepted" }
- Signal { name: "editingFinished"; revision: 2 }
- Signal { name: "textEdited"; revision: 9 }
- Signal {
- name: "fontChanged"
- Parameter { name: "font"; type: "QFont" }
- }
- Signal {
- name: "horizontalAlignmentChanged"
- Parameter { name: "alignment"; type: "QQuickTextInput::HAlignment" }
- }
- Signal {
- name: "verticalAlignmentChanged"
- Parameter { name: "alignment"; type: "QQuickTextInput::VAlignment" }
- }
- Signal {
- name: "readOnlyChanged"
- Parameter { name: "isReadOnly"; type: "bool" }
- }
- Signal {
- name: "cursorVisibleChanged"
- Parameter { name: "isCursorVisible"; type: "bool" }
- }
- Signal {
- name: "overwriteModeChanged"
- Parameter { name: "overwriteMode"; type: "bool" }
- }
- Signal {
- name: "maximumLengthChanged"
- Parameter { name: "maximumLength"; type: "int" }
- }
- Signal {
- name: "inputMaskChanged"
- Parameter { name: "inputMask"; type: "string" }
- }
- Signal {
- name: "echoModeChanged"
- Parameter { name: "echoMode"; type: "QQuickTextInput::EchoMode" }
- }
- Signal {
- name: "passwordMaskDelayChanged"
- revision: 4
- Parameter { name: "delay"; type: "int" }
- }
- Signal { name: "preeditTextChanged"; revision: 7 }
- Signal {
- name: "activeFocusOnPressChanged"
- Parameter { name: "activeFocusOnPress"; type: "bool" }
- }
- Signal {
- name: "autoScrollChanged"
- Parameter { name: "autoScroll"; type: "bool" }
- }
- Signal {
- name: "selectByMouseChanged"
- Parameter { name: "selectByMouse"; type: "bool" }
- }
- Signal {
- name: "mouseSelectionModeChanged"
- Parameter { name: "mode"; type: "QQuickTextInput::SelectionMode" }
- }
- Signal { name: "contentSizeChanged" }
- Signal { name: "paddingChanged"; revision: 6 }
- Signal { name: "topPaddingChanged"; revision: 6 }
- Signal { name: "leftPaddingChanged"; revision: 6 }
- Signal { name: "rightPaddingChanged"; revision: 6 }
- Signal { name: "bottomPaddingChanged"; revision: 6 }
- Method { name: "selectAll" }
- Method { name: "selectWord" }
- Method {
- name: "select"
- Parameter { name: "start"; type: "int" }
- Parameter { name: "end"; type: "int" }
- }
- Method { name: "deselect" }
- Method {
- name: "isRightToLeft"
- type: "bool"
- Parameter { name: "start"; type: "int" }
- Parameter { name: "end"; type: "int" }
- }
- Method { name: "cut" }
- Method { name: "copy" }
- Method { name: "paste" }
- Method { name: "undo" }
- Method { name: "redo" }
- Method {
- name: "insert"
- Parameter { name: "position"; type: "int" }
- Parameter { name: "text"; type: "string" }
- }
- Method {
- name: "remove"
- Parameter { name: "start"; type: "int" }
- Parameter { name: "end"; type: "int" }
- }
- Method {
- name: "ensureVisible"
- revision: 4
- Parameter { name: "position"; type: "int" }
- }
- Method { name: "clear"; revision: 7 }
- Method {
- name: "positionAt"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "positionToRectangle"
- type: "QRectF"
- Parameter { name: "pos"; type: "int" }
- }
- Method {
- name: "moveCursorSelection"
- Parameter { name: "pos"; type: "int" }
- }
- Method {
- name: "moveCursorSelection"
- Parameter { name: "pos"; type: "int" }
- Parameter { name: "mode"; type: "SelectionMode" }
- }
- Method {
- name: "inputMethodQuery"
- revision: 4
- type: "QVariant"
- Parameter { name: "query"; type: "Qt::InputMethodQuery" }
- Parameter { name: "argument"; type: "QVariant" }
- }
- Method {
- name: "getText"
- type: "string"
- Parameter { name: "start"; type: "int" }
- Parameter { name: "end"; type: "int" }
- }
- }
- Component {
- name: "QQuickTextLine"
- prototype: "QObject"
- Property { name: "number"; type: "int"; isReadonly: true }
- Property { name: "width"; type: "double" }
- Property { name: "height"; type: "double" }
- Property { name: "x"; type: "double" }
- Property { name: "y"; type: "double" }
- }
- Component {
- name: "QQuickTextMetrics"
- prototype: "QObject"
- exports: ["QtQuick/TextMetrics 2.4"]
- exportMetaObjectRevisions: [4]
- Property { name: "font"; type: "QFont" }
- Property { name: "text"; type: "string" }
- Property { name: "advanceWidth"; type: "double"; isReadonly: true }
- Property { name: "boundingRect"; type: "QRectF"; isReadonly: true }
- Property { name: "width"; type: "double"; isReadonly: true }
- Property { name: "height"; type: "double"; isReadonly: true }
- Property { name: "tightBoundingRect"; type: "QRectF"; isReadonly: true }
- Property { name: "elidedText"; type: "string"; isReadonly: true }
- Property { name: "elide"; type: "Qt::TextElideMode" }
- Property { name: "elideWidth"; type: "double" }
- Signal { name: "metricsChanged" }
- }
- Component {
- name: "QQuickTouchPoint"
- prototype: "QObject"
- exports: ["QtQuick/TouchPoint 2.0", "QtQuick/TouchPoint 2.9"]
- exportMetaObjectRevisions: [0, 9]
- Property { name: "pointId"; type: "int"; isReadonly: true }
- Property { name: "uniqueId"; revision: 9; type: "QPointingDeviceUniqueId"; isReadonly: true }
- Property { name: "pressed"; type: "bool"; isReadonly: true }
- Property { name: "x"; type: "double"; isReadonly: true }
- Property { name: "y"; type: "double"; isReadonly: true }
- Property { name: "ellipseDiameters"; revision: 9; type: "QSizeF"; isReadonly: true }
- Property { name: "pressure"; type: "double"; isReadonly: true }
- Property { name: "rotation"; revision: 9; type: "double"; isReadonly: true }
- Property { name: "velocity"; type: "QVector2D"; isReadonly: true }
- Property { name: "area"; type: "QRectF"; isReadonly: true }
- Property { name: "startX"; type: "double"; isReadonly: true }
- Property { name: "startY"; type: "double"; isReadonly: true }
- Property { name: "previousX"; type: "double"; isReadonly: true }
- Property { name: "previousY"; type: "double"; isReadonly: true }
- Property { name: "sceneX"; type: "double"; isReadonly: true }
- Property { name: "sceneY"; type: "double"; isReadonly: true }
- Signal { name: "uniqueIdChanged"; revision: 9 }
- Signal { name: "ellipseDiametersChanged"; revision: 9 }
- Signal { name: "rotationChanged"; revision: 9 }
- }
- Component { name: "QQuickTransform"; prototype: "QObject" }
- Component {
- name: "QQuickTransition"
- defaultProperty: "animations"
- prototype: "QObject"
- exports: ["QtQuick/Transition 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "from"; type: "string" }
- Property { name: "to"; type: "string" }
- Property { name: "reversible"; type: "bool" }
- Property { name: "running"; type: "bool"; isReadonly: true }
- Property { name: "animations"; type: "QQuickAbstractAnimation"; isList: true; isReadonly: true }
- Property { name: "enabled"; type: "bool" }
- }
- Component {
- name: "QQuickTranslate"
- prototype: "QQuickTransform"
- exports: ["QtQuick/Translate 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "x"; type: "double" }
- Property { name: "y"; type: "double" }
- }
- Component {
- name: "QQuickUniformAnimator"
- prototype: "QQuickAnimator"
- exports: [
- "QtQuick/UniformAnimator 2.12",
- "QtQuick/UniformAnimator 2.2"
- ]
- exportMetaObjectRevisions: [12, 2]
- Property { name: "uniform"; type: "string" }
- Signal {
- name: "uniformChanged"
- Parameter { type: "string" }
- }
- }
- Component {
- name: "QQuickVector3dAnimation"
- prototype: "QQuickPropertyAnimation"
- exports: [
- "QtQuick/Vector3dAnimation 2.0",
- "QtQuick/Vector3dAnimation 2.12"
- ]
- exportMetaObjectRevisions: [0, 12]
- Property { name: "from"; type: "QVector3D" }
- Property { name: "to"; type: "QVector3D" }
- }
- Component {
- name: "QQuickViewSection"
- prototype: "QObject"
- exports: ["QtQuick/ViewSection 2.0"]
- exportMetaObjectRevisions: [0]
- Enum {
- name: "SectionCriteria"
- values: {
- "FullString": 0,
- "FirstCharacter": 1
- }
- }
- Enum {
- name: "LabelPositioning"
- values: {
- "InlineLabels": 1,
- "CurrentLabelAtStart": 2,
- "NextLabelAtEnd": 4
- }
- }
- Property { name: "property"; type: "string" }
- Property { name: "criteria"; type: "SectionCriteria" }
- Property { name: "delegate"; type: "QQmlComponent"; isPointer: true }
- Property { name: "labelPositioning"; type: "int" }
- Signal { name: "sectionsChanged" }
- }
- Component {
- name: "QQuickViewTransitionAttached"
- prototype: "QObject"
- exports: ["QtQuick/ViewTransition 2.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Property { name: "index"; type: "int"; isReadonly: true }
- Property { name: "item"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "destination"; type: "QPointF"; isReadonly: true }
- Property { name: "targetIndexes"; type: "QList<int>"; isReadonly: true }
- Property { name: "targetItems"; type: "QObject"; isList: true; isReadonly: true }
- }
- Component {
- name: "QQuickWheelEvent"
- prototype: "QObject"
- Property { name: "x"; type: "double"; isReadonly: true }
- Property { name: "y"; type: "double"; isReadonly: true }
- Property { name: "angleDelta"; type: "QPoint"; isReadonly: true }
- Property { name: "pixelDelta"; type: "QPoint"; isReadonly: true }
- Property { name: "buttons"; type: "int"; isReadonly: true }
- Property { name: "modifiers"; type: "int"; isReadonly: true }
- Property { name: "inverted"; type: "bool"; isReadonly: true }
- Property { name: "accepted"; type: "bool" }
- }
- Component {
- name: "QQuickWheelHandler"
- prototype: "QQuickSinglePointHandler"
- exports: ["QtQuick/WheelHandler 2.14"]
- exportMetaObjectRevisions: [14]
- Property { name: "orientation"; type: "Qt::Orientation" }
- Property { name: "invertible"; type: "bool" }
- Property { name: "activeTimeout"; type: "double" }
- Property { name: "rotation"; type: "double" }
- Property { name: "rotationScale"; type: "double" }
- Property { name: "property"; type: "string" }
- Property { name: "targetScaleMultiplier"; type: "double" }
- Property { name: "targetTransformAroundCursor"; type: "bool" }
- Signal {
- name: "wheel"
- Parameter { name: "event"; type: "QQuickPointerScrollEvent"; isPointer: true }
- }
- }
- Component {
- name: "QQuickWorkerScript"
- prototype: "QObject"
- exports: ["QtQuick/WorkerScript 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "source"; type: "QUrl" }
- Signal {
- name: "message"
- Parameter { name: "messageObject"; type: "QJSValue" }
- }
- Method {
- name: "sendMessage"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- }
- Component {
- name: "QQuickXAnimator"
- prototype: "QQuickAnimator"
- exports: ["QtQuick/XAnimator 2.12", "QtQuick/XAnimator 2.2"]
- exportMetaObjectRevisions: [12, 2]
- }
- Component {
- name: "QQuickYAnimator"
- prototype: "QQuickAnimator"
- exports: ["QtQuick/YAnimator 2.12", "QtQuick/YAnimator 2.2"]
- exportMetaObjectRevisions: [12, 2]
- }
- Component {
- name: "QRegExpValidator"
- prototype: "QValidator"
- exports: ["QtQuick/RegExpValidator 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "regExp"; type: "QRegExp" }
- Signal {
- name: "regExpChanged"
- Parameter { name: "regExp"; type: "QRegExp" }
- }
- }
- Component {
- name: "QRegularExpressionValidator"
- prototype: "QValidator"
- exports: ["QtQuick/RegularExpressionValidator 2.14"]
- exportMetaObjectRevisions: [0]
- Property { name: "regularExpression"; type: "QRegularExpression" }
- Signal {
- name: "regularExpressionChanged"
- Parameter { name: "re"; type: "QRegularExpression" }
- }
- Method {
- name: "setRegularExpression"
- Parameter { name: "re"; type: "QRegularExpression" }
- }
- }
- Component {
- name: "QValidator"
- prototype: "QObject"
- Enum {
- name: "State"
- values: {
- "Invalid": 0,
- "Intermediate": 1,
- "Acceptable": 2
- }
- }
- Signal { name: "changed" }
- }
-}
diff --git a/src/imports/qtquick2/qtquick2.pro b/src/imports/qtquick2/qtquick2.pro
index 8543049ead..da1772d415 100644
--- a/src/imports/qtquick2/qtquick2.pro
+++ b/src/imports/qtquick2/qtquick2.pro
@@ -1,7 +1,7 @@
CXX_MODULE = qml
TARGET = qtquick2plugin
TARGETPATH = QtQuick.2
-IMPORT_VERSION = 2.$$QT_MINOR_VERSION
+IMPORT_VERSION = 2.15
SOURCES += \
plugin.cpp
diff --git a/src/imports/settings/plugin.cpp b/src/imports/settings/plugin.cpp
index db941d9845..24ff43ea6f 100644
--- a/src/imports/settings/plugin.cpp
+++ b/src/imports/settings/plugin.cpp
@@ -44,19 +44,13 @@
QT_BEGIN_NAMESPACE
-class QmlSettingsPlugin : public QQmlExtensionPlugin
+class QmlSettingsPlugin : public QQmlEngineExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
+ Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid)
public:
- QmlSettingsPlugin(QObject *parent = nullptr) : QQmlExtensionPlugin(parent) { }
- void registerTypes(const char *uri) override
- {
- Q_ASSERT(QByteArray(uri) == QByteArray("Qt.labs.settings"));
- qmlRegisterTypesAndRevisions<QQmlSettings>(uri, 1);
- qmlRegisterModule(uri, 1, 1); // QTBUG-73239
- }
+ QmlSettingsPlugin(QObject *parent = nullptr) : QQmlEngineExtensionPlugin(parent) {}
};
QT_END_NAMESPACE
diff --git a/src/imports/settings/plugins.qmltypes b/src/imports/settings/plugins.qmltypes
deleted file mode 100644
index bbc5c1cf8f..0000000000
--- a/src/imports/settings/plugins.qmltypes
+++ /dev/null
@@ -1,36 +0,0 @@
-import QtQuick.tooling 1.2
-
-// This file describes the plugin-supplied types contained in the library.
-// It is used for QML tooling purposes only.
-//
-// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable -dependencies dependencies.json Qt.labs.settings 1.1'
-
-Module {
- dependencies: []
- Component {
- name: "QQmlSettings"
- prototype: "QObject"
- exports: ["Qt.labs.settings/Settings 1.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "category"; type: "string" }
- Property { name: "fileName"; type: "string" }
- Method {
- name: "value"
- type: "QVariant"
- Parameter { name: "key"; type: "string" }
- Parameter { name: "defaultValue"; type: "QVariant" }
- }
- Method {
- name: "value"
- type: "QVariant"
- Parameter { name: "key"; type: "string" }
- }
- Method {
- name: "setValue"
- Parameter { name: "key"; type: "string" }
- Parameter { name: "value"; type: "QVariant" }
- }
- Method { name: "sync" }
- }
-}
diff --git a/src/imports/settings/settings.pro b/src/imports/settings/settings.pro
index 816a6a9fef..d8062a2e55 100644
--- a/src/imports/settings/settings.pro
+++ b/src/imports/settings/settings.pro
@@ -12,4 +12,6 @@ SOURCES += \
plugin.cpp \
qqmlsettings.cpp
+CONFIG += qmltypes install_qmltypes
+
load(qml_plugin)
diff --git a/src/imports/shapes/plugin.cpp b/src/imports/shapes/plugin.cpp
index 0b6191d5bb..3855a93fc7 100644
--- a/src/imports/shapes/plugin.cpp
+++ b/src/imports/shapes/plugin.cpp
@@ -56,12 +56,8 @@ public:
void registerTypes(const char *uri) override
{
- Q_ASSERT(QByteArray(uri) == QByteArray("QtQuick.Shapes"));
- qmlRegisterTypesAndRevisions<QQuickShape, QQuickShapePath, QQuickShapeGradient,
- QQuickShapeLinearGradient, QQuickShapeRadialGradient,
- QQuickShapeConicalGradient>(uri, 1);
-
- qmlRegisterModule(uri, 1, 15);
+ Q_UNUSED(uri);
+ QQuickShapesModule::defineModule();
}
};
diff --git a/src/imports/shapes/plugins.qmltypes b/src/imports/shapes/plugins.qmltypes
deleted file mode 100644
index fed68b5137..0000000000
--- a/src/imports/shapes/plugins.qmltypes
+++ /dev/null
@@ -1,172 +0,0 @@
-import QtQuick.tooling 1.2
-
-// This file describes the plugin-supplied types contained in the library.
-// It is used for QML tooling purposes only.
-//
-// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable QtQuick.Shapes 1.14'
-
-Module {
- dependencies: ["QtQuick 2.0"]
- Component {
- name: "QQuickShape"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick.Shapes/Shape 1.0",
- "QtQuick.Shapes/Shape 1.1",
- "QtQuick.Shapes/Shape 1.11",
- "QtQuick.Shapes/Shape 1.4",
- "QtQuick.Shapes/Shape 1.7"
- ]
- exportMetaObjectRevisions: [0, 1, 11, 4, 7]
- Enum {
- name: "RendererType"
- values: {
- "UnknownRenderer": 0,
- "GeometryRenderer": 1,
- "NvprRenderer": 2,
- "SoftwareRenderer": 3
- }
- }
- Enum {
- name: "Status"
- values: {
- "Null": 0,
- "Ready": 1,
- "Processing": 2
- }
- }
- Enum {
- name: "ContainsMode"
- values: {
- "BoundingRectContains": 0,
- "FillContains": 1
- }
- }
- Property { name: "rendererType"; type: "RendererType"; isReadonly: true }
- Property { name: "asynchronous"; type: "bool" }
- Property { name: "vendorExtensionsEnabled"; type: "bool" }
- Property { name: "status"; type: "Status"; isReadonly: true }
- Property { name: "containsMode"; revision: 11; type: "ContainsMode" }
- Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
- Signal { name: "rendererChanged" }
- Signal { name: "containsModeChanged"; revision: 11 }
- }
- Component {
- name: "QQuickShapeConicalGradient"
- defaultProperty: "stops"
- prototype: "QQuickShapeGradient"
- exports: [
- "QtQuick.Shapes/ConicalGradient 1.0",
- "QtQuick.Shapes/ConicalGradient 1.12"
- ]
- exportMetaObjectRevisions: [0, 12]
- Property { name: "centerX"; type: "double" }
- Property { name: "centerY"; type: "double" }
- Property { name: "angle"; type: "double" }
- }
- Component {
- name: "QQuickShapeGradient"
- defaultProperty: "stops"
- prototype: "QQuickGradient"
- exports: [
- "QtQuick.Shapes/ShapeGradient 1.0",
- "QtQuick.Shapes/ShapeGradient 1.12"
- ]
- isCreatable: false
- exportMetaObjectRevisions: [0, 12]
- Enum {
- name: "SpreadMode"
- values: {
- "PadSpread": 0,
- "RepeatSpread": 1,
- "ReflectSpread": 2
- }
- }
- Property { name: "spread"; type: "SpreadMode" }
- }
- Component {
- name: "QQuickShapeLinearGradient"
- defaultProperty: "stops"
- prototype: "QQuickShapeGradient"
- exports: [
- "QtQuick.Shapes/LinearGradient 1.0",
- "QtQuick.Shapes/LinearGradient 1.12"
- ]
- exportMetaObjectRevisions: [0, 12]
- Property { name: "x1"; type: "double" }
- Property { name: "y1"; type: "double" }
- Property { name: "x2"; type: "double" }
- Property { name: "y2"; type: "double" }
- }
- Component {
- name: "QQuickShapePath"
- defaultProperty: "pathElements"
- prototype: "QQuickPath"
- exports: [
- "QtQuick.Shapes/ShapePath 1.0",
- "QtQuick.Shapes/ShapePath 1.14"
- ]
- exportMetaObjectRevisions: [0, 14]
- Enum {
- name: "FillRule"
- values: {
- "OddEvenFill": 0,
- "WindingFill": 1
- }
- }
- Enum {
- name: "JoinStyle"
- values: {
- "MiterJoin": 0,
- "BevelJoin": 64,
- "RoundJoin": 128
- }
- }
- Enum {
- name: "CapStyle"
- values: {
- "FlatCap": 0,
- "SquareCap": 16,
- "RoundCap": 32
- }
- }
- Enum {
- name: "StrokeStyle"
- values: {
- "SolidLine": 1,
- "DashLine": 2
- }
- }
- Property { name: "strokeColor"; type: "QColor" }
- Property { name: "strokeWidth"; type: "double" }
- Property { name: "fillColor"; type: "QColor" }
- Property { name: "fillRule"; type: "FillRule" }
- Property { name: "joinStyle"; type: "JoinStyle" }
- Property { name: "miterLimit"; type: "int" }
- Property { name: "capStyle"; type: "CapStyle" }
- Property { name: "strokeStyle"; type: "StrokeStyle" }
- Property { name: "dashOffset"; type: "double" }
- Property { name: "dashPattern"; type: "QVector<qreal>" }
- Property { name: "fillGradient"; type: "QQuickShapeGradient"; isPointer: true }
- Property { name: "scale"; revision: 14; type: "QSizeF" }
- Signal { name: "shapePathChanged" }
- }
- Component {
- name: "QQuickShapeRadialGradient"
- defaultProperty: "stops"
- prototype: "QQuickShapeGradient"
- exports: [
- "QtQuick.Shapes/RadialGradient 1.0",
- "QtQuick.Shapes/RadialGradient 1.12"
- ]
- exportMetaObjectRevisions: [0, 12]
- Property { name: "centerX"; type: "double" }
- Property { name: "centerY"; type: "double" }
- Property { name: "centerRadius"; type: "double" }
- Property { name: "focalX"; type: "double" }
- Property { name: "focalY"; type: "double" }
- Property { name: "focalRadius"; type: "double" }
- }
-}
diff --git a/src/imports/shapes/shapes.pro b/src/imports/shapes/shapes.pro
index 857fcd7564..bb02dbf08f 100644
--- a/src/imports/shapes/shapes.pro
+++ b/src/imports/shapes/shapes.pro
@@ -1,7 +1,7 @@
CXX_MODULE = qml
TARGET = qmlshapesplugin
TARGETPATH = QtQuick/Shapes
-IMPORT_VERSION = 1.$$QT_MINOR_VERSION
+IMPORT_VERSION = 1.15
QT = core gui-private qml quick-private quickshapes-private
diff --git a/src/imports/sharedimage/plugin.cpp b/src/imports/sharedimage/plugin.cpp
index b75e38e303..237fa64c61 100644
--- a/src/imports/sharedimage/plugin.cpp
+++ b/src/imports/sharedimage/plugin.cpp
@@ -101,18 +101,12 @@
QT_BEGIN_NAMESPACE
-class QtQuickSharedImagePlugin : public QQmlExtensionPlugin
+class QtQuickSharedImagePlugin : public QQmlEngineExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
+ Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid)
public:
- QtQuickSharedImagePlugin(QObject *parent = nullptr) : QQmlExtensionPlugin(parent) {}
-
- void registerTypes(const char *uri) override
- {
- Q_ASSERT(uri == QStringLiteral("Qt.labs.sharedimage"));
- qmlRegisterModule(uri, 1, 0);
- }
+ QtQuickSharedImagePlugin(QObject *parent = nullptr) : QQmlEngineExtensionPlugin(parent) {}
void initializeEngine(QQmlEngine *engine, const char *uri) override
{
diff --git a/src/imports/sharedimage/plugins.qmltypes b/src/imports/sharedimage/plugins.qmltypes
deleted file mode 100644
index 29639e7697..0000000000
--- a/src/imports/sharedimage/plugins.qmltypes
+++ /dev/null
@@ -1,11 +0,0 @@
-import QtQuick.tooling 1.2
-
-// This file describes the plugin-supplied types contained in the library.
-// It is used for QML tooling purposes only.
-//
-// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable Qt.labs.sharedimage 1.0'
-
-Module {
- dependencies: ["QtQuick 2.0"]
-}
diff --git a/src/imports/sharedimage/sharedimage.pro b/src/imports/sharedimage/sharedimage.pro
index 46a6a56ca5..8ab4f10405 100644
--- a/src/imports/sharedimage/sharedimage.pro
+++ b/src/imports/sharedimage/sharedimage.pro
@@ -14,4 +14,5 @@ HEADERS += \
sharedimageprovider.h \
qsharedimageloader_p.h
+CONFIG += qmltypes install_qmltypes
load(qml_plugin)
diff --git a/src/imports/statemachine/plugin.cpp b/src/imports/statemachine/plugin.cpp
index 993e91afea..4c991994f3 100644
--- a/src/imports/statemachine/plugin.cpp
+++ b/src/imports/statemachine/plugin.cpp
@@ -50,23 +50,13 @@
QT_BEGIN_NAMESPACE
-class QtQmlStateMachinePlugin : public QQmlExtensionPlugin
+class QtQmlStateMachinePlugin : public QQmlEngineExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
+ Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid)
public:
- QtQmlStateMachinePlugin(QObject *parent = nullptr) : QQmlExtensionPlugin(parent) { }
- void registerTypes(const char *uri) override
- {
- qmlRegisterTypesAndRevisions<
- State, StateMachine, FinalState, TimeoutTransition, SignalTransition,
- QHistoryStateForeign, QStateForeign, QAbstractStateForeign, QSignalTransitionForeign
- >(uri, 1);
- qmlProtectModule(uri, 1);
-
- qmlRegisterModule(uri, 1, 15);
- }
+ QtQmlStateMachinePlugin(QObject *parent = nullptr) : QQmlEngineExtensionPlugin(parent) { }
};
QT_END_NAMESPACE
diff --git a/src/imports/statemachine/plugins.qmltypes b/src/imports/statemachine/plugins.qmltypes
deleted file mode 100644
index 206159f057..0000000000
--- a/src/imports/statemachine/plugins.qmltypes
+++ /dev/null
@@ -1,179 +0,0 @@
-import QtQuick.tooling 1.2
-
-// This file describes the plugin-supplied types contained in the library.
-// It is used for QML tooling purposes only.
-//
-// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQml.StateMachine 1.14'
-
-Module {
- dependencies: []
- Component {
- name: "FinalState"
- defaultProperty: "children"
- prototype: "QFinalState"
- exports: ["QtQml.StateMachine/FinalState 1.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "children"; type: "QObject"; isList: true; isReadonly: true }
- }
- Component {
- name: "QAbstractState"
- prototype: "QObject"
- exports: ["QtQml.StateMachine/QAbstractState 1.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Property { name: "active"; type: "bool"; isReadonly: true }
- Signal { name: "entered" }
- Signal { name: "exited" }
- Signal {
- name: "activeChanged"
- Parameter { name: "active"; type: "bool" }
- }
- }
- Component {
- name: "QAbstractTransition"
- prototype: "QObject"
- Enum {
- name: "TransitionType"
- values: {
- "ExternalTransition": 0,
- "InternalTransition": 1
- }
- }
- Property { name: "sourceState"; type: "QState"; isReadonly: true; isPointer: true }
- Property { name: "targetState"; type: "QAbstractState"; isPointer: true }
- Property { name: "targetStates"; type: "QList<QAbstractState*>" }
- Property { name: "transitionType"; revision: 1; type: "TransitionType" }
- Signal { name: "triggered" }
- }
- Component { name: "QFinalState"; prototype: "QAbstractState" }
- Component {
- name: "QHistoryState"
- prototype: "QAbstractState"
- exports: ["QtQml.StateMachine/HistoryState 1.0"]
- exportMetaObjectRevisions: [0]
- Enum {
- name: "HistoryType"
- values: {
- "ShallowHistory": 0,
- "DeepHistory": 1
- }
- }
- Property { name: "defaultState"; type: "QAbstractState"; isPointer: true }
- Property { name: "defaultTransition"; type: "QAbstractTransition"; isPointer: true }
- Property { name: "historyType"; type: "HistoryType" }
- }
- Component {
- name: "QSignalTransition"
- prototype: "QAbstractTransition"
- exports: ["QtQml.StateMachine/QSignalTransition 1.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Property { name: "senderObject"; type: "QObject"; isPointer: true }
- Property { name: "signal"; type: "QByteArray" }
- }
- Component {
- name: "QState"
- prototype: "QAbstractState"
- exports: ["QtQml.StateMachine/QState 1.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Enum {
- name: "ChildMode"
- values: {
- "ExclusiveStates": 0,
- "ParallelStates": 1
- }
- }
- Enum {
- name: "RestorePolicy"
- values: {
- "DontRestoreProperties": 0,
- "RestoreProperties": 1
- }
- }
- Property { name: "initialState"; type: "QAbstractState"; isPointer: true }
- Property { name: "errorState"; type: "QAbstractState"; isPointer: true }
- Property { name: "childMode"; type: "ChildMode" }
- Signal { name: "finished" }
- Signal { name: "propertiesAssigned" }
- }
- Component {
- name: "QStateMachine"
- prototype: "QState"
- Property { name: "errorString"; type: "string"; isReadonly: true }
- Property { name: "globalRestorePolicy"; type: "QState::RestorePolicy" }
- Property { name: "running"; type: "bool" }
- Property { name: "animated"; type: "bool" }
- Signal { name: "started" }
- Signal { name: "stopped" }
- Signal {
- name: "runningChanged"
- Parameter { name: "running"; type: "bool" }
- }
- Method { name: "start" }
- Method { name: "stop" }
- Method {
- name: "setRunning"
- Parameter { name: "running"; type: "bool" }
- }
- }
- Component {
- name: "QTimer"
- prototype: "QObject"
- Property { name: "singleShot"; type: "bool" }
- Property { name: "interval"; type: "int" }
- Property { name: "remainingTime"; type: "int"; isReadonly: true }
- Property { name: "timerType"; type: "Qt::TimerType" }
- Property { name: "active"; type: "bool"; isReadonly: true }
- Signal { name: "timeout" }
- Method {
- name: "start"
- Parameter { name: "msec"; type: "int" }
- }
- Method { name: "start" }
- Method { name: "stop" }
- }
- Component {
- name: "SignalTransition"
- prototype: "QSignalTransition"
- exports: [
- "QtQml.StateMachine/SignalTransition 1.0",
- "QtQml.StateMachine/SignalTransition 1.1"
- ]
- exportMetaObjectRevisions: [0, 1]
- Property { name: "signal"; type: "QJSValue" }
- Property { name: "guard"; type: "QQmlScriptString" }
- Signal { name: "invokeYourself" }
- Signal { name: "qmlSignalChanged" }
- Method { name: "invoke" }
- }
- Component {
- name: "State"
- defaultProperty: "children"
- prototype: "QState"
- exports: ["QtQml.StateMachine/State 1.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "children"; type: "QObject"; isList: true; isReadonly: true }
- }
- Component {
- name: "StateMachine"
- defaultProperty: "children"
- prototype: "QStateMachine"
- exports: ["QtQml.StateMachine/StateMachine 1.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "children"; type: "QObject"; isList: true; isReadonly: true }
- Property { name: "running"; type: "bool" }
- Signal { name: "qmlRunningChanged" }
- }
- Component {
- name: "TimeoutTransition"
- prototype: "QSignalTransition"
- exports: [
- "QtQml.StateMachine/TimeoutTransition 1.0",
- "QtQml.StateMachine/TimeoutTransition 1.1"
- ]
- exportMetaObjectRevisions: [0, 1]
- Property { name: "timeout"; type: "int" }
- }
-}
diff --git a/src/imports/statemachine/statemachine.pro b/src/imports/statemachine/statemachine.pro
index 7affc768e2..b17ec6140d 100644
--- a/src/imports/statemachine/statemachine.pro
+++ b/src/imports/statemachine/statemachine.pro
@@ -1,7 +1,7 @@
CXX_MODULE = qml
TARGET = qtqmlstatemachine
TARGETPATH = QtQml/StateMachine
-IMPORT_VERSION = 1.$$QT_MINOR_VERSION
+IMPORT_VERSION = 1.15
QT = core-private qml-private
@@ -22,4 +22,6 @@ HEADERS = \
$$PWD/timeouttransition.h \
$$PWD/statemachineforeign.h
+CONFIG += qmltypes install_qmltypes
+
load(qml_plugin)
diff --git a/src/imports/testlib/TestCase.qml b/src/imports/testlib/TestCase.qml
index 6e075d8792..20c5ce6418 100644
--- a/src/imports/testlib/TestCase.qml
+++ b/src/imports/testlib/TestCase.qml
@@ -1417,19 +1417,23 @@ Item {
// Divide dx and dy to have intermediate mouseMove while dragging
// Fractions of dx/dy need be superior to the dragThreshold
// to make the drag works though
- var ddx = Math.round(dx/3)
- if (ddx < (util.dragThreshold + 1))
- ddx = 0
- var ddy = Math.round(dy/3)
- if (ddy < (util.dragThreshold + 1))
- ddy = 0
+ var intermediateDx = Math.round(dx/3)
+ if (Math.abs(intermediateDx) < (util.dragThreshold + 1))
+ intermediateDx = 0
+ var intermediateDy = Math.round(dy/3)
+ if (Math.abs(intermediateDy) < (util.dragThreshold + 1))
+ intermediateDy = 0
mousePress(item, x, y, button, modifiers, delay)
- //trigger dragging
- mouseMove(item, x + util.dragThreshold + 1, y + util.dragThreshold + 1, moveDelay, button)
- if (ddx > 0 || ddy > 0) {
- mouseMove(item, x + ddx, y + ddy, moveDelay, button)
- mouseMove(item, x + 2*ddx, y + 2*ddy, moveDelay, button)
+
+ // Trigger dragging by dragging past the drag threshold, but making sure to only drag
+ // along a certain axis if a distance greater than zero was given for that axis.
+ var dragTriggerXDistance = dx > 0 ? (util.dragThreshold + 1) : 0
+ var dragTriggerYDistance = dy > 0 ? (util.dragThreshold + 1) : 0
+ mouseMove(item, x + dragTriggerXDistance, y + dragTriggerYDistance, moveDelay, button)
+ if (intermediateDx !== 0 || intermediateDy !== 0) {
+ mouseMove(item, x + intermediateDx, y + intermediateDy, moveDelay, button)
+ mouseMove(item, x + 2*intermediateDx, y + 2*intermediateDy, moveDelay, button)
}
mouseMove(item, x + dx, y + dy, moveDelay, button)
mouseRelease(item, x + dx, y + dy, button, modifiers, delay)
diff --git a/src/imports/testlib/main.cpp b/src/imports/testlib/main.cpp
index 86f0dd6dc7..1914c02dd0 100644
--- a/src/imports/testlib/main.cpp
+++ b/src/imports/testlib/main.cpp
@@ -37,11 +37,13 @@
**
****************************************************************************/
+#include "quicktestevent_p.h"
+#include "quicktestutil_p.h"
+
#include <QtQml/qqmlextensionplugin.h>
#include <QtQml/qqml.h>
+#include <QtQuickTest/quicktest.h>
#include <QtQuickTest/private/quicktestresult_p.h>
-#include <QtQuickTest/private/quicktestevent_p.h>
-#include <QtQuickTest/private/quicktestutil_p.h>
#include <QtQuickTest/private/qtestoptions_p.h>
QML_DECLARE_TYPE(QuickTestResult)
@@ -50,21 +52,13 @@ QML_DECLARE_TYPE(QuickTestUtil)
QT_BEGIN_NAMESPACE
-class QTestQmlModule : public QQmlExtensionPlugin
+class QTestQmlModule : public QQmlEngineExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
+ Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid)
public:
- QTestQmlModule(QObject *parent = nullptr) : QQmlExtensionPlugin(parent) { }
- void registerTypes(const char *uri) override
- {
- Q_ASSERT(QLatin1String(uri) == QLatin1String("QtTest"));
- qmlRegisterTypesAndRevisions<QuickTestResult, QuickTestEvent,
- QuickTestUtil, QQuickTouchEventSequence>(uri, 1);
-
- qmlRegisterModule(uri, 1, 15);
- }
+ QTestQmlModule(QObject *parent = nullptr) : QQmlEngineExtensionPlugin(parent) { }
};
QT_END_NAMESPACE
diff --git a/src/imports/testlib/plugins.qmltypes b/src/imports/testlib/plugins.qmltypes
deleted file mode 100644
index 0491079e86..0000000000
--- a/src/imports/testlib/plugins.qmltypes
+++ /dev/null
@@ -1,368 +0,0 @@
-import QtQuick.tooling 1.2
-
-// This file describes the plugin-supplied types contained in the library.
-// It is used for QML tooling purposes only.
-//
-// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable QtTest 1.14'
-
-Module {
- dependencies: ["QtQuick 2.0", "QtQuick.Window 2.0"]
- Component {
- name: "QQuickTouchEventSequence"
- prototype: "QObject"
- Method {
- name: "press"
- type: "QObject*"
- Parameter { name: "touchId"; type: "int" }
- Parameter { name: "item"; type: "QObject"; isPointer: true }
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- }
- Method {
- name: "move"
- type: "QObject*"
- Parameter { name: "touchId"; type: "int" }
- Parameter { name: "item"; type: "QObject"; isPointer: true }
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- }
- Method {
- name: "release"
- type: "QObject*"
- Parameter { name: "touchId"; type: "int" }
- Parameter { name: "item"; type: "QObject"; isPointer: true }
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- }
- Method {
- name: "stationary"
- type: "QObject*"
- Parameter { name: "touchId"; type: "int" }
- }
- Method { name: "commit"; type: "QObject*" }
- }
- Component {
- name: "QuickTestEvent"
- prototype: "QObject"
- exports: ["QtTest/TestEvent 1.0", "QtTest/TestEvent 1.2"]
- exportMetaObjectRevisions: [0, 2]
- Property { name: "defaultMouseDelay"; type: "int"; isReadonly: true }
- Method {
- name: "keyPress"
- type: "bool"
- Parameter { name: "key"; type: "int" }
- Parameter { name: "modifiers"; type: "int" }
- Parameter { name: "delay"; type: "int" }
- }
- Method {
- name: "keyRelease"
- type: "bool"
- Parameter { name: "key"; type: "int" }
- Parameter { name: "modifiers"; type: "int" }
- Parameter { name: "delay"; type: "int" }
- }
- Method {
- name: "keyClick"
- type: "bool"
- Parameter { name: "key"; type: "int" }
- Parameter { name: "modifiers"; type: "int" }
- Parameter { name: "delay"; type: "int" }
- }
- Method {
- name: "keyPressChar"
- type: "bool"
- Parameter { name: "character"; type: "string" }
- Parameter { name: "modifiers"; type: "int" }
- Parameter { name: "delay"; type: "int" }
- }
- Method {
- name: "keyReleaseChar"
- type: "bool"
- Parameter { name: "character"; type: "string" }
- Parameter { name: "modifiers"; type: "int" }
- Parameter { name: "delay"; type: "int" }
- }
- Method {
- name: "keyClickChar"
- type: "bool"
- Parameter { name: "character"; type: "string" }
- Parameter { name: "modifiers"; type: "int" }
- Parameter { name: "delay"; type: "int" }
- }
- Method {
- name: "keySequence"
- revision: 2
- type: "bool"
- Parameter { name: "keySequence"; type: "QVariant" }
- }
- Method {
- name: "mousePress"
- type: "bool"
- Parameter { name: "item"; type: "QObject"; isPointer: true }
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- Parameter { name: "button"; type: "int" }
- Parameter { name: "modifiers"; type: "int" }
- Parameter { name: "delay"; type: "int" }
- }
- Method {
- name: "mouseRelease"
- type: "bool"
- Parameter { name: "item"; type: "QObject"; isPointer: true }
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- Parameter { name: "button"; type: "int" }
- Parameter { name: "modifiers"; type: "int" }
- Parameter { name: "delay"; type: "int" }
- }
- Method {
- name: "mouseClick"
- type: "bool"
- Parameter { name: "item"; type: "QObject"; isPointer: true }
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- Parameter { name: "button"; type: "int" }
- Parameter { name: "modifiers"; type: "int" }
- Parameter { name: "delay"; type: "int" }
- }
- Method {
- name: "mouseDoubleClick"
- type: "bool"
- Parameter { name: "item"; type: "QObject"; isPointer: true }
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- Parameter { name: "button"; type: "int" }
- Parameter { name: "modifiers"; type: "int" }
- Parameter { name: "delay"; type: "int" }
- }
- Method {
- name: "mouseDoubleClickSequence"
- type: "bool"
- Parameter { name: "item"; type: "QObject"; isPointer: true }
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- Parameter { name: "button"; type: "int" }
- Parameter { name: "modifiers"; type: "int" }
- Parameter { name: "delay"; type: "int" }
- }
- Method {
- name: "mouseMove"
- type: "bool"
- Parameter { name: "item"; type: "QObject"; isPointer: true }
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- Parameter { name: "delay"; type: "int" }
- Parameter { name: "buttons"; type: "int" }
- }
- Method {
- name: "mouseWheel"
- type: "bool"
- Parameter { name: "item"; type: "QObject"; isPointer: true }
- Parameter { name: "x"; type: "double" }
- Parameter { name: "y"; type: "double" }
- Parameter { name: "buttons"; type: "int" }
- Parameter { name: "modifiers"; type: "int" }
- Parameter { name: "xDelta"; type: "int" }
- Parameter { name: "yDelta"; type: "int" }
- Parameter { name: "delay"; type: "int" }
- }
- Method {
- name: "touchEvent"
- type: "QQuickTouchEventSequence*"
- Parameter { name: "item"; type: "QObject"; isPointer: true }
- }
- Method { name: "touchEvent"; type: "QQuickTouchEventSequence*" }
- }
- Component {
- name: "QuickTestResult"
- prototype: "QObject"
- exports: [
- "QtTest/TestResult 1.0",
- "QtTest/TestResult 1.1",
- "QtTest/TestResult 1.13"
- ]
- exportMetaObjectRevisions: [0, 1, 13]
- Enum {
- name: "RunMode"
- values: {
- "RepeatUntilValidMeasurement": 0,
- "RunOnce": 1
- }
- }
- Property { name: "testCaseName"; type: "string" }
- Property { name: "functionName"; type: "string" }
- Property { name: "dataTag"; type: "string" }
- Property { name: "failed"; type: "bool"; isReadonly: true }
- Property { name: "skipped"; type: "bool" }
- Property { name: "passCount"; type: "int"; isReadonly: true }
- Property { name: "failCount"; type: "int"; isReadonly: true }
- Property { name: "skipCount"; type: "int"; isReadonly: true }
- Property { name: "functionsToRun"; type: "QStringList"; isReadonly: true }
- Property { name: "tagsToRun"; type: "QStringList"; isReadonly: true }
- Signal { name: "programNameChanged" }
- Method { name: "reset" }
- Method { name: "startLogging" }
- Method { name: "stopLogging" }
- Method { name: "initTestTable" }
- Method { name: "clearTestTable" }
- Method { name: "finishTestData" }
- Method { name: "finishTestDataCleanup" }
- Method { name: "finishTestFunction" }
- Method {
- name: "stringify"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "fail"
- Parameter { name: "message"; type: "string" }
- Parameter { name: "location"; type: "QUrl" }
- Parameter { name: "line"; type: "int" }
- }
- Method {
- name: "verify"
- type: "bool"
- Parameter { name: "success"; type: "bool" }
- Parameter { name: "message"; type: "string" }
- Parameter { name: "location"; type: "QUrl" }
- Parameter { name: "line"; type: "int" }
- }
- Method {
- name: "compare"
- type: "bool"
- Parameter { name: "success"; type: "bool" }
- Parameter { name: "message"; type: "string" }
- Parameter { name: "val1"; type: "QVariant" }
- Parameter { name: "val2"; type: "QVariant" }
- Parameter { name: "location"; type: "QUrl" }
- Parameter { name: "line"; type: "int" }
- }
- Method {
- name: "fuzzyCompare"
- type: "bool"
- Parameter { name: "actual"; type: "QVariant" }
- Parameter { name: "expected"; type: "QVariant" }
- Parameter { name: "delta"; type: "double" }
- }
- Method {
- name: "skip"
- Parameter { name: "message"; type: "string" }
- Parameter { name: "location"; type: "QUrl" }
- Parameter { name: "line"; type: "int" }
- }
- Method {
- name: "expectFail"
- type: "bool"
- Parameter { name: "tag"; type: "string" }
- Parameter { name: "comment"; type: "string" }
- Parameter { name: "location"; type: "QUrl" }
- Parameter { name: "line"; type: "int" }
- }
- Method {
- name: "expectFailContinue"
- type: "bool"
- Parameter { name: "tag"; type: "string" }
- Parameter { name: "comment"; type: "string" }
- Parameter { name: "location"; type: "QUrl" }
- Parameter { name: "line"; type: "int" }
- }
- Method {
- name: "warn"
- Parameter { name: "message"; type: "string" }
- Parameter { name: "location"; type: "QUrl" }
- Parameter { name: "line"; type: "int" }
- }
- Method {
- name: "ignoreWarning"
- Parameter { name: "message"; type: "QJSValue" }
- }
- Method {
- name: "wait"
- Parameter { name: "ms"; type: "int" }
- }
- Method {
- name: "sleep"
- Parameter { name: "ms"; type: "int" }
- }
- Method {
- name: "waitForRendering"
- type: "bool"
- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
- Parameter { name: "timeout"; type: "int" }
- }
- Method {
- name: "waitForRendering"
- type: "bool"
- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
- }
- Method { name: "startMeasurement" }
- Method { name: "beginDataRun" }
- Method { name: "endDataRun" }
- Method { name: "measurementAccepted"; type: "bool" }
- Method { name: "needsMoreMeasurements"; type: "bool" }
- Method {
- name: "startBenchmark"
- Parameter { name: "runMode"; type: "RunMode" }
- Parameter { name: "tag"; type: "string" }
- }
- Method { name: "isBenchmarkDone"; type: "bool" }
- Method { name: "nextBenchmark" }
- Method { name: "stopBenchmark" }
- Method {
- name: "grabImage"
- type: "QObject*"
- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
- }
- Method {
- name: "findChild"
- revision: 1
- type: "QObject*"
- Parameter { name: "parent"; type: "QObject"; isPointer: true }
- Parameter { name: "objectName"; type: "string" }
- }
- Method {
- name: "isPolishScheduled"
- revision: 13
- type: "bool"
- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
- }
- Method {
- name: "waitForItemPolished"
- revision: 13
- type: "bool"
- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
- Parameter { name: "timeout"; type: "int" }
- }
- }
- Component {
- name: "QuickTestUtil"
- prototype: "QObject"
- exports: ["QtTest/TestUtil 1.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "printAvailableFunctions"; type: "bool"; isReadonly: true }
- Property { name: "dragThreshold"; type: "int"; isReadonly: true }
- Method {
- name: "typeName"
- type: "QJSValue"
- Parameter { name: "v"; type: "QVariant" }
- }
- Method {
- name: "compare"
- type: "bool"
- Parameter { name: "act"; type: "QVariant" }
- Parameter { name: "exp"; type: "QVariant" }
- }
- Method {
- name: "callerFile"
- type: "QJSValue"
- Parameter { name: "frameIndex"; type: "int" }
- }
- Method { name: "callerFile"; type: "QJSValue" }
- Method {
- name: "callerLine"
- type: "int"
- Parameter { name: "frameIndex"; type: "int" }
- }
- Method { name: "callerLine"; type: "int" }
- }
-}
diff --git a/src/qmltest/quicktestevent.cpp b/src/imports/testlib/quicktestevent.cpp
index 127efa3894..56faff9f7e 100644
--- a/src/qmltest/quicktestevent.cpp
+++ b/src/imports/testlib/quicktestevent.cpp
@@ -197,7 +197,7 @@ namespace QtQuickTest
me.setTimestamp(++lastMouseTimestamp);
break;
case MouseRelease:
- me = QMouseEvent(QEvent::MouseButtonRelease, pos, window->mapToGlobal(pos), button, nullptr, stateKey);
+ me = QMouseEvent(QEvent::MouseButtonRelease, pos, window->mapToGlobal(pos), button, {}, stateKey);
me.setTimestamp(++lastMouseTimestamp);
lastMouseTimestamp += 500; // avoid double clicks being generated
break;
diff --git a/src/qmltest/quicktestevent_p.h b/src/imports/testlib/quicktestevent_p.h
index a3c2e78e58..f452e4ff82 100644
--- a/src/qmltest/quicktestevent_p.h
+++ b/src/imports/testlib/quicktestevent_p.h
@@ -51,7 +51,6 @@
// We mean it.
//
-#include <QtQuickTest/quicktestglobal.h>
#include <QtCore/qobject.h>
#include <QtGui/QWindow>
#include <QtQml/qqml.h>
@@ -60,7 +59,7 @@
QT_BEGIN_NAMESPACE
class QuickTestEvent;
-class Q_QUICK_TEST_EXPORT QQuickTouchEventSequence : public QObject
+class QQuickTouchEventSequence : public QObject
{
Q_OBJECT
QML_ANONYMOUS
@@ -79,7 +78,7 @@ private:
QuickTestEvent * const m_testEvent;
};
-class Q_QUICK_TEST_EXPORT QuickTestEvent : public QObject
+class QuickTestEvent : public QObject
{
Q_OBJECT
Q_PROPERTY(int defaultMouseDelay READ defaultMouseDelay FINAL)
diff --git a/src/qmlworkerscript/qqmlworkerscriptmodule_p.h b/src/imports/testlib/quicktestresultforeign_p.h
index ae52d10c16..92ff8e8a5a 100644
--- a/src/qmlworkerscript/qqmlworkerscriptmodule_p.h
+++ b/src/imports/testlib/quicktestresultforeign_p.h
@@ -1,9 +1,9 @@
/****************************************************************************
**
-** Copyright (C) 2019 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
-** This file is part of the QtQml module of the Qt Toolkit.
+** This file is part of the test suite of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
@@ -37,8 +37,8 @@
**
****************************************************************************/
-#ifndef QQMLWORKERSCRIPTMODULE_P_H
-#define QQMLWORKERSCRIPTMODULE_P_H
+#ifndef QUICKTESTRESULTFOREIGN_P_H
+#define QUICKTESTRESULTFOREIGN_P_H
//
// W A R N I N G
@@ -51,16 +51,18 @@
// We mean it.
//
-#include <private/qtqmlworkerscriptglobal_p.h>
+#include <QtQuickTest/private/quicktestresult_p.h>
+#include <QtQml/qqml.h>
QT_BEGIN_NAMESPACE
-class Q_QMLWORKERSCRIPT_PRIVATE_EXPORT QQmlWorkerScriptModule
+struct QuickTestResultForeign
{
-public:
- static void defineModule();
+ Q_GADGET
+ QML_FOREIGN(QuickTestResult)
+ QML_NAMED_ELEMENT(TestResult)
};
QT_END_NAMESPACE
-#endif // QQMLWORKERSCRIPTMODULE_P_H
+#endif // QUICKTESTRESULTFOREIGN_P_H
diff --git a/src/qmltest/quicktestutil.cpp b/src/imports/testlib/quicktestutil.cpp
index d9e6a2fba5..d9e6a2fba5 100644
--- a/src/qmltest/quicktestutil.cpp
+++ b/src/imports/testlib/quicktestutil.cpp
diff --git a/src/qmltest/quicktestutil_p.h b/src/imports/testlib/quicktestutil_p.h
index 74d315df7d..2456bf88a7 100644
--- a/src/qmltest/quicktestutil_p.h
+++ b/src/imports/testlib/quicktestutil_p.h
@@ -51,14 +51,13 @@
// We mean it.
//
-#include <QtQuickTest/quicktestglobal.h>
#include <QtCore/qobject.h>
#include <QtQml/qqml.h>
#include <QtQml/qjsvalue.h>
QT_BEGIN_NAMESPACE
-class Q_QUICK_TEST_EXPORT QuickTestUtil : public QObject
+class QuickTestUtil : public QObject
{
Q_OBJECT
Q_PROPERTY(bool printAvailableFunctions READ printAvailableFunctions NOTIFY printAvailableFunctionsChanged)
diff --git a/src/imports/testlib/testlib.pro b/src/imports/testlib/testlib.pro
index acbe82e5e6..de6453eeab 100644
--- a/src/imports/testlib/testlib.pro
+++ b/src/imports/testlib/testlib.pro
@@ -1,11 +1,19 @@
CXX_MODULE = qml
TARGET = qmltestplugin
TARGETPATH = QtTest
-IMPORT_VERSION = 1.$$QT_MINOR_VERSION
+IMPORT_VERSION = 1.15
-QT += qml quick qmltest qmltest-private qml-private core-private testlib
+QT += quick qmltest-private qml-private core-private testlib gui-private
-SOURCES += main.cpp
+SOURCES += \
+ main.cpp \
+ quicktestevent.cpp \
+ quicktestutil.cpp
+
+HEADERS += \
+ quicktestevent_p.h \
+ quicktestresultforeign_p.h \
+ quicktestutil_p.h
QML_FILES = \
TestCase.qml \
@@ -15,3 +23,4 @@ QML_FILES = \
load(qml_plugin)
OTHER_FILES += testlib.json
+CONFIG += qmltypes install_qmltypes
diff --git a/src/imports/wavefrontmesh/plugin.cpp b/src/imports/wavefrontmesh/plugin.cpp
index 937d3a8ff0..9bb7a45b2f 100644
--- a/src/imports/wavefrontmesh/plugin.cpp
+++ b/src/imports/wavefrontmesh/plugin.cpp
@@ -44,23 +44,15 @@
QT_BEGIN_NAMESPACE
-class QmlWavefrontMeshPlugin : public QQmlExtensionPlugin
+class QmlWavefrontMeshPlugin : public QQmlEngineExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
+ Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid)
public:
QmlWavefrontMeshPlugin(QObject *parent = nullptr)
- : QQmlExtensionPlugin(parent)
+ : QQmlEngineExtensionPlugin(parent)
{
}
-
- void registerTypes(const char *uri) override
- {
- Q_ASSERT(QLatin1String(uri) == QLatin1String("Qt.labs.wavefrontmesh"));
- qmlRegisterTypesAndRevisions<QWavefrontMesh>(uri, 1);
-
- qmlRegisterModule(uri, 1, 15);
- }
};
QT_END_NAMESPACE
diff --git a/src/imports/wavefrontmesh/plugins.qmltypes b/src/imports/wavefrontmesh/plugins.qmltypes
deleted file mode 100644
index 4e6a1dca73..0000000000
--- a/src/imports/wavefrontmesh/plugins.qmltypes
+++ /dev/null
@@ -1,37 +0,0 @@
-import QtQuick.tooling 1.2
-
-// This file describes the plugin-supplied types contained in the library.
-// It is used for QML tooling purposes only.
-//
-// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable Qt.labs.wavefrontmesh 1.14'
-
-Module {
- dependencies: ["QtQuick 2.0"]
- Component {
- name: "QWavefrontMesh"
- prototype: "QQuickShaderEffectMesh"
- exports: ["Qt.labs.wavefrontmesh/WavefrontMesh 1.0"]
- exportMetaObjectRevisions: [0]
- Enum {
- name: "Error"
- values: {
- "NoError": 0,
- "InvalidSourceError": 1,
- "UnsupportedFaceShapeError": 2,
- "UnsupportedIndexSizeError": 3,
- "FileNotFoundError": 4,
- "NoAttributesError": 5,
- "MissingPositionAttributeError": 6,
- "MissingTextureCoordinateAttributeError": 7,
- "MissingPositionAndTextureCoordinateAttributesError": 8,
- "TooManyAttributesError": 9,
- "InvalidPlaneDefinitionError": 10
- }
- }
- Property { name: "source"; type: "QUrl" }
- Property { name: "lastError"; type: "Error"; isReadonly: true }
- Property { name: "projectionPlaneV"; type: "QVector3D" }
- Property { name: "projectionPlaneW"; type: "QVector3D" }
- }
-}
diff --git a/src/imports/wavefrontmesh/wavefrontmesh.pro b/src/imports/wavefrontmesh/wavefrontmesh.pro
index 85bd500089..f6d93b867d 100644
--- a/src/imports/wavefrontmesh/wavefrontmesh.pro
+++ b/src/imports/wavefrontmesh/wavefrontmesh.pro
@@ -1,7 +1,7 @@
CXX_MODULE = qml
TARGET = qmlwavefrontmeshplugin
TARGETPATH = Qt/labs/wavefrontmesh
-IMPORT_VERSION = 1.$$QT_MINOR_VERSION
+IMPORT_VERSION = 1.15
QT = core-private qml-private quick-private
@@ -12,4 +12,5 @@ SOURCES += \
HEADERS += \
qwavefrontmesh.h
+CONFIG += qmltypes install_qmltypes
load(qml_plugin)
diff --git a/src/imports/window/plugin.cpp b/src/imports/window/plugin.cpp
index 2ef4bcb2f1..ec4f2c5d2a 100644
--- a/src/imports/window/plugin.cpp
+++ b/src/imports/window/plugin.cpp
@@ -58,27 +58,13 @@ QT_BEGIN_NAMESPACE
\endqml
*/
-
//![class decl]
-class QtQuick2WindowPlugin : public QQmlExtensionPlugin
+class QtQuick2WindowPlugin : public QQmlEngineExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
+ Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid)
public:
- QtQuick2WindowPlugin(QObject *parent = nullptr) : QQmlExtensionPlugin(parent) { }
- void registerTypes(const char *uri) override
- {
- Q_ASSERT(QLatin1String(uri) == QLatin1String("QtQuick.Window"));
-
- qmlRegisterTypesAndRevisions<
- QWindowForeign,
- QQuickWindowForeign,
- QQuickWindowQmlImplForeign,
- QQuickScreenForeign,
- QQuickScreenInfoForeign>(uri, 2);
-
- qmlRegisterModule(uri, 2, 15);
- }
+ QtQuick2WindowPlugin(QObject *parent = nullptr) : QQmlEngineExtensionPlugin(parent) { }
};
//![class decl]
diff --git a/src/imports/window/plugins.qmltypes b/src/imports/window/plugins.qmltypes
deleted file mode 100644
index 5d6cf33f4f..0000000000
--- a/src/imports/window/plugins.qmltypes
+++ /dev/null
@@ -1,378 +0,0 @@
-import QtQuick.tooling 1.2
-
-// This file describes the plugin-supplied types contained in the library.
-// It is used for QML tooling purposes only.
-//
-// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable QtQuick.Window 2.14'
-
-Module {
- dependencies: ["QtQuick 2.0"]
- Component {
- name: "QQuickRootItem"
- defaultProperty: "data"
- prototype: "QQuickItem"
- Method {
- name: "setWidth"
- Parameter { name: "w"; type: "int" }
- }
- Method {
- name: "setHeight"
- Parameter { name: "h"; type: "int" }
- }
- }
- Component {
- name: "QQuickScreen"
- prototype: "QObject"
- exports: [
- "QtQuick.Window/Screen 2.0",
- "QtQuick.Window/Screen 2.10",
- "QtQuick.Window/Screen 2.3"
- ]
- isCreatable: false
- exportMetaObjectRevisions: [0, 10, 3]
- attachedType: "QQuickScreenAttached"
- }
- Component {
- name: "QQuickScreenAttached"
- prototype: "QQuickScreenInfo"
- Property { name: "orientationUpdateMask"; type: "Qt::ScreenOrientations" }
- Method {
- name: "angleBetween"
- type: "int"
- Parameter { name: "a"; type: "int" }
- Parameter { name: "b"; type: "int" }
- }
- }
- Component {
- name: "QQuickScreenInfo"
- prototype: "QObject"
- exports: [
- "QtQuick.Window/ScreenInfo 2.10",
- "QtQuick.Window/ScreenInfo 2.3"
- ]
- isCreatable: false
- exportMetaObjectRevisions: [10, 3]
- Property { name: "name"; type: "string"; isReadonly: true }
- Property { name: "manufacturer"; revision: 10; type: "string"; isReadonly: true }
- Property { name: "model"; revision: 10; type: "string"; isReadonly: true }
- Property { name: "serialNumber"; revision: 10; type: "string"; isReadonly: true }
- Property { name: "width"; type: "int"; isReadonly: true }
- Property { name: "height"; type: "int"; isReadonly: true }
- Property { name: "desktopAvailableWidth"; type: "int"; isReadonly: true }
- Property { name: "desktopAvailableHeight"; type: "int"; isReadonly: true }
- Property { name: "logicalPixelDensity"; type: "double"; isReadonly: true }
- Property { name: "pixelDensity"; type: "double"; isReadonly: true }
- Property { name: "devicePixelRatio"; type: "double"; isReadonly: true }
- Property { name: "primaryOrientation"; type: "Qt::ScreenOrientation"; isReadonly: true }
- Property { name: "orientation"; type: "Qt::ScreenOrientation"; isReadonly: true }
- Property { name: "virtualX"; revision: 3; type: "int"; isReadonly: true }
- Property { name: "virtualY"; revision: 3; type: "int"; isReadonly: true }
- Signal { name: "manufacturerChanged"; revision: 10 }
- Signal { name: "modelChanged"; revision: 10 }
- Signal { name: "serialNumberChanged"; revision: 10 }
- Signal { name: "desktopGeometryChanged" }
- Signal { name: "virtualXChanged"; revision: 3 }
- Signal { name: "virtualYChanged"; revision: 3 }
- }
- Component {
- name: "QQuickWindow"
- defaultProperty: "data"
- prototype: "QWindow"
- exports: ["QtQuick.Window/Window 2.0"]
- exportMetaObjectRevisions: [0]
- Enum {
- name: "CreateTextureOptions"
- values: {
- "TextureHasAlphaChannel": 1,
- "TextureHasMipmaps": 2,
- "TextureOwnsGLTexture": 4,
- "TextureCanUseAtlas": 8,
- "TextureIsOpaque": 16
- }
- }
- Enum {
- name: "SceneGraphError"
- values: {
- "ContextNotAvailable": 1
- }
- }
- Enum {
- name: "TextRenderType"
- values: {
- "QtTextRendering": 0,
- "NativeTextRendering": 1
- }
- }
- Enum {
- name: "NativeObjectType"
- values: {
- "NativeObjectTexture": 0
- }
- }
- Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
- Property { name: "color"; type: "QColor" }
- Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property {
- name: "activeFocusItem"
- revision: 1
- type: "QQuickItem"
- isReadonly: true
- isPointer: true
- }
- Signal { name: "frameSwapped" }
- Signal {
- name: "openglContextCreated"
- revision: 2
- Parameter { name: "context"; type: "QOpenGLContext"; isPointer: true }
- }
- Signal { name: "sceneGraphInitialized" }
- Signal { name: "sceneGraphInvalidated" }
- Signal { name: "beforeSynchronizing" }
- Signal { name: "afterSynchronizing"; revision: 2 }
- Signal { name: "beforeRendering" }
- Signal { name: "afterRendering" }
- Signal { name: "afterAnimating"; revision: 2 }
- Signal { name: "sceneGraphAboutToStop"; revision: 2 }
- Signal {
- name: "closing"
- revision: 1
- Parameter { name: "close"; type: "QQuickCloseEvent"; isPointer: true }
- }
- Signal {
- name: "colorChanged"
- Parameter { type: "QColor" }
- }
- Signal { name: "activeFocusItemChanged"; revision: 1 }
- Signal {
- name: "sceneGraphError"
- revision: 2
- Parameter { name: "error"; type: "QQuickWindow::SceneGraphError" }
- Parameter { name: "message"; type: "string" }
- }
- Signal { name: "beforeRenderPassRecording"; revision: 14 }
- Signal { name: "afterRenderPassRecording"; revision: 14 }
- Method { name: "update" }
- Method { name: "releaseResources" }
- }
- Component {
- name: "QQuickWindowAttached"
- prototype: "QObject"
- Property { name: "visibility"; type: "QWindow::Visibility"; isReadonly: true }
- Property { name: "active"; type: "bool"; isReadonly: true }
- Property { name: "activeFocusItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "width"; type: "int"; isReadonly: true }
- Property { name: "height"; type: "int"; isReadonly: true }
- Property { name: "window"; type: "QQuickWindow"; isReadonly: true; isPointer: true }
- }
- Component {
- name: "QQuickWindowQmlImpl"
- defaultProperty: "data"
- prototype: "QQuickWindow"
- exports: [
- "QtQuick.Window/Window 2.1",
- "QtQuick.Window/Window 2.13",
- "QtQuick.Window/Window 2.14",
- "QtQuick.Window/Window 2.2",
- "QtQuick.Window/Window 2.3"
- ]
- exportMetaObjectRevisions: [1, 13, 14, 2, 3]
- attachedType: "QQuickWindowAttached"
- Property { name: "visible"; type: "bool" }
- Property { name: "visibility"; type: "Visibility" }
- Property { name: "screen"; revision: 3; type: "QObject"; isPointer: true }
- Signal {
- name: "visibleChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "visibilityChanged"
- Parameter { name: "visibility"; type: "QWindow::Visibility" }
- }
- Signal { name: "screenChanged"; revision: 3 }
- }
- Component {
- name: "QWindow"
- prototype: "QObject"
- Enum {
- name: "Visibility"
- values: {
- "Hidden": 0,
- "AutomaticVisibility": 1,
- "Windowed": 2,
- "Minimized": 3,
- "Maximized": 4,
- "FullScreen": 5
- }
- }
- Enum {
- name: "AncestorMode"
- values: {
- "ExcludeTransients": 0,
- "IncludeTransients": 1
- }
- }
- Property { name: "title"; type: "string" }
- Property { name: "modality"; type: "Qt::WindowModality" }
- Property { name: "flags"; type: "Qt::WindowFlags" }
- Property { name: "x"; type: "int" }
- Property { name: "y"; type: "int" }
- Property { name: "width"; type: "int" }
- Property { name: "height"; type: "int" }
- Property { name: "minimumWidth"; type: "int" }
- Property { name: "minimumHeight"; type: "int" }
- Property { name: "maximumWidth"; type: "int" }
- Property { name: "maximumHeight"; type: "int" }
- Property { name: "visible"; type: "bool" }
- Property { name: "active"; revision: 1; type: "bool"; isReadonly: true }
- Property { name: "visibility"; revision: 1; type: "Visibility" }
- Property { name: "contentOrientation"; type: "Qt::ScreenOrientation" }
- Property { name: "opacity"; revision: 1; type: "double" }
- Property { name: "transientParent"; revision: 13; type: "QWindow"; isPointer: true }
- Signal {
- name: "screenChanged"
- Parameter { name: "screen"; type: "QScreen"; isPointer: true }
- }
- Signal {
- name: "modalityChanged"
- Parameter { name: "modality"; type: "Qt::WindowModality" }
- }
- Signal {
- name: "windowStateChanged"
- Parameter { name: "windowState"; type: "Qt::WindowState" }
- }
- Signal {
- name: "windowTitleChanged"
- revision: 2
- Parameter { name: "title"; type: "string" }
- }
- Signal {
- name: "xChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "yChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "widthChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "heightChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "minimumWidthChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "minimumHeightChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "maximumWidthChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "maximumHeightChanged"
- Parameter { name: "arg"; type: "int" }
- }
- Signal {
- name: "visibleChanged"
- Parameter { name: "arg"; type: "bool" }
- }
- Signal {
- name: "visibilityChanged"
- revision: 1
- Parameter { name: "visibility"; type: "QWindow::Visibility" }
- }
- Signal { name: "activeChanged"; revision: 1 }
- Signal {
- name: "contentOrientationChanged"
- Parameter { name: "orientation"; type: "Qt::ScreenOrientation" }
- }
- Signal {
- name: "focusObjectChanged"
- Parameter { name: "object"; type: "QObject"; isPointer: true }
- }
- Signal {
- name: "opacityChanged"
- revision: 1
- Parameter { name: "opacity"; type: "double" }
- }
- Signal {
- name: "transientParentChanged"
- revision: 13
- Parameter { name: "transientParent"; type: "QWindow"; isPointer: true }
- }
- Method { name: "requestActivate"; revision: 1 }
- Method {
- name: "setVisible"
- Parameter { name: "visible"; type: "bool" }
- }
- Method { name: "show" }
- Method { name: "hide" }
- Method { name: "showMinimized" }
- Method { name: "showMaximized" }
- Method { name: "showFullScreen" }
- Method { name: "showNormal" }
- Method { name: "close"; type: "bool" }
- Method { name: "raise" }
- Method { name: "lower" }
- Method {
- name: "setTitle"
- Parameter { type: "string" }
- }
- Method {
- name: "setX"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setY"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setWidth"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setHeight"
- Parameter { name: "arg"; type: "int" }
- }
- Method {
- name: "setGeometry"
- Parameter { name: "posx"; type: "int" }
- Parameter { name: "posy"; type: "int" }
- Parameter { name: "w"; type: "int" }
- Parameter { name: "h"; type: "int" }
- }
- Method {
- name: "setGeometry"
- Parameter { name: "rect"; type: "QRect" }
- }
- Method {
- name: "setMinimumWidth"
- Parameter { name: "w"; type: "int" }
- }
- Method {
- name: "setMinimumHeight"
- Parameter { name: "h"; type: "int" }
- }
- Method {
- name: "setMaximumWidth"
- Parameter { name: "w"; type: "int" }
- }
- Method {
- name: "setMaximumHeight"
- Parameter { name: "h"; type: "int" }
- }
- Method {
- name: "alert"
- revision: 1
- Parameter { name: "msec"; type: "int" }
- }
- Method { name: "requestUpdate"; revision: 3 }
- }
-}
diff --git a/src/imports/window/window.pro b/src/imports/window/window.pro
index a8ce79f275..9c14107267 100644
--- a/src/imports/window/window.pro
+++ b/src/imports/window/window.pro
@@ -1,7 +1,7 @@
CXX_MODULE = qml
TARGET = windowplugin
TARGETPATH = QtQuick/Window.2
-IMPORT_VERSION = 2.$$QT_MINOR_VERSION
+IMPORT_VERSION = 2.15
SOURCES += \
plugin.cpp
@@ -11,4 +11,5 @@ HEADERS += \
QT += quick-private qml-private
+CONFIG += qmltypes install_qmltypes
load(qml_plugin)
diff --git a/src/imports/workerscript/plugin.cpp b/src/imports/workerscript/plugin.cpp
index 2d8797db7e..0961979c53 100644
--- a/src/imports/workerscript/plugin.cpp
+++ b/src/imports/workerscript/plugin.cpp
@@ -37,12 +37,17 @@
**
****************************************************************************/
-#include <QtQmlWorkerScript/private/qqmlworkerscriptmodule_p.h>
+#include <QtQmlWorkerScript/private/qquickworkerscript_p.h>
+
#include <QtQml/qqmlextensionplugin.h>
#include <QtQml/qqml.h>
+#include <QtCore/qloggingcategory.h>
+
QT_BEGIN_NAMESPACE
+Q_LOGGING_CATEGORY(workerScriptPlugin, "qt.workerScriptPlugin")
+
/*!
\qmlmodule QtQml.WorkerScript 2.\QtMinorVersion
\title Qt QML WorkerScript QML Types
@@ -59,19 +64,20 @@ QT_BEGIN_NAMESPACE
\endqml
*/
-class QtQmlWorkerScriptPlugin : public QQmlExtensionPlugin
+class QtQmlWorkerScriptPlugin : public QQmlEngineExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
+ Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid)
public:
- QtQmlWorkerScriptPlugin(QObject *parent = nullptr) : QQmlExtensionPlugin(parent) { }
- void registerTypes(const char *uri) override
+ QtQmlWorkerScriptPlugin(QObject *parent = nullptr) : QQmlEngineExtensionPlugin(parent)
{
- Q_ASSERT(QLatin1String(uri) == QLatin1String("QtQml.WorkerScript"));
-
- QQmlWorkerScriptModule::defineModule();
-
- qmlRegisterModule(uri, 2, 15);
+ if (workerScriptPlugin().isDebugEnabled()) {
+ // Superficial debug message that causes the dependency between QtQmlWorkerScript
+ // and the workerscript plugin to be retained.
+ // As qCDebug() can be a noop, retrieve the className in a separate step.
+ const QString className = QQuickWorkerScript::staticMetaObject.className();
+ qCDebug(workerScriptPlugin) << "Loading WorkerScript plugin:" << className;
+ }
}
};
diff --git a/src/imports/workerscript/plugins.qmltypes b/src/imports/workerscript/plugins.qmltypes
deleted file mode 100644
index b1d6107022..0000000000
--- a/src/imports/workerscript/plugins.qmltypes
+++ /dev/null
@@ -1,26 +0,0 @@
-import QtQuick.tooling 1.2
-
-// This file describes the plugin-supplied types contained in the library.
-// It is used for QML tooling purposes only.
-//
-// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQml.WorkerScript 2.14'
-
-Module {
- dependencies: []
- Component {
- name: "QQuickWorkerScript"
- prototype: "QObject"
- exports: ["QtQml.WorkerScript/WorkerScript 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "source"; type: "QUrl" }
- Signal {
- name: "message"
- Parameter { name: "messageObject"; type: "QJSValue" }
- }
- Method {
- name: "sendMessage"
- Parameter { type: "QQmlV4Function"; isPointer: true }
- }
- }
-}
diff --git a/src/imports/workerscript/workerscript.pro b/src/imports/workerscript/workerscript.pro
index d48e285bda..aa68d193b4 100644
--- a/src/imports/workerscript/workerscript.pro
+++ b/src/imports/workerscript/workerscript.pro
@@ -1,7 +1,7 @@
CXX_MODULE = qml
TARGET = workerscriptplugin
TARGETPATH = QtQml/WorkerScript.2
-IMPORT_VERSION = 2.$$QT_MINOR_VERSION
+IMPORT_VERSION = 2.15
SOURCES += \
plugin.cpp
diff --git a/src/particles/particles.pro b/src/particles/particles.pro
index 6a3fb1bdc4..f4efb140bd 100644
--- a/src/particles/particles.pro
+++ b/src/particles/particles.pro
@@ -16,4 +16,10 @@ exists("qqml_enable_gcov") {
include(particles.pri)
+QMLTYPES_FILENAME = plugins.qmltypes
+QMLTYPES_INSTALL_DIR = $$[QT_INSTALL_QML]/QtQuick/Particles.2
+QML_IMPORT_NAME = QtQuick.Particles
+IMPORT_VERSION = 2.15
+CONFIG += qmltypes install_qmltypes install_metatypes
+
load(qt_module)
diff --git a/src/particles/qquickitemparticle.cpp b/src/particles/qquickitemparticle.cpp
index fc28864746..ce254c212d 100644
--- a/src/particles/qquickitemparticle.cpp
+++ b/src/particles/qquickitemparticle.cpp
@@ -136,6 +136,7 @@ QQuickItemParticle::QQuickItemParticle(QQuickItem *parent) :
QQuickItemParticle::~QQuickItemParticle()
{
delete clock;
+ qDeleteAll(m_managed);
}
void QQuickItemParticle::freeze(QQuickItem* item)
@@ -159,13 +160,21 @@ void QQuickItemParticle::take(QQuickItem *item, bool prioritize)
void QQuickItemParticle::give(QQuickItem *item)
{
- //TODO: This
- Q_UNUSED(item);
+ for (auto groupId : groupIds()) {
+ for (QQuickParticleData* data : qAsConst(m_system->groupData[groupId]->data)) {
+ if (data->delegate == item){
+ m_deletables << item;
+ data->delegate = nullptr;
+ return;
+ }
+ }
+ }
}
void QQuickItemParticle::initialize(int gIdx, int pIdx)
{
- m_loadables << m_system->groupData[gIdx]->data[pIdx];//defer to other thread
+ Q_UNUSED(gIdx);
+ Q_UNUSED(pIdx);
}
void QQuickItemParticle::commit(int, int)
@@ -179,8 +188,11 @@ void QQuickItemParticle::processDeletables()
item->setOpacity(0.);
item->setVisible(false);
QQuickItemParticleAttached* mpa;
- if ((mpa = qobject_cast<QQuickItemParticleAttached*>(qmlAttachedPropertiesObject<QQuickItemParticle>(item))))
- mpa->detach();//reparent as well?
+ if ((mpa = qobject_cast<QQuickItemParticleAttached*>(qmlAttachedPropertiesObject<QQuickItemParticle>(item)))) {
+ if (mpa->m_parentItem != nullptr)
+ item->setParentItem(mpa->m_parentItem);
+ mpa->detach();
+ }
int idx = -1;
if ((idx = m_managed.indexOf(item)) != -1) {
m_managed.takeAt(idx);
@@ -195,46 +207,43 @@ void QQuickItemParticle::tick(int time)
{
Q_UNUSED(time);//only needed because QTickAnimationProxy expects one
processDeletables();
-
- foreach (QQuickParticleData* d, m_loadables){
- Q_ASSERT(d);
- if (m_stasis.contains(d->delegate))
- qWarning() << "Current model particles prefers overwrite:false";
- //remove old item from the particle that is dying to make room for this one
- if (d->delegate) {
- m_deletables << d->delegate;
- d->delegate = nullptr;
- }
- if (!m_pendingItems.isEmpty()){
- d->delegate = m_pendingItems.front();
- m_pendingItems.pop_front();
- }else if (m_delegate){
- d->delegate = qobject_cast<QQuickItem*>(m_delegate->create(qmlContext(this)));
- if (d->delegate)
- m_managed << d->delegate;
- }
- if (d && d->delegate){//###Data can be zero if creating an item leads to a reset - this screws things up.
- d->delegate->setX(d->curX(m_system) - d->delegate->width() / 2); //TODO: adjust for system?
- d->delegate->setY(d->curY(m_system) - d->delegate->height() / 2);
- QQuickItemParticleAttached* mpa = qobject_cast<QQuickItemParticleAttached*>(qmlAttachedPropertiesObject<QQuickItemParticle>(d->delegate));
- if (mpa){
- mpa->m_mp = this;
- mpa->attach();
+ for (auto groupId : groupIds()) {
+ for (QQuickParticleData* d : qAsConst(m_system->groupData[groupId]->data)) {
+ if (!d->delegate && d->t != -1 && d->stillAlive(m_system)) {
+ QQuickItem* parentItem = nullptr;
+ if (!m_pendingItems.isEmpty()){
+ QQuickItem *item = m_pendingItems.front();
+ m_pendingItems.pop_front();
+ parentItem = item->parentItem();
+ d->delegate = item;
+ }else if (m_delegate){
+ d->delegate = qobject_cast<QQuickItem*>(m_delegate->create(qmlContext(this)));
+ if (d->delegate)
+ m_managed << d->delegate;
+ }
+ if (d && d->delegate){//###Data can be zero if creating an item leads to a reset - this screws things up.
+ d->delegate->setX(d->curX(m_system) - d->delegate->width() / 2); //TODO: adjust for system?
+ d->delegate->setY(d->curY(m_system) - d->delegate->height() / 2);
+ QQuickItemParticleAttached* mpa = qobject_cast<QQuickItemParticleAttached*>(qmlAttachedPropertiesObject<QQuickItemParticle>(d->delegate));
+ if (mpa){
+ mpa->m_parentItem = parentItem;
+ mpa->m_mp = this;
+ mpa->attach();
+ }
+ d->delegate->setParentItem(this);
+ if (m_fade)
+ d->delegate->setOpacity(0.);
+ d->delegate->setVisible(false);//Will be set to true when we prepare the next frame
+ m_activeCount++;
+ }
}
- d->delegate->setParentItem(this);
- if (m_fade)
- d->delegate->setOpacity(0.);
- d->delegate->setVisible(false);//Will be set to true when we prepare the next frame
- m_activeCount++;
}
}
- m_loadables.clear();
}
void QQuickItemParticle::reset()
{
QQuickParticlePainter::reset();
- m_loadables.clear();
// delete all managed items which had their logical particles cleared
// but leave it alone if the logical particle is maintained
@@ -244,7 +253,7 @@ void QQuickItemParticle::reset()
lost.remove(d->delegate);
}
}
- m_deletables.append(lost.values());
+ m_deletables.unite(lost);
//TODO: This doesn't yet handle calling detach on taken particles in the system reset case
processDeletables();
}
@@ -253,18 +262,9 @@ void QQuickItemParticle::reset()
QSGNode* QQuickItemParticle::updatePaintNode(QSGNode* n, UpdatePaintNodeData* d)
{
//Dummy update just to get painting tick
- if (m_pleaseReset){
+ if (m_pleaseReset)
m_pleaseReset = false;
- //Refill loadables, delayed here so as to only happen once per frame max
- //### Constant resetting might lead to m_loadables never being populated when tick() occurs
- for (auto groupId : groupIds()) {
- for (QQuickParticleData* d : qAsConst(m_system->groupData[groupId]->data)) {
- if (!d->delegate && d->t != -1 && d->stillAlive(m_system)) {
- m_loadables << d;
- }
- }
- }
- }
+
prepareNextFrame();
update();//Get called again
diff --git a/src/particles/qquickitemparticle_p.h b/src/particles/qquickitemparticle_p.h
index 70cfe2a446..32c9881691 100644
--- a/src/particles/qquickitemparticle_p.h
+++ b/src/particles/qquickitemparticle_p.h
@@ -108,9 +108,8 @@ protected:
private:
void processDeletables();
void tick(int time = 0);
- QList<QQuickItem* > m_deletables;
+ QSet<QQuickItem* > m_deletables;
QList<QQuickItem* > m_managed;
- QList< QQuickParticleData* > m_loadables;
bool m_fade;
QList<QQuickItem*> m_pendingItems;
@@ -130,13 +129,14 @@ class QQuickItemParticleAttached : public QObject
Q_PROPERTY(QQuickItemParticle* particle READ particle CONSTANT);
public:
QQuickItemParticleAttached(QObject* parent)
- : QObject(parent), m_mp(0)
+ : QObject(parent), m_mp(0), m_parentItem(nullptr)
{;}
QQuickItemParticle* particle() const { return m_mp; }
void detach(){Q_EMIT detached();}
void attach(){Q_EMIT attached();}
private:
QQuickItemParticle* m_mp;
+ QPointer<QQuickItem> m_parentItem;
friend class QQuickItemParticle;
Q_SIGNALS:
void detached();
diff --git a/src/particles/qquickparticleextruder.cpp b/src/particles/qquickparticleextruder.cpp
index f56e288e09..ea64a79563 100644
--- a/src/particles/qquickparticleextruder.cpp
+++ b/src/particles/qquickparticleextruder.cpp
@@ -43,7 +43,7 @@
QT_BEGIN_NAMESPACE
/*!
- \qmltype Shape
+ \qmltype ParticleExtruder
\instantiates QQuickParticleExtruder
\inqmlmodule QtQuick.Particles
\brief For specifying an area for affectors and emitters.
diff --git a/src/particles/qquickparticlesmodule.cpp b/src/particles/qquickparticlesmodule.cpp
index 4f2e1cf29d..801af079e6 100644
--- a/src/particles/qquickparticlesmodule.cpp
+++ b/src/particles/qquickparticlesmodule.cpp
@@ -81,48 +81,6 @@ QT_BEGIN_NAMESPACE
void QQuickParticlesModule::defineModule()
{
initResources();
-
- const char* uri = "QtQuick.Particles";
-
- qmlRegisterTypesAndRevisions<
- QQuickParticleSystem,
- QQuickParticleGroup,
-
- QQuickImageParticle,
-#if QT_CONFIG(quick_shadereffect)
- QQuickCustomParticle,
-#endif
- QQuickItemParticle,
-
- QQuickParticleEmitter,
- QQuickTrailEmitter,
-
- QQuickEllipseExtruder,
- QQuickRectangleExtruder,
- QQuickLineExtruder,
- QQuickMaskExtruder,
-
- QQuickPointDirection,
- QQuickAngleDirection,
- QQuickTargetDirection,
- QQuickCumulativeDirection,
-
- QQuickCustomAffector,
- QQuickWanderAffector,
- QQuickFrictionAffector,
- QQuickAttractorAffector,
- QQuickGravityAffector,
- QQuickAgeAffector,
- QQuickSpriteGoalAffector,
- QQuickGroupGoalAffector,
- QQuickTurbulenceAffector,
-
- // Exposed just for completeness
- QQuickParticleAffector,
- QQuickParticlePainter,
- QQuickParticleExtruder,
- QQuickDirection
- >(uri, 2);
}
QT_END_NAMESPACE
diff --git a/src/particles/qquickparticlesystem.cpp b/src/particles/qquickparticlesystem.cpp
index 14ffc67324..158aede727 100644
--- a/src/particles/qquickparticlesystem.cpp
+++ b/src/particles/qquickparticlesystem.cpp
@@ -389,16 +389,21 @@ QQuickParticleData* QQuickParticleGroupData::newDatum(bool respectsLimits)
bool QQuickParticleGroupData::recycle()
{
+ m_latestAliveParticles.clear();
+
while (dataHeap.top() <= m_system->timeInt) {
foreach (QQuickParticleData* datum, dataHeap.pop()) {
if (!datum->stillAlive(m_system)) {
freeList.free(datum->index);
} else {
- prepareRecycler(datum); //ttl has been altered mid-way, put it back
+ m_latestAliveParticles.push_back(datum);
}
}
}
+ for (auto particle : m_latestAliveParticles)
+ prepareRecycler(particle); //ttl has been altered mid-way, put it back
+
//TODO: If the data is clear, gc (consider shrinking stack size)?
return freeList.count() == 0;
}
diff --git a/src/particles/qquickparticlesystem_p.h b/src/particles/qquickparticlesystem_p.h
index dd721a7164..7c0a1ffd7d 100644
--- a/src/particles/qquickparticlesystem_p.h
+++ b/src/particles/qquickparticlesystem_p.h
@@ -227,6 +227,8 @@ public:
private:
int m_size;
QQuickParticleSystem* m_system;
+ // Only used in recycle() for tracking of alive particles after latest recycling round
+ QVector<QQuickParticleData*> m_latestAliveParticles;
};
struct Color4ub {
diff --git a/src/particles/shaders_ng/imageparticle_colored.frag.qsb b/src/particles/shaders_ng/imageparticle_colored.frag.qsb
index 7ae640d224..aa6ae5c6bc 100644
--- a/src/particles/shaders_ng/imageparticle_colored.frag.qsb
+++ b/src/particles/shaders_ng/imageparticle_colored.frag.qsb
Binary files differ
diff --git a/src/particles/shaders_ng/imageparticle_colored.vert.qsb b/src/particles/shaders_ng/imageparticle_colored.vert.qsb
index 0e2938b72c..a07c8d0e79 100644
--- a/src/particles/shaders_ng/imageparticle_colored.vert.qsb
+++ b/src/particles/shaders_ng/imageparticle_colored.vert.qsb
Binary files differ
diff --git a/src/particles/shaders_ng/imageparticle_deformed.frag.qsb b/src/particles/shaders_ng/imageparticle_deformed.frag.qsb
index fa9d9d35bb..1f4a08fe48 100644
--- a/src/particles/shaders_ng/imageparticle_deformed.frag.qsb
+++ b/src/particles/shaders_ng/imageparticle_deformed.frag.qsb
Binary files differ
diff --git a/src/particles/shaders_ng/imageparticle_deformed.vert.qsb b/src/particles/shaders_ng/imageparticle_deformed.vert.qsb
index 65092d5b26..6a2048c5bf 100644
--- a/src/particles/shaders_ng/imageparticle_deformed.vert.qsb
+++ b/src/particles/shaders_ng/imageparticle_deformed.vert.qsb
Binary files differ
diff --git a/src/particles/shaders_ng/imageparticle_simple.frag.qsb b/src/particles/shaders_ng/imageparticle_simple.frag.qsb
index a5874cba24..f580048e71 100644
--- a/src/particles/shaders_ng/imageparticle_simple.frag.qsb
+++ b/src/particles/shaders_ng/imageparticle_simple.frag.qsb
Binary files differ
diff --git a/src/particles/shaders_ng/imageparticle_simple.vert.qsb b/src/particles/shaders_ng/imageparticle_simple.vert.qsb
index da815d7e19..6735e1ae38 100644
--- a/src/particles/shaders_ng/imageparticle_simple.vert.qsb
+++ b/src/particles/shaders_ng/imageparticle_simple.vert.qsb
Binary files differ
diff --git a/src/particles/shaders_ng/imageparticle_sprite.frag.qsb b/src/particles/shaders_ng/imageparticle_sprite.frag.qsb
index 778550344b..01806a3c54 100644
--- a/src/particles/shaders_ng/imageparticle_sprite.frag.qsb
+++ b/src/particles/shaders_ng/imageparticle_sprite.frag.qsb
Binary files differ
diff --git a/src/particles/shaders_ng/imageparticle_sprite.vert.qsb b/src/particles/shaders_ng/imageparticle_sprite.vert.qsb
index 45b21ace8a..6d8c1852f5 100644
--- a/src/particles/shaders_ng/imageparticle_sprite.vert.qsb
+++ b/src/particles/shaders_ng/imageparticle_sprite.vert.qsb
Binary files differ
diff --git a/src/particles/shaders_ng/imageparticle_tabled.frag.qsb b/src/particles/shaders_ng/imageparticle_tabled.frag.qsb
index c5dcc2c68f..630fb064ac 100644
--- a/src/particles/shaders_ng/imageparticle_tabled.frag.qsb
+++ b/src/particles/shaders_ng/imageparticle_tabled.frag.qsb
Binary files differ
diff --git a/src/particles/shaders_ng/imageparticle_tabled.vert.qsb b/src/particles/shaders_ng/imageparticle_tabled.vert.qsb
index ea42607570..af0f475bb8 100644
--- a/src/particles/shaders_ng/imageparticle_tabled.vert.qsb
+++ b/src/particles/shaders_ng/imageparticle_tabled.vert.qsb
Binary files differ
diff --git a/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewfileengine.cpp b/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewfileengine.cpp
index 72de52bbe1..5e78539155 100644
--- a/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewfileengine.cpp
+++ b/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewfileengine.cpp
@@ -195,7 +195,7 @@ QAbstractFileEngine::FileFlags QQmlPreviewFileEngine::fileFlags(
if (m_fallback)
return m_fallback->fileFlags(type);
- QAbstractFileEngine::FileFlags ret = 0;
+ QAbstractFileEngine::FileFlags ret;
if (type & PermsMask) {
ret |= QAbstractFileEngine::FileFlags(
diff --git a/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewfileloader.cpp b/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewfileloader.cpp
index bb43f75c63..acd19a6f73 100644
--- a/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewfileloader.cpp
+++ b/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewfileloader.cpp
@@ -54,7 +54,6 @@ QQmlPreviewFileLoader::QQmlPreviewFileLoader(QQmlPreviewServiceImpl *service) :
m_blacklist.blacklist(":/qt-project.org");
m_blacklist.blacklist(":/QtQuick/Controls/Styles");
m_blacklist.blacklist(":/ExtrasImports/QtQuick/Controls/Styles");
- m_blacklist.blacklist(":/qgradient");
// Target specific configuration should not replaced with files from the host.
m_blacklist.blacklist("/etc");
diff --git a/src/plugins/scenegraph/d3d12/d3d12.json b/src/plugins/scenegraph/d3d12/d3d12.json
deleted file mode 100644
index c450a38556..0000000000
--- a/src/plugins/scenegraph/d3d12/d3d12.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "Keys": ["d3d12"]
-}
diff --git a/src/plugins/scenegraph/d3d12/d3d12.pro b/src/plugins/scenegraph/d3d12/d3d12.pro
deleted file mode 100644
index 9cca5458ee..0000000000
--- a/src/plugins/scenegraph/d3d12/d3d12.pro
+++ /dev/null
@@ -1,61 +0,0 @@
-TARGET = qsgd3d12backend
-
-QT += core-private gui-private qml-private quick-private
-
-PLUGIN_TYPE = scenegraph
-PLUGIN_CLASS_NAME = QSGD3D12Adaptation
-load(qt_plugin)
-
-QMAKE_TARGET_PRODUCT = "Qt Quick D3D12 Renderer (Qt $$QT_VERSION)"
-QMAKE_TARGET_DESCRIPTION = "Quick D3D12 Renderer for Qt."
-
-SOURCES += \
- $$PWD/qsgd3d12adaptation.cpp \
- $$PWD/qsgd3d12renderloop.cpp \
- $$PWD/qsgd3d12threadedrenderloop.cpp \
- $$PWD/qsgd3d12renderer.cpp \
- $$PWD/qsgd3d12context.cpp \
- $$PWD/qsgd3d12rendercontext.cpp \
- $$PWD/qsgd3d12internalrectanglenode.cpp \
- $$PWD/qsgd3d12material.cpp \
- $$PWD/qsgd3d12builtinmaterials.cpp \
- $$PWD/qsgd3d12texture.cpp \
- $$PWD/qsgd3d12internalimagenode.cpp \
- $$PWD/qsgd3d12glyphnode.cpp \
- $$PWD/qsgd3d12glyphcache.cpp \
- $$PWD/qsgd3d12layer.cpp \
- $$PWD/qsgd3d12shadereffectnode.cpp \
- $$PWD/qsgd3d12painternode.cpp \
- $$PWD/qsgd3d12publicnodes.cpp \
- $$PWD/qsgd3d12spritenode.cpp
-
-NO_PCH_SOURCES += \
- $$PWD/qsgd3d12engine.cpp
-
-HEADERS += \
- $$PWD/qsgd3d12adaptation_p.h \
- $$PWD/qsgd3d12renderloop_p.h \
- $$PWD/qsgd3d12threadedrenderloop_p.h \
- $$PWD/qsgd3d12renderer_p.h \
- $$PWD/qsgd3d12context_p.h \
- $$PWD/qsgd3d12rendercontext_p.h \
- $$PWD/qsgd3d12engine_p.h \
- $$PWD/qsgd3d12engine_p_p.h \
- $$PWD/qsgd3d12internalrectanglenode_p.h \
- $$PWD/qsgd3d12material_p.h \
- $$PWD/qsgd3d12builtinmaterials_p.h \
- $$PWD/qsgd3d12texture_p.h \
- $$PWD/qsgd3d12internalimagenode_p.h \
- $$PWD/qsgd3d12glyphnode_p.h \
- $$PWD/qsgd3d12glyphcache_p.h \
- $$PWD/qsgd3d12layer_p.h \
- $$PWD/qsgd3d12shadereffectnode_p.h \
- $$PWD/qsgd3d12painternode_p.h \
- $$PWD/qsgd3d12publicnodes_p.h \
- $$PWD/qsgd3d12spritenode_p.h
-
-LIBS += -ldxgi -ld3d12 -ld3dcompiler -ldcomp
-
-include($$PWD/shaders/shaders.pri)
-
-OTHER_FILES += $$PWD/d3d12.json
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12adaptation.cpp b/src/plugins/scenegraph/d3d12/qsgd3d12adaptation.cpp
deleted file mode 100644
index b93da0ae01..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12adaptation.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgd3d12adaptation_p.h"
-#include "qsgd3d12renderloop_p.h"
-#include "qsgd3d12threadedrenderloop_p.h"
-#include "qsgd3d12context_p.h"
-
-QT_BEGIN_NAMESPACE
-
-QSGD3D12Adaptation::QSGD3D12Adaptation(QObject *parent)
- : QSGContextPlugin(parent)
-{
-}
-
-QStringList QSGD3D12Adaptation::keys() const
-{
- return QStringList() << QLatin1String("d3d12");
-}
-
-QSGContext *QSGD3D12Adaptation::create(const QString &) const
-{
- if (!contextInstance)
- contextInstance = new QSGD3D12Context;
-
- return contextInstance;
-}
-
-QSGContextFactoryInterface::Flags QSGD3D12Adaptation::flags(const QString &) const
-{
- return QSGContextFactoryInterface::SupportsShaderEffectNode;
-}
-
-QSGRenderLoop *QSGD3D12Adaptation::createWindowManager()
-{
- static bool threaded = false;
- static bool envChecked = false;
- if (!envChecked) {
- envChecked = true;
- threaded = qgetenv("QSG_RENDER_LOOP") == QByteArrayLiteral("threaded");
- }
-
- if (threaded)
- return new QSGD3D12ThreadedRenderLoop;
-
- return new QSGD3D12RenderLoop;
-}
-
-QSGD3D12Context *QSGD3D12Adaptation::contextInstance = nullptr;
-
-QT_END_NAMESPACE
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12adaptation_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12adaptation_p.h
deleted file mode 100644
index 035c3408ff..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12adaptation_p.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12ADAPTATION_P_H
-#define QSGD3D12ADAPTATION_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <private/qsgcontextplugin_p.h>
-
-QT_BEGIN_NAMESPACE
-
-class QSGD3D12Context;
-class QSGContext;
-class QSGRenderLoop;
-
-class QSGD3D12Adaptation : public QSGContextPlugin
-{
- Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QSGContextFactoryInterface" FILE "d3d12.json")
-
-public:
- QSGD3D12Adaptation(QObject *parent = 0);
-
- QStringList keys() const override;
- QSGContext *create(const QString &key) const override;
- QSGContextFactoryInterface::Flags flags(const QString &key) const override;
- QSGRenderLoop *createWindowManager() override;
-
-private:
- static QSGD3D12Context *contextInstance;
-};
-
-QT_END_NAMESPACE
-
-#endif // QSGD3D12ADAPTATION_P_H
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12builtinmaterials.cpp b/src/plugins/scenegraph/d3d12/qsgd3d12builtinmaterials.cpp
deleted file mode 100644
index 312e8c19cd..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12builtinmaterials.cpp
+++ /dev/null
@@ -1,737 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgd3d12builtinmaterials_p.h"
-#include "qsgd3d12rendercontext_p.h"
-#include <QQuickWindow>
-#include <QtCore/qmath.h>
-#include <QtGui/private/qfixed_p.h>
-
-#include "vs_vertexcolor.hlslh"
-#include "ps_vertexcolor.hlslh"
-#include "vs_flatcolor.hlslh"
-#include "ps_flatcolor.hlslh"
-#include "vs_smoothcolor.hlslh"
-#include "ps_smoothcolor.hlslh"
-#include "vs_texture.hlslh"
-#include "ps_texture.hlslh"
-#include "vs_smoothtexture.hlslh"
-#include "ps_smoothtexture.hlslh"
-#include "vs_textmask.hlslh"
-#include "ps_textmask24.hlslh"
-#include "ps_textmask32.hlslh"
-#include "ps_textmask8.hlslh"
-#include "vs_styledtext.hlslh"
-#include "ps_styledtext.hlslh"
-#include "vs_outlinedtext.hlslh"
-#include "ps_outlinedtext.hlslh"
-
-QT_BEGIN_NAMESPACE
-
-// NB! In HLSL constant buffer data is packed into 4-byte boundaries and, more
-// importantly, it is packed so that it does not cross a 16-byte (float4)
-// boundary. Hence the need for padding in some cases.
-
-static inline QVector4D qsg_premultiply(const QVector4D &c, float globalOpacity)
-{
- const float o = c.w() * globalOpacity;
- return QVector4D(c.x() * o, c.y() * o, c.z() * o, o);
-}
-
-static inline QVector4D qsg_premultiply(const QColor &c, float globalOpacity)
-{
- const float o = c.alphaF() * globalOpacity;
- return QVector4D(c.redF() * o, c.greenF() * o, c.blueF() * o, o);
-}
-
-static inline int qsg_colorDiff(const QVector4D &a, const QVector4D &b)
-{
- if (a.x() != b.x())
- return a.x() > b.x() ? 1 : -1;
- if (a.y() != b.y())
- return a.y() > b.y() ? 1 : -1;
- if (a.z() != b.z())
- return a.z() > b.z() ? 1 : -1;
- if (a.w() != b.w())
- return a.w() > b.w() ? 1 : -1;
- return 0;
-}
-
-QSGMaterialType QSGD3D12VertexColorMaterial::mtype;
-
-QSGMaterialType *QSGD3D12VertexColorMaterial::type() const
-{
- return &QSGD3D12VertexColorMaterial::mtype;
-}
-
-int QSGD3D12VertexColorMaterial::compare(const QSGMaterial *other) const
-{
- Q_UNUSED(other);
- Q_ASSERT(other && type() == other->type());
- // As the vertex color material has all its state in the vertex attributes
- // defined by the geometry, all such materials will be equal.
- return 0;
-}
-
-static const int VERTEX_COLOR_CB_SIZE_0 = 16 * sizeof(float); // float4x4
-static const int VERTEX_COLOR_CB_SIZE_1 = sizeof(float); // float
-static const int VERTEX_COLOR_CB_SIZE = VERTEX_COLOR_CB_SIZE_0 + VERTEX_COLOR_CB_SIZE_1;
-
-int QSGD3D12VertexColorMaterial::constantBufferSize() const
-{
- return QSGD3D12Engine::alignedConstantBufferSize(VERTEX_COLOR_CB_SIZE);
-}
-
-void QSGD3D12VertexColorMaterial::preparePipeline(QSGD3D12PipelineState *pipelineState)
-{
- pipelineState->shaders.vs = g_VS_VertexColor;
- pipelineState->shaders.vsSize = sizeof(g_VS_VertexColor);
- pipelineState->shaders.ps = g_PS_VertexColor;
- pipelineState->shaders.psSize = sizeof(g_PS_VertexColor);
-}
-
-QSGD3D12Material::UpdateResults QSGD3D12VertexColorMaterial::updatePipeline(const QSGD3D12MaterialRenderState &state,
- QSGD3D12PipelineState *,
- ExtraState *,
- quint8 *constantBuffer)
-{
- QSGD3D12Material::UpdateResults r = 0;
- quint8 *p = constantBuffer;
-
- if (state.isMatrixDirty()) {
- memcpy(p, state.combinedMatrix().constData(), VERTEX_COLOR_CB_SIZE_0);
- r |= UpdatedConstantBuffer;
- }
- p += VERTEX_COLOR_CB_SIZE_0;
-
- if (state.isOpacityDirty()) {
- const float opacity = state.opacity();
- memcpy(p, &opacity, VERTEX_COLOR_CB_SIZE_1);
- r |= UpdatedConstantBuffer;
- }
-
- return r;
-}
-
-QSGD3D12FlatColorMaterial::QSGD3D12FlatColorMaterial()
- : m_color(QColor(255, 255, 255))
-{
-}
-
-QSGMaterialType QSGD3D12FlatColorMaterial::mtype;
-
-QSGMaterialType *QSGD3D12FlatColorMaterial::type() const
-{
- return &QSGD3D12FlatColorMaterial::mtype;
-}
-
-int QSGD3D12FlatColorMaterial::compare(const QSGMaterial *other) const
-{
- Q_ASSERT(other && type() == other->type());
- const QSGD3D12FlatColorMaterial *o = static_cast<const QSGD3D12FlatColorMaterial *>(other);
- return m_color.rgba() - o->color().rgba();
-}
-
-static const int FLAT_COLOR_CB_SIZE_0 = 16 * sizeof(float); // float4x4
-static const int FLAT_COLOR_CB_SIZE_1 = 4 * sizeof(float); // float4
-static const int FLAT_COLOR_CB_SIZE = FLAT_COLOR_CB_SIZE_0 + FLAT_COLOR_CB_SIZE_1;
-
-int QSGD3D12FlatColorMaterial::constantBufferSize() const
-{
- return QSGD3D12Engine::alignedConstantBufferSize(FLAT_COLOR_CB_SIZE);
-}
-
-void QSGD3D12FlatColorMaterial::preparePipeline(QSGD3D12PipelineState *pipelineState)
-{
- pipelineState->shaders.vs = g_VS_FlatColor;
- pipelineState->shaders.vsSize = sizeof(g_VS_FlatColor);
- pipelineState->shaders.ps = g_PS_FlatColor;
- pipelineState->shaders.psSize = sizeof(g_PS_FlatColor);
-}
-
-QSGD3D12Material::UpdateResults QSGD3D12FlatColorMaterial::updatePipeline(const QSGD3D12MaterialRenderState &state,
- QSGD3D12PipelineState *,
- ExtraState *,
- quint8 *constantBuffer)
-{
- QSGD3D12Material::UpdateResults r = 0;
- quint8 *p = constantBuffer;
-
- if (state.isMatrixDirty()) {
- memcpy(p, state.combinedMatrix().constData(), FLAT_COLOR_CB_SIZE_0);
- r |= UpdatedConstantBuffer;
- }
- p += FLAT_COLOR_CB_SIZE_0;
-
- const QVector4D color = qsg_premultiply(m_color, state.opacity());
- const float f[] = { color.x(), color.y(), color.z(), color.w() };
- if (state.isOpacityDirty() || memcmp(p, f, FLAT_COLOR_CB_SIZE_1)) {
- memcpy(p, f, FLAT_COLOR_CB_SIZE_1);
- r |= UpdatedConstantBuffer;
- }
-
- return r;
-}
-
-void QSGD3D12FlatColorMaterial::setColor(const QColor &color)
-{
- m_color = color;
- setFlag(Blending, m_color.alpha() != 0xFF);
-}
-
-QSGD3D12SmoothColorMaterial::QSGD3D12SmoothColorMaterial()
-{
- setFlag(RequiresFullMatrixExceptTranslate, true);
- setFlag(Blending, true);
-}
-
-QSGMaterialType QSGD3D12SmoothColorMaterial::mtype;
-
-QSGMaterialType *QSGD3D12SmoothColorMaterial::type() const
-{
- return &QSGD3D12SmoothColorMaterial::mtype;
-}
-
-int QSGD3D12SmoothColorMaterial::compare(const QSGMaterial *other) const
-{
- Q_UNUSED(other);
- Q_ASSERT(other && type() == other->type());
- return 0;
-}
-
-static const int SMOOTH_COLOR_CB_SIZE_0 = 16 * sizeof(float); // float4x4
-static const int SMOOTH_COLOR_CB_SIZE_1 = sizeof(float); // float
-static const int SMOOTH_COLOR_CB_SIZE_2 = 2 * sizeof(float); // float2
-static const int SMOOTH_COLOR_CB_SIZE = SMOOTH_COLOR_CB_SIZE_0 + SMOOTH_COLOR_CB_SIZE_1 + SMOOTH_COLOR_CB_SIZE_2;
-
-int QSGD3D12SmoothColorMaterial::constantBufferSize() const
-{
- return QSGD3D12Engine::alignedConstantBufferSize(SMOOTH_COLOR_CB_SIZE);
-}
-
-void QSGD3D12SmoothColorMaterial::preparePipeline(QSGD3D12PipelineState *pipelineState)
-{
- pipelineState->shaders.vs = g_VS_SmoothColor;
- pipelineState->shaders.vsSize = sizeof(g_VS_SmoothColor);
- pipelineState->shaders.ps = g_PS_SmoothColor;
- pipelineState->shaders.psSize = sizeof(g_PS_SmoothColor);
-}
-
-QSGD3D12Material::UpdateResults QSGD3D12SmoothColorMaterial::updatePipeline(const QSGD3D12MaterialRenderState &state,
- QSGD3D12PipelineState *,
- ExtraState *,
- quint8 *constantBuffer)
-{
- QSGD3D12Material::UpdateResults r = 0;
- quint8 *p = constantBuffer;
-
- if (state.isMatrixDirty()) {
- memcpy(p, state.combinedMatrix().constData(), SMOOTH_COLOR_CB_SIZE_0);
- r |= UpdatedConstantBuffer;
- }
- p += SMOOTH_COLOR_CB_SIZE_0;
-
- if (state.isOpacityDirty()) {
- const float opacity = state.opacity();
- memcpy(p, &opacity, SMOOTH_COLOR_CB_SIZE_1);
- r |= UpdatedConstantBuffer;
- }
- p += SMOOTH_COLOR_CB_SIZE_1;
-
- if (state.isMatrixDirty()) {
- const QRect viewport = state.viewportRect();
- const float v[] = { 2.0f / viewport.width(), 2.0f / viewport.height() };
- memcpy(p, v, SMOOTH_COLOR_CB_SIZE_2);
- r |= UpdatedConstantBuffer;
- }
-
- return r;
-}
-
-QSGMaterialType QSGD3D12TextureMaterial::mtype;
-
-QSGMaterialType *QSGD3D12TextureMaterial::type() const
-{
- return &QSGD3D12TextureMaterial::mtype;
-}
-
-int QSGD3D12TextureMaterial::compare(const QSGMaterial *other) const
-{
- Q_ASSERT(other && type() == other->type());
- const QSGD3D12TextureMaterial *o = static_cast<const QSGD3D12TextureMaterial *>(other);
- if (int diff = m_texture->textureId() - o->texture()->textureId())
- return diff;
- return int(m_filtering) - int(o->m_filtering);
-}
-
-static const int TEXTURE_CB_SIZE_0 = 16 * sizeof(float); // float4x4
-static const int TEXTURE_CB_SIZE_1 = sizeof(float); // float
-static const int TEXTURE_CB_SIZE = TEXTURE_CB_SIZE_0 + TEXTURE_CB_SIZE_1;
-
-int QSGD3D12TextureMaterial::constantBufferSize() const
-{
- return QSGD3D12Engine::alignedConstantBufferSize(TEXTURE_CB_SIZE);
-}
-
-void QSGD3D12TextureMaterial::preparePipeline(QSGD3D12PipelineState *pipelineState)
-{
- pipelineState->shaders.vs = g_VS_Texture;
- pipelineState->shaders.vsSize = sizeof(g_VS_Texture);
- pipelineState->shaders.ps = g_PS_Texture;
- pipelineState->shaders.psSize = sizeof(g_PS_Texture);
-
- pipelineState->shaders.rootSig.textureViewCount = 1;
-}
-
-QSGD3D12Material::UpdateResults QSGD3D12TextureMaterial::updatePipeline(const QSGD3D12MaterialRenderState &state,
- QSGD3D12PipelineState *pipelineState,
- ExtraState *,
- quint8 *constantBuffer)
-{
- QSGD3D12Material::UpdateResults r = 0;
- quint8 *p = constantBuffer;
-
- if (state.isMatrixDirty()) {
- memcpy(p, state.combinedMatrix().constData(), TEXTURE_CB_SIZE_0);
- r |= UpdatedConstantBuffer;
- }
- p += TEXTURE_CB_SIZE_0;
-
- if (state.isOpacityDirty()) {
- const float opacity = state.opacity();
- memcpy(p, &opacity, TEXTURE_CB_SIZE_1);
- r |= UpdatedConstantBuffer;
- }
-
- Q_ASSERT(m_texture);
- m_texture->setFiltering(m_filtering);
- m_texture->setMipmapFiltering(m_mipmap_filtering);
- m_texture->setHorizontalWrapMode(m_horizontal_wrap);
- m_texture->setVerticalWrapMode(m_vertical_wrap);
-
- QSGD3D12TextureView &tv(pipelineState->shaders.rootSig.textureViews[0]);
- if (m_filtering == QSGTexture::Linear)
- tv.filter = m_mipmap_filtering == QSGTexture::Linear
- ? QSGD3D12TextureView::FilterLinear : QSGD3D12TextureView::FilterMinMagLinearMipNearest;
- else
- tv.filter = m_mipmap_filtering == QSGTexture::Linear
- ? QSGD3D12TextureView::FilterMinMagNearestMipLinear : QSGD3D12TextureView::FilterNearest;
- tv.addressModeHoriz = m_horizontal_wrap == QSGTexture::ClampToEdge ? QSGD3D12TextureView::AddressClamp : QSGD3D12TextureView::AddressWrap;
- tv.addressModeVert = m_vertical_wrap == QSGTexture::ClampToEdge ? QSGD3D12TextureView::AddressClamp : QSGD3D12TextureView::AddressWrap;
-
- m_texture->bind();
-
- return r;
-}
-
-void QSGD3D12TextureMaterial::setTexture(QSGTexture *texture)
-{
- m_texture = texture;
- setFlag(Blending, m_texture ? m_texture->hasAlphaChannel() : false);
-}
-
-QSGD3D12SmoothTextureMaterial::QSGD3D12SmoothTextureMaterial()
-{
- setFlag(RequiresFullMatrixExceptTranslate, true);
- setFlag(Blending, true);
-}
-
-QSGMaterialType QSGD3D12SmoothTextureMaterial::mtype;
-
-QSGMaterialType *QSGD3D12SmoothTextureMaterial::type() const
-{
- return &QSGD3D12SmoothTextureMaterial::mtype;
-}
-
-int QSGD3D12SmoothTextureMaterial::compare(const QSGMaterial *other) const
-{
- Q_ASSERT(other && type() == other->type());
- const QSGD3D12SmoothTextureMaterial *o = static_cast<const QSGD3D12SmoothTextureMaterial *>(other);
- if (int diff = m_texture->textureId() - o->texture()->textureId())
- return diff;
- return int(m_filtering) - int(o->m_filtering);
-}
-
-static const int SMOOTH_TEXTURE_CB_SIZE_0 = 16 * sizeof(float); // float4x4
-static const int SMOOTH_TEXTURE_CB_SIZE_1 = sizeof(float); // float
-static const int SMOOTH_TEXTURE_CB_SIZE_2 = 2 * sizeof(float); // float2
-static const int SMOOTH_TEXTURE_CB_SIZE = SMOOTH_TEXTURE_CB_SIZE_0 + SMOOTH_TEXTURE_CB_SIZE_1 + SMOOTH_TEXTURE_CB_SIZE_2;
-
-int QSGD3D12SmoothTextureMaterial::constantBufferSize() const
-{
- return QSGD3D12Engine::alignedConstantBufferSize(SMOOTH_TEXTURE_CB_SIZE);
-}
-
-void QSGD3D12SmoothTextureMaterial::preparePipeline(QSGD3D12PipelineState *pipelineState)
-{
- pipelineState->shaders.vs = g_VS_SmoothTexture;
- pipelineState->shaders.vsSize = sizeof(g_VS_SmoothTexture);
- pipelineState->shaders.ps = g_PS_SmoothTexture;
- pipelineState->shaders.psSize = sizeof(g_PS_SmoothTexture);
-
- pipelineState->shaders.rootSig.textureViewCount = 1;
-}
-
-QSGD3D12Material::UpdateResults QSGD3D12SmoothTextureMaterial::updatePipeline(const QSGD3D12MaterialRenderState &state,
- QSGD3D12PipelineState *pipelineState,
- ExtraState *,
- quint8 *constantBuffer)
-{
- QSGD3D12Material::UpdateResults r = 0;
- quint8 *p = constantBuffer;
-
- if (state.isMatrixDirty()) {
- memcpy(p, state.combinedMatrix().constData(), SMOOTH_TEXTURE_CB_SIZE_0);
- r |= UpdatedConstantBuffer;
- }
- p += SMOOTH_TEXTURE_CB_SIZE_0;
-
- if (state.isOpacityDirty()) {
- const float opacity = state.opacity();
- memcpy(p, &opacity, SMOOTH_TEXTURE_CB_SIZE_1);
- r |= UpdatedConstantBuffer;
- }
- p += SMOOTH_TEXTURE_CB_SIZE_1;
-
- if (state.isMatrixDirty()) {
- const QRect viewport = state.viewportRect();
- const float v[] = { 2.0f / viewport.width(), 2.0f / viewport.height() };
- memcpy(p, v, SMOOTH_TEXTURE_CB_SIZE_2);
- r |= UpdatedConstantBuffer;
- }
-
- Q_ASSERT(m_texture);
- m_texture->setFiltering(m_filtering);
- m_texture->setMipmapFiltering(m_mipmap_filtering);
- m_texture->setHorizontalWrapMode(m_horizontal_wrap);
- m_texture->setVerticalWrapMode(m_vertical_wrap);
-
- QSGD3D12TextureView &tv(pipelineState->shaders.rootSig.textureViews[0]);
- if (m_filtering == QSGTexture::Linear)
- tv.filter = m_mipmap_filtering == QSGTexture::Linear
- ? QSGD3D12TextureView::FilterLinear : QSGD3D12TextureView::FilterMinMagLinearMipNearest;
- else
- tv.filter = m_mipmap_filtering == QSGTexture::Linear
- ? QSGD3D12TextureView::FilterMinMagNearestMipLinear : QSGD3D12TextureView::FilterNearest;
- tv.addressModeHoriz = m_horizontal_wrap == QSGTexture::ClampToEdge ? QSGD3D12TextureView::AddressClamp : QSGD3D12TextureView::AddressWrap;
- tv.addressModeVert = m_vertical_wrap == QSGTexture::ClampToEdge ? QSGD3D12TextureView::AddressClamp : QSGD3D12TextureView::AddressWrap;
-
- m_texture->bind();
-
- return r;
-}
-
-QSGD3D12TextMaterial::QSGD3D12TextMaterial(StyleType styleType, QSGD3D12RenderContext *rc,
- const QRawFont &font, QFontEngine::GlyphFormat glyphFormat)
- : m_styleType(styleType),
- m_rc(rc),
- m_font(font)
-{
- setFlag(Blending, true);
-
- QRawFontPrivate *fontD = QRawFontPrivate::get(m_font);
- if (QFontEngine *fontEngine = fontD->fontEngine) {
- if (glyphFormat == QFontEngine::Format_None)
- glyphFormat = fontEngine->glyphFormat != QFontEngine::Format_None
- ? fontEngine->glyphFormat : QFontEngine::Format_A32;
-
- QSGD3D12Engine *d3dengine = rc->engine();
- const float devicePixelRatio = d3dengine->windowDevicePixelRatio();
- QTransform glyphCacheTransform = QTransform::fromScale(devicePixelRatio, devicePixelRatio);
- if (!fontEngine->supportsTransformation(glyphCacheTransform))
- glyphCacheTransform = QTransform();
-
- m_glyphCache = fontEngine->glyphCache(d3dengine, glyphFormat, glyphCacheTransform);
- if (!m_glyphCache || int(m_glyphCache->glyphFormat()) != glyphFormat) {
- m_glyphCache = new QSGD3D12GlyphCache(d3dengine, glyphFormat, glyphCacheTransform);
- fontEngine->setGlyphCache(d3dengine, m_glyphCache.data());
- rc->registerFontengineForCleanup(fontEngine);
- }
- }
-}
-
-QSGMaterialType QSGD3D12TextMaterial::mtype[QSGD3D12TextMaterial::NTextMaterialTypes];
-
-QSGMaterialType *QSGD3D12TextMaterial::type() const
-{
- // Format_A32 has special blend settings and therefore two materials with
- // the same style but different formats where one is A32 are treated as
- // different. This way the renderer can manage the pipeline state properly.
- const int matStyle = m_styleType * 2;
- const int matFormat = glyphCache()->glyphFormat() != QFontEngine::Format_A32 ? 0 : 1;
- return &QSGD3D12TextMaterial::mtype[matStyle + matFormat];
-}
-
-int QSGD3D12TextMaterial::compare(const QSGMaterial *other) const
-{
- Q_ASSERT(other && type() == other->type());
- const QSGD3D12TextMaterial *o = static_cast<const QSGD3D12TextMaterial *>(other);
- if (m_styleType != o->m_styleType)
- return m_styleType - o->m_styleType;
- if (m_glyphCache != o->m_glyphCache)
- return m_glyphCache.data() < o->m_glyphCache.data() ? -1 : 1;
- if (m_styleShift != o->m_styleShift)
- return m_styleShift.y() - o->m_styleShift.y();
- int styleColorDiff = qsg_colorDiff(m_styleColor, o->m_styleColor);
- if (styleColorDiff)
- return styleColorDiff;
- return qsg_colorDiff(m_color, o->m_color);
-}
-
-static const int TEXT_CB_SIZE_0 = 16 * sizeof(float); // float4x4 mvp
-static const int TEXT_CB_SIZE_1 = 2 * sizeof(float); // float2 textureScale
-static const int TEXT_CB_SIZE_2 = sizeof(float); // float dpr
-static const int TEXT_CB_SIZE_3 = sizeof(float); // float color
-static const int TEXT_CB_SIZE_4 = 4 * sizeof(float); // float4 colorVec
-static const int TEXT_CB_SIZE_5 = 2 * sizeof(float); // float2 shift
-static const int TEXT_CB_SIZE_5_PADDING = 2 * sizeof(float); // float2 padding (the next float4 would cross the 16-byte boundary)
-static const int TEXT_CB_SIZE_6 = 4 * sizeof(float); // float4 styleColor
-static const int TEXT_CB_SIZE = TEXT_CB_SIZE_0 + TEXT_CB_SIZE_1 + TEXT_CB_SIZE_2 + TEXT_CB_SIZE_3
- + TEXT_CB_SIZE_4 + TEXT_CB_SIZE_5 + TEXT_CB_SIZE_5_PADDING + TEXT_CB_SIZE_6;
-
-int QSGD3D12TextMaterial::constantBufferSize() const
-{
- return QSGD3D12Engine::alignedConstantBufferSize(TEXT_CB_SIZE);
-}
-
-void QSGD3D12TextMaterial::preparePipeline(QSGD3D12PipelineState *pipelineState)
-{
- if (m_styleType == Normal) {
- pipelineState->shaders.vs = g_VS_TextMask;
- pipelineState->shaders.vsSize = sizeof(g_VS_TextMask);
- switch (glyphCache()->glyphFormat()) {
- case QFontEngine::Format_A32:
- pipelineState->shaders.ps = g_PS_TextMask24;
- pipelineState->shaders.psSize = sizeof(g_PS_TextMask24);
- break;
- case QFontEngine::Format_ARGB:
- pipelineState->shaders.ps = g_PS_TextMask32;
- pipelineState->shaders.psSize = sizeof(g_PS_TextMask32);
- break;
- default:
- pipelineState->shaders.ps = g_PS_TextMask8;
- pipelineState->shaders.psSize = sizeof(g_PS_TextMask8);
- break;
- }
- } else if (m_styleType == Outlined) {
- pipelineState->shaders.vs = g_VS_OutlinedText;
- pipelineState->shaders.vsSize = sizeof(g_VS_OutlinedText);
- pipelineState->shaders.ps = g_PS_OutlinedText;
- pipelineState->shaders.psSize = sizeof(g_PS_OutlinedText);
- } else {
- pipelineState->shaders.vs = g_VS_StyledText;
- pipelineState->shaders.vsSize = sizeof(g_VS_StyledText);
- pipelineState->shaders.ps = g_PS_StyledText;
- pipelineState->shaders.psSize = sizeof(g_PS_StyledText);
- }
-
- pipelineState->shaders.rootSig.textureViewCount = 1;
-}
-
-QSGD3D12Material::UpdateResults QSGD3D12TextMaterial::updatePipeline(const QSGD3D12MaterialRenderState &state,
- QSGD3D12PipelineState *pipelineState,
- ExtraState *extraState,
- quint8 *constantBuffer)
-{
- QSGD3D12Material::UpdateResults r = 0;
- quint8 *p = constantBuffer;
-
- if (glyphCache()->glyphFormat() == QFontEngine::Format_A32) {
- // can freely change the state due to the way type() works
- pipelineState->blend = QSGD3D12PipelineState::BlendColor;
- extraState->blendFactor = m_color;
- r |= UpdatedBlendFactor; // must be set always as this affects the command list
- }
-
- if (state.isMatrixDirty()) {
- memcpy(p, state.combinedMatrix().constData(), TEXT_CB_SIZE_0);
- r |= UpdatedConstantBuffer;
- }
- p += TEXT_CB_SIZE_0;
-
- const QSize sz = glyphCache()->currentSize();
- const float textureScale[] = { 1.0f / sz.width(), 1.0f / sz.height() };
- if (state.isCachedMaterialDataDirty() || memcmp(p, textureScale, TEXT_CB_SIZE_1)) {
- memcpy(p, textureScale, TEXT_CB_SIZE_1);
- r |= UpdatedConstantBuffer;
- }
- p += TEXT_CB_SIZE_1;
-
- const float dpr = m_rc->engine()->windowDevicePixelRatio();
- if (state.isCachedMaterialDataDirty() || memcmp(p, &dpr, TEXT_CB_SIZE_2)) {
- memcpy(p, &dpr, TEXT_CB_SIZE_2);
- r |= UpdatedConstantBuffer;
- }
- p += TEXT_CB_SIZE_2;
-
- if (glyphCache()->glyphFormat() == QFontEngine::Format_A32) {
- const QVector4D color = qsg_premultiply(m_color, state.opacity());
- const float alpha = color.w();
- if (state.isOpacityDirty() || memcmp(p, &alpha, TEXT_CB_SIZE_3)) {
- memcpy(p, &alpha, TEXT_CB_SIZE_3);
- r |= UpdatedConstantBuffer;
- }
- } else if (glyphCache()->glyphFormat() == QFontEngine::Format_ARGB) {
- const float opacity = m_color.w() * state.opacity();
- if (state.isOpacityDirty() || memcmp(p, &opacity, TEXT_CB_SIZE_3)) {
- memcpy(p, &opacity, TEXT_CB_SIZE_3);
- r |= UpdatedConstantBuffer;
- }
- } else {
- const QVector4D color = qsg_premultiply(m_color, state.opacity());
- const float f[] = { color.x(), color.y(), color.z(), color.w() };
- if (state.isOpacityDirty() || memcmp(p, f, TEXT_CB_SIZE_4)) {
- memcpy(p + TEXT_CB_SIZE_3, f, TEXT_CB_SIZE_4);
- r |= UpdatedConstantBuffer;
- }
- }
- p += TEXT_CB_SIZE_3 + TEXT_CB_SIZE_4;
-
- if (m_styleType == Styled) {
- const float f[] = { m_styleShift.x(), m_styleShift.y() };
- if (state.isCachedMaterialDataDirty() || memcmp(p, f, TEXT_CB_SIZE_5)) {
- memcpy(p, f, TEXT_CB_SIZE_5);
- r |= UpdatedConstantBuffer;
- }
- }
- p += TEXT_CB_SIZE_5 + TEXT_CB_SIZE_5_PADDING;
-
- if (m_styleType == Styled || m_styleType == Outlined) {
- const QVector4D color = qsg_premultiply(m_styleColor, state.opacity());
- const float f[] = { color.x(), color.y(), color.z(), color.w() };
- if (state.isOpacityDirty() || memcmp(p, f, TEXT_CB_SIZE_6)) {
- memcpy(p, f, TEXT_CB_SIZE_6);
- r |= UpdatedConstantBuffer;
- }
- }
-
- QSGD3D12TextureView &tv(pipelineState->shaders.rootSig.textureViews[0]);
- tv.filter = QSGD3D12TextureView::FilterNearest;
- tv.addressModeHoriz = QSGD3D12TextureView::AddressClamp;
- tv.addressModeVert = QSGD3D12TextureView::AddressClamp;
-
- glyphCache()->useTexture();
-
- return r;
-}
-
-void QSGD3D12TextMaterial::populate(const QPointF &p,
- const QVector<quint32> &glyphIndexes,
- const QVector<QPointF> &glyphPositions,
- QSGGeometry *geometry,
- QRectF *boundingRect,
- QPointF *baseLine,
- const QMargins &margins)
-{
- Q_ASSERT(m_font.isValid());
- QVector<QFixedPoint> fixedPointPositions;
- const int glyphPositionsSize = glyphPositions.size();
- fixedPointPositions.reserve(glyphPositionsSize);
- for (int i=0; i < glyphPositionsSize; ++i)
- fixedPointPositions.append(QFixedPoint::fromPointF(glyphPositions.at(i)));
-
- QSGD3D12GlyphCache *cache = glyphCache();
- QRawFontPrivate *fontD = QRawFontPrivate::get(m_font);
- cache->populate(fontD->fontEngine, glyphIndexes.size(), glyphIndexes.constData(),
- fixedPointPositions.data());
- cache->fillInPendingGlyphs();
-
- int margin = fontD->fontEngine->glyphMargin(cache->glyphFormat());
-
- float glyphCacheScaleX = cache->transform().m11();
- float glyphCacheScaleY = cache->transform().m22();
- float glyphCacheInverseScaleX = 1.0 / glyphCacheScaleX;
- float glyphCacheInverseScaleY = 1.0 / glyphCacheScaleY;
-
- Q_ASSERT(geometry->indexType() == QSGGeometry::UnsignedShortType);
- geometry->allocate(glyphIndexes.size() * 4, glyphIndexes.size() * 6);
- QVector4D *vp = reinterpret_cast<QVector4D *>(geometry->vertexDataAsTexturedPoint2D());
- Q_ASSERT(geometry->sizeOfVertex() == sizeof(QVector4D));
- ushort *ip = geometry->indexDataAsUShort();
-
- QPointF position(p.x(), p.y() - m_font.ascent());
- bool supportsSubPixelPositions = fontD->fontEngine->supportsSubPixelPositions();
- for (int i = 0; i < glyphIndexes.size(); ++i) {
- QFixed subPixelPosition;
- if (supportsSubPixelPositions)
- subPixelPosition = fontD->fontEngine->subPixelPositionForX(QFixed::fromReal(glyphPositions.at(i).x()));
-
- QTextureGlyphCache::GlyphAndSubPixelPosition glyph(glyphIndexes.at(i), subPixelPosition);
- const QTextureGlyphCache::Coord &c = cache->coords.value(glyph);
-
- QPointF glyphPosition = glyphPositions.at(i) + position;
- float x = (qFloor(glyphPosition.x() * glyphCacheScaleX) * glyphCacheInverseScaleX)
- + (c.baseLineX * glyphCacheInverseScaleX) - margin;
- float y = (qRound(glyphPosition.y() * glyphCacheScaleY) * glyphCacheInverseScaleY)
- - (c.baseLineY * glyphCacheInverseScaleY) - margin;
-
- float w = c.w * glyphCacheInverseScaleX;
- float h = c.h * glyphCacheInverseScaleY;
-
- *boundingRect |= QRectF(x + margin, y + margin, w, h);
-
- float cx1 = x - margins.left();
- float cx2 = x + w + margins.right();
- float cy1 = y - margins.top();
- float cy2 = y + h + margins.bottom();
-
- float tx1 = c.x - margins.left();
- float tx2 = c.x + c.w + margins.right();
- float ty1 = c.y - margins.top();
- float ty2 = c.y + c.h + margins.bottom();
-
- if (baseLine->isNull())
- *baseLine = glyphPosition;
-
- vp[4 * i + 0] = QVector4D(cx1, cy1, tx1, ty1);
- vp[4 * i + 1] = QVector4D(cx2, cy1, tx2, ty1);
- vp[4 * i + 2] = QVector4D(cx1, cy2, tx1, ty2);
- vp[4 * i + 3] = QVector4D(cx2, cy2, tx2, ty2);
-
- int o = i * 4;
- ip[6 * i + 0] = o + 0;
- ip[6 * i + 1] = o + 2;
- ip[6 * i + 2] = o + 3;
- ip[6 * i + 3] = o + 3;
- ip[6 * i + 4] = o + 1;
- ip[6 * i + 5] = o + 0;
- }
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12builtinmaterials_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12builtinmaterials_p.h
deleted file mode 100644
index 8e488f8cd1..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12builtinmaterials_p.h
+++ /dev/null
@@ -1,253 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12BUILTINMATERIALS_P_H
-#define QSGD3D12BUILTINMATERIALS_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qsgd3d12material_p.h"
-#include "qsgd3d12glyphcache_p.h"
-#include <private/qsgtexture_p.h>
-#include <QRawFont>
-
-QT_BEGIN_NAMESPACE
-
-class QSGD3D12RenderContext;
-
-class QSGD3D12VertexColorMaterial : public QSGD3D12Material
-{
-public:
- QSGMaterialType *type() const override;
- int compare(const QSGMaterial *other) const override;
-
- int constantBufferSize() const override;
- void preparePipeline(QSGD3D12PipelineState *pipelineState) override;
- UpdateResults updatePipeline(const QSGD3D12MaterialRenderState &state,
- QSGD3D12PipelineState *pipelineState,
- ExtraState *extraState,
- quint8 *constantBuffer) override;
-
-private:
- static QSGMaterialType mtype;
-};
-
-class QSGD3D12FlatColorMaterial : public QSGD3D12Material
-{
-public:
- QSGD3D12FlatColorMaterial();
- QSGMaterialType *type() const override;
- int compare(const QSGMaterial *other) const override;
-
- int constantBufferSize() const override;
- void preparePipeline(QSGD3D12PipelineState *pipelineState) override;
- UpdateResults updatePipeline(const QSGD3D12MaterialRenderState &state,
- QSGD3D12PipelineState *pipelineState,
- ExtraState *extraState,
- quint8 *constantBuffer) override;
-
- void setColor(const QColor &color);
- QColor color() const { return m_color; }
-
-private:
- static QSGMaterialType mtype;
- QColor m_color;
-};
-
-class QSGD3D12SmoothColorMaterial : public QSGD3D12Material
-{
-public:
- QSGD3D12SmoothColorMaterial();
- QSGMaterialType *type() const override;
- int compare(const QSGMaterial *other) const override;
-
- int constantBufferSize() const override;
- void preparePipeline(QSGD3D12PipelineState *pipelineState) override;
- UpdateResults updatePipeline(const QSGD3D12MaterialRenderState &state,
- QSGD3D12PipelineState *pipelineState,
- ExtraState *extraState,
- quint8 *constantBuffer) override;
-
-private:
- static QSGMaterialType mtype;
-};
-
-class QSGD3D12TextureMaterial : public QSGD3D12Material
-{
-public:
- QSGMaterialType *type() const override;
- int compare(const QSGMaterial *other) const override;
-
- int constantBufferSize() const override;
- void preparePipeline(QSGD3D12PipelineState *pipelineState) override;
- UpdateResults updatePipeline(const QSGD3D12MaterialRenderState &state,
- QSGD3D12PipelineState *pipelineState,
- ExtraState *extraState,
- quint8 *constantBuffer) override;
-
- void setTexture(QSGTexture *texture);
- QSGTexture *texture() const { return m_texture; }
-
- void setMipmapFiltering(QSGTexture::Filtering filter) { m_mipmap_filtering = filter; }
- QSGTexture::Filtering mipmapFiltering() const { return m_mipmap_filtering; }
-
- void setFiltering(QSGTexture::Filtering filter) { m_filtering = filter; }
- QSGTexture::Filtering filtering() const { return m_filtering; }
-
- void setHorizontalWrapMode(QSGTexture::WrapMode hwrap) { m_horizontal_wrap = hwrap; }
- QSGTexture::WrapMode horizontalWrapMode() const { return m_horizontal_wrap; }
-
- void setVerticalWrapMode(QSGTexture::WrapMode vwrap) { m_vertical_wrap = vwrap; }
- QSGTexture::WrapMode verticalWrapMode() const { return m_vertical_wrap; }
-
-private:
- static QSGMaterialType mtype;
-
- QSGTexture *m_texture = nullptr;
- QSGTexture::Filtering m_filtering = QSGTexture::Nearest;
- QSGTexture::Filtering m_mipmap_filtering = QSGTexture::None;
- QSGTexture::WrapMode m_horizontal_wrap = QSGTexture::ClampToEdge;
- QSGTexture::WrapMode m_vertical_wrap = QSGTexture::ClampToEdge;
-};
-
-class QSGD3D12SmoothTextureMaterial : public QSGD3D12Material
-{
-public:
- QSGD3D12SmoothTextureMaterial();
-
- QSGMaterialType *type() const override;
- int compare(const QSGMaterial *other) const override;
-
- int constantBufferSize() const override;
- void preparePipeline(QSGD3D12PipelineState *pipelineState) override;
- UpdateResults updatePipeline(const QSGD3D12MaterialRenderState &state,
- QSGD3D12PipelineState *pipelineState,
- ExtraState *extraState,
- quint8 *constantBuffer) override;
-
- void setTexture(QSGTexture *texture) { m_texture = texture; }
- QSGTexture *texture() const { return m_texture; }
-
- void setMipmapFiltering(QSGTexture::Filtering filter) { m_mipmap_filtering = filter; }
- QSGTexture::Filtering mipmapFiltering() const { return m_mipmap_filtering; }
-
- void setFiltering(QSGTexture::Filtering filter) { m_filtering = filter; }
- QSGTexture::Filtering filtering() const { return m_filtering; }
-
- void setHorizontalWrapMode(QSGTexture::WrapMode hwrap) { m_horizontal_wrap = hwrap; }
- QSGTexture::WrapMode horizontalWrapMode() const { return m_horizontal_wrap; }
-
- void setVerticalWrapMode(QSGTexture::WrapMode vwrap) { m_vertical_wrap = vwrap; }
- QSGTexture::WrapMode verticalWrapMode() const { return m_vertical_wrap; }
-
-private:
- static QSGMaterialType mtype;
-
- QSGTexture *m_texture = nullptr;
- QSGTexture::Filtering m_filtering = QSGTexture::Nearest;
- QSGTexture::Filtering m_mipmap_filtering = QSGTexture::None;
- QSGTexture::WrapMode m_horizontal_wrap = QSGTexture::ClampToEdge;
- QSGTexture::WrapMode m_vertical_wrap = QSGTexture::ClampToEdge;
-};
-
-class QSGD3D12TextMaterial : public QSGD3D12Material
-{
-public:
- enum StyleType {
- Normal,
- Styled,
- Outlined,
-
- NStyleTypes
- };
- QSGD3D12TextMaterial(StyleType styleType, QSGD3D12RenderContext *rc, const QRawFont &font,
- QFontEngine::GlyphFormat glyphFormat = QFontEngine::Format_None);
-
- QSGMaterialType *type() const override;
- int compare(const QSGMaterial *other) const override;
-
- int constantBufferSize() const override;
- void preparePipeline(QSGD3D12PipelineState *pipelineState) override;
- UpdateResults updatePipeline(const QSGD3D12MaterialRenderState &state,
- QSGD3D12PipelineState *pipelineState,
- ExtraState *extraState,
- quint8 *constantBuffer) override;
-
- void setColor(const QColor &c) { m_color = QVector4D(c.redF(), c.greenF(), c.blueF(), c.alphaF()); }
- void setColor(const QVector4D &color) { m_color = color; }
- const QVector4D &color() const { return m_color; }
-
- void setStyleShift(const QVector2D &shift) { m_styleShift = shift; }
- const QVector2D &styleShift() const { return m_styleShift; }
-
- void setStyleColor(const QColor &c) { m_styleColor = QVector4D(c.redF(), c.greenF(), c.blueF(), c.alphaF()); }
- void setStyleColor(const QVector4D &color) { m_styleColor = color; }
- const QVector4D &styleColor() const { return m_styleColor; }
-
- void populate(const QPointF &position,
- const QVector<quint32> &glyphIndexes, const QVector<QPointF> &glyphPositions,
- QSGGeometry *geometry, QRectF *boundingRect, QPointF *baseLine,
- const QMargins &margins = QMargins(0, 0, 0, 0));
-
- QSGD3D12GlyphCache *glyphCache() const { return static_cast<QSGD3D12GlyphCache *>(m_glyphCache.data()); }
-
-private:
- static const int NTextMaterialTypes = NStyleTypes * 2;
- static QSGMaterialType mtype[NTextMaterialTypes];
- StyleType m_styleType;
- QSGD3D12RenderContext *m_rc;
- QVector4D m_color;
- QVector2D m_styleShift;
- QVector4D m_styleColor;
- QRawFont m_font;
- QExplicitlySharedDataPointer<QFontEngineGlyphCache> m_glyphCache;
-};
-
-QT_END_NAMESPACE
-
-#endif // QSGD3D12BUILTINMATERIALS_P_H
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12context.cpp b/src/plugins/scenegraph/d3d12/qsgd3d12context.cpp
deleted file mode 100644
index f9bd04aa54..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12context.cpp
+++ /dev/null
@@ -1,143 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgd3d12context_p.h"
-#include "qsgd3d12rendercontext_p.h"
-#include "qsgd3d12internalrectanglenode_p.h"
-#include "qsgd3d12internalimagenode_p.h"
-#include "qsgd3d12glyphnode_p.h"
-#include "qsgd3d12layer_p.h"
-#include "qsgd3d12shadereffectnode_p.h"
-#include "qsgd3d12painternode_p.h"
-#include "qsgd3d12publicnodes_p.h"
-#include "qsgd3d12spritenode_p.h"
-#include <QtQuick/qquickwindow.h>
-
-QT_BEGIN_NAMESPACE
-
-QSGRenderContext *QSGD3D12Context::createRenderContext()
-{
- return new QSGD3D12RenderContext(this);
-}
-
-QSGInternalRectangleNode *QSGD3D12Context::createInternalRectangleNode()
-{
- return new QSGD3D12InternalRectangleNode;
-}
-
-QSGInternalImageNode *QSGD3D12Context::createInternalImageNode(QSGRenderContext *renderContext)
-{
- Q_UNUSED(renderContext);
- return new QSGD3D12InternalImageNode;
-}
-
-QSGPainterNode *QSGD3D12Context::createPainterNode(QQuickPaintedItem *item)
-{
- return new QSGD3D12PainterNode(item);
-}
-
-QSGGlyphNode *QSGD3D12Context::createGlyphNode(QSGRenderContext *renderContext, bool preferNativeGlyphNode)
-{
- Q_UNUSED(preferNativeGlyphNode);
- // ### distance field text rendering is not supported atm
-
- QSGD3D12RenderContext *rc = static_cast<QSGD3D12RenderContext *>(renderContext);
- return new QSGD3D12GlyphNode(rc);
-}
-
-QSGLayer *QSGD3D12Context::createLayer(QSGRenderContext *renderContext)
-{
- QSGD3D12RenderContext *rc = static_cast<QSGD3D12RenderContext *>(renderContext);
- return new QSGD3D12Layer(rc);
-}
-
-QSGGuiThreadShaderEffectManager *QSGD3D12Context::createGuiThreadShaderEffectManager()
-{
- return new QSGD3D12GuiThreadShaderEffectManager;
-}
-
-QSGShaderEffectNode *QSGD3D12Context::createShaderEffectNode(QSGRenderContext *renderContext,
- QSGGuiThreadShaderEffectManager *mgr)
-{
- QSGD3D12RenderContext *rc = static_cast<QSGD3D12RenderContext *>(renderContext);
- QSGD3D12GuiThreadShaderEffectManager *dmgr = static_cast<QSGD3D12GuiThreadShaderEffectManager *>(mgr);
- return new QSGD3D12ShaderEffectNode(rc, dmgr);
-}
-
-QSize QSGD3D12Context::minimumFBOSize() const
-{
- return QSize(16, 16);
-}
-
-QSurfaceFormat QSGD3D12Context::defaultSurfaceFormat() const
-{
- QSurfaceFormat format = QSurfaceFormat::defaultFormat();
-
- if (QQuickWindow::hasDefaultAlphaBuffer())
- format.setAlphaBufferSize(8);
-
- return format;
-}
-
-QSGRendererInterface *QSGD3D12Context::rendererInterface(QSGRenderContext *renderContext)
-{
- return static_cast<QSGD3D12RenderContext *>(renderContext);
-}
-
-QSGRectangleNode *QSGD3D12Context::createRectangleNode()
-{
- return new QSGD3D12RectangleNode;
-}
-
-QSGImageNode *QSGD3D12Context::createImageNode()
-{
- return new QSGD3D12ImageNode;
-}
-
-QSGNinePatchNode *QSGD3D12Context::createNinePatchNode()
-{
- return new QSGD3D12NinePatchNode;
-}
-
-QSGSpriteNode *QSGD3D12Context::createSpriteNode()
-{
- return new QSGD3D12SpriteNode;
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12context_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12context_p.h
deleted file mode 100644
index 382183fef6..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12context_p.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12CONTEXT_P_H
-#define QSGD3D12CONTEXT_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <private/qsgcontext_p.h>
-
-QT_BEGIN_NAMESPACE
-
-class QSGD3D12Context : public QSGContext
-{
-public:
- QSGD3D12Context(QObject *parent = 0) : QSGContext(parent) { }
-
- QSGRenderContext *createRenderContext() override;
- QSGInternalRectangleNode *createInternalRectangleNode() override;
- QSGInternalImageNode *createInternalImageNode(QSGRenderContext *renderContext) override;
- QSGPainterNode *createPainterNode(QQuickPaintedItem *item) override;
- QSGGlyphNode *createGlyphNode(QSGRenderContext *renderContext, bool preferNativeGlyphNode) override;
- QSGLayer *createLayer(QSGRenderContext *renderContext) override;
- QSGGuiThreadShaderEffectManager *createGuiThreadShaderEffectManager() override;
- QSGShaderEffectNode *createShaderEffectNode(QSGRenderContext *renderContext,
- QSGGuiThreadShaderEffectManager *mgr) override;
- QSize minimumFBOSize() const override;
- QSurfaceFormat defaultSurfaceFormat() const override;
- QSGRendererInterface *rendererInterface(QSGRenderContext *renderContext) override;
- QSGRectangleNode *createRectangleNode() override;
- QSGImageNode *createImageNode() override;
- QSGNinePatchNode *createNinePatchNode() override;
- QSGSpriteNode *createSpriteNode() override;
-
-};
-
-QT_END_NAMESPACE
-
-#endif // QSGD3D12CONTEXT_P_H
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12engine.cpp b/src/plugins/scenegraph/d3d12/qsgd3d12engine.cpp
deleted file mode 100644
index 75bde2c66b..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12engine.cpp
+++ /dev/null
@@ -1,3280 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgd3d12engine_p.h"
-#include "qsgd3d12engine_p_p.h"
-#include "cs_mipmapgen.hlslh"
-#include <QString>
-#include <QColor>
-#include <QLoggingCategory>
-#include <qmath.h>
-#include <qalgorithms.h>
-
-// Comment out to disable DeviceLossTester functionality in order to reduce
-// code size and improve startup perf a tiny bit.
-#define DEVLOSS_TEST
-
-#ifdef DEVLOSS_TEST
-#include "cs_tdr.hlslh"
-#endif
-
-#ifdef Q_OS_WINRT
-#include <QtCore/private/qeventdispatcher_winrt_p.h>
-#include <functional>
-#include <windows.ui.xaml.h>
-#include <windows.ui.xaml.media.dxinterop.h>
-#endif
-
-#include <comdef.h>
-
-QT_BEGIN_NAMESPACE
-
-// NOTE: Avoid categorized logging. It is slow.
-
-#define DECLARE_DEBUG_VAR(variable) \
- static bool debug_ ## variable() \
- { static bool value = qgetenv("QSG_RENDERER_DEBUG").contains(QT_STRINGIFY(variable)); return value; }
-
-DECLARE_DEBUG_VAR(render)
-DECLARE_DEBUG_VAR(descheap)
-DECLARE_DEBUG_VAR(buffer)
-DECLARE_DEBUG_VAR(texture)
-
-// Except for system info on startup.
-Q_LOGGING_CATEGORY(QSG_LOG_INFO_GENERAL, "qt.scenegraph.general")
-
-
-// Any changes to the defaults below must be reflected in adaptations.qdoc as
-// well and proven by qmlbench or similar.
-
-static const int DEFAULT_SWAP_CHAIN_BUFFER_COUNT = 3;
-static const int DEFAULT_FRAME_IN_FLIGHT_COUNT = 2;
-static const int DEFAULT_WAITABLE_SWAP_CHAIN_MAX_LATENCY = 0;
-
-static const int MAX_DRAW_CALLS_PER_LIST = 4096;
-
-static const int MAX_CACHED_ROOTSIG = 16;
-static const int MAX_CACHED_PSO = 64;
-
-static const int GPU_CBVSRVUAV_DESCRIPTORS = 512;
-
-static const DXGI_FORMAT RT_COLOR_FORMAT = DXGI_FORMAT_R8G8B8A8_UNORM;
-
-static const int BUCKETS_PER_HEAP = 8; // must match freeMap
-static const int DESCRIPTORS_PER_BUCKET = 32; // the bit map (freeMap) is quint32
-static const int MAX_DESCRIPTORS_PER_HEAP = BUCKETS_PER_HEAP * DESCRIPTORS_PER_BUCKET;
-
-static QString comErrorMessage(HRESULT hr)
-{
-#ifndef Q_OS_WINRT
- const _com_error comError(hr);
-#else
- const _com_error comError(hr, nullptr);
-#endif
- QString result = QLatin1String("Error 0x") + QString::number(ulong(hr), 16);
- if (const wchar_t *msg = comError.ErrorMessage())
- result += QLatin1String(": ") + QString::fromWCharArray(msg);
- return result;
-}
-
-D3D12_CPU_DESCRIPTOR_HANDLE QSGD3D12CPUDescriptorHeapManager::allocate(D3D12_DESCRIPTOR_HEAP_TYPE type)
-{
- D3D12_CPU_DESCRIPTOR_HANDLE h = {};
- for (Heap &heap : m_heaps) {
- if (heap.type == type) {
- for (int bucket = 0; bucket < _countof(heap.freeMap); ++bucket)
- if (heap.freeMap[bucket]) {
- uint freePos = qCountTrailingZeroBits(heap.freeMap[bucket]);
- heap.freeMap[bucket] &= ~(1UL << freePos);
- if (Q_UNLIKELY(debug_descheap()))
- qDebug("descriptor handle heap %p type %x reserve in bucket %d index %d", &heap, type, bucket, freePos);
- freePos += bucket * DESCRIPTORS_PER_BUCKET;
- h = heap.start;
- h.ptr += freePos * heap.handleSize;
- return h;
- }
- }
- }
-
- Heap heap;
- heap.type = type;
- heap.handleSize = m_handleSizes[type];
-
- D3D12_DESCRIPTOR_HEAP_DESC heapDesc = {};
- heapDesc.NumDescriptors = MAX_DESCRIPTORS_PER_HEAP;
- heapDesc.Type = type;
- // The heaps created here are _never_ shader-visible.
-
- HRESULT hr = m_device->CreateDescriptorHeap(&heapDesc, IID_PPV_ARGS(&heap.heap));
- if (FAILED(hr)) {
- qWarning("Failed to create heap with type 0x%x: %s",
- type, qPrintable(comErrorMessage(hr)));
- return h;
- }
-
- heap.start = heap.heap->GetCPUDescriptorHandleForHeapStart();
-
- if (Q_UNLIKELY(debug_descheap()))
- qDebug("new descriptor heap, type %x, start %llu", type, heap.start.ptr);
-
- heap.freeMap[0] = 0xFFFFFFFE;
- for (int i = 1; i < _countof(heap.freeMap); ++i)
- heap.freeMap[i] = 0xFFFFFFFF;
-
- h = heap.start;
-
- m_heaps.append(heap);
-
- return h;
-}
-
-void QSGD3D12CPUDescriptorHeapManager::release(D3D12_CPU_DESCRIPTOR_HANDLE handle, D3D12_DESCRIPTOR_HEAP_TYPE type)
-{
- for (Heap &heap : m_heaps) {
- if (heap.type == type
- && handle.ptr >= heap.start.ptr
- && handle.ptr < heap.start.ptr + heap.handleSize * MAX_DESCRIPTORS_PER_HEAP) {
- unsigned long pos = (handle.ptr - heap.start.ptr) / heap.handleSize;
- const int bucket = pos / DESCRIPTORS_PER_BUCKET;
- const int indexInBucket = pos - bucket * DESCRIPTORS_PER_BUCKET;
- heap.freeMap[bucket] |= 1UL << indexInBucket;
- if (Q_UNLIKELY(debug_descheap()))
- qDebug("free descriptor handle heap %p type %x bucket %d index %d", &heap, type, bucket, indexInBucket);
- return;
- }
- }
- qWarning("QSGD3D12CPUDescriptorHeapManager: Attempted to release untracked descriptor handle %llu of type %d", handle.ptr, type);
-}
-
-void QSGD3D12CPUDescriptorHeapManager::initialize(ID3D12Device *device)
-{
- m_device = device;
-
- for (int i = 0; i < D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES; ++i)
- m_handleSizes[i] = m_device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE(i));
-}
-
-void QSGD3D12CPUDescriptorHeapManager::releaseResources()
-{
- for (Heap &heap : m_heaps)
- heap.heap = nullptr;
-
- m_heaps.clear();
-
- m_device = nullptr;
-}
-
-// One device per process, one everything else (engine) per window.
-Q_GLOBAL_STATIC(QSGD3D12DeviceManager, deviceManager)
-
-static void getHardwareAdapter(IDXGIFactory1 *factory, IDXGIAdapter1 **outAdapter)
-{
- const D3D_FEATURE_LEVEL fl = D3D_FEATURE_LEVEL_11_0;
- ComPtr<IDXGIAdapter1> adapter;
- DXGI_ADAPTER_DESC1 desc;
-
- for (int adapterIndex = 0; factory->EnumAdapters1(adapterIndex, &adapter) != DXGI_ERROR_NOT_FOUND; ++adapterIndex) {
- DXGI_ADAPTER_DESC1 desc;
- adapter->GetDesc1(&desc);
- const QString name = QString::fromUtf16((char16_t *) desc.Description);
- qCDebug(QSG_LOG_INFO_GENERAL, "Adapter %d: '%s' (flags 0x%x)", adapterIndex, qPrintable(name), desc.Flags);
- }
-
- if (qEnvironmentVariableIsSet("QT_D3D_ADAPTER_INDEX")) {
- const int adapterIndex = qEnvironmentVariableIntValue("QT_D3D_ADAPTER_INDEX");
- if (SUCCEEDED(factory->EnumAdapters1(adapterIndex, &adapter))) {
- adapter->GetDesc1(&desc);
- const QString name = QString::fromUtf16((char16_t *) desc.Description);
- HRESULT hr = D3D12CreateDevice(adapter.Get(), fl, _uuidof(ID3D12Device), nullptr);
- if (SUCCEEDED(hr)) {
- qCDebug(QSG_LOG_INFO_GENERAL, "Using requested adapter '%s'", qPrintable(name));
- *outAdapter = adapter.Detach();
- return;
- } else {
- qWarning("Failed to create device for requested adapter '%s': %s",
- qPrintable(name), qPrintable(comErrorMessage(hr)));
- }
- }
- }
-
- for (int adapterIndex = 0; factory->EnumAdapters1(adapterIndex, &adapter) != DXGI_ERROR_NOT_FOUND; ++adapterIndex) {
- adapter->GetDesc1(&desc);
- if (desc.Flags & DXGI_ADAPTER_FLAG_SOFTWARE)
- continue;
-
- if (SUCCEEDED(D3D12CreateDevice(adapter.Get(), fl, _uuidof(ID3D12Device), nullptr))) {
- const QString name = QString::fromUtf16((char16_t *) desc.Description);
- qCDebug(QSG_LOG_INFO_GENERAL, "Using adapter '%s'", qPrintable(name));
- break;
- }
- }
-
- *outAdapter = adapter.Detach();
-}
-
-ID3D12Device *QSGD3D12DeviceManager::ref()
-{
- ensureCreated();
- m_ref.ref();
- return m_device.Get();
-}
-
-void QSGD3D12DeviceManager::unref()
-{
- if (!m_ref.deref()) {
- if (Q_UNLIKELY(debug_render()))
- qDebug("destroying d3d device");
- m_device = nullptr;
- m_factory = nullptr;
- }
-}
-
-void QSGD3D12DeviceManager::deviceLossDetected()
-{
- for (DeviceLossObserver *observer : qAsConst(m_observers))
- observer->deviceLost();
-
- // Nothing else to do here. All windows are expected to release their
- // resources and call unref() in response immediately.
-}
-
-IDXGIFactory4 *QSGD3D12DeviceManager::dxgi()
-{
- ensureCreated();
- return m_factory.Get();
-}
-
-void QSGD3D12DeviceManager::ensureCreated()
-{
- if (m_device)
- return;
-
- HRESULT hr = CreateDXGIFactory2(0, IID_PPV_ARGS(&m_factory));
- if (FAILED(hr)) {
- qWarning("Failed to create DXGI: %s", qPrintable(comErrorMessage(hr)));
- return;
- }
-
- ComPtr<IDXGIAdapter1> adapter;
- getHardwareAdapter(m_factory.Get(), &adapter);
-
- bool warp = true;
- if (adapter) {
- HRESULT hr = D3D12CreateDevice(adapter.Get(), D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS(&m_device));
- if (SUCCEEDED(hr))
- warp = false;
- else
- qWarning("Failed to create device: %s", qPrintable(comErrorMessage(hr)));
- }
-
- if (warp) {
- qCDebug(QSG_LOG_INFO_GENERAL, "Using WARP");
- m_factory->EnumWarpAdapter(IID_PPV_ARGS(&adapter));
- HRESULT hr = D3D12CreateDevice(adapter.Get(), D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS(&m_device));
- if (FAILED(hr)) {
- qWarning("Failed to create WARP device: %s", qPrintable(comErrorMessage(hr)));
- return;
- }
- }
-
- ComPtr<IDXGIAdapter3> adapter3;
- if (SUCCEEDED(adapter.As(&adapter3))) {
- DXGI_QUERY_VIDEO_MEMORY_INFO vidMemInfo;
- if (SUCCEEDED(adapter3->QueryVideoMemoryInfo(0, DXGI_MEMORY_SEGMENT_GROUP_LOCAL, &vidMemInfo))) {
- qCDebug(QSG_LOG_INFO_GENERAL, "Video memory info: LOCAL: Budget %llu KB CurrentUsage %llu KB AvailableForReservation %llu KB CurrentReservation %llu KB",
- vidMemInfo.Budget / 1024, vidMemInfo.CurrentUsage / 1024,
- vidMemInfo.AvailableForReservation / 1024, vidMemInfo.CurrentReservation / 1024);
- }
- if (SUCCEEDED(adapter3->QueryVideoMemoryInfo(0, DXGI_MEMORY_SEGMENT_GROUP_NON_LOCAL, &vidMemInfo))) {
- qCDebug(QSG_LOG_INFO_GENERAL, "Video memory info: NON-LOCAL: Budget %llu KB CurrentUsage %llu KB AvailableForReservation %llu KB CurrentReservation %llu KB",
- vidMemInfo.Budget / 1024, vidMemInfo.CurrentUsage / 1024,
- vidMemInfo.AvailableForReservation / 1024, vidMemInfo.CurrentReservation / 1024);
- }
- }
-}
-
-void QSGD3D12DeviceManager::registerDeviceLossObserver(DeviceLossObserver *observer)
-{
- if (!m_observers.contains(observer))
- m_observers.append(observer);
-}
-
-QSGD3D12Engine::QSGD3D12Engine()
-{
- d = new QSGD3D12EnginePrivate;
-}
-
-QSGD3D12Engine::~QSGD3D12Engine()
-{
- d->waitGPU();
- d->releaseResources();
- delete d;
-}
-
-bool QSGD3D12Engine::attachToWindow(WId window, const QSize &size, float dpr, int surfaceFormatSamples, bool alpha)
-{
- if (d->isInitialized()) {
- qWarning("QSGD3D12Engine: Cannot attach active engine to window");
- return false;
- }
-
- d->initialize(window, size, dpr, surfaceFormatSamples, alpha);
- return d->isInitialized();
-}
-
-void QSGD3D12Engine::releaseResources()
-{
- d->releaseResources();
-}
-
-bool QSGD3D12Engine::hasResources() const
-{
- // An explicit releaseResources() or a device loss results in initialized == false.
- return d->isInitialized();
-}
-
-void QSGD3D12Engine::setWindowSize(const QSize &size, float dpr)
-{
- d->setWindowSize(size, dpr);
-}
-
-WId QSGD3D12Engine::window() const
-{
- return d->currentWindow();
-}
-
-QSize QSGD3D12Engine::windowSize() const
-{
- return d->currentWindowSize();
-}
-
-float QSGD3D12Engine::windowDevicePixelRatio() const
-{
- return d->currentWindowDpr();
-}
-
-uint QSGD3D12Engine::windowSamples() const
-{
- return d->currentWindowSamples();
-}
-
-void QSGD3D12Engine::beginFrame()
-{
- d->beginFrame();
-}
-
-void QSGD3D12Engine::endFrame()
-{
- d->endFrame();
-}
-
-void QSGD3D12Engine::beginLayer()
-{
- d->beginLayer();
-}
-
-void QSGD3D12Engine::endLayer()
-{
- d->endLayer();
-}
-
-void QSGD3D12Engine::invalidateCachedFrameState()
-{
- d->invalidateCachedFrameState();
-}
-
-void QSGD3D12Engine::restoreFrameState(bool minimal)
-{
- d->restoreFrameState(minimal);
-}
-
-void QSGD3D12Engine::finalizePipeline(const QSGD3D12PipelineState &pipelineState)
-{
- d->finalizePipeline(pipelineState);
-}
-
-uint QSGD3D12Engine::genBuffer()
-{
- return d->genBuffer();
-}
-
-void QSGD3D12Engine::releaseBuffer(uint id)
-{
- d->releaseBuffer(id);
-}
-
-void QSGD3D12Engine::resetBuffer(uint id, const quint8 *data, int size)
-{
- d->resetBuffer(id, data, size);
-}
-
-void QSGD3D12Engine::markBufferDirty(uint id, int offset, int size)
-{
- d->markBufferDirty(id, offset, size);
-}
-
-void QSGD3D12Engine::queueViewport(const QRect &rect)
-{
- d->queueViewport(rect);
-}
-
-void QSGD3D12Engine::queueScissor(const QRect &rect)
-{
- d->queueScissor(rect);
-}
-
-void QSGD3D12Engine::queueSetRenderTarget(uint id)
-{
- d->queueSetRenderTarget(id);
-}
-
-void QSGD3D12Engine::queueClearRenderTarget(const QColor &color)
-{
- d->queueClearRenderTarget(color);
-}
-
-void QSGD3D12Engine::queueClearDepthStencil(float depthValue, quint8 stencilValue, ClearFlags which)
-{
- d->queueClearDepthStencil(depthValue, stencilValue, which);
-}
-
-void QSGD3D12Engine::queueSetBlendFactor(const QVector4D &factor)
-{
- d->queueSetBlendFactor(factor);
-}
-
-void QSGD3D12Engine::queueSetStencilRef(quint32 ref)
-{
- d->queueSetStencilRef(ref);
-}
-
-void QSGD3D12Engine::queueDraw(const DrawParams &params)
-{
- d->queueDraw(params);
-}
-
-void QSGD3D12Engine::present()
-{
- d->present();
-}
-
-void QSGD3D12Engine::waitGPU()
-{
- d->waitGPU();
-}
-
-uint QSGD3D12Engine::genTexture()
-{
- return d->genTexture();
-}
-
-void QSGD3D12Engine::createTexture(uint id, const QSize &size, QImage::Format format, TextureCreateFlags flags)
-{
- d->createTexture(id, size, format, flags);
-}
-
-void QSGD3D12Engine::queueTextureResize(uint id, const QSize &size)
-{
- d->queueTextureResize(id, size);
-}
-
-void QSGD3D12Engine::queueTextureUpload(uint id, const QImage &image, const QPoint &dstPos, TextureUploadFlags flags)
-{
- d->queueTextureUpload(id, QVector<QImage>() << image, QVector<QPoint>() << dstPos, flags);
-}
-
-void QSGD3D12Engine::queueTextureUpload(uint id, const QVector<QImage> &images, const QVector<QPoint> &dstPos,
- TextureUploadFlags flags)
-{
- d->queueTextureUpload(id, images, dstPos, flags);
-}
-
-void QSGD3D12Engine::releaseTexture(uint id)
-{
- d->releaseTexture(id);
-}
-
-void QSGD3D12Engine::useTexture(uint id)
-{
- d->useTexture(id);
-}
-
-uint QSGD3D12Engine::genRenderTarget()
-{
- return d->genRenderTarget();
-}
-
-void QSGD3D12Engine::createRenderTarget(uint id, const QSize &size, const QVector4D &clearColor, uint samples)
-{
- d->createRenderTarget(id, size, clearColor, samples);
-}
-
-void QSGD3D12Engine::releaseRenderTarget(uint id)
-{
- d->releaseRenderTarget(id);
-}
-
-void QSGD3D12Engine::useRenderTargetAsTexture(uint id)
-{
- d->useRenderTargetAsTexture(id);
-}
-
-uint QSGD3D12Engine::activeRenderTarget() const
-{
- return d->activeRenderTarget();
-}
-
-QImage QSGD3D12Engine::executeAndWaitReadbackRenderTarget(uint id)
-{
- return d->executeAndWaitReadbackRenderTarget(id);
-}
-
-void QSGD3D12Engine::simulateDeviceLoss()
-{
- d->simulateDeviceLoss();
-}
-
-void *QSGD3D12Engine::getResource(QQuickWindow *, QSGRendererInterface::Resource resource) const
-{
- return d->getResource(resource);
-}
-
-static inline quint32 alignedSize(quint32 size, quint32 byteAlign)
-{
- return (size + byteAlign - 1) & ~(byteAlign - 1);
-}
-
-quint32 QSGD3D12Engine::alignedConstantBufferSize(quint32 size)
-{
- return alignedSize(size, D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT);
-}
-
-QSGD3D12Format QSGD3D12Engine::toDXGIFormat(QSGGeometry::Type sgtype, int tupleSize, int *size)
-{
- QSGD3D12Format format = FmtUnknown;
-
- static const QSGD3D12Format formatMap_ub[] = { FmtUnknown,
- FmtUNormByte,
- FmtUNormByte2,
- FmtUnknown,
- FmtUNormByte4 };
-
- static const QSGD3D12Format formatMap_f[] = { FmtUnknown,
- FmtFloat,
- FmtFloat2,
- FmtFloat3,
- FmtFloat4 };
-
- switch (sgtype) {
- case QSGGeometry::UnsignedByteType:
- format = formatMap_ub[tupleSize];
- if (size)
- *size = tupleSize;
- break;
- case QSGGeometry::FloatType:
- format = formatMap_f[tupleSize];
- if (size)
- *size = sizeof(float) * tupleSize;
- break;
-
- case QSGGeometry::UnsignedShortType:
- format = FmtUnsignedShort;
- if (size)
- *size = sizeof(ushort) * tupleSize;
- break;
- case QSGGeometry::UnsignedIntType:
- format = FmtUnsignedInt;
- if (size)
- *size = sizeof(uint) * tupleSize;
- break;
-
- case QSGGeometry::ByteType:
- case QSGGeometry::IntType:
- case QSGGeometry::ShortType:
- qWarning("no mapping for GL type 0x%x", sgtype);
- break;
-
- default:
- qWarning("unknown GL type 0x%x", sgtype);
- break;
- }
-
- return format;
-}
-
-int QSGD3D12Engine::mipMapLevels(const QSize &size)
-{
- return ceil(log2(qMax(size.width(), size.height()))) + 1;
-}
-
-inline static bool isPowerOfTwo(int x)
-{
- // Assumption: x >= 1
- return x == (x & -x);
-}
-
-QSize QSGD3D12Engine::mipMapAdjustedSourceSize(const QSize &size)
-{
- if (size.isEmpty())
- return size;
-
- QSize adjustedSize = size;
-
- // ### for now only power-of-two sizes are mipmap-capable
- if (!isPowerOfTwo(size.width()))
- adjustedSize.setWidth(qNextPowerOfTwo(size.width()));
- if (!isPowerOfTwo(size.height()))
- adjustedSize.setHeight(qNextPowerOfTwo(size.height()));
-
- return adjustedSize;
-}
-
-void QSGD3D12EnginePrivate::releaseResources()
-{
- if (!initialized)
- return;
-
- mipmapper.releaseResources();
- devLossTest.releaseResources();
-
- frameCommandList = nullptr;
- copyCommandList = nullptr;
-
- copyCommandAllocator = nullptr;
- for (int i = 0; i < frameInFlightCount; ++i) {
- frameCommandAllocator[i] = nullptr;
- pframeData[i].gpuCbvSrvUavHeap = nullptr;
- delete frameFence[i];
- }
-
- defaultDS = nullptr;
- for (int i = 0; i < swapChainBufferCount; ++i) {
- backBufferRT[i] = nullptr;
- defaultRT[i] = nullptr;
- }
-
- psoCache.clear();
- rootSigCache.clear();
- buffers.clear();
- textures.clear();
- renderTargets.clear();
-
- cpuDescHeapManager.releaseResources();
-
- commandQueue = nullptr;
- copyCommandQueue = nullptr;
-
-#ifndef Q_OS_WINRT
- dcompTarget = nullptr;
- dcompVisual = nullptr;
- dcompDevice = nullptr;
-#endif
-
- swapChain = nullptr;
-
- delete presentFence;
- textureUploadFence = nullptr;
-
- deviceManager()->unref();
-
- initialized = false;
-
- // 'window' must be kept, may just be a device loss
-}
-
-void QSGD3D12EnginePrivate::initialize(WId w, const QSize &size, float dpr, int surfaceFormatSamples, bool alpha)
-{
- if (initialized)
- return;
-
- window = w;
- windowSize = size;
- windowDpr = dpr;
- windowSamples = qMax(1, surfaceFormatSamples); // may be -1 or 0, whereas windowSamples is uint and >= 1
- windowAlpha = alpha;
-
- swapChainBufferCount = qMin(qEnvironmentVariableIntValue("QT_D3D_BUFFER_COUNT"), MAX_SWAP_CHAIN_BUFFER_COUNT);
- if (swapChainBufferCount < 2)
- swapChainBufferCount = DEFAULT_SWAP_CHAIN_BUFFER_COUNT;
-
- frameInFlightCount = qMin(qEnvironmentVariableIntValue("QT_D3D_FRAME_COUNT"), MAX_FRAME_IN_FLIGHT_COUNT);
- if (frameInFlightCount < 1)
- frameInFlightCount = DEFAULT_FRAME_IN_FLIGHT_COUNT;
-
- static const char *latReqEnvVar = "QT_D3D_WAITABLE_SWAP_CHAIN_MAX_LATENCY";
- if (!qEnvironmentVariableIsSet(latReqEnvVar))
- waitableSwapChainMaxLatency = DEFAULT_WAITABLE_SWAP_CHAIN_MAX_LATENCY;
- else
- waitableSwapChainMaxLatency = qBound(0, qEnvironmentVariableIntValue(latReqEnvVar), 16);
-
- if (qEnvironmentVariableIsSet("QSG_INFO"))
- const_cast<QLoggingCategory &>(QSG_LOG_INFO_GENERAL()).setEnabled(QtDebugMsg, true);
-
- qCDebug(QSG_LOG_INFO_GENERAL, "d3d12 engine init. swap chain buffer count %d, max frames prepared without blocking %d",
- swapChainBufferCount, frameInFlightCount);
- if (waitableSwapChainMaxLatency)
- qCDebug(QSG_LOG_INFO_GENERAL, "Swap chain frame latency waitable object enabled. Frame latency is %d", waitableSwapChainMaxLatency);
-
- const bool debugLayer = qEnvironmentVariableIntValue("QT_D3D_DEBUG") != 0;
- if (debugLayer) {
- qCDebug(QSG_LOG_INFO_GENERAL, "Enabling debug layer");
-#if !defined(Q_OS_WINRT) || !defined(NDEBUG)
- ComPtr<ID3D12Debug> debugController;
- if (SUCCEEDED(D3D12GetDebugInterface(IID_PPV_ARGS(&debugController))))
- debugController->EnableDebugLayer();
-#else
- qCDebug(QSG_LOG_INFO_GENERAL, "Using DebugInterface will not allow certification to pass");
-#endif
- }
-
- QSGD3D12DeviceManager *dev = deviceManager();
- device = dev->ref();
- dev->registerDeviceLossObserver(this);
-
- if (debugLayer) {
- ComPtr<ID3D12InfoQueue> infoQueue;
- if (SUCCEEDED(device->QueryInterface(IID_PPV_ARGS(&infoQueue)))) {
- infoQueue->SetBreakOnSeverity(D3D12_MESSAGE_SEVERITY_CORRUPTION, true);
- infoQueue->SetBreakOnSeverity(D3D12_MESSAGE_SEVERITY_ERROR, true);
- const bool breakOnWarning = qEnvironmentVariableIntValue("QT_D3D_DEBUG_BREAK_ON_WARNING") != 0;
- infoQueue->SetBreakOnSeverity(D3D12_MESSAGE_SEVERITY_WARNING, breakOnWarning);
- D3D12_INFO_QUEUE_FILTER filter = {};
- D3D12_MESSAGE_ID suppressedMessages[] = {
- // When using a render target other than the default one we
- // have no way to know the custom clear color, if there is one.
- D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE
- };
- filter.DenyList.NumIDs = _countof(suppressedMessages);
- filter.DenyList.pIDList = suppressedMessages;
- // setting the filter would enable Info messages which we don't need
- D3D12_MESSAGE_SEVERITY infoSev = D3D12_MESSAGE_SEVERITY_INFO;
- filter.DenyList.NumSeverities = 1;
- filter.DenyList.pSeverityList = &infoSev;
- infoQueue->PushStorageFilter(&filter);
- }
- }
-
- D3D12_COMMAND_QUEUE_DESC queueDesc = {};
- queueDesc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT;
- if (FAILED(device->CreateCommandQueue(&queueDesc, IID_PPV_ARGS(&commandQueue)))) {
- qWarning("Failed to create command queue");
- return;
- }
-
- queueDesc.Type = D3D12_COMMAND_LIST_TYPE_COPY;
- if (FAILED(device->CreateCommandQueue(&queueDesc, IID_PPV_ARGS(&copyCommandQueue)))) {
- qWarning("Failed to create copy command queue");
- return;
- }
-
-#ifndef Q_OS_WINRT
- HWND hwnd = reinterpret_cast<HWND>(w);
-
- if (windowAlpha) {
- // Go through DirectComposition for semi-transparent windows since the
- // traditional approaches won't fly with flip model swapchains.
- HRESULT hr = DCompositionCreateDevice(nullptr, IID_PPV_ARGS(&dcompDevice));
- if (SUCCEEDED(hr)) {
- hr = dcompDevice->CreateTargetForHwnd(hwnd, true, &dcompTarget);
- if (SUCCEEDED(hr)) {
- hr = dcompDevice->CreateVisual(&dcompVisual);
- if (FAILED(hr)) {
- qWarning("Failed to create DirectComposition visual: %s",
- qPrintable(comErrorMessage(hr)));
- windowAlpha = false;
- }
- } else {
- qWarning("Failed to create DirectComposition target: %s",
- qPrintable(comErrorMessage(hr)));
- windowAlpha = false;
- }
- } else {
- qWarning("Failed to create DirectComposition device: %s",
- qPrintable(comErrorMessage(hr)));
- windowAlpha = false;
- }
- }
-
- if (windowAlpha) {
- DXGI_SWAP_CHAIN_DESC1 swapChainDesc = {};
- swapChainDesc.Width = windowSize.width() * windowDpr;
- swapChainDesc.Height = windowSize.height() * windowDpr;
- swapChainDesc.Format = RT_COLOR_FORMAT;
- swapChainDesc.SampleDesc.Count = 1;
- swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
- swapChainDesc.BufferCount = swapChainBufferCount;
- swapChainDesc.Scaling = DXGI_SCALING_STRETCH;
- swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
- swapChainDesc.AlphaMode = DXGI_ALPHA_MODE_PREMULTIPLIED;
- if (waitableSwapChainMaxLatency)
- swapChainDesc.Flags = DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT;
-
- ComPtr<IDXGISwapChain1> baseSwapChain;
- HRESULT hr = dev->dxgi()->CreateSwapChainForComposition(commandQueue.Get(), &swapChainDesc, nullptr, &baseSwapChain);
- if (SUCCEEDED(hr)) {
- if (SUCCEEDED(baseSwapChain.As(&swapChain))) {
- hr = dcompVisual->SetContent(swapChain.Get());
- if (SUCCEEDED(hr)) {
- hr = dcompTarget->SetRoot(dcompVisual.Get());
- if (FAILED(hr)) {
- qWarning("SetRoot failed for DirectComposition target: %s",
- qPrintable(comErrorMessage(hr)));
- windowAlpha = false;
- }
- } else {
- qWarning("SetContent failed for DirectComposition visual: %s",
- qPrintable(comErrorMessage(hr)));
- windowAlpha = false;
- }
- } else {
- qWarning("Failed to cast swap chain");
- windowAlpha = false;
- }
- } else {
- qWarning("Failed to create swap chain for composition: 0x%x", hr);
- windowAlpha = false;
- }
- }
-
- if (!windowAlpha) {
- DXGI_SWAP_CHAIN_DESC swapChainDesc = {};
- swapChainDesc.BufferCount = swapChainBufferCount;
- swapChainDesc.BufferDesc.Width = windowSize.width() * windowDpr;
- swapChainDesc.BufferDesc.Height = windowSize.height() * windowDpr;
- swapChainDesc.BufferDesc.Format = RT_COLOR_FORMAT;
- swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
- swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD; // D3D12 requires the flip model
- swapChainDesc.OutputWindow = hwnd;
- swapChainDesc.SampleDesc.Count = 1; // Flip does not support MSAA so no choice here
- swapChainDesc.Windowed = TRUE;
- if (waitableSwapChainMaxLatency)
- swapChainDesc.Flags = DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT;
-
- ComPtr<IDXGISwapChain> baseSwapChain;
- HRESULT hr = dev->dxgi()->CreateSwapChain(commandQueue.Get(), &swapChainDesc, &baseSwapChain);
- if (FAILED(hr)) {
- qWarning("Failed to create swap chain: %s", qPrintable(comErrorMessage(hr)));
- return;
- }
- hr = baseSwapChain.As(&swapChain);
- if (FAILED(hr)) {
- qWarning("Failed to cast swap chain: %s", qPrintable(comErrorMessage(hr)));
- return;
- }
- }
-
- dev->dxgi()->MakeWindowAssociation(hwnd, DXGI_MWA_NO_ALT_ENTER);
-#else
- DXGI_SWAP_CHAIN_DESC1 swapChainDesc = {};
- swapChainDesc.Width = windowSize.width() * windowDpr;
- swapChainDesc.Height = windowSize.height() * windowDpr;
- swapChainDesc.Format = RT_COLOR_FORMAT;
- swapChainDesc.SampleDesc.Count = 1;
- swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
- swapChainDesc.BufferCount = swapChainBufferCount;
- swapChainDesc.Scaling = DXGI_SCALING_STRETCH;
- swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
- swapChainDesc.AlphaMode = DXGI_ALPHA_MODE_PREMULTIPLIED;
- if (waitableSwapChainMaxLatency)
- swapChainDesc.Flags = DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT;
-
- ComPtr<IDXGISwapChain1> baseSwapChain;
- HRESULT hr = dev->dxgi()->CreateSwapChainForComposition(commandQueue.Get(), &swapChainDesc, nullptr, &baseSwapChain);
- if (FAILED(hr)) {
- qWarning("Failed to create swap chain for composition: 0x%x", hr);
- return;
- }
- if (FAILED(baseSwapChain.As(&swapChain))) {
- qWarning("Failed to cast swap chain");
- return;
- }
-
- // The winrt platform plugin returns an ISwapChainPanel* from winId().
- ComPtr<ABI::Windows::UI::Xaml::Controls::ISwapChainPanel> swapChainPanel
- = reinterpret_cast<ABI::Windows::UI::Xaml::Controls::ISwapChainPanel *>(window);
- ComPtr<ISwapChainPanelNative> swapChainPanelNative;
- if (FAILED(swapChainPanel.As(&swapChainPanelNative))) {
- qWarning("Failed to cast swap chain panel to native");
- return;
- }
- hr = QEventDispatcherWinRT::runOnXamlThread([this, &swapChainPanelNative]() {
- return swapChainPanelNative->SetSwapChain(swapChain.Get());
- });
- if (FAILED(hr)) {
- qWarning("Failed to set swap chain on panel: 0x%x", hr);
- return;
- }
-#endif
-
- if (waitableSwapChainMaxLatency) {
- if (FAILED(swapChain->SetMaximumFrameLatency(waitableSwapChainMaxLatency)))
- qWarning("Failed to set maximum frame latency to %d", waitableSwapChainMaxLatency);
- swapEvent = swapChain->GetFrameLatencyWaitableObject();
- }
-
- for (int i = 0; i < frameInFlightCount; ++i) {
- if (FAILED(device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&frameCommandAllocator[i])))) {
- qWarning("Failed to create command allocator");
- return;
- }
- }
-
- if (FAILED(device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_COPY, IID_PPV_ARGS(&copyCommandAllocator)))) {
- qWarning("Failed to create copy command allocator");
- return;
- }
-
- for (int i = 0; i < frameInFlightCount; ++i) {
- if (!createCbvSrvUavHeap(i, GPU_CBVSRVUAV_DESCRIPTORS))
- return;
- }
-
- cpuDescHeapManager.initialize(device);
-
- setupDefaultRenderTargets();
-
- if (FAILED(device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, frameCommandAllocator[0].Get(),
- nullptr, IID_PPV_ARGS(&frameCommandList)))) {
- qWarning("Failed to create command list");
- return;
- }
- // created in recording state, close it for now
- frameCommandList->Close();
-
- if (FAILED(device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_COPY, copyCommandAllocator.Get(),
- nullptr, IID_PPV_ARGS(&copyCommandList)))) {
- qWarning("Failed to create copy command list");
- return;
- }
- copyCommandList->Close();
-
- frameIndex = 0;
-
- presentFence = createCPUWaitableFence();
- for (int i = 0; i < frameInFlightCount; ++i)
- frameFence[i] = createCPUWaitableFence();
-
- if (FAILED(device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&textureUploadFence)))) {
- qWarning("Failed to create fence");
- return;
- }
-
- psoCache.setMaxCost(MAX_CACHED_PSO);
- rootSigCache.setMaxCost(MAX_CACHED_ROOTSIG);
-
- if (!mipmapper.initialize(this))
- return;
-
- if (!devLossTest.initialize(this))
- return;
-
- currentRenderTarget = 0;
-
- initialized = true;
-}
-
-bool QSGD3D12EnginePrivate::createCbvSrvUavHeap(int pframeIndex, int descriptorCount)
-{
- D3D12_DESCRIPTOR_HEAP_DESC gpuDescHeapDesc = {};
- gpuDescHeapDesc.NumDescriptors = descriptorCount;
- gpuDescHeapDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV;
- gpuDescHeapDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE;
-
- if (FAILED(device->CreateDescriptorHeap(&gpuDescHeapDesc, IID_PPV_ARGS(&pframeData[pframeIndex].gpuCbvSrvUavHeap)))) {
- qWarning("Failed to create shader-visible CBV-SRV-UAV heap");
- return false;
- }
-
- pframeData[pframeIndex].gpuCbvSrvUavHeapSize = descriptorCount;
-
- return true;
-}
-
-DXGI_SAMPLE_DESC QSGD3D12EnginePrivate::makeSampleDesc(DXGI_FORMAT format, uint samples)
-{
- DXGI_SAMPLE_DESC sampleDesc;
- sampleDesc.Count = 1;
- sampleDesc.Quality = 0;
-
- if (samples > 1) {
- D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS msaaInfo = {};
- msaaInfo.Format = format;
- msaaInfo.SampleCount = samples;
- if (SUCCEEDED(device->CheckFeatureSupport(D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS, &msaaInfo, sizeof(msaaInfo)))) {
- if (msaaInfo.NumQualityLevels > 0) {
- sampleDesc.Count = samples;
- sampleDesc.Quality = msaaInfo.NumQualityLevels - 1;
- } else {
- qWarning("No quality levels for multisampling with sample count %d", samples);
- }
- } else {
- qWarning("Failed to query multisample quality levels for sample count %d", samples);
- }
- }
-
- return sampleDesc;
-}
-
-ID3D12Resource *QSGD3D12EnginePrivate::createColorBuffer(D3D12_CPU_DESCRIPTOR_HANDLE viewHandle, const QSize &size,
- const QVector4D &clearColor, uint samples)
-{
- D3D12_CLEAR_VALUE clearValue = {};
- clearValue.Format = RT_COLOR_FORMAT;
- clearValue.Color[0] = clearColor.x();
- clearValue.Color[1] = clearColor.y();
- clearValue.Color[2] = clearColor.z();
- clearValue.Color[3] = clearColor.w();
-
- D3D12_HEAP_PROPERTIES heapProp = {};
- heapProp.Type = D3D12_HEAP_TYPE_DEFAULT;
-
- D3D12_RESOURCE_DESC rtDesc = {};
- rtDesc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D;
- rtDesc.Width = size.width();
- rtDesc.Height = size.height();
- rtDesc.DepthOrArraySize = 1;
- rtDesc.MipLevels = 1;
- rtDesc.Format = RT_COLOR_FORMAT;
- rtDesc.SampleDesc = makeSampleDesc(rtDesc.Format, samples);
- rtDesc.Flags = D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET;
-
- ID3D12Resource *resource = nullptr;
- const D3D12_RESOURCE_STATES initialState = samples <= 1
- ? D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE
- : D3D12_RESOURCE_STATE_RENDER_TARGET;
- if (FAILED(device->CreateCommittedResource(&heapProp, D3D12_HEAP_FLAG_NONE, &rtDesc,
- initialState, &clearValue, IID_PPV_ARGS(&resource)))) {
- qWarning("Failed to create offscreen render target of size %dx%d", size.width(), size.height());
- return nullptr;
- }
-
- device->CreateRenderTargetView(resource, nullptr, viewHandle);
-
- return resource;
-}
-
-ID3D12Resource *QSGD3D12EnginePrivate::createDepthStencil(D3D12_CPU_DESCRIPTOR_HANDLE viewHandle, const QSize &size, uint samples)
-{
- D3D12_CLEAR_VALUE depthClearValue = {};
- depthClearValue.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
- depthClearValue.DepthStencil.Depth = 1.0f;
- depthClearValue.DepthStencil.Stencil = 0;
-
- D3D12_HEAP_PROPERTIES heapProp = {};
- heapProp.Type = D3D12_HEAP_TYPE_DEFAULT;
-
- D3D12_RESOURCE_DESC bufDesc = {};
- bufDesc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D;
- bufDesc.Width = size.width();
- bufDesc.Height = size.height();
- bufDesc.DepthOrArraySize = 1;
- bufDesc.MipLevels = 1;
- bufDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
- bufDesc.SampleDesc = makeSampleDesc(bufDesc.Format, samples);
- bufDesc.Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN;
- bufDesc.Flags = D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL;
-
- ID3D12Resource *resource = nullptr;
- if (FAILED(device->CreateCommittedResource(&heapProp, D3D12_HEAP_FLAG_NONE, &bufDesc,
- D3D12_RESOURCE_STATE_DEPTH_WRITE, &depthClearValue, IID_PPV_ARGS(&resource)))) {
- qWarning("Failed to create depth-stencil buffer of size %dx%d", size.width(), size.height());
- return nullptr;
- }
-
- D3D12_DEPTH_STENCIL_VIEW_DESC depthStencilDesc = {};
- depthStencilDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
- depthStencilDesc.ViewDimension = bufDesc.SampleDesc.Count <= 1 ? D3D12_DSV_DIMENSION_TEXTURE2D : D3D12_DSV_DIMENSION_TEXTURE2DMS;
-
- device->CreateDepthStencilView(resource, &depthStencilDesc, viewHandle);
-
- return resource;
-}
-
-void QSGD3D12EnginePrivate::setupDefaultRenderTargets()
-{
- for (int i = 0; i < swapChainBufferCount; ++i) {
- if (FAILED(swapChain->GetBuffer(i, IID_PPV_ARGS(&backBufferRT[i])))) {
- qWarning("Failed to get buffer %d from swap chain", i);
- return;
- }
- defaultRTV[i] = cpuDescHeapManager.allocate(D3D12_DESCRIPTOR_HEAP_TYPE_RTV);
- if (windowSamples == 1) {
- defaultRT[i] = backBufferRT[i];
- device->CreateRenderTargetView(defaultRT[i].Get(), nullptr, defaultRTV[i]);
- } else {
- const QSize size(windowSize.width() * windowDpr, windowSize.height() * windowDpr);
- // Not optimal if the user called setClearColor, but there's so
- // much we can do. The debug layer warning is suppressed so we're good to go.
- const QColor cc(Qt::white);
- const QVector4D clearColor(cc.redF(), cc.greenF(), cc.blueF(), cc.alphaF());
- ID3D12Resource *msaaRT = createColorBuffer(defaultRTV[i], size, clearColor, windowSamples);
- if (msaaRT)
- defaultRT[i].Attach(msaaRT);
- }
- }
-
- defaultDSV = cpuDescHeapManager.allocate(D3D12_DESCRIPTOR_HEAP_TYPE_DSV);
- const QSize size(windowSize.width() * windowDpr, windowSize.height() * windowDpr);
- ID3D12Resource *ds = createDepthStencil(defaultDSV, size, windowSamples);
- if (ds)
- defaultDS.Attach(ds);
-
- presentFrameIndex = 0;
-}
-
-void QSGD3D12EnginePrivate::setWindowSize(const QSize &size, float dpr)
-{
- if (!initialized || (windowSize == size && windowDpr == dpr))
- return;
-
- waitGPU();
-
- windowSize = size;
- windowDpr = dpr;
-
- if (Q_UNLIKELY(debug_render()))
- qDebug() << "resize" << size << dpr;
-
- // Clear these, otherwise resizing will fail.
- defaultDS = nullptr;
- cpuDescHeapManager.release(defaultDSV, D3D12_DESCRIPTOR_HEAP_TYPE_DSV);
- for (int i = 0; i < swapChainBufferCount; ++i) {
- backBufferRT[i] = nullptr;
- defaultRT[i] = nullptr;
- cpuDescHeapManager.release(defaultRTV[i], D3D12_DESCRIPTOR_HEAP_TYPE_RTV);
- }
-
- const int w = windowSize.width() * windowDpr;
- const int h = windowSize.height() * windowDpr;
- HRESULT hr = swapChain->ResizeBuffers(swapChainBufferCount, w, h, RT_COLOR_FORMAT,
- waitableSwapChainMaxLatency ? DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT : 0);
- if (hr == DXGI_ERROR_DEVICE_REMOVED || hr == DXGI_ERROR_DEVICE_RESET) {
- deviceManager()->deviceLossDetected();
- return;
- } else if (FAILED(hr)) {
- qWarning("Failed to resize buffers: %s", qPrintable(comErrorMessage(hr)));
- return;
- }
-
- setupDefaultRenderTargets();
-}
-
-void QSGD3D12EnginePrivate::deviceLost()
-{
- qWarning("D3D device lost, will attempt to reinitialize");
-
- // Release all resources. This is important because otherwise reinitialization may fail.
- releaseResources();
-
- // Now in uninitialized state (but 'window' is still valid). Will recreate
- // all the resources on the next beginFrame().
-}
-
-QSGD3D12CPUWaitableFence *QSGD3D12EnginePrivate::createCPUWaitableFence() const
-{
- QSGD3D12CPUWaitableFence *f = new QSGD3D12CPUWaitableFence;
- HRESULT hr = device->CreateFence(f->value, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&f->fence));
- if (FAILED(hr)) {
- qWarning("Failed to create fence: %s", qPrintable(comErrorMessage(hr)));
- return f;
- }
- f->event = CreateEvent(nullptr, FALSE, FALSE, nullptr);
- return f;
-}
-
-void QSGD3D12EnginePrivate::waitForGPU(QSGD3D12CPUWaitableFence *f) const
-{
- const UINT64 newValue = f->value.fetchAndAddAcquire(1) + 1;
- commandQueue->Signal(f->fence.Get(), newValue);
- if (f->fence->GetCompletedValue() < newValue) {
- HRESULT hr = f->fence->SetEventOnCompletion(newValue, f->event);
- if (FAILED(hr)) {
- qWarning("SetEventOnCompletion failed: %s", qPrintable(comErrorMessage(hr)));
- return;
- }
- WaitForSingleObject(f->event, INFINITE);
- }
-}
-
-void QSGD3D12EnginePrivate::transitionResource(ID3D12Resource *resource, ID3D12GraphicsCommandList *commandList,
- D3D12_RESOURCE_STATES before, D3D12_RESOURCE_STATES after) const
-{
- D3D12_RESOURCE_BARRIER barrier;
- barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
- barrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
- barrier.Transition.pResource = resource;
- barrier.Transition.StateBefore = before;
- barrier.Transition.StateAfter = after;
- barrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES;
-
- commandList->ResourceBarrier(1, &barrier);
-}
-
-void QSGD3D12EnginePrivate::resolveMultisampledTarget(ID3D12Resource *msaa,
- ID3D12Resource *resolve,
- D3D12_RESOURCE_STATES resolveUsage,
- ID3D12GraphicsCommandList *commandList) const
-{
- D3D12_RESOURCE_BARRIER barriers[2];
- for (int i = 0; i < _countof(barriers); ++i) {
- barriers[i].Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
- barriers[i].Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
- barriers[i].Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES;
- }
-
- barriers[0].Transition.pResource = msaa;
- barriers[0].Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET;
- barriers[0].Transition.StateAfter = D3D12_RESOURCE_STATE_RESOLVE_SOURCE;
- barriers[1].Transition.pResource = resolve;
- barriers[1].Transition.StateBefore = resolveUsage;
- barriers[1].Transition.StateAfter = D3D12_RESOURCE_STATE_RESOLVE_DEST;
- commandList->ResourceBarrier(2, barriers);
-
- commandList->ResolveSubresource(resolve, 0, msaa, 0, RT_COLOR_FORMAT);
-
- barriers[0].Transition.pResource = msaa;
- barriers[0].Transition.StateBefore = D3D12_RESOURCE_STATE_RESOLVE_SOURCE;
- barriers[0].Transition.StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET;
- barriers[1].Transition.pResource = resolve;
- barriers[1].Transition.StateBefore = D3D12_RESOURCE_STATE_RESOLVE_DEST;
- barriers[1].Transition.StateAfter = resolveUsage;
- commandList->ResourceBarrier(2, barriers);
-}
-
-void QSGD3D12EnginePrivate::uavBarrier(ID3D12Resource *resource, ID3D12GraphicsCommandList *commandList) const
-{
- D3D12_RESOURCE_BARRIER barrier = {};
- barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_UAV;
- barrier.UAV.pResource = resource;
-
- commandList->ResourceBarrier(1, &barrier);
-}
-
-ID3D12Resource *QSGD3D12EnginePrivate::createBuffer(int size)
-{
- ID3D12Resource *buf;
-
- D3D12_HEAP_PROPERTIES uploadHeapProp = {};
- uploadHeapProp.Type = D3D12_HEAP_TYPE_UPLOAD;
-
- D3D12_RESOURCE_DESC bufDesc = {};
- bufDesc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER;
- bufDesc.Width = size;
- bufDesc.Height = 1;
- bufDesc.DepthOrArraySize = 1;
- bufDesc.MipLevels = 1;
- bufDesc.Format = DXGI_FORMAT_UNKNOWN;
- bufDesc.SampleDesc.Count = 1;
- bufDesc.Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR;
-
- HRESULT hr = device->CreateCommittedResource(&uploadHeapProp, D3D12_HEAP_FLAG_NONE, &bufDesc,
- D3D12_RESOURCE_STATE_GENERIC_READ, nullptr, IID_PPV_ARGS(&buf));
- if (FAILED(hr))
- qWarning("Failed to create buffer resource: %s", qPrintable(comErrorMessage(hr)));
-
- return buf;
-}
-
-void QSGD3D12EnginePrivate::ensureBuffer(Buffer *buf)
-{
- Buffer::InFlightData &bfd(buf->d[currentPFrameIndex]);
- // Only enlarge, never shrink
- const bool newBufferNeeded = bfd.buffer ? (buf->cpuDataRef.size > bfd.resourceSize) : true;
- if (newBufferNeeded) {
- // Round it up and overallocate a little bit so that a subsequent
- // buffer contents rebuild with a slightly larger total size does
- // not lead to creating a new buffer.
- const quint32 sz = alignedSize(buf->cpuDataRef.size, 4096);
- if (Q_UNLIKELY(debug_buffer()))
- qDebug("new buffer[pf=%d] of size %d (actual data size %d)", currentPFrameIndex, sz, buf->cpuDataRef.size);
- bfd.buffer.Attach(createBuffer(sz));
- bfd.resourceSize = sz;
- }
- // Cache the actual data size in the per-in-flight-frame data as well.
- bfd.dataSize = buf->cpuDataRef.size;
-}
-
-void QSGD3D12EnginePrivate::updateBuffer(Buffer *buf)
-{
- if (buf->cpuDataRef.dirty.isEmpty())
- return;
-
- Buffer::InFlightData &bfd(buf->d[currentPFrameIndex]);
- quint8 *p = nullptr;
- const D3D12_RANGE readRange = { 0, 0 };
- if (FAILED(bfd.buffer->Map(0, &readRange, reinterpret_cast<void **>(&p)))) {
- qWarning("Map failed for buffer of size %d", buf->cpuDataRef.size);
- return;
- }
- for (const auto &r : qAsConst(buf->cpuDataRef.dirty)) {
- if (Q_UNLIKELY(debug_buffer()))
- qDebug("%p o %d s %d", buf, r.first, r.second);
- memcpy(p + r.first, buf->cpuDataRef.p + r.first, r.second);
- }
- bfd.buffer->Unmap(0, nullptr);
- buf->cpuDataRef.dirty.clear();
-}
-
-void QSGD3D12EnginePrivate::ensureDevice()
-{
- if (!initialized && window)
- initialize(window, windowSize, windowDpr, windowSamples, windowAlpha);
-}
-
-void QSGD3D12EnginePrivate::beginFrame()
-{
- if (inFrame && !activeLayers)
- qFatal("beginFrame called again without an endFrame, frame index was %d", frameIndex);
-
- if (Q_UNLIKELY(debug_render()))
- qDebug() << "***** begin frame, logical" << frameIndex << "present" << presentFrameIndex << "layer" << activeLayers;
-
- if (inFrame && activeLayers) {
- if (Q_UNLIKELY(debug_render()))
- qDebug("frame %d already in progress", frameIndex);
- if (!currentLayerDepth) {
- // There are layers and the real frame preparation starts now. Prepare for present.
- beginFrameDraw();
- }
- return;
- }
-
- inFrame = true;
-
- // The device may have been lost. This is the point to attempt to start
- // again from scratch. Except when it is not. Operations that can happen
- // out of frame (e.g. textures, render targets) may trigger reinit earlier
- // than beginFrame.
- ensureDevice();
-
- // Wait for a buffer to be available for Present, if the waitable event is in use.
- if (waitableSwapChainMaxLatency)
- WaitForSingleObject(swapEvent, INFINITE);
-
- // Block if needed. With 2 frames in flight frame N waits for frame N - 2, but not N - 1, to finish.
- currentPFrameIndex = frameIndex % frameInFlightCount;
- if (frameIndex >= frameInFlightCount) {
- ID3D12Fence *fence = frameFence[currentPFrameIndex]->fence.Get();
- HANDLE event = frameFence[currentPFrameIndex]->event;
- // Frame fence values start from 1, hence the +1.
- const quint64 inFlightFenceValue = frameIndex - frameInFlightCount + 1;
- if (fence->GetCompletedValue() < inFlightFenceValue) {
- fence->SetEventOnCompletion(inFlightFenceValue, event);
- WaitForSingleObject(event, INFINITE);
- }
- frameCommandAllocator[currentPFrameIndex]->Reset();
- }
-
- PersistentFrameData &pfd(pframeData[currentPFrameIndex]);
- pfd.cbvSrvUavNextFreeDescriptorIndex = 0;
-
- for (Buffer &b : buffers) {
- if (b.entryInUse())
- b.d[currentPFrameIndex].dirty.clear();
- }
-
- if (frameIndex >= frameInFlightCount - 1) {
- // Now sync the buffer changes from the previous, potentially still in
- // flight, frames. This is done by taking the ranges dirtied in those
- // frames and adding them to the global CPU-side buffer's dirty list,
- // as if this frame changed those ranges. (however, dirty ranges
- // inherited this way are not added to this frame's persistent
- // per-frame dirty list because the next frame after this one should
- // inherit this frame's genuine changes only, the rest will come from
- // the earlier ones)
- for (int delta = frameInFlightCount - 1; delta >= 1; --delta) {
- const int prevPFrameIndex = (frameIndex - delta) % frameInFlightCount;
- PersistentFrameData &prevFrameData(pframeData[prevPFrameIndex]);
- for (uint id : qAsConst(prevFrameData.buffersUsedInFrame)) {
- Buffer &b(buffers[id - 1]);
- if (b.d[currentPFrameIndex].buffer && b.d[currentPFrameIndex].dataSize == b.cpuDataRef.size) {
- if (Q_UNLIKELY(debug_buffer()))
- qDebug() << "frame" << frameIndex << "takes dirty" << b.d[prevPFrameIndex].dirty
- << "from frame" << frameIndex - delta << "for buffer" << id;
- for (const auto &range : qAsConst(b.d[prevPFrameIndex].dirty))
- addDirtyRange(&b.cpuDataRef.dirty, range.first, range.second, b.cpuDataRef.size);
- } else {
- if (Q_UNLIKELY(debug_buffer()))
- qDebug() << "frame" << frameIndex << "makes all dirty from frame" << frameIndex - delta
- << "for buffer" << id;
- addDirtyRange(&b.cpuDataRef.dirty, 0, b.cpuDataRef.size, b.cpuDataRef.size);
- }
- }
- }
- }
-
- if (frameIndex >= frameInFlightCount) {
- // Do some texture upload bookkeeping.
- const quint64 finishedFrameIndex = frameIndex - frameInFlightCount; // we know since we just blocked for this
- // pfd conveniently refers to the same slot that was used by that frame
- if (!pfd.pendingTextureUploads.isEmpty()) {
- if (Q_UNLIKELY(debug_texture()))
- qDebug("Removing texture upload data for frame %d", finishedFrameIndex);
- for (uint id : qAsConst(pfd.pendingTextureUploads)) {
- const int idx = id - 1;
- Texture &t(textures[idx]);
- // fenceValue is 0 when the previous frame cleared it, skip in
- // this case. Skip also when fenceValue > the value it was when
- // adding the last GPU wait - this is the case when more
- // uploads were queued for the same texture in the meantime.
- if (t.fenceValue && t.fenceValue == t.lastWaitFenceValue) {
- t.fenceValue = 0;
- t.lastWaitFenceValue = 0;
- t.stagingBuffers.clear();
- t.stagingHeaps.clear();
- if (Q_UNLIKELY(debug_texture()))
- qDebug("Cleaned staging data for texture %u", id);
- }
- }
- pfd.pendingTextureUploads.clear();
- if (!pfd.pendingTextureMipMap.isEmpty()) {
- if (Q_UNLIKELY(debug_texture()))
- qDebug() << "cleaning mipmap generation data for " << pfd.pendingTextureMipMap;
- // no special cleanup is needed as mipmap generation uses the frame's resources
- pfd.pendingTextureMipMap.clear();
- }
- bool hasPending = false;
- for (int delta = 1; delta < frameInFlightCount; ++delta) {
- const PersistentFrameData &prevFrameData(pframeData[(frameIndex - delta) % frameInFlightCount]);
- if (!prevFrameData.pendingTextureUploads.isEmpty()) {
- hasPending = true;
- break;
- }
- }
- if (!hasPending) {
- if (Q_UNLIKELY(debug_texture()))
- qDebug("no more pending textures");
- copyCommandAllocator->Reset();
- }
- }
-
- // Do the deferred deletes.
- if (!pfd.deleteQueue.isEmpty()) {
- for (PersistentFrameData::DeleteQueueEntry &e : pfd.deleteQueue) {
- e.res = nullptr;
- e.descHeap = nullptr;
- if (e.cpuDescriptorPtr) {
- D3D12_CPU_DESCRIPTOR_HANDLE h = { e.cpuDescriptorPtr };
- cpuDescHeapManager.release(h, e.descHeapType);
- }
- }
- pfd.deleteQueue.clear();
- }
- // Deferred deletes issued outside a begin-endFrame go to the next
- // frame's out-of-frame delete queue as these cannot be executed in the
- // next beginFrame, only in next + frameInFlightCount. Move to the
- // normal queue if this is the next beginFrame.
- if (!pfd.outOfFrameDeleteQueue.isEmpty()) {
- pfd.deleteQueue = pfd.outOfFrameDeleteQueue;
- pfd.outOfFrameDeleteQueue.clear();
- }
-
- // Mark released texture, buffer, etc. slots free.
- if (!pfd.pendingReleases.isEmpty()) {
- for (const auto &pr : qAsConst(pfd.pendingReleases)) {
- Q_ASSERT(pr.id);
- if (pr.type == PersistentFrameData::PendingRelease::TypeTexture) {
- Texture &t(textures[pr.id - 1]);
- Q_ASSERT(t.entryInUse());
- t.flags &= ~RenderTarget::EntryInUse; // createTexture() can now reuse this entry
- t.texture = nullptr;
- } else if (pr.type == PersistentFrameData::PendingRelease::TypeBuffer) {
- Buffer &b(buffers[pr.id - 1]);
- Q_ASSERT(b.entryInUse());
- b.flags &= ~Buffer::EntryInUse;
- for (int i = 0; i < frameInFlightCount; ++i)
- b.d[i].buffer = nullptr;
- } else {
- qFatal("Corrupt pending release list, type %d", pr.type);
- }
- }
- pfd.pendingReleases.clear();
- }
- if (!pfd.outOfFramePendingReleases.isEmpty()) {
- pfd.pendingReleases = pfd.outOfFramePendingReleases;
- pfd.outOfFramePendingReleases.clear();
- }
- }
-
- pfd.buffersUsedInFrame.clear();
-
- beginDrawCalls();
-
- // Prepare for present if this is a frame without layers.
- if (!activeLayers)
- beginFrameDraw();
-}
-
-void QSGD3D12EnginePrivate::beginDrawCalls()
-{
- frameCommandList->Reset(frameCommandAllocator[frameIndex % frameInFlightCount].Get(), nullptr);
- commandList = frameCommandList.Get();
- invalidateCachedFrameState();
-}
-
-void QSGD3D12EnginePrivate::invalidateCachedFrameState()
-{
- tframeData.drawingMode = QSGGeometry::DrawingMode(-1);
- tframeData.currentIndexBuffer = 0;
- tframeData.activeTextureCount = 0;
- tframeData.drawCount = 0;
- tframeData.lastPso = nullptr;
- tframeData.lastRootSig = nullptr;
- tframeData.descHeapSet = false;
-}
-
-void QSGD3D12EnginePrivate::restoreFrameState(bool minimal)
-{
- queueSetRenderTarget(currentRenderTarget);
- if (!minimal) {
- queueViewport(tframeData.viewport);
- queueScissor(tframeData.scissor);
- queueSetBlendFactor(tframeData.blendFactor);
- queueSetStencilRef(tframeData.stencilRef);
- }
- finalizePipeline(tframeData.pipelineState);
-}
-
-void QSGD3D12EnginePrivate::beginFrameDraw()
-{
- if (windowSamples == 1)
- transitionResource(defaultRT[presentFrameIndex % swapChainBufferCount].Get(), commandList,
- D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_RENDER_TARGET);
-}
-
-void QSGD3D12EnginePrivate::endFrame()
-{
- if (!inFrame)
- qFatal("endFrame called without beginFrame, frame index %d", frameIndex);
-
- if (Q_UNLIKELY(debug_render()))
- qDebug("***** end frame");
-
- endDrawCalls(true);
-
- commandQueue->Signal(frameFence[frameIndex % frameInFlightCount]->fence.Get(), frameIndex + 1);
- ++frameIndex;
-
- inFrame = false;
-}
-
-void QSGD3D12EnginePrivate::endDrawCalls(bool lastInFrame)
-{
- PersistentFrameData &pfd(pframeData[currentPFrameIndex]);
-
- // Now is the time to sync all the changed areas in the buffers.
- if (Q_UNLIKELY(debug_buffer()))
- qDebug() << "buffers used in drawcall set" << pfd.buffersUsedInDrawCallSet;
- for (uint id : qAsConst(pfd.buffersUsedInDrawCallSet))
- updateBuffer(&buffers[id - 1]);
-
- pfd.buffersUsedInFrame += pfd.buffersUsedInDrawCallSet;
- pfd.buffersUsedInDrawCallSet.clear();
-
- // Add a wait on the 3D queue for the relevant texture uploads on the copy queue.
- if (!pfd.pendingTextureUploads.isEmpty()) {
- quint64 topFenceValue = 0;
- for (uint id : qAsConst(pfd.pendingTextureUploads)) {
- const int idx = id - 1;
- Texture &t(textures[idx]);
- Q_ASSERT(t.fenceValue);
- // skip if already added a Wait in the previous frame
- if (t.lastWaitFenceValue == t.fenceValue)
- continue;
- t.lastWaitFenceValue = t.fenceValue;
- if (t.fenceValue > topFenceValue)
- topFenceValue = t.fenceValue;
- if (t.mipmap())
- pfd.pendingTextureMipMap.insert(id);
- }
- if (topFenceValue) {
- if (Q_UNLIKELY(debug_texture()))
- qDebug("added wait for texture fence %llu", topFenceValue);
- commandQueue->Wait(textureUploadFence.Get(), topFenceValue);
- // Generate mipmaps after the wait, when necessary.
- if (!pfd.pendingTextureMipMap.isEmpty()) {
- if (Q_UNLIKELY(debug_texture()))
- qDebug() << "starting mipmap generation for" << pfd.pendingTextureMipMap;
- for (uint id : qAsConst(pfd.pendingTextureMipMap))
- mipmapper.queueGenerate(textures[id - 1]);
- }
- }
- }
-
- if (lastInFrame) {
- // Resolve and transition the backbuffer for present, if needed.
- const int idx = presentFrameIndex % swapChainBufferCount;
- if (windowSamples == 1) {
- transitionResource(defaultRT[idx].Get(), commandList,
- D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PRESENT);
- } else {
- if (Q_UNLIKELY(debug_render())) {
- const D3D12_RESOURCE_DESC desc = defaultRT[idx]->GetDesc();
- qDebug("added resolve for multisampled render target (count %d, quality %d)",
- desc.SampleDesc.Count, desc.SampleDesc.Quality);
- }
- resolveMultisampledTarget(defaultRT[idx].Get(), backBufferRT[idx].Get(),
- D3D12_RESOURCE_STATE_PRESENT, commandList);
- }
-
- if (activeLayers) {
- if (Q_UNLIKELY(debug_render()))
- qDebug("this frame had %d layers", activeLayers);
- activeLayers = 0;
- }
- }
-
- // Go!
- HRESULT hr = frameCommandList->Close();
- if (FAILED(hr)) {
- qWarning("Failed to close command list: %s", qPrintable(comErrorMessage(hr)));
- if (hr == E_INVALIDARG)
- qWarning("Invalid arguments. Some of the commands in the list is invalid in some way.");
- }
-
- ID3D12CommandList *commandLists[] = { frameCommandList.Get() };
- commandQueue->ExecuteCommandLists(_countof(commandLists), commandLists);
-
- commandList = nullptr;
-}
-
-void QSGD3D12EnginePrivate::beginLayer()
-{
- if (inFrame && !activeLayers)
- qFatal("Layer rendering cannot be started while a frame is active");
-
- if (Q_UNLIKELY(debug_render()))
- qDebug("===== beginLayer active %d depth %d (inFrame=%d)", activeLayers, currentLayerDepth, inFrame);
-
- ++activeLayers;
- ++currentLayerDepth;
-
- // Do an early beginFrame. With multiple layers this results in
- // beginLayer - beginFrame - endLayer - beginLayer - beginFrame - endLayer - ... - (*) beginFrame - endFrame
- // where (*) denotes the start of the preparation of the actual, non-layer frame.
-
- if (activeLayers == 1)
- beginFrame();
-}
-
-void QSGD3D12EnginePrivate::endLayer()
-{
- if (!inFrame || !activeLayers || !currentLayerDepth)
- qFatal("Mismatched endLayer");
-
- if (Q_UNLIKELY(debug_render()))
- qDebug("===== endLayer active %d depth %d", activeLayers, currentLayerDepth);
-
- --currentLayerDepth;
-
- // Do not touch activeLayers. It remains valid until endFrame.
-}
-
-// Root signature:
-// [0] CBV - always present
-// [1] table with one SRV per texture (must be a table since root descriptor SRVs cannot be textures) - optional
-// one static sampler per texture - optional
-//
-// SRVs can be created freely via QSGD3D12CPUDescriptorHeapManager and stored
-// in QSGD3D12TextureView. The engine will copy them onto a dedicated,
-// shader-visible CBV-SRV-UAV heap in the correct order.
-
-void QSGD3D12EnginePrivate::finalizePipeline(const QSGD3D12PipelineState &pipelineState)
-{
- if (!inFrame) {
- qWarning("%s: Cannot be called outside begin/endFrame", __FUNCTION__);
- return;
- }
-
- tframeData.pipelineState = pipelineState;
-
- RootSigCacheEntry *cachedRootSig = rootSigCache[pipelineState.shaders.rootSig];
- if (!cachedRootSig) {
- if (Q_UNLIKELY(debug_render()))
- qDebug("NEW ROOTSIG");
-
- cachedRootSig = new RootSigCacheEntry;
-
- D3D12_ROOT_PARAMETER rootParams[4];
- int rootParamCount = 0;
-
- rootParams[0].ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
- rootParams[0].ShaderVisibility = D3D12_SHADER_VISIBILITY_ALL;
- rootParams[0].Descriptor.ShaderRegister = 0; // b0
- rootParams[0].Descriptor.RegisterSpace = 0;
- ++rootParamCount;
-
- D3D12_DESCRIPTOR_RANGE tvDescRange;
- if (pipelineState.shaders.rootSig.textureViewCount > 0) {
- rootParams[rootParamCount].ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
- rootParams[rootParamCount].ShaderVisibility = D3D12_SHADER_VISIBILITY_PIXEL;
- rootParams[rootParamCount].DescriptorTable.NumDescriptorRanges = 1;
- tvDescRange.RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_SRV;
- tvDescRange.NumDescriptors = pipelineState.shaders.rootSig.textureViewCount;
- tvDescRange.BaseShaderRegister = 0; // t0, t1, ...
- tvDescRange.RegisterSpace = 0;
- tvDescRange.OffsetInDescriptorsFromTableStart = D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND;
- rootParams[rootParamCount].DescriptorTable.pDescriptorRanges = &tvDescRange;
- ++rootParamCount;
- }
-
- Q_ASSERT(rootParamCount <= _countof(rootParams));
- D3D12_ROOT_SIGNATURE_DESC desc;
- desc.NumParameters = rootParamCount;
- desc.pParameters = rootParams;
- // Mixing up samplers and resource views in QSGD3D12TextureView means
- // that the number of static samplers has to match the number of
- // textures. This is not really ideal in general but works for Quick's use cases.
- // The shaders can still choose to declare and use fewer samplers, if they want to.
- desc.NumStaticSamplers = pipelineState.shaders.rootSig.textureViewCount;
- D3D12_STATIC_SAMPLER_DESC staticSamplers[8];
- int sdIdx = 0;
- Q_ASSERT(pipelineState.shaders.rootSig.textureViewCount <= _countof(staticSamplers));
- for (int i = 0; i < pipelineState.shaders.rootSig.textureViewCount; ++i) {
- const QSGD3D12TextureView &tv(pipelineState.shaders.rootSig.textureViews[i]);
- D3D12_STATIC_SAMPLER_DESC sd = {};
- sd.Filter = D3D12_FILTER(tv.filter);
- sd.AddressU = D3D12_TEXTURE_ADDRESS_MODE(tv.addressModeHoriz);
- sd.AddressV = D3D12_TEXTURE_ADDRESS_MODE(tv.addressModeVert);
- sd.AddressW = D3D12_TEXTURE_ADDRESS_MODE_CLAMP;
- sd.MinLOD = 0.0f;
- sd.MaxLOD = D3D12_FLOAT32_MAX;
- sd.ShaderRegister = sdIdx; // t0, t1, ...
- sd.ShaderVisibility = D3D12_SHADER_VISIBILITY_PIXEL;
- staticSamplers[sdIdx++] = sd;
- }
- desc.pStaticSamplers = staticSamplers;
- desc.Flags = D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT;
-
- ComPtr<ID3DBlob> signature;
- ComPtr<ID3DBlob> error;
- if (FAILED(D3D12SerializeRootSignature(&desc, D3D_ROOT_SIGNATURE_VERSION_1, &signature, &error))) {
- QByteArray msg(static_cast<const char *>(error->GetBufferPointer()), error->GetBufferSize());
- qWarning("Failed to serialize root signature: %s", qPrintable(msg));
- return;
- }
- if (FAILED(device->CreateRootSignature(0, signature->GetBufferPointer(), signature->GetBufferSize(),
- IID_PPV_ARGS(&cachedRootSig->rootSig)))) {
- qWarning("Failed to create root signature");
- return;
- }
-
- rootSigCache.insert(pipelineState.shaders.rootSig, cachedRootSig);
- }
-
- PSOCacheEntry *cachedPso = psoCache[pipelineState];
- if (!cachedPso) {
- if (Q_UNLIKELY(debug_render()))
- qDebug("NEW PSO");
-
- cachedPso = new PSOCacheEntry;
-
- D3D12_GRAPHICS_PIPELINE_STATE_DESC psoDesc = {};
-
- D3D12_INPUT_ELEMENT_DESC inputElements[QSGD3D12_MAX_INPUT_ELEMENTS];
- int ieIdx = 0;
- for (int i = 0; i < pipelineState.inputElementCount; ++i) {
- const QSGD3D12InputElement &ie(pipelineState.inputElements[i]);
- D3D12_INPUT_ELEMENT_DESC ieDesc = {};
- ieDesc.SemanticName = ie.semanticName;
- ieDesc.SemanticIndex = ie.semanticIndex;
- ieDesc.Format = DXGI_FORMAT(ie.format);
- ieDesc.InputSlot = ie.slot;
- ieDesc.AlignedByteOffset = ie.offset;
- ieDesc.InputSlotClass = D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA;
- if (Q_UNLIKELY(debug_render()))
- qDebug("input [%d]: %s %d 0x%x %d", ieIdx, ie.semanticName, ie.offset, ie.format, ie.slot);
- inputElements[ieIdx++] = ieDesc;
- }
-
- psoDesc.InputLayout = { inputElements, UINT(ieIdx) };
-
- psoDesc.pRootSignature = cachedRootSig->rootSig.Get();
-
- D3D12_SHADER_BYTECODE vshader;
- vshader.pShaderBytecode = pipelineState.shaders.vs;
- vshader.BytecodeLength = pipelineState.shaders.vsSize;
- D3D12_SHADER_BYTECODE pshader;
- pshader.pShaderBytecode = pipelineState.shaders.ps;
- pshader.BytecodeLength = pipelineState.shaders.psSize;
-
- psoDesc.VS = vshader;
- psoDesc.PS = pshader;
-
- D3D12_RASTERIZER_DESC rastDesc = {};
- rastDesc.FillMode = D3D12_FILL_MODE_SOLID;
- rastDesc.CullMode = D3D12_CULL_MODE(pipelineState.cullMode);
- rastDesc.FrontCounterClockwise = pipelineState.frontCCW;
- rastDesc.DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
- rastDesc.DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
- rastDesc.SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
- rastDesc.DepthClipEnable = TRUE;
-
- psoDesc.RasterizerState = rastDesc;
-
- D3D12_BLEND_DESC blendDesc = {};
- if (pipelineState.blend == QSGD3D12PipelineState::BlendNone) {
- D3D12_RENDER_TARGET_BLEND_DESC noBlendDesc = {};
- noBlendDesc.RenderTargetWriteMask = pipelineState.colorWrite ? D3D12_COLOR_WRITE_ENABLE_ALL : 0;
- blendDesc.RenderTarget[0] = noBlendDesc;
- } else if (pipelineState.blend == QSGD3D12PipelineState::BlendPremul) {
- const D3D12_RENDER_TARGET_BLEND_DESC premulBlendDesc = {
- TRUE, FALSE,
- D3D12_BLEND_ONE, D3D12_BLEND_INV_SRC_ALPHA, D3D12_BLEND_OP_ADD,
- D3D12_BLEND_ONE, D3D12_BLEND_INV_SRC_ALPHA, D3D12_BLEND_OP_ADD,
- D3D12_LOGIC_OP_NOOP,
- UINT8(pipelineState.colorWrite ? D3D12_COLOR_WRITE_ENABLE_ALL : 0)
- };
- blendDesc.RenderTarget[0] = premulBlendDesc;
- } else if (pipelineState.blend == QSGD3D12PipelineState::BlendColor) {
- const D3D12_RENDER_TARGET_BLEND_DESC colorBlendDesc = {
- TRUE, FALSE,
- D3D12_BLEND_BLEND_FACTOR, D3D12_BLEND_INV_SRC_COLOR, D3D12_BLEND_OP_ADD,
- D3D12_BLEND_BLEND_FACTOR, D3D12_BLEND_INV_SRC_ALPHA, D3D12_BLEND_OP_ADD,
- D3D12_LOGIC_OP_NOOP,
- UINT8(pipelineState.colorWrite ? D3D12_COLOR_WRITE_ENABLE_ALL : 0)
- };
- blendDesc.RenderTarget[0] = colorBlendDesc;
- }
- psoDesc.BlendState = blendDesc;
-
- psoDesc.DepthStencilState.DepthEnable = pipelineState.depthEnable;
- psoDesc.DepthStencilState.DepthWriteMask = pipelineState.depthWrite ? D3D12_DEPTH_WRITE_MASK_ALL : D3D12_DEPTH_WRITE_MASK_ZERO;
- psoDesc.DepthStencilState.DepthFunc = D3D12_COMPARISON_FUNC(pipelineState.depthFunc);
-
- psoDesc.DepthStencilState.StencilEnable = pipelineState.stencilEnable;
- psoDesc.DepthStencilState.StencilReadMask = psoDesc.DepthStencilState.StencilWriteMask = 0xFF;
- D3D12_DEPTH_STENCILOP_DESC stencilOpDesc = {
- D3D12_STENCIL_OP(pipelineState.stencilFailOp),
- D3D12_STENCIL_OP(pipelineState.stencilDepthFailOp),
- D3D12_STENCIL_OP(pipelineState.stencilPassOp),
- D3D12_COMPARISON_FUNC(pipelineState.stencilFunc)
- };
- psoDesc.DepthStencilState.FrontFace = psoDesc.DepthStencilState.BackFace = stencilOpDesc;
-
- psoDesc.SampleMask = UINT_MAX;
- psoDesc.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE(pipelineState.topologyType);
- psoDesc.NumRenderTargets = 1;
- psoDesc.RTVFormats[0] = RT_COLOR_FORMAT;
- psoDesc.DSVFormat = DXGI_FORMAT_D24_UNORM_S8_UINT;
- psoDesc.SampleDesc = defaultRT[0]->GetDesc().SampleDesc;
-
- HRESULT hr = device->CreateGraphicsPipelineState(&psoDesc, IID_PPV_ARGS(&cachedPso->pso));
- if (FAILED(hr)) {
- qWarning("Failed to create graphics pipeline state: %s",
- qPrintable(comErrorMessage(hr)));
- return;
- }
-
- psoCache.insert(pipelineState, cachedPso);
- }
-
- if (cachedPso->pso.Get() != tframeData.lastPso) {
- tframeData.lastPso = cachedPso->pso.Get();
- commandList->SetPipelineState(tframeData.lastPso);
- }
-
- if (cachedRootSig->rootSig.Get() != tframeData.lastRootSig) {
- tframeData.lastRootSig = cachedRootSig->rootSig.Get();
- commandList->SetGraphicsRootSignature(tframeData.lastRootSig);
- }
-
- if (pipelineState.shaders.rootSig.textureViewCount > 0)
- setDescriptorHeaps();
-}
-
-void QSGD3D12EnginePrivate::setDescriptorHeaps(bool force)
-{
- if (force || !tframeData.descHeapSet) {
- tframeData.descHeapSet = true;
- ID3D12DescriptorHeap *heaps[] = { pframeData[currentPFrameIndex].gpuCbvSrvUavHeap.Get() };
- commandList->SetDescriptorHeaps(_countof(heaps), heaps);
- }
-}
-
-void QSGD3D12EnginePrivate::queueViewport(const QRect &rect)
-{
- if (!inFrame) {
- qWarning("%s: Cannot be called outside begin/endFrame", __FUNCTION__);
- return;
- }
-
- tframeData.viewport = rect;
- const D3D12_VIEWPORT viewport = { float(rect.x()), float(rect.y()), float(rect.width()), float(rect.height()), 0, 1 };
- commandList->RSSetViewports(1, &viewport);
-}
-
-void QSGD3D12EnginePrivate::queueScissor(const QRect &rect)
-{
- if (!inFrame) {
- qWarning("%s: Cannot be called outside begin/endFrame", __FUNCTION__);
- return;
- }
-
- tframeData.scissor = rect;
- const D3D12_RECT scissorRect = { rect.x(), rect.y(), rect.x() + rect.width(), rect.y() + rect.height() };
- commandList->RSSetScissorRects(1, &scissorRect);
-}
-
-void QSGD3D12EnginePrivate::queueSetRenderTarget(uint id)
-{
- if (!inFrame) {
- qWarning("%s: Cannot be called outside begin/endFrame", __FUNCTION__);
- return;
- }
-
- D3D12_CPU_DESCRIPTOR_HANDLE rtvHandle;
- D3D12_CPU_DESCRIPTOR_HANDLE dsvHandle;
-
- if (!id) {
- rtvHandle = defaultRTV[presentFrameIndex % swapChainBufferCount];
- dsvHandle = defaultDSV;
- } else {
- const int idx = id - 1;
- Q_ASSERT(idx < renderTargets.count() && renderTargets[idx].entryInUse());
- RenderTarget &rt(renderTargets[idx]);
- rtvHandle = rt.rtv;
- dsvHandle = rt.dsv;
- if (!(rt.flags & RenderTarget::NeedsReadBarrier)) {
- rt.flags |= RenderTarget::NeedsReadBarrier;
- if (!(rt.flags & RenderTarget::Multisample))
- transitionResource(rt.color.Get(), commandList, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE,
- D3D12_RESOURCE_STATE_RENDER_TARGET);
- }
- }
-
- commandList->OMSetRenderTargets(1, &rtvHandle, FALSE, &dsvHandle);
-
- currentRenderTarget = id;
-}
-
-void QSGD3D12EnginePrivate::queueClearRenderTarget(const QColor &color)
-{
- if (!inFrame) {
- qWarning("%s: Cannot be called outside begin/endFrame", __FUNCTION__);
- return;
- }
-
- const float clearColor[] = { float(color.redF()), float(color.blueF()), float(color.greenF()), float(color.alphaF()) };
- D3D12_CPU_DESCRIPTOR_HANDLE rtv = !currentRenderTarget
- ? defaultRTV[presentFrameIndex % swapChainBufferCount]
- : renderTargets[currentRenderTarget - 1].rtv;
- commandList->ClearRenderTargetView(rtv, clearColor, 0, nullptr);
-}
-
-void QSGD3D12EnginePrivate::queueClearDepthStencil(float depthValue, quint8 stencilValue, QSGD3D12Engine::ClearFlags which)
-{
- if (!inFrame) {
- qWarning("%s: Cannot be called outside begin/endFrame", __FUNCTION__);
- return;
- }
-
- D3D12_CPU_DESCRIPTOR_HANDLE dsv = !currentRenderTarget
- ? defaultDSV
- : renderTargets[currentRenderTarget - 1].dsv;
- commandList->ClearDepthStencilView(dsv, D3D12_CLEAR_FLAGS(int(which)), depthValue, stencilValue, 0, nullptr);
-}
-
-void QSGD3D12EnginePrivate::queueSetBlendFactor(const QVector4D &factor)
-{
- if (!inFrame) {
- qWarning("%s: Cannot be called outside begin/endFrame", __FUNCTION__);
- return;
- }
-
- tframeData.blendFactor = factor;
- const float f[4] = { factor.x(), factor.y(), factor.z(), factor.w() };
- commandList->OMSetBlendFactor(f);
-}
-
-void QSGD3D12EnginePrivate::queueSetStencilRef(quint32 ref)
-{
- if (!inFrame) {
- qWarning("%s: Cannot be called outside begin/endFrame", __FUNCTION__);
- return;
- }
-
- tframeData.stencilRef = ref;
- commandList->OMSetStencilRef(ref);
-}
-
-void QSGD3D12EnginePrivate::queueDraw(const QSGD3D12Engine::DrawParams &params)
-{
- if (!inFrame) {
- qWarning("%s: Cannot be called outside begin/endFrame", __FUNCTION__);
- return;
- }
-
- const bool skip = tframeData.scissor.isEmpty();
-
- PersistentFrameData &pfd(pframeData[currentPFrameIndex]);
-
- pfd.buffersUsedInDrawCallSet.insert(params.vertexBuf);
- const int vertexBufIdx = params.vertexBuf - 1;
- Q_ASSERT(params.vertexBuf && vertexBufIdx < buffers.count() && buffers[vertexBufIdx].entryInUse());
- pfd.buffersUsedInDrawCallSet.insert(params.constantBuf);
- const int constantBufIdx = params.constantBuf - 1;
- Q_ASSERT(params.constantBuf && constantBufIdx < buffers.count() && buffers[constantBufIdx].entryInUse());
- int indexBufIdx = -1;
- if (params.indexBuf) {
- pfd.buffersUsedInDrawCallSet.insert(params.indexBuf);
- indexBufIdx = params.indexBuf - 1;
- Q_ASSERT(indexBufIdx < buffers.count() && buffers[indexBufIdx].entryInUse());
- }
-
- // Ensure buffers are created but do not copy the data here, leave that to endDrawCalls().
- ensureBuffer(&buffers[vertexBufIdx]);
- ensureBuffer(&buffers[constantBufIdx]);
- if (indexBufIdx >= 0)
- ensureBuffer(&buffers[indexBufIdx]);
-
- // Set the CBV.
- if (!skip && params.cboOffset >= 0) {
- ID3D12Resource *cbuf = buffers[constantBufIdx].d[currentPFrameIndex].buffer.Get();
- if (cbuf)
- commandList->SetGraphicsRootConstantBufferView(0, cbuf->GetGPUVirtualAddress() + params.cboOffset);
- }
-
- // Set up vertex and index buffers.
- ID3D12Resource *vbuf = buffers[vertexBufIdx].d[currentPFrameIndex].buffer.Get();
- ID3D12Resource *ibuf = indexBufIdx >= 0 && params.startIndexIndex >= 0
- ? buffers[indexBufIdx].d[currentPFrameIndex].buffer.Get() : nullptr;
-
- if (!skip && params.mode != tframeData.drawingMode) {
- D3D_PRIMITIVE_TOPOLOGY topology = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED;
- switch (params.mode) {
- case QSGGeometry::DrawPoints:
- topology = D3D_PRIMITIVE_TOPOLOGY_POINTLIST;
- break;
- case QSGGeometry::DrawLines:
- topology = D3D_PRIMITIVE_TOPOLOGY_LINELIST;
- break;
- case QSGGeometry::DrawLineStrip:
- topology = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP;
- break;
- case QSGGeometry::DrawTriangles:
- topology = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST;
- break;
- case QSGGeometry::DrawTriangleStrip:
- topology = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP;
- break;
- default:
- qFatal("Unsupported drawing mode 0x%x", params.mode);
- break;
- }
- commandList->IASetPrimitiveTopology(topology);
- tframeData.drawingMode = params.mode;
- }
-
- if (!skip) {
- D3D12_VERTEX_BUFFER_VIEW vbv;
- vbv.BufferLocation = vbuf->GetGPUVirtualAddress() + params.vboOffset;
- vbv.SizeInBytes = params.vboSize;
- vbv.StrideInBytes = params.vboStride;
-
- // must be set after the topology
- commandList->IASetVertexBuffers(0, 1, &vbv);
- }
-
- if (!skip && params.startIndexIndex >= 0 && ibuf && tframeData.currentIndexBuffer != params.indexBuf) {
- tframeData.currentIndexBuffer = params.indexBuf;
- D3D12_INDEX_BUFFER_VIEW ibv;
- ibv.BufferLocation = ibuf->GetGPUVirtualAddress();
- ibv.SizeInBytes = buffers[indexBufIdx].cpuDataRef.size;
- ibv.Format = DXGI_FORMAT(params.indexFormat);
- commandList->IASetIndexBuffer(&ibv);
- }
-
- // Copy the SRVs to a drawcall-dedicated area of the shader-visible descriptor heap.
- Q_ASSERT(tframeData.activeTextureCount == tframeData.pipelineState.shaders.rootSig.textureViewCount);
- if (tframeData.activeTextureCount > 0) {
- if (!skip) {
- ensureGPUDescriptorHeap(tframeData.activeTextureCount);
- const uint stride = cpuDescHeapManager.handleSize(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
- D3D12_CPU_DESCRIPTOR_HANDLE dst = pfd.gpuCbvSrvUavHeap->GetCPUDescriptorHandleForHeapStart();
- dst.ptr += pfd.cbvSrvUavNextFreeDescriptorIndex * stride;
- for (int i = 0; i < tframeData.activeTextureCount; ++i) {
- const TransientFrameData::ActiveTexture &t(tframeData.activeTextures[i]);
- Q_ASSERT(t.id);
- const int idx = t.id - 1;
- const bool isTex = t.type == TransientFrameData::ActiveTexture::TypeTexture;
- device->CopyDescriptorsSimple(1, dst, isTex ? textures[idx].srv : renderTargets[idx].srv,
- D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
- dst.ptr += stride;
- }
-
- D3D12_GPU_DESCRIPTOR_HANDLE gpuAddr = pfd.gpuCbvSrvUavHeap->GetGPUDescriptorHandleForHeapStart();
- gpuAddr.ptr += pfd.cbvSrvUavNextFreeDescriptorIndex * stride;
- commandList->SetGraphicsRootDescriptorTable(1, gpuAddr);
-
- pfd.cbvSrvUavNextFreeDescriptorIndex += tframeData.activeTextureCount;
- }
- tframeData.activeTextureCount = 0;
- }
-
- // Add the draw call.
- if (!skip) {
- ++tframeData.drawCount;
- if (params.startIndexIndex >= 0)
- commandList->DrawIndexedInstanced(params.count, 1, params.startIndexIndex, 0, 0);
- else
- commandList->DrawInstanced(params.count, 1, 0, 0);
- }
-
- if (tframeData.drawCount == MAX_DRAW_CALLS_PER_LIST) {
- if (Q_UNLIKELY(debug_render()))
- qDebug("Limit of %d draw calls reached, executing command list", MAX_DRAW_CALLS_PER_LIST);
- // submit the command list
- endDrawCalls();
- // start a new one
- beginDrawCalls();
- // prepare for the upcoming drawcalls
- restoreFrameState();
- }
-}
-
-void QSGD3D12EnginePrivate::ensureGPUDescriptorHeap(int cbvSrvUavDescriptorCount)
-{
- PersistentFrameData &pfd(pframeData[currentPFrameIndex]);
- int newSize = pfd.gpuCbvSrvUavHeapSize;
- while (pfd.cbvSrvUavNextFreeDescriptorIndex + cbvSrvUavDescriptorCount > newSize)
- newSize *= 2;
- if (newSize != pfd.gpuCbvSrvUavHeapSize) {
- if (Q_UNLIKELY(debug_descheap()))
- qDebug("Out of space for SRVs, creating new CBV-SRV-UAV descriptor heap with descriptor count %d", newSize);
- deferredDelete(pfd.gpuCbvSrvUavHeap);
- createCbvSrvUavHeap(currentPFrameIndex, newSize);
- setDescriptorHeaps(true);
- pfd.cbvSrvUavNextFreeDescriptorIndex = 0;
- }
-}
-
-void QSGD3D12EnginePrivate::present()
-{
- if (!initialized)
- return;
-
- if (Q_UNLIKELY(debug_render()))
- qDebug("--- present with vsync ---");
-
- // This call will not block the CPU unless at least 3 buffers are queued,
- // unless the waitable frame latency event is enabled. Then the latency of
- // 3 is changed to whatever value desired, and blocking happens in
- // beginFrame. If none of these hold, the fence-based wait in beginFrame
- // throttles. Vsync (interval 1) is always enabled.
- HRESULT hr = swapChain->Present(1, 0);
- if (hr == DXGI_ERROR_DEVICE_REMOVED || hr == DXGI_ERROR_DEVICE_RESET) {
- deviceManager()->deviceLossDetected();
- return;
- } else if (FAILED(hr)) {
- qWarning("Present failed: %s", qPrintable(comErrorMessage(hr)));
- return;
- }
-
-#ifndef Q_OS_WINRT
- if (dcompDevice)
- dcompDevice->Commit();
-#endif
-
- ++presentFrameIndex;
-}
-
-void QSGD3D12EnginePrivate::waitGPU()
-{
- if (!initialized)
- return;
-
- if (Q_UNLIKELY(debug_render()))
- qDebug("--- blocking wait for GPU ---");
-
- waitForGPU(presentFence);
-}
-
-template<class T> uint newId(T *tbl)
-{
- uint id = 0;
- for (int i = 0; i < tbl->count(); ++i) {
- if (!(*tbl)[i].entryInUse()) {
- id = i + 1;
- break;
- }
- }
-
- if (!id) {
- tbl->resize(tbl->size() + 1);
- id = tbl->count();
- }
-
- (*tbl)[id - 1].flags = 0x01; // reset flags and set EntryInUse
-
- return id;
-}
-
-template<class T> void syncEntryFlags(T *e, int flag, bool b)
-{
- if (b)
- e->flags |= flag;
- else
- e->flags &= ~flag;
-}
-
-uint QSGD3D12EnginePrivate::genBuffer()
-{
- return newId(&buffers);
-}
-
-void QSGD3D12EnginePrivate::releaseBuffer(uint id)
-{
- if (!id || !initialized)
- return;
-
- const int idx = id - 1;
- Q_ASSERT(idx < buffers.count());
-
- if (Q_UNLIKELY(debug_buffer()))
- qDebug("releasing buffer %u", id);
-
- Buffer &b(buffers[idx]);
- if (!b.entryInUse())
- return;
-
- // Do not null out and do not mark the entry reusable yet.
- // Do that only when the frames potentially in flight have finished for sure.
-
- for (int i = 0; i < frameInFlightCount; ++i) {
- if (b.d[i].buffer)
- deferredDelete(b.d[i].buffer);
- }
-
- QSet<PersistentFrameData::PendingRelease> *pendingReleasesSet = inFrame
- ? &pframeData[currentPFrameIndex].pendingReleases
- : &pframeData[(currentPFrameIndex + 1) % frameInFlightCount].outOfFramePendingReleases;
-
- pendingReleasesSet->insert(PersistentFrameData::PendingRelease(PersistentFrameData::PendingRelease::TypeBuffer, id));
-}
-
-void QSGD3D12EnginePrivate::resetBuffer(uint id, const quint8 *data, int size)
-{
- if (!inFrame) {
- qWarning("%s: Cannot be called outside begin/endFrame", __FUNCTION__);
- return;
- }
-
- Q_ASSERT(id);
- const int idx = id - 1;
- Q_ASSERT(idx < buffers.count() && buffers[idx].entryInUse());
- Buffer &b(buffers[idx]);
-
- if (Q_UNLIKELY(debug_buffer()))
- qDebug("reset buffer %u, size %d", id, size);
-
- b.cpuDataRef.p = data;
- b.cpuDataRef.size = size;
-
- b.cpuDataRef.dirty.clear();
- b.d[currentPFrameIndex].dirty.clear();
-
- if (size > 0) {
- const QPair<int, int> range = qMakePair(0, size);
- b.cpuDataRef.dirty.append(range);
- b.d[currentPFrameIndex].dirty.append(range);
- }
-}
-
-void QSGD3D12EnginePrivate::addDirtyRange(DirtyList *dirty, int offset, int size, int bufferSize)
-{
- // Bail out when the dirty list already spans the entire buffer.
- if (!dirty->isEmpty()) {
- if (dirty->at(0).first == 0 && dirty->at(0).second == bufferSize)
- return;
- }
-
- const QPair<int, int> range = qMakePair(offset, size);
- if (!dirty->contains(range))
- dirty->append(range);
-}
-
-void QSGD3D12EnginePrivate::markBufferDirty(uint id, int offset, int size)
-{
- if (!inFrame) {
- qWarning("%s: Cannot be called outside begin/endFrame", __FUNCTION__);
- return;
- }
-
- Q_ASSERT(id);
- const int idx = id - 1;
- Q_ASSERT(idx < buffers.count() && buffers[idx].entryInUse());
- Buffer &b(buffers[idx]);
-
- addDirtyRange(&b.cpuDataRef.dirty, offset, size, b.cpuDataRef.size);
- addDirtyRange(&b.d[currentPFrameIndex].dirty, offset, size, b.cpuDataRef.size);
-}
-
-uint QSGD3D12EnginePrivate::genTexture()
-{
- const uint id = newId(&textures);
- textures[id - 1].fenceValue = 0;
- return id;
-}
-
-static inline DXGI_FORMAT textureFormat(QImage::Format format, bool wantsAlpha, bool mipmap, bool force32bit,
- QImage::Format *imageFormat, int *bytesPerPixel)
-{
- DXGI_FORMAT f = DXGI_FORMAT_R8G8B8A8_UNORM;
- QImage::Format convFormat = format;
- int bpp = 4;
-
- if (!mipmap) {
- switch (format) {
- case QImage::Format_Grayscale8:
- case QImage::Format_Indexed8:
- case QImage::Format_Alpha8:
- if (!force32bit) {
- f = DXGI_FORMAT_R8_UNORM;
- bpp = 1;
- } else {
- convFormat = QImage::Format_RGBA8888;
- }
- break;
- case QImage::Format_RGB32:
- f = DXGI_FORMAT_B8G8R8A8_UNORM;
- break;
- case QImage::Format_ARGB32:
- f = DXGI_FORMAT_B8G8R8A8_UNORM;
- convFormat = wantsAlpha ? QImage::Format_ARGB32_Premultiplied : QImage::Format_RGB32;
- break;
- case QImage::Format_ARGB32_Premultiplied:
- f = DXGI_FORMAT_B8G8R8A8_UNORM;
- convFormat = wantsAlpha ? format : QImage::Format_RGB32;
- break;
- default:
- convFormat = wantsAlpha ? QImage::Format_RGBA8888_Premultiplied : QImage::Format_RGBX8888;
- break;
- }
- } else {
- // Mipmap generation needs unordered access and BGRA is not an option for that. Stick to RGBA.
- convFormat = wantsAlpha ? QImage::Format_RGBA8888_Premultiplied : QImage::Format_RGBX8888;
- }
-
- if (imageFormat)
- *imageFormat = convFormat;
-
- if (bytesPerPixel)
- *bytesPerPixel = bpp;
-
- return f;
-}
-
-static inline QImage::Format imageFormatForTexture(DXGI_FORMAT format)
-{
- QImage::Format f = QImage::Format_Invalid;
-
- switch (format) {
- case DXGI_FORMAT_R8G8B8A8_UNORM:
- f = QImage::Format_RGBA8888_Premultiplied;
- break;
- case DXGI_FORMAT_B8G8R8A8_UNORM:
- f = QImage::Format_ARGB32_Premultiplied;
- break;
- case DXGI_FORMAT_R8_UNORM:
- f = QImage::Format_Grayscale8;
- break;
- default:
- break;
- }
-
- return f;
-}
-
-void QSGD3D12EnginePrivate::createTexture(uint id, const QSize &size, QImage::Format format,
- QSGD3D12Engine::TextureCreateFlags createFlags)
-{
- ensureDevice();
-
- Q_ASSERT(id);
- const int idx = id - 1;
- Q_ASSERT(idx < textures.count() && textures[idx].entryInUse());
- Texture &t(textures[idx]);
-
- syncEntryFlags(&t, Texture::Alpha, createFlags & QSGD3D12Engine::TextureWithAlpha);
- syncEntryFlags(&t, Texture::MipMap, createFlags & QSGD3D12Engine::TextureWithMipMaps);
-
- const QSize adjustedSize = !t.mipmap() ? size : QSGD3D12Engine::mipMapAdjustedSourceSize(size);
-
- D3D12_HEAP_PROPERTIES defaultHeapProp = {};
- defaultHeapProp.Type = D3D12_HEAP_TYPE_DEFAULT;
-
- D3D12_RESOURCE_DESC textureDesc = {};
- textureDesc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D;
- textureDesc.Width = adjustedSize.width();
- textureDesc.Height = adjustedSize.height();
- textureDesc.DepthOrArraySize = 1;
- textureDesc.MipLevels = !t.mipmap() ? 1 : QSGD3D12Engine::mipMapLevels(adjustedSize);
- textureDesc.Format = textureFormat(format, t.alpha(), t.mipmap(),
- createFlags.testFlag(QSGD3D12Engine::TextureAlways32Bit),
- nullptr, nullptr);
- textureDesc.SampleDesc.Count = 1;
- textureDesc.Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN;
- if (t.mipmap())
- textureDesc.Flags = D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS;
-
- HRESULT hr = device->CreateCommittedResource(&defaultHeapProp, D3D12_HEAP_FLAG_NONE, &textureDesc,
- D3D12_RESOURCE_STATE_COMMON, nullptr, IID_PPV_ARGS(&t.texture));
- if (FAILED(hr)) {
- qWarning("Failed to create texture resource: %s", qPrintable(comErrorMessage(hr)));
- return;
- }
-
- t.srv = cpuDescHeapManager.allocate(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
-
- D3D12_SHADER_RESOURCE_VIEW_DESC srvDesc = {};
- srvDesc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
- srvDesc.Format = textureDesc.Format;
- srvDesc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2D;
- srvDesc.Texture2D.MipLevels = textureDesc.MipLevels;
-
- device->CreateShaderResourceView(t.texture.Get(), &srvDesc, t.srv);
-
- if (t.mipmap()) {
- // Mipmap generation will need an UAV for each level that needs to be generated.
- t.mipUAVs.clear();
- for (int level = 1; level < textureDesc.MipLevels; ++level) {
- D3D12_UNORDERED_ACCESS_VIEW_DESC uavDesc = {};
- uavDesc.Format = textureDesc.Format;
- uavDesc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2D;
- uavDesc.Texture2D.MipSlice = level;
- D3D12_CPU_DESCRIPTOR_HANDLE h = cpuDescHeapManager.allocate(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
- device->CreateUnorderedAccessView(t.texture.Get(), nullptr, &uavDesc, h);
- t.mipUAVs.append(h);
- }
- }
-
- if (Q_UNLIKELY(debug_texture()))
- qDebug("created texture %u, size %dx%d, miplevels %d", id, adjustedSize.width(), adjustedSize.height(), textureDesc.MipLevels);
-}
-
-void QSGD3D12EnginePrivate::queueTextureResize(uint id, const QSize &size)
-{
- Q_ASSERT(id);
- const int idx = id - 1;
- Q_ASSERT(idx < textures.count() && textures[idx].entryInUse());
- Texture &t(textures[idx]);
-
- if (!t.texture) {
- qWarning("Cannot resize non-created texture %u", id);
- return;
- }
-
- if (t.mipmap()) {
- qWarning("Cannot resize mipmapped texture %u", id);
- return;
- }
-
- if (Q_UNLIKELY(debug_texture()))
- qDebug("resizing texture %u, size %dx%d", id, size.width(), size.height());
-
- D3D12_RESOURCE_DESC textureDesc = t.texture->GetDesc();
- textureDesc.Width = size.width();
- textureDesc.Height = size.height();
-
- D3D12_HEAP_PROPERTIES defaultHeapProp = {};
- defaultHeapProp.Type = D3D12_HEAP_TYPE_DEFAULT;
-
- ComPtr<ID3D12Resource> oldTexture = t.texture;
- deferredDelete(t.texture);
-
- HRESULT hr = device->CreateCommittedResource(&defaultHeapProp, D3D12_HEAP_FLAG_NONE, &textureDesc,
- D3D12_RESOURCE_STATE_COMMON, nullptr, IID_PPV_ARGS(&t.texture));
- if (FAILED(hr)) {
- qWarning("Failed to create resized texture resource: %s",
- qPrintable(comErrorMessage(hr)));
- return;
- }
-
- deferredDelete(t.srv, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
- t.srv = cpuDescHeapManager.allocate(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
-
- D3D12_SHADER_RESOURCE_VIEW_DESC srvDesc = {};
- srvDesc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
- srvDesc.Format = textureDesc.Format;
- srvDesc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2D;
- srvDesc.Texture2D.MipLevels = textureDesc.MipLevels;
-
- device->CreateShaderResourceView(t.texture.Get(), &srvDesc, t.srv);
-
- D3D12_TEXTURE_COPY_LOCATION dstLoc;
- dstLoc.pResource = t.texture.Get();
- dstLoc.Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
- dstLoc.SubresourceIndex = 0;
-
- D3D12_TEXTURE_COPY_LOCATION srcLoc;
- srcLoc.pResource = oldTexture.Get();
- srcLoc.Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
- srcLoc.SubresourceIndex = 0;
-
- copyCommandList->Reset(copyCommandAllocator.Get(), nullptr);
-
- copyCommandList->CopyTextureRegion(&dstLoc, 0, 0, 0, &srcLoc, nullptr);
-
- copyCommandList->Close();
- ID3D12CommandList *commandLists[] = { copyCommandList.Get() };
- copyCommandQueue->ExecuteCommandLists(_countof(commandLists), commandLists);
-
- t.fenceValue = nextTextureUploadFenceValue.fetchAndAddAcquire(1) + 1;
- copyCommandQueue->Signal(textureUploadFence.Get(), t.fenceValue);
-
- if (Q_UNLIKELY(debug_texture()))
- qDebug("submitted old content copy for texture %u on the copy queue, fence %llu", id, t.fenceValue);
-}
-
-void QSGD3D12EnginePrivate::queueTextureUpload(uint id, const QVector<QImage> &images, const QVector<QPoint> &dstPos,
- QSGD3D12Engine::TextureUploadFlags flags)
-{
- Q_ASSERT(id);
- Q_ASSERT(images.count() == dstPos.count());
- if (images.isEmpty())
- return;
-
- const int idx = id - 1;
- Q_ASSERT(idx < textures.count() && textures[idx].entryInUse());
- Texture &t(textures[idx]);
- Q_ASSERT(t.texture);
-
- // When mipmapping is not in use, image can be smaller than the size passed
- // to createTexture() and dstPos can specify a non-zero destination position.
-
- if (t.mipmap() && (images.count() != 1 || dstPos.count() != 1 || !dstPos[0].isNull())) {
- qWarning("Mipmapped textures (%u) do not support partial uploads", id);
- return;
- }
-
- // Make life simpler by disallowing queuing a new mipmapped upload before the previous one finishes.
- if (t.mipmap() && t.fenceValue) {
- qWarning("Attempted to queue mipmapped texture upload (%u) while a previous upload is still in progress", id);
- return;
- }
-
- t.fenceValue = nextTextureUploadFenceValue.fetchAndAddAcquire(1) + 1;
-
- if (Q_UNLIKELY(debug_texture()))
- qDebug("adding upload for texture %u on the copy queue, fence %llu", id, t.fenceValue);
-
- D3D12_RESOURCE_DESC textureDesc = t.texture->GetDesc();
- const QSize adjustedTextureSize(textureDesc.Width, textureDesc.Height);
-
- int totalSize = 0;
- for (const QImage &image : images) {
- int bytesPerPixel;
- textureFormat(image.format(), t.alpha(), t.mipmap(),
- flags.testFlag(QSGD3D12Engine::TextureUploadAlways32Bit),
- nullptr, &bytesPerPixel);
- const int w = !t.mipmap() ? image.width() : adjustedTextureSize.width();
- const int h = !t.mipmap() ? image.height() : adjustedTextureSize.height();
- const int stride = alignedSize(w * bytesPerPixel, D3D12_TEXTURE_DATA_PITCH_ALIGNMENT);
- totalSize += alignedSize(h * stride, D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT);
- }
-
- if (Q_UNLIKELY(debug_texture()))
- qDebug("%d sub-uploads, heap size %d bytes", images.count(), totalSize);
-
- // Instead of individual committed resources for each upload buffer,
- // allocate only once and use placed resources.
- D3D12_HEAP_PROPERTIES uploadHeapProp = {};
- uploadHeapProp.Type = D3D12_HEAP_TYPE_UPLOAD;
- D3D12_HEAP_DESC uploadHeapDesc = {};
- uploadHeapDesc.SizeInBytes = totalSize;
- uploadHeapDesc.Properties = uploadHeapProp;
- uploadHeapDesc.Flags = D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS;
-
- Texture::StagingHeap sheap;
- if (FAILED(device->CreateHeap(&uploadHeapDesc, IID_PPV_ARGS(&sheap.heap)))) {
- qWarning("Failed to create texture upload heap of size %d", totalSize);
- return;
- }
- t.stagingHeaps.append(sheap);
-
- copyCommandList->Reset(copyCommandAllocator.Get(), nullptr);
-
- int placedOffset = 0;
- for (int i = 0; i < images.count(); ++i) {
- QImage::Format convFormat;
- int bytesPerPixel;
- textureFormat(images[i].format(), t.alpha(), t.mipmap(),
- flags.testFlag(QSGD3D12Engine::TextureUploadAlways32Bit),
- &convFormat, &bytesPerPixel);
- if (Q_UNLIKELY(debug_texture() && i == 0))
- qDebug("source image format %d, target format %d, bpp %d", images[i].format(), convFormat, bytesPerPixel);
-
- QImage convImage = images[i].format() == convFormat ? images[i] : images[i].convertToFormat(convFormat);
-
- if (t.mipmap() && adjustedTextureSize != convImage.size())
- convImage = convImage.scaled(adjustedTextureSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
-
- const int stride = alignedSize(convImage.width() * bytesPerPixel, D3D12_TEXTURE_DATA_PITCH_ALIGNMENT);
-
- D3D12_RESOURCE_DESC bufDesc = {};
- bufDesc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER;
- bufDesc.Width = stride * convImage.height();
- bufDesc.Height = 1;
- bufDesc.DepthOrArraySize = 1;
- bufDesc.MipLevels = 1;
- bufDesc.Format = DXGI_FORMAT_UNKNOWN;
- bufDesc.SampleDesc.Count = 1;
- bufDesc.Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR;
-
- Texture::StagingBuffer sbuf;
- if (FAILED(device->CreatePlacedResource(sheap.heap.Get(), placedOffset,
- &bufDesc, D3D12_RESOURCE_STATE_GENERIC_READ,
- nullptr, IID_PPV_ARGS(&sbuf.buffer)))) {
- qWarning("Failed to create texture upload buffer");
- return;
- }
-
- quint8 *p = nullptr;
- const D3D12_RANGE readRange = { 0, 0 };
- if (FAILED(sbuf.buffer->Map(0, &readRange, reinterpret_cast<void **>(&p)))) {
- qWarning("Map failed (texture upload buffer)");
- return;
- }
- for (int y = 0, ye = convImage.height(); y < ye; ++y) {
- memcpy(p, convImage.constScanLine(y), convImage.width() * bytesPerPixel);
- p += stride;
- }
- sbuf.buffer->Unmap(0, nullptr);
-
- D3D12_TEXTURE_COPY_LOCATION dstLoc;
- dstLoc.pResource = t.texture.Get();
- dstLoc.Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
- dstLoc.SubresourceIndex = 0;
-
- D3D12_TEXTURE_COPY_LOCATION srcLoc;
- srcLoc.pResource = sbuf.buffer.Get();
- srcLoc.Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT;
- srcLoc.PlacedFootprint.Offset = 0;
- srcLoc.PlacedFootprint.Footprint.Format = textureDesc.Format;
- srcLoc.PlacedFootprint.Footprint.Width = convImage.width();
- srcLoc.PlacedFootprint.Footprint.Height = convImage.height();
- srcLoc.PlacedFootprint.Footprint.Depth = 1;
- srcLoc.PlacedFootprint.Footprint.RowPitch = stride;
-
- copyCommandList->CopyTextureRegion(&dstLoc, dstPos[i].x(), dstPos[i].y(), 0, &srcLoc, nullptr);
-
- t.stagingBuffers.append(sbuf);
- placedOffset += alignedSize(bufDesc.Width, D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT);
- }
-
- copyCommandList->Close();
- ID3D12CommandList *commandLists[] = { copyCommandList.Get() };
- copyCommandQueue->ExecuteCommandLists(_countof(commandLists), commandLists);
- copyCommandQueue->Signal(textureUploadFence.Get(), t.fenceValue);
-}
-
-void QSGD3D12EnginePrivate::releaseTexture(uint id)
-{
- if (!id || !initialized)
- return;
-
- const int idx = id - 1;
- Q_ASSERT(idx < textures.count());
-
- if (Q_UNLIKELY(debug_texture()))
- qDebug("releasing texture %d", id);
-
- Texture &t(textures[idx]);
- if (!t.entryInUse())
- return;
-
- if (t.texture) {
- deferredDelete(t.texture);
- deferredDelete(t.srv, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
- for (D3D12_CPU_DESCRIPTOR_HANDLE h : t.mipUAVs)
- deferredDelete(h, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
- }
-
- QSet<PersistentFrameData::PendingRelease> *pendingReleasesSet = inFrame
- ? &pframeData[currentPFrameIndex].pendingReleases
- : &pframeData[(currentPFrameIndex + 1) % frameInFlightCount].outOfFramePendingReleases;
-
- pendingReleasesSet->insert(PersistentFrameData::PendingRelease(PersistentFrameData::PendingRelease::TypeTexture, id));
-}
-
-void QSGD3D12EnginePrivate::useTexture(uint id)
-{
- if (!inFrame) {
- qWarning("%s: Cannot be called outside begin/endFrame", __FUNCTION__);
- return;
- }
-
- Q_ASSERT(id);
- const int idx = id - 1;
- Q_ASSERT(idx < textures.count() && textures[idx].entryInUse());
-
- // Within one frame the order of calling this function determines the
- // texture register (0, 1, ...) so fill up activeTextures accordingly.
- tframeData.activeTextures[tframeData.activeTextureCount++]
- = TransientFrameData::ActiveTexture(TransientFrameData::ActiveTexture::TypeTexture, id);
-
- if (textures[idx].fenceValue)
- pframeData[currentPFrameIndex].pendingTextureUploads.insert(id);
-}
-
-bool QSGD3D12EnginePrivate::MipMapGen::initialize(QSGD3D12EnginePrivate *enginePriv)
-{
- engine = enginePriv;
-
- D3D12_STATIC_SAMPLER_DESC sampler = {};
- sampler.Filter = D3D12_FILTER_MIN_MAG_MIP_LINEAR;
- sampler.AddressU = D3D12_TEXTURE_ADDRESS_MODE_CLAMP;
- sampler.AddressV = D3D12_TEXTURE_ADDRESS_MODE_CLAMP;
- sampler.AddressW = D3D12_TEXTURE_ADDRESS_MODE_CLAMP;
- sampler.MinLOD = 0.0f;
- sampler.MaxLOD = D3D12_FLOAT32_MAX;
-
- D3D12_DESCRIPTOR_RANGE descRange[2];
- descRange[0].RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_SRV;
- descRange[0].NumDescriptors = 1;
- descRange[0].BaseShaderRegister = 0; // t0
- descRange[0].RegisterSpace = 0;
- descRange[0].OffsetInDescriptorsFromTableStart = D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND;
- descRange[1].RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_UAV;
- descRange[1].NumDescriptors = 4;
- descRange[1].BaseShaderRegister = 0; // u0..u3
- descRange[1].RegisterSpace = 0;
- descRange[1].OffsetInDescriptorsFromTableStart = D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND;
-
- // Split into two to allow switching between the first and second set of UAVs later.
- D3D12_ROOT_PARAMETER rootParameters[3];
- rootParameters[0].ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
- rootParameters[0].ShaderVisibility = D3D12_SHADER_VISIBILITY_ALL;
- rootParameters[0].DescriptorTable.NumDescriptorRanges = 1;
- rootParameters[0].DescriptorTable.pDescriptorRanges = &descRange[0];
-
- rootParameters[1].ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
- rootParameters[1].ShaderVisibility = D3D12_SHADER_VISIBILITY_ALL;
- rootParameters[1].DescriptorTable.NumDescriptorRanges = 1;
- rootParameters[1].DescriptorTable.pDescriptorRanges = &descRange[1];
-
- rootParameters[2].ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
- rootParameters[2].ShaderVisibility = D3D12_SHADER_VISIBILITY_ALL;
- rootParameters[2].Constants.Num32BitValues = 4; // uint2 mip1Size, uint sampleLevel, uint totalMips
- rootParameters[2].Constants.ShaderRegister = 0; // b0
- rootParameters[2].Constants.RegisterSpace = 0;
-
- D3D12_ROOT_SIGNATURE_DESC desc = {};
- desc.NumParameters = 3;
- desc.pParameters = rootParameters;
- desc.NumStaticSamplers = 1;
- desc.pStaticSamplers = &sampler;
-
- ComPtr<ID3DBlob> signature;
- ComPtr<ID3DBlob> error;
- if (FAILED(D3D12SerializeRootSignature(&desc, D3D_ROOT_SIGNATURE_VERSION_1, &signature, &error))) {
- QByteArray msg(static_cast<const char *>(error->GetBufferPointer()), error->GetBufferSize());
- qWarning("Failed to serialize compute root signature: %s", qPrintable(msg));
- return false;
- }
- if (FAILED(engine->device->CreateRootSignature(0, signature->GetBufferPointer(), signature->GetBufferSize(),
- IID_PPV_ARGS(&rootSig)))) {
- qWarning("Failed to create compute root signature");
- return false;
- }
-
- D3D12_COMPUTE_PIPELINE_STATE_DESC psoDesc = {};
- psoDesc.pRootSignature = rootSig.Get();
- psoDesc.CS.pShaderBytecode = g_CS_Generate4MipMaps;
- psoDesc.CS.BytecodeLength = sizeof(g_CS_Generate4MipMaps);
-
- if (FAILED(engine->device->CreateComputePipelineState(&psoDesc, IID_PPV_ARGS(&pipelineState)))) {
- qWarning("Failed to create compute pipeline state");
- return false;
- }
-
- return true;
-}
-
-void QSGD3D12EnginePrivate::MipMapGen::releaseResources()
-{
- pipelineState = nullptr;
- rootSig = nullptr;
-}
-
-// The mipmap generator is used to insert commands on the main 3D queue. It is
-// guaranteed that the queue has a wait for the base texture level upload
-// before invoking queueGenerate(). There can be any number of invocations
-// without waiting for earlier ones to finish. finished() is invoked when it is
-// known for sure that frame containing the upload and mipmap generation has
-// finished on the GPU.
-
-void QSGD3D12EnginePrivate::MipMapGen::queueGenerate(const Texture &t)
-{
- D3D12_RESOURCE_DESC textureDesc = t.texture->GetDesc();
-
- engine->commandList->SetPipelineState(pipelineState.Get());
- engine->commandList->SetComputeRootSignature(rootSig.Get());
-
- // 1 SRV + (miplevels - 1) UAVs
- const int descriptorCount = 1 + (textureDesc.MipLevels - 1);
-
- engine->ensureGPUDescriptorHeap(descriptorCount);
-
- // The descriptor heap is set on the command list either because the
- // ensure() call above resized, or, typically, due to a texture-dependent
- // draw call earlier.
-
- engine->transitionResource(t.texture.Get(), engine->commandList,
- D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_UNORDERED_ACCESS);
-
- QSGD3D12EnginePrivate::PersistentFrameData &pfd(engine->pframeData[engine->currentPFrameIndex]);
-
- const uint stride = engine->cpuDescHeapManager.handleSize(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
- D3D12_CPU_DESCRIPTOR_HANDLE h = pfd.gpuCbvSrvUavHeap->GetCPUDescriptorHandleForHeapStart();
- h.ptr += pfd.cbvSrvUavNextFreeDescriptorIndex * stride;
-
- engine->device->CopyDescriptorsSimple(1, h, t.srv, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
- h.ptr += stride;
-
- for (int level = 1; level < textureDesc.MipLevels; ++level, h.ptr += stride)
- engine->device->CopyDescriptorsSimple(1, h, t.mipUAVs[level - 1], D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
-
- D3D12_GPU_DESCRIPTOR_HANDLE gpuAddr = pfd.gpuCbvSrvUavHeap->GetGPUDescriptorHandleForHeapStart();
- gpuAddr.ptr += pfd.cbvSrvUavNextFreeDescriptorIndex * stride;
-
- engine->commandList->SetComputeRootDescriptorTable(0, gpuAddr);
- gpuAddr.ptr += stride; // now points to the first UAV
-
- for (int level = 1; level < textureDesc.MipLevels; level += 4, gpuAddr.ptr += stride * 4) {
- engine->commandList->SetComputeRootDescriptorTable(1, gpuAddr);
-
- QSize sz(textureDesc.Width, textureDesc.Height);
- sz.setWidth(qMax(1, sz.width() >> level));
- sz.setHeight(qMax(1, sz.height() >> level));
-
- const quint32 constants[4] = { quint32(sz.width()), quint32(sz.height()),
- quint32(level - 1),
- quint32(textureDesc.MipLevels - 1) };
-
- engine->commandList->SetComputeRoot32BitConstants(2, 4, constants, 0);
- engine->commandList->Dispatch(sz.width(), sz.height(), 1);
- engine->uavBarrier(t.texture.Get(), engine->commandList);
- }
-
- engine->transitionResource(t.texture.Get(), engine->commandList,
- D3D12_RESOURCE_STATE_UNORDERED_ACCESS, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
-
- pfd.cbvSrvUavNextFreeDescriptorIndex += descriptorCount;
-}
-
-void QSGD3D12EnginePrivate::deferredDelete(ComPtr<ID3D12Resource> res)
-{
- PersistentFrameData::DeleteQueueEntry e;
- e.res = res;
- QVector<PersistentFrameData::DeleteQueueEntry> *dq = inFrame
- ? &pframeData[currentPFrameIndex].deleteQueue
- : &pframeData[(currentPFrameIndex + 1) % frameInFlightCount].outOfFrameDeleteQueue;
- (*dq) << e;
-}
-
-void QSGD3D12EnginePrivate::deferredDelete(ComPtr<ID3D12DescriptorHeap> dh)
-{
- PersistentFrameData::DeleteQueueEntry e;
- e.descHeap = dh;
- QVector<PersistentFrameData::DeleteQueueEntry> *dq = inFrame
- ? &pframeData[currentPFrameIndex].deleteQueue
- : &pframeData[(currentPFrameIndex + 1) % frameInFlightCount].outOfFrameDeleteQueue;
- (*dq) << e;
-}
-
-void QSGD3D12EnginePrivate::deferredDelete(D3D12_CPU_DESCRIPTOR_HANDLE h, D3D12_DESCRIPTOR_HEAP_TYPE type)
-{
- PersistentFrameData::DeleteQueueEntry e;
- e.cpuDescriptorPtr = h.ptr;
- e.descHeapType = type;
- QVector<PersistentFrameData::DeleteQueueEntry> *dq = inFrame
- ? &pframeData[currentPFrameIndex].deleteQueue
- : &pframeData[(currentPFrameIndex + 1) % frameInFlightCount].outOfFrameDeleteQueue;
- (*dq) << e;
-}
-
-uint QSGD3D12EnginePrivate::genRenderTarget()
-{
- return newId(&renderTargets);
-}
-
-void QSGD3D12EnginePrivate::createRenderTarget(uint id, const QSize &size, const QVector4D &clearColor, uint samples)
-{
- ensureDevice();
-
- Q_ASSERT(id);
- const int idx = id - 1;
- Q_ASSERT(idx < renderTargets.count() && renderTargets[idx].entryInUse());
- RenderTarget &rt(renderTargets[idx]);
-
- rt.rtv = cpuDescHeapManager.allocate(D3D12_DESCRIPTOR_HEAP_TYPE_RTV);
- rt.dsv = cpuDescHeapManager.allocate(D3D12_DESCRIPTOR_HEAP_TYPE_DSV);
- rt.srv = cpuDescHeapManager.allocate(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
-
- ID3D12Resource *res = createColorBuffer(rt.rtv, size, clearColor, samples);
- if (res)
- rt.color.Attach(res);
-
- ID3D12Resource *dsres = createDepthStencil(rt.dsv, size, samples);
- if (dsres)
- rt.ds.Attach(dsres);
-
- const bool multisample = rt.color->GetDesc().SampleDesc.Count > 1;
- syncEntryFlags(&rt, RenderTarget::Multisample, multisample);
-
- if (!multisample) {
- device->CreateShaderResourceView(rt.color.Get(), nullptr, rt.srv);
- } else {
- D3D12_HEAP_PROPERTIES defaultHeapProp = {};
- defaultHeapProp.Type = D3D12_HEAP_TYPE_DEFAULT;
-
- D3D12_RESOURCE_DESC textureDesc = {};
- textureDesc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D;
- textureDesc.Width = size.width();
- textureDesc.Height = size.height();
- textureDesc.DepthOrArraySize = 1;
- textureDesc.MipLevels = 1;
- textureDesc.Format = RT_COLOR_FORMAT;
- textureDesc.SampleDesc.Count = 1;
- textureDesc.Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN;
-
- HRESULT hr = device->CreateCommittedResource(&defaultHeapProp, D3D12_HEAP_FLAG_NONE, &textureDesc,
- D3D12_RESOURCE_STATE_COMMON, nullptr, IID_PPV_ARGS(&rt.colorResolve));
- if (FAILED(hr)) {
- qWarning("Failed to create resolve buffer: %s",
- qPrintable(comErrorMessage(hr)));
- return;
- }
-
- device->CreateShaderResourceView(rt.colorResolve.Get(), nullptr, rt.srv);
- }
-
- if (Q_UNLIKELY(debug_render()))
- qDebug("created new render target %u, size %dx%d, samples %d", id, size.width(), size.height(), samples);
-}
-
-void QSGD3D12EnginePrivate::releaseRenderTarget(uint id)
-{
- if (!id || !initialized)
- return;
-
- const int idx = id - 1;
- Q_ASSERT(idx < renderTargets.count());
- RenderTarget &rt(renderTargets[idx]);
- if (!rt.entryInUse())
- return;
-
- if (Q_UNLIKELY(debug_render()))
- qDebug("releasing render target %u", id);
-
- if (rt.colorResolve) {
- deferredDelete(rt.colorResolve);
- rt.colorResolve = nullptr;
- }
- if (rt.color) {
- deferredDelete(rt.color);
- rt.color = nullptr;
- deferredDelete(rt.rtv, D3D12_DESCRIPTOR_HEAP_TYPE_RTV);
- deferredDelete(rt.srv, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
- }
- if (rt.ds) {
- deferredDelete(rt.ds);
- rt.ds = nullptr;
- deferredDelete(rt.dsv, D3D12_DESCRIPTOR_HEAP_TYPE_DSV);
- }
-
- rt.flags &= ~RenderTarget::EntryInUse;
-}
-
-void QSGD3D12EnginePrivate::useRenderTargetAsTexture(uint id)
-{
- if (!inFrame) {
- qWarning("%s: Cannot be called outside begin/endFrame", __FUNCTION__);
- return;
- }
-
- Q_ASSERT(id);
- const int idx = id - 1;
- Q_ASSERT(idx < renderTargets.count());
- RenderTarget &rt(renderTargets[idx]);
- Q_ASSERT(rt.entryInUse() && rt.color);
-
- if (rt.flags & RenderTarget::NeedsReadBarrier) {
- rt.flags &= ~RenderTarget::NeedsReadBarrier;
- if (rt.flags & RenderTarget::Multisample)
- resolveMultisampledTarget(rt.color.Get(), rt.colorResolve.Get(), D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE, commandList);
- else
- transitionResource(rt.color.Get(), commandList, D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
- }
-
- tframeData.activeTextures[tframeData.activeTextureCount++] =
- TransientFrameData::ActiveTexture(TransientFrameData::ActiveTexture::TypeRenderTarget, id);
-}
-
-QImage QSGD3D12EnginePrivate::executeAndWaitReadbackRenderTarget(uint id)
-{
- // Readback due to QQuickWindow::grabWindow() happens outside
- // begin-endFrame, but QQuickItemGrabResult leads to rendering a layer
- // without a real frame afterwards and triggering readback. This has to be
- // supported as well.
- if (inFrame && (!activeLayers || currentLayerDepth)) {
- qWarning("%s: Cannot be called while frame preparation is active", __FUNCTION__);
- return QImage();
- }
-
- // Due to the above we insert a fake "real" frame when a layer was just rendered into.
- if (inFrame) {
- beginFrame();
- endFrame();
- }
-
- frameCommandList->Reset(frameCommandAllocator[frameIndex % frameInFlightCount].Get(), nullptr);
-
- D3D12_RESOURCE_STATES bstate;
- bool needsBarrier = false;
- ID3D12Resource *rtRes;
- if (id == 0) {
- const int idx = presentFrameIndex % swapChainBufferCount;
- if (windowSamples > 1) {
- resolveMultisampledTarget(defaultRT[idx].Get(), backBufferRT[idx].Get(),
- D3D12_RESOURCE_STATE_COPY_SOURCE, frameCommandList.Get());
- } else {
- bstate = D3D12_RESOURCE_STATE_PRESENT;
- needsBarrier = true;
- }
- rtRes = backBufferRT[idx].Get();
- } else {
- const int idx = id - 1;
- Q_ASSERT(idx < renderTargets.count());
- RenderTarget &rt(renderTargets[idx]);
- Q_ASSERT(rt.entryInUse() && rt.color);
-
- if (rt.flags & RenderTarget::Multisample) {
- resolveMultisampledTarget(rt.color.Get(), rt.colorResolve.Get(),
- D3D12_RESOURCE_STATE_COPY_SOURCE, frameCommandList.Get());
- rtRes = rt.colorResolve.Get();
- } else {
- rtRes = rt.color.Get();
- bstate = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE;
- needsBarrier = true;
- }
- }
-
- ComPtr<ID3D12Resource> readbackBuf;
-
- D3D12_RESOURCE_DESC rtDesc = rtRes->GetDesc();
- UINT64 textureByteSize = 0;
- D3D12_PLACED_SUBRESOURCE_FOOTPRINT textureLayout = {};
- device->GetCopyableFootprints(&rtDesc, 0, 1, 0, &textureLayout, nullptr, nullptr, &textureByteSize);
-
- D3D12_HEAP_PROPERTIES heapProp = {};
- heapProp.Type = D3D12_HEAP_TYPE_READBACK;
-
- D3D12_RESOURCE_DESC bufDesc = {};
- bufDesc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER;
- bufDesc.Width = textureByteSize;
- bufDesc.Height = 1;
- bufDesc.DepthOrArraySize = 1;
- bufDesc.MipLevels = 1;
- bufDesc.Format = DXGI_FORMAT_UNKNOWN;
- bufDesc.SampleDesc.Count = 1;
- bufDesc.Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR;
-
- if (FAILED(device->CreateCommittedResource(&heapProp, D3D12_HEAP_FLAG_NONE, &bufDesc,
- D3D12_RESOURCE_STATE_COPY_DEST, nullptr, IID_PPV_ARGS(&readbackBuf)))) {
- qWarning("Failed to create committed resource (readback buffer)");
- return QImage();
- }
-
- D3D12_TEXTURE_COPY_LOCATION dstLoc;
- dstLoc.pResource = readbackBuf.Get();
- dstLoc.Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT;
- dstLoc.PlacedFootprint = textureLayout;
- D3D12_TEXTURE_COPY_LOCATION srcLoc;
- srcLoc.pResource = rtRes;
- srcLoc.Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
- srcLoc.SubresourceIndex = 0;
-
- ID3D12GraphicsCommandList *cl = frameCommandList.Get();
- if (needsBarrier)
- transitionResource(rtRes, cl, bstate, D3D12_RESOURCE_STATE_COPY_SOURCE);
- cl->CopyTextureRegion(&dstLoc, 0, 0, 0, &srcLoc, nullptr);
- if (needsBarrier)
- transitionResource(rtRes, cl, D3D12_RESOURCE_STATE_COPY_SOURCE, bstate);
-
- cl->Close();
- ID3D12CommandList *commandLists[] = { cl };
- commandQueue->ExecuteCommandLists(_countof(commandLists), commandLists);
-
- QScopedPointer<QSGD3D12CPUWaitableFence> f(createCPUWaitableFence());
- waitForGPU(f.data()); // uh oh
-
- QImage::Format fmt = imageFormatForTexture(rtDesc.Format);
- if (fmt == QImage::Format_Invalid) {
- qWarning("Could not map render target format %d to a QImage format", rtDesc.Format);
- return QImage();
- }
- QImage img(rtDesc.Width, rtDesc.Height, fmt);
- quint8 *p = nullptr;
- const D3D12_RANGE readRange = { 0, 0 };
- if (FAILED(readbackBuf->Map(0, &readRange, reinterpret_cast<void **>(&p)))) {
- qWarning("Mapping the readback buffer failed");
- return QImage();
- }
- const int bpp = 4; // ###
- if (id == 0) {
- for (UINT y = 0; y < rtDesc.Height; ++y) {
- quint8 *dst = img.scanLine(y);
- memcpy(dst, p, rtDesc.Width * bpp);
- p += textureLayout.Footprint.RowPitch;
- }
- } else {
- for (int y = rtDesc.Height - 1; y >= 0; --y) {
- quint8 *dst = img.scanLine(y);
- memcpy(dst, p, rtDesc.Width * bpp);
- p += textureLayout.Footprint.RowPitch;
- }
- }
- readbackBuf->Unmap(0, nullptr);
-
- return img;
-}
-
-void QSGD3D12EnginePrivate::simulateDeviceLoss()
-{
- qWarning("QSGD3D12Engine: Triggering device loss via TDR");
- devLossTest.killDevice();
-}
-
-bool QSGD3D12EnginePrivate::DeviceLossTester::initialize(QSGD3D12EnginePrivate *enginePriv)
-{
- engine = enginePriv;
-
-#ifdef DEVLOSS_TEST
- D3D12_DESCRIPTOR_RANGE descRange[2];
- descRange[0].RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_CBV;
- descRange[0].NumDescriptors = 1;
- descRange[0].BaseShaderRegister = 0;
- descRange[0].RegisterSpace = 0;
- descRange[0].OffsetInDescriptorsFromTableStart = D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND;
- descRange[1].RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_UAV;
- descRange[1].NumDescriptors = 1;
- descRange[1].BaseShaderRegister = 0;
- descRange[1].RegisterSpace = 0;
- descRange[1].OffsetInDescriptorsFromTableStart = D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND;
-
- D3D12_ROOT_PARAMETER param;
- param.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
- param.ShaderVisibility = D3D12_SHADER_VISIBILITY_ALL;
- param.DescriptorTable.NumDescriptorRanges = 2;
- param.DescriptorTable.pDescriptorRanges = descRange;
-
- D3D12_ROOT_SIGNATURE_DESC desc = {};
- desc.NumParameters = 1;
- desc.pParameters = &param;
-
- ComPtr<ID3DBlob> signature;
- ComPtr<ID3DBlob> error;
- if (FAILED(D3D12SerializeRootSignature(&desc, D3D_ROOT_SIGNATURE_VERSION_1, &signature, &error))) {
- QByteArray msg(static_cast<const char *>(error->GetBufferPointer()), error->GetBufferSize());
- qWarning("Failed to serialize compute root signature: %s", qPrintable(msg));
- return false;
- }
- if (FAILED(engine->device->CreateRootSignature(0, signature->GetBufferPointer(), signature->GetBufferSize(),
- IID_PPV_ARGS(&computeRootSignature)))) {
- qWarning("Failed to create compute root signature");
- return false;
- }
-
- D3D12_COMPUTE_PIPELINE_STATE_DESC psoDesc = {};
- psoDesc.pRootSignature = computeRootSignature.Get();
- psoDesc.CS.pShaderBytecode = g_timeout;
- psoDesc.CS.BytecodeLength = sizeof(g_timeout);
-
- if (FAILED(engine->device->CreateComputePipelineState(&psoDesc, IID_PPV_ARGS(&computeState)))) {
- qWarning("Failed to create compute pipeline state");
- return false;
- }
-#endif
-
- return true;
-}
-
-void QSGD3D12EnginePrivate::DeviceLossTester::releaseResources()
-{
- computeState = nullptr;
- computeRootSignature = nullptr;
-}
-
-void QSGD3D12EnginePrivate::DeviceLossTester::killDevice()
-{
-#ifdef DEVLOSS_TEST
- ID3D12CommandAllocator *ca = engine->frameCommandAllocator[engine->frameIndex % engine->frameInFlightCount].Get();
- ID3D12GraphicsCommandList *cl = engine->frameCommandList.Get();
- cl->Reset(ca, computeState.Get());
-
- cl->SetComputeRootSignature(computeRootSignature.Get());
- cl->Dispatch(256, 1, 1);
-
- cl->Close();
- ID3D12CommandList *commandLists[] = { cl };
- engine->commandQueue->ExecuteCommandLists(_countof(commandLists), commandLists);
-
- engine->waitGPU();
-#endif
-}
-
-void *QSGD3D12EnginePrivate::getResource(QSGRendererInterface::Resource resource) const
-{
- switch (resource) {
- case QSGRendererInterface::DeviceResource:
- return device;
- case QSGRendererInterface::CommandQueueResource:
- return commandQueue.Get();
- case QSGRendererInterface::CommandListResource:
- return commandList;
- default:
- break;
- }
- return nullptr;
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12engine_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12engine_p.h
deleted file mode 100644
index b30994fe0d..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12engine_p.h
+++ /dev/null
@@ -1,394 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12ENGINE_P_H
-#define QSGD3D12ENGINE_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <QWindow>
-#include <QImage>
-#include <QVector4D>
-#include <qsggeometry.h>
-#include <qsgrendererinterface.h>
-#include <qt_windows.h>
-
-QT_BEGIN_NAMESPACE
-
-// No D3D or COM headers must be pulled in here. All that has to be isolated
-// to engine_p_p.h and engine.cpp.
-
-class QSGD3D12EnginePrivate;
-
-// Shader bytecode and other strings are expected to be static so that a
-// different pointer means a different shader.
-
-enum QSGD3D12Format {
- FmtUnknown = 0,
-
- FmtFloat4 = 2, // DXGI_FORMAT_R32G32B32A32_FLOAT
- FmtFloat3 = 6, // DXGI_FORMAT_R32G32B32_FLOAT
- FmtFloat2 = 16, // DXGI_FORMAT_R32G32_FLOAT
- FmtFloat = 41, // DXGI_FORMAT_R32_FLOAT
-
- // glVertexAttribPointer with GL_UNSIGNED_BYTE and normalized == true maps to the UNORM formats below
- FmtUNormByte4 = 28, // DXGI_FORMAT_R8G8B8A8_UNORM
- FmtUNormByte2 = 49, // DXGI_FORMAT_R8G8_UNORM
- FmtUNormByte = 61, // DXGI_FORMAT_R8_UNORM
-
- // Index data types
- FmtUnsignedShort = 57, // DXGI_FORMAT_R16_UINT
- FmtUnsignedInt = 42 // DXGI_FORMAT_R32_UINT
-};
-
-struct QSGD3D12InputElement
-{
- const char *semanticName = nullptr;
- int semanticIndex = 0;
- QSGD3D12Format format = FmtFloat4;
- quint32 slot = 0;
- quint32 offset = 0;
-
- bool operator==(const QSGD3D12InputElement &other) const {
- return semanticName == other.semanticName && semanticIndex == other.semanticIndex
- && format == other.format && slot == other.slot && offset == other.offset;
- }
-};
-
-inline uint qHash(const QSGD3D12InputElement &key, uint seed = 0)
-{
- return qHash(key.semanticName, seed) + key.semanticIndex + key.format + key.offset;
-}
-
-struct QSGD3D12TextureView
-{
- enum Filter {
- FilterNearest = 0,
- FilterLinear = 0x15,
- FilterMinMagNearestMipLinear = 0x1,
- FilterMinMagLinearMipNearest = 0x14
- };
-
- enum AddressMode {
- AddressWrap = 1,
- AddressClamp = 3
- };
-
- Filter filter = FilterLinear;
- AddressMode addressModeHoriz = AddressClamp;
- AddressMode addressModeVert = AddressClamp;
-
- bool operator==(const QSGD3D12TextureView &other) const {
- return filter == other.filter
- && addressModeHoriz == other.addressModeHoriz
- && addressModeVert == other.addressModeVert;
- }
-};
-
-inline uint qHash(const QSGD3D12TextureView &key, uint seed = 0)
-{
- Q_UNUSED(seed);
- return key.filter + key.addressModeHoriz + key.addressModeVert;
-}
-
-const int QSGD3D12_MAX_TEXTURE_VIEWS = 8;
-
-struct QSGD3D12RootSignature
-{
- int textureViewCount = 0;
- QSGD3D12TextureView textureViews[QSGD3D12_MAX_TEXTURE_VIEWS];
-
- bool operator==(const QSGD3D12RootSignature &other) const {
- if (textureViewCount != other.textureViewCount)
- return false;
- for (int i = 0; i < textureViewCount; ++i)
- if (!(textureViews[i] == other.textureViews[i]))
- return false;
- return true;
- }
-};
-
-inline uint qHash(const QSGD3D12RootSignature &key, uint seed = 0)
-{
- return key.textureViewCount + (key.textureViewCount > 0 ? qHash(key.textureViews[0], seed) : 0);
-}
-
-// Shader bytecode blobs and root signature-related data.
-struct QSGD3D12ShaderState
-{
- const quint8 *vs = nullptr;
- quint32 vsSize = 0;
- const quint8 *ps = nullptr;
- quint32 psSize = 0;
-
- QSGD3D12RootSignature rootSig;
-
- bool operator==(const QSGD3D12ShaderState &other) const {
- return vs == other.vs && vsSize == other.vsSize
- && ps == other.ps && psSize == other.psSize
- && rootSig == other.rootSig;
- }
-};
-
-inline uint qHash(const QSGD3D12ShaderState &key, uint seed = 0)
-{
- return qHash(key.vs, seed) + key.vsSize + qHash(key.ps, seed) + key.psSize + qHash(key.rootSig, seed);
-}
-
-const int QSGD3D12_MAX_INPUT_ELEMENTS = 8;
-
-struct QSGD3D12PipelineState
-{
- enum CullMode {
- CullNone = 1,
- CullFront,
- CullBack
- };
-
- enum CompareFunc {
- CompareNever = 1,
- CompareLess,
- CompareEqual,
- CompareLessEqual,
- CompareGreater,
- CompareNotEqual,
- CompareGreaterEqual,
- CompareAlways
- };
-
- enum StencilOp {
- StencilKeep = 1,
- StencilZero,
- StencilReplace,
- StencilIncrSat,
- StencilDecrSat,
- StencilInvert,
- StencilIncr,
- StencilDescr
- };
-
- enum TopologyType {
- TopologyTypePoint = 1,
- TopologyTypeLine,
- TopologyTypeTriangle
- };
-
- enum BlendType {
- BlendNone,
- BlendPremul, // == GL_ONE, GL_ONE_MINUS_SRC_ALPHA
- BlendColor // == GL_CONSTANT_COLOR, GL_ONE_MINUS_SRC_COLOR
- };
-
- QSGD3D12ShaderState shaders;
-
- int inputElementCount = 0;
- QSGD3D12InputElement inputElements[QSGD3D12_MAX_INPUT_ELEMENTS];
-
- CullMode cullMode = CullNone;
- bool frontCCW = true;
- bool colorWrite = true;
- BlendType blend = BlendNone;
- bool depthEnable = true;
- CompareFunc depthFunc = CompareLess;
- bool depthWrite = true;
- bool stencilEnable = false;
- CompareFunc stencilFunc = CompareEqual;
- StencilOp stencilFailOp = StencilKeep;
- StencilOp stencilDepthFailOp = StencilKeep;
- StencilOp stencilPassOp = StencilKeep;
- TopologyType topologyType = TopologyTypeTriangle;
-
- bool operator==(const QSGD3D12PipelineState &other) const {
- bool eq = shaders == other.shaders
- && inputElementCount == other.inputElementCount
- && cullMode == other.cullMode
- && frontCCW == other.frontCCW
- && colorWrite == other.colorWrite
- && blend == other.blend
- && depthEnable == other.depthEnable
- && (!depthEnable || depthFunc == other.depthFunc)
- && depthWrite == other.depthWrite
- && stencilEnable == other.stencilEnable
- && (!stencilEnable || stencilFunc == other.stencilFunc)
- && (!stencilEnable || stencilFailOp == other.stencilFailOp)
- && (!stencilEnable || stencilDepthFailOp == other.stencilDepthFailOp)
- && (!stencilEnable || stencilPassOp == other.stencilPassOp)
- && topologyType == other.topologyType;
- if (eq) {
- for (int i = 0; i < inputElementCount; ++i) {
- if (!(inputElements[i] == other.inputElements[i])) {
- eq = false;
- break;
- }
- }
- }
- return eq;
- }
-};
-
-inline uint qHash(const QSGD3D12PipelineState &key, uint seed = 0)
-{
- return qHash(key.shaders, seed) + key.inputElementCount
- + key.cullMode + key.frontCCW
- + key.colorWrite + key.blend
- + key.depthEnable + key.depthWrite
- + key.stencilEnable
- + key.topologyType;
-}
-
-class QSGD3D12Engine
-{
-public:
- QSGD3D12Engine();
- ~QSGD3D12Engine();
-
- bool attachToWindow(WId window, const QSize &size, float dpr, int surfaceFormatSamples, bool alpha);
- void releaseResources();
- bool hasResources() const;
- void setWindowSize(const QSize &size, float dpr);
- WId window() const;
- QSize windowSize() const;
- float windowDevicePixelRatio() const;
- uint windowSamples() const;
-
- void beginFrame();
- void endFrame();
- void beginLayer();
- void endLayer();
- void invalidateCachedFrameState();
- void restoreFrameState(bool minimal = false);
-
- uint genBuffer();
- void releaseBuffer(uint id);
- void resetBuffer(uint id, const quint8 *data, int size);
- void markBufferDirty(uint id, int offset, int size);
-
- enum ClearFlag {
- ClearDepth = 0x1,
- ClearStencil = 0x2
- };
- Q_DECLARE_FLAGS(ClearFlags, ClearFlag)
-
- void queueViewport(const QRect &rect);
- void queueScissor(const QRect &rect);
- void queueSetRenderTarget(uint id = 0);
- void queueClearRenderTarget(const QColor &color);
- void queueClearDepthStencil(float depthValue, quint8 stencilValue, ClearFlags which);
- void queueSetBlendFactor(const QVector4D &factor);
- void queueSetStencilRef(quint32 ref);
-
- void finalizePipeline(const QSGD3D12PipelineState &pipelineState);
-
- struct DrawParams {
- QSGGeometry::DrawingMode mode = QSGGeometry::DrawTriangles;
- int count = 0;
- uint vertexBuf = 0;
- uint indexBuf = 0;
- uint constantBuf = 0;
- int vboOffset = 0;
- int vboSize = 0;
- int vboStride = 0;
- int cboOffset = 0;
- int startIndexIndex = -1;
- QSGD3D12Format indexFormat = FmtUnsignedShort;
- };
-
- void queueDraw(const DrawParams &params);
-
- void present();
- void waitGPU();
-
- static quint32 alignedConstantBufferSize(quint32 size);
- static QSGD3D12Format toDXGIFormat(QSGGeometry::Type sgtype, int tupleSize = 1, int *size = nullptr);
- static int mipMapLevels(const QSize &size);
- static QSize mipMapAdjustedSourceSize(const QSize &size);
-
- enum TextureCreateFlag {
- TextureWithAlpha = 0x01,
- TextureWithMipMaps = 0x02,
- TextureAlways32Bit = 0x04
- };
- Q_DECLARE_FLAGS(TextureCreateFlags, TextureCreateFlag)
-
- enum TextureUploadFlag {
- TextureUploadAlways32Bit = 0x01
- };
- Q_DECLARE_FLAGS(TextureUploadFlags, TextureUploadFlag)
-
- uint genTexture();
- void createTexture(uint id, const QSize &size, QImage::Format format, TextureCreateFlags flags);
- void queueTextureResize(uint id, const QSize &size);
- void queueTextureUpload(uint id, const QImage &image, const QPoint &dstPos = QPoint(), TextureUploadFlags flags = 0);
- void queueTextureUpload(uint id, const QVector<QImage> &images, const QVector<QPoint> &dstPos, TextureUploadFlags flags = 0);
- void releaseTexture(uint id);
- void useTexture(uint id);
-
- uint genRenderTarget();
- void createRenderTarget(uint id, const QSize &size, const QVector4D &clearColor, uint samples);
- void releaseRenderTarget(uint id);
- void useRenderTargetAsTexture(uint id);
- uint activeRenderTarget() const;
-
- QImage executeAndWaitReadbackRenderTarget(uint id = 0);
-
- void simulateDeviceLoss();
-
- void *getResource(QQuickWindow *window, QSGRendererInterface::Resource resource) const;
-
-private:
- QSGD3D12EnginePrivate *d;
- Q_DISABLE_COPY(QSGD3D12Engine)
-};
-
-Q_DECLARE_OPERATORS_FOR_FLAGS(QSGD3D12Engine::ClearFlags)
-Q_DECLARE_OPERATORS_FOR_FLAGS(QSGD3D12Engine::TextureCreateFlags)
-Q_DECLARE_OPERATORS_FOR_FLAGS(QSGD3D12Engine::TextureUploadFlags)
-
-QT_END_NAMESPACE
-
-#endif // QSGD3D12ENGINE_P_H
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12engine_p_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12engine_p_p.h
deleted file mode 100644
index a95cbb1cbb..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12engine_p_p.h
+++ /dev/null
@@ -1,455 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12ENGINE_P_P_H
-#define QSGD3D12ENGINE_P_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qsgd3d12engine_p.h"
-#include <QCache>
-
-#include <d3d12.h>
-#include <dxgi1_4.h>
-#include <dcomp.h>
-#include <wrl/client.h>
-
-using namespace Microsoft::WRL;
-
-// No moc-related features (Q_OBJECT, signals, etc.) can be used here to due
-// moc-generated code failing to compile when combined with COM stuff.
-
-// Recommended reading before moving further: https://github.com/Microsoft/DirectXTK/wiki/ComPtr
-// Note esp. operator= vs. Attach and operator& vs. GetAddressOf
-
-// ID3D12* is never passed to Qt containers directly. Always use ComPtr and put it into a struct.
-
-QT_BEGIN_NAMESPACE
-
-class QSGD3D12CPUDescriptorHeapManager
-{
-public:
- void initialize(ID3D12Device *device);
-
- void releaseResources();
-
- D3D12_CPU_DESCRIPTOR_HANDLE allocate(D3D12_DESCRIPTOR_HEAP_TYPE type);
- void release(D3D12_CPU_DESCRIPTOR_HANDLE handle, D3D12_DESCRIPTOR_HEAP_TYPE type);
- quint32 handleSize(D3D12_DESCRIPTOR_HEAP_TYPE type) const { return m_handleSizes[type]; }
-
-private:
- ID3D12Device *m_device = nullptr;
- struct Heap {
- D3D12_DESCRIPTOR_HEAP_TYPE type;
- ComPtr<ID3D12DescriptorHeap> heap;
- D3D12_CPU_DESCRIPTOR_HANDLE start;
- quint32 handleSize;
- quint32 freeMap[8];
- };
- QVector<Heap> m_heaps;
- quint32 m_handleSizes[D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES];
-};
-
-class QSGD3D12DeviceManager
-{
-public:
- ID3D12Device *ref();
- void unref();
- void deviceLossDetected();
- IDXGIFactory4 *dxgi();
-
- struct DeviceLossObserver {
- virtual void deviceLost() = 0;
- virtual ~DeviceLossObserver() = default;
- };
- void registerDeviceLossObserver(DeviceLossObserver *observer);
-
-private:
- void ensureCreated();
-
- ComPtr<ID3D12Device> m_device;
- ComPtr<IDXGIFactory4> m_factory;
- QAtomicInt m_ref;
- QVector<DeviceLossObserver *> m_observers;
-};
-
-struct QSGD3D12CPUWaitableFence
-{
- ~QSGD3D12CPUWaitableFence() {
- if (event)
- CloseHandle(event);
- }
- ComPtr<ID3D12Fence> fence;
- HANDLE event = nullptr;
- QAtomicInt value;
-};
-
-class QSGD3D12EnginePrivate : public QSGD3D12DeviceManager::DeviceLossObserver
-{
-public:
- void initialize(WId w, const QSize &size, float dpr, int surfaceFormatSamples, bool alpha);
- bool isInitialized() const { return initialized; }
- void releaseResources();
- void setWindowSize(const QSize &size, float dpr);
- WId currentWindow() const { return window; }
- QSize currentWindowSize() const { return windowSize; }
- float currentWindowDpr() const { return windowDpr; }
- uint currentWindowSamples() const { return windowSamples; }
-
- void beginFrame();
- void endFrame();
- void beginLayer();
- void endLayer();
- void invalidateCachedFrameState();
- void restoreFrameState(bool minimal = false);
-
- uint genBuffer();
- void releaseBuffer(uint id);
- void resetBuffer(uint id, const quint8 *data, int size);
- void markBufferDirty(uint id, int offset, int size);
-
- void queueViewport(const QRect &rect);
- void queueScissor(const QRect &rect);
- void queueSetRenderTarget(uint id);
- void queueClearRenderTarget(const QColor &color);
- void queueClearDepthStencil(float depthValue, quint8 stencilValue, QSGD3D12Engine::ClearFlags which);
- void queueSetBlendFactor(const QVector4D &factor);
- void queueSetStencilRef(quint32 ref);
-
- void finalizePipeline(const QSGD3D12PipelineState &pipelineState);
-
- void queueDraw(const QSGD3D12Engine::DrawParams &params);
-
- void present();
- void waitGPU();
-
- uint genTexture();
- void createTexture(uint id, const QSize &size, QImage::Format format, QSGD3D12Engine::TextureCreateFlags flags);
- void queueTextureResize(uint id, const QSize &size);
- void queueTextureUpload(uint id, const QVector<QImage> &images, const QVector<QPoint> &dstPos,
- QSGD3D12Engine::TextureUploadFlags flags);
- void releaseTexture(uint id);
- void useTexture(uint id);
-
- uint genRenderTarget();
- void createRenderTarget(uint id, const QSize &size, const QVector4D &clearColor, uint samples);
- void releaseRenderTarget(uint id);
- void useRenderTargetAsTexture(uint id);
- uint activeRenderTarget() const { return currentRenderTarget; }
-
- QImage executeAndWaitReadbackRenderTarget(uint id);
-
- void simulateDeviceLoss();
-
- void *getResource(QSGRendererInterface::Resource resource) const;
-
- // the device is intentionally hidden here. all resources have to go
- // through the engine and, unlike with GL, cannot just be created in random
- // places due to the need for proper tracking, managing and releasing.
-private:
- void ensureDevice();
- void setupDefaultRenderTargets();
- void deviceLost() override;
-
- bool createCbvSrvUavHeap(int pframeIndex, int descriptorCount);
- void setDescriptorHeaps(bool force = false);
- void ensureGPUDescriptorHeap(int cbvSrvUavDescriptorCount);
-
- DXGI_SAMPLE_DESC makeSampleDesc(DXGI_FORMAT format, uint samples);
- ID3D12Resource *createColorBuffer(D3D12_CPU_DESCRIPTOR_HANDLE viewHandle, const QSize &size,
- const QVector4D &clearColor, uint samples);
- ID3D12Resource *createDepthStencil(D3D12_CPU_DESCRIPTOR_HANDLE viewHandle, const QSize &size, uint samples);
-
- QSGD3D12CPUWaitableFence *createCPUWaitableFence() const;
- void waitForGPU(QSGD3D12CPUWaitableFence *f) const;
-
- void transitionResource(ID3D12Resource *resource, ID3D12GraphicsCommandList *commandList,
- D3D12_RESOURCE_STATES before, D3D12_RESOURCE_STATES after) const;
- void resolveMultisampledTarget(ID3D12Resource *msaa, ID3D12Resource *resolve, D3D12_RESOURCE_STATES resolveUsage,
- ID3D12GraphicsCommandList *commandList) const;
- void uavBarrier(ID3D12Resource *resource, ID3D12GraphicsCommandList *commandList) const;
-
- ID3D12Resource *createBuffer(int size);
-
- typedef QVector<QPair<int, int> > DirtyList;
- void addDirtyRange(DirtyList *dirty, int offset, int size, int bufferSize);
-
- struct PersistentFrameData {
- ComPtr<ID3D12DescriptorHeap> gpuCbvSrvUavHeap;
- int gpuCbvSrvUavHeapSize;
- int cbvSrvUavNextFreeDescriptorIndex;
- QSet<uint> pendingTextureUploads;
- QSet<uint> pendingTextureMipMap;
- struct DeleteQueueEntry {
- ComPtr<ID3D12Resource> res;
- ComPtr<ID3D12DescriptorHeap> descHeap;
- SIZE_T cpuDescriptorPtr = 0;
- D3D12_DESCRIPTOR_HEAP_TYPE descHeapType = D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV;
- };
- QVector<DeleteQueueEntry> deleteQueue;
- QVector<DeleteQueueEntry> outOfFrameDeleteQueue;
- QSet<uint> buffersUsedInDrawCallSet;
- QSet<uint> buffersUsedInFrame;
- struct PendingRelease {
- enum Type {
- TypeTexture,
- TypeBuffer
- };
- Type type = TypeTexture;
- uint id = 0;
- PendingRelease(Type type, uint id) : type(type), id(id) { }
- PendingRelease() { }
- bool operator==(const PendingRelease &other) const { return type == other.type && id == other.id; }
- };
- QSet<PendingRelease> pendingReleases;
- QSet<PendingRelease> outOfFramePendingReleases;
- };
- friend uint qHash(const PersistentFrameData::PendingRelease &pr, uint seed);
-
- void deferredDelete(ComPtr<ID3D12Resource> res);
- void deferredDelete(ComPtr<ID3D12DescriptorHeap> dh);
- void deferredDelete(D3D12_CPU_DESCRIPTOR_HANDLE h, D3D12_DESCRIPTOR_HEAP_TYPE type);
-
- struct Buffer;
- void ensureBuffer(Buffer *buf);
- void updateBuffer(Buffer *buf);
-
- void beginDrawCalls();
- void beginFrameDraw();
- void endDrawCalls(bool lastInFrame = false);
-
- static const int MAX_SWAP_CHAIN_BUFFER_COUNT = 4;
- static const int MAX_FRAME_IN_FLIGHT_COUNT = 4;
-
- bool initialized = false;
- bool inFrame = false;
- WId window = 0;
- QSize windowSize;
- float windowDpr;
- uint windowSamples;
- bool windowAlpha;
- int swapChainBufferCount;
- int frameInFlightCount;
- int waitableSwapChainMaxLatency;
- ID3D12Device *device;
- ComPtr<ID3D12CommandQueue> commandQueue;
- ComPtr<ID3D12CommandQueue> copyCommandQueue;
- ComPtr<IDXGISwapChain3> swapChain;
- HANDLE swapEvent;
- ComPtr<ID3D12Resource> backBufferRT[MAX_SWAP_CHAIN_BUFFER_COUNT];
- ComPtr<ID3D12Resource> defaultRT[MAX_SWAP_CHAIN_BUFFER_COUNT];
- D3D12_CPU_DESCRIPTOR_HANDLE defaultRTV[MAX_SWAP_CHAIN_BUFFER_COUNT];
- ComPtr<ID3D12Resource> defaultDS;
- D3D12_CPU_DESCRIPTOR_HANDLE defaultDSV;
- ComPtr<ID3D12CommandAllocator> frameCommandAllocator[MAX_FRAME_IN_FLIGHT_COUNT];
- ComPtr<ID3D12CommandAllocator> copyCommandAllocator;
- ComPtr<ID3D12GraphicsCommandList> frameCommandList;
- ComPtr<ID3D12GraphicsCommandList> copyCommandList;
- QSGD3D12CPUDescriptorHeapManager cpuDescHeapManager;
- quint64 presentFrameIndex;
- quint64 frameIndex;
- QSGD3D12CPUWaitableFence *presentFence = nullptr;
- QSGD3D12CPUWaitableFence *frameFence[MAX_FRAME_IN_FLIGHT_COUNT];
-
- PersistentFrameData pframeData[MAX_FRAME_IN_FLIGHT_COUNT];
- int currentPFrameIndex;
- ID3D12GraphicsCommandList *commandList = nullptr;
- int activeLayers = 0;
- int currentLayerDepth = 0;
-
- struct PSOCacheEntry {
- ComPtr<ID3D12PipelineState> pso;
- };
- QCache<QSGD3D12PipelineState, PSOCacheEntry> psoCache;
- struct RootSigCacheEntry {
- ComPtr<ID3D12RootSignature> rootSig;
- };
- QCache<QSGD3D12RootSignature, RootSigCacheEntry> rootSigCache;
-
- struct Texture {
- enum Flag {
- EntryInUse = 0x01,
- Alpha = 0x02,
- MipMap = 0x04
- };
- int flags = 0;
- bool entryInUse() const { return flags & EntryInUse; }
- bool alpha() const { return flags & Alpha; }
- bool mipmap() const { return flags & MipMap; }
- ComPtr<ID3D12Resource> texture;
- D3D12_CPU_DESCRIPTOR_HANDLE srv;
- quint64 fenceValue = 0;
- quint64 lastWaitFenceValue = 0;
- struct StagingHeap {
- ComPtr<ID3D12Heap> heap;
- };
- QVector<StagingHeap> stagingHeaps;
- struct StagingBuffer {
- ComPtr<ID3D12Resource> buffer;
- };
- QVector<StagingBuffer> stagingBuffers;
- QVector<D3D12_CPU_DESCRIPTOR_HANDLE> mipUAVs;
- };
-
- QVector<Texture> textures;
- ComPtr<ID3D12Fence> textureUploadFence;
- QAtomicInt nextTextureUploadFenceValue;
-
- struct TransientFrameData {
- QSGGeometry::DrawingMode drawingMode;
- uint currentIndexBuffer;
- struct ActiveTexture {
- enum Type {
- TypeTexture,
- TypeRenderTarget
- };
- Type type = TypeTexture;
- uint id = 0;
- ActiveTexture(Type type, uint id) : type(type), id(id) { }
- ActiveTexture() { }
- };
- int activeTextureCount;
- ActiveTexture activeTextures[QSGD3D12_MAX_TEXTURE_VIEWS];
- int drawCount;
- ID3D12PipelineState *lastPso;
- ID3D12RootSignature *lastRootSig;
- bool descHeapSet;
-
- QRect viewport;
- QRect scissor;
- QVector4D blendFactor = QVector4D(1, 1, 1, 1);
- quint32 stencilRef = 1;
- QSGD3D12PipelineState pipelineState;
- };
- TransientFrameData tframeData;
-
- struct MipMapGen {
- bool initialize(QSGD3D12EnginePrivate *enginePriv);
- void releaseResources();
- void queueGenerate(const Texture &t);
-
- QSGD3D12EnginePrivate *engine;
- ComPtr<ID3D12RootSignature> rootSig;
- ComPtr<ID3D12PipelineState> pipelineState;
- };
-
- MipMapGen mipmapper;
-
- struct RenderTarget {
- enum Flag {
- EntryInUse = 0x01,
- NeedsReadBarrier = 0x02,
- Multisample = 0x04
- };
- int flags = 0;
- bool entryInUse() const { return flags & EntryInUse; }
- ComPtr<ID3D12Resource> color;
- ComPtr<ID3D12Resource> colorResolve;
- D3D12_CPU_DESCRIPTOR_HANDLE rtv;
- ComPtr<ID3D12Resource> ds;
- D3D12_CPU_DESCRIPTOR_HANDLE dsv;
- D3D12_CPU_DESCRIPTOR_HANDLE srv;
- };
-
- QVector<RenderTarget> renderTargets;
- uint currentRenderTarget;
-
- struct CPUBufferRef {
- const quint8 *p = nullptr;
- quint32 size = 0;
- DirtyList dirty;
- CPUBufferRef() { dirty.reserve(16); }
- };
-
- struct Buffer {
- enum Flag {
- EntryInUse = 0x01
- };
- int flags = 0;
- bool entryInUse() const { return flags & EntryInUse; }
- struct InFlightData {
- ComPtr<ID3D12Resource> buffer;
- DirtyList dirty;
- quint32 dataSize = 0;
- quint32 resourceSize = 0;
- InFlightData() { dirty.reserve(16); }
- };
- InFlightData d[MAX_FRAME_IN_FLIGHT_COUNT];
- CPUBufferRef cpuDataRef;
- };
-
- QVector<Buffer> buffers;
-
- struct DeviceLossTester {
- bool initialize(QSGD3D12EnginePrivate *enginePriv);
- void releaseResources();
- void killDevice();
-
- QSGD3D12EnginePrivate *engine;
- ComPtr<ID3D12PipelineState> computeState;
- ComPtr<ID3D12RootSignature> computeRootSignature;
- };
-
- DeviceLossTester devLossTest;
-
-#ifndef Q_OS_WINRT
- ComPtr<IDCompositionDevice> dcompDevice;
- ComPtr<IDCompositionTarget> dcompTarget;
- ComPtr<IDCompositionVisual> dcompVisual;
-#endif
-};
-
-inline uint qHash(const QSGD3D12EnginePrivate::PersistentFrameData::PendingRelease &pr, uint seed = 0)
-{
- Q_UNUSED(seed);
- return pr.id + pr.type;
-}
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12glyphcache.cpp b/src/plugins/scenegraph/d3d12/qsgd3d12glyphcache.cpp
deleted file mode 100644
index 915917c3d5..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12glyphcache.cpp
+++ /dev/null
@@ -1,197 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgd3d12glyphcache_p.h"
-#include "qsgd3d12engine_p.h"
-
-QT_BEGIN_NAMESPACE
-
-// Convert A8 glyphs to 32-bit in the engine. This is here to work around
-// QTBUG-55330 for AMD cards.
-// If removing, textmask.hlsl must be adjusted! (.a -> .r)
-#define ALWAYS_32BIT
-
-// NOTE: Avoid categorized logging. It is slow.
-
-#define DECLARE_DEBUG_VAR(variable) \
- static bool debug_ ## variable() \
- { static bool value = qgetenv("QSG_RENDERER_DEBUG").contains(QT_STRINGIFY(variable)); return value; }
-
-DECLARE_DEBUG_VAR(render)
-
-QSGD3D12GlyphCache::QSGD3D12GlyphCache(QSGD3D12Engine *engine, QFontEngine::GlyphFormat format, const QTransform &matrix)
- : QTextureGlyphCache(format, matrix),
- m_engine(engine)
-{
-}
-
-QSGD3D12GlyphCache::~QSGD3D12GlyphCache()
-{
- if (m_id)
- m_engine->releaseTexture(m_id);
-}
-
-void QSGD3D12GlyphCache::createTextureData(int width, int height)
-{
- width = qMax(128, width);
- height = qMax(32, height);
-
- m_id = m_engine->genTexture();
- Q_ASSERT(m_id);
-
- if (Q_UNLIKELY(debug_render()))
- qDebug("new glyph cache texture %u of size %dx%d, fontengine format %d", m_id, width, height, m_format);
-
- m_size = QSize(width, height);
-
- const QImage::Format imageFormat =
- m_format == QFontEngine::Format_A8 ? QImage::Format_Alpha8 : QImage::Format_ARGB32_Premultiplied;
- m_engine->createTexture(m_id, m_size, imageFormat, QSGD3D12Engine::TextureWithAlpha
-#ifdef ALWAYS_32BIT
- | QSGD3D12Engine::TextureAlways32Bit
-#endif
- );
-}
-
-void QSGD3D12GlyphCache::resizeTextureData(int width, int height)
-{
- width = qMax(128, width);
- height = qMax(32, height);
-
- if (m_size.width() >= width && m_size.height() >= height)
- return;
-
- if (Q_UNLIKELY(debug_render()))
- qDebug("glyph cache texture %u resize to %dx%d", m_id, width, height);
-
- m_size = QSize(width, height);
-
- m_engine->queueTextureResize(m_id, m_size);
-}
-
-void QSGD3D12GlyphCache::beginFillTexture()
-{
- Q_ASSERT(m_glyphImages.isEmpty() && m_glyphPos.isEmpty());
-}
-
-void QSGD3D12GlyphCache::fillTexture(const Coord &c, glyph_t glyph, QFixed subPixelPosition)
-{
- QImage mask = textureMapForGlyph(glyph, subPixelPosition);
- const int maskWidth = mask.width();
- const int maskHeight = mask.height();
-
- if (mask.format() == QImage::Format_Mono) {
- mask = mask.convertToFormat(QImage::Format_Indexed8);
- for (int y = 0; y < maskHeight; ++y) {
- uchar *src = mask.scanLine(y);
- for (int x = 0; x < maskWidth; ++x)
- src[x] = -src[x]; // convert 0 and 1 into 0 and 255
- }
- } else if (mask.depth() == 32) {
- if (mask.format() == QImage::Format_RGB32) {
- // We need to make the alpha component equal to the average of the RGB values.
- // This is needed when drawing sub-pixel antialiased text on translucent targets.
- for (int y = 0; y < maskHeight; ++y) {
- QRgb *src = reinterpret_cast<QRgb *>(mask.scanLine(y));
- for (int x = 0; x < maskWidth; ++x) {
- const int r = qRed(src[x]);
- const int g = qGreen(src[x]);
- const int b = qBlue(src[x]);
- int avg;
- if (mask.format() == QImage::Format_RGB32)
- avg = (r + g + b + 1) / 3; // "+1" for rounding.
- else // Format_ARGB32_Premultiplied
- avg = qAlpha(src[x]);
- src[x] = qRgba(r, g, b, avg);
- }
- }
- }
- }
-
- m_glyphImages.append(mask);
- m_glyphPos.append(QPoint(c.x, c.y));
-}
-
-void QSGD3D12GlyphCache::endFillTexture()
-{
- if (m_glyphImages.isEmpty())
- return;
-
- Q_ASSERT(m_id);
-
- m_engine->queueTextureUpload(m_id, m_glyphImages, m_glyphPos
-#ifdef ALWAYS_32BIT
- , QSGD3D12Engine::TextureUploadAlways32Bit
-#endif
- );
-
- // Nothing else left to do, it is up to the text material to call
- // useTexture() which will then add the texture dependency to the frame.
-
- m_glyphImages.clear();
- m_glyphPos.clear();
-}
-
-int QSGD3D12GlyphCache::glyphPadding() const
-{
- return 1;
-}
-
-int QSGD3D12GlyphCache::maxTextureWidth() const
-{
- return 16384;
-}
-
-int QSGD3D12GlyphCache::maxTextureHeight() const
-{
- return 16384;
-}
-
-void QSGD3D12GlyphCache::useTexture()
-{
- if (m_id)
- m_engine->useTexture(m_id);
-}
-
-QSize QSGD3D12GlyphCache::currentSize() const
-{
- return m_size;
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12glyphcache_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12glyphcache_p.h
deleted file mode 100644
index 88d3d36f33..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12glyphcache_p.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12GLYPHCACHE_P_H
-#define QSGD3D12GLYPHCACHE_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <QtGui/private/qtextureglyphcache_p.h>
-
-QT_BEGIN_NAMESPACE
-
-class QSGD3D12Engine;
-
-class QSGD3D12GlyphCache : public QTextureGlyphCache
-{
-public:
- QSGD3D12GlyphCache(QSGD3D12Engine *engine, QFontEngine::GlyphFormat format, const QTransform &matrix);
- ~QSGD3D12GlyphCache();
-
- void createTextureData(int width, int height) override;
- void resizeTextureData(int width, int height) override;
- void beginFillTexture() override;
- void fillTexture(const Coord &c, glyph_t glyph, QFixed subPixelPosition) override;
- void endFillTexture() override;
- int glyphPadding() const override;
- int maxTextureWidth() const override;
- int maxTextureHeight() const override;
-
- void useTexture();
- QSize currentSize() const;
-
-private:
- QSGD3D12Engine *m_engine;
- uint m_id = 0;
- QVector<QImage> m_glyphImages;
- QVector<QPoint> m_glyphPos;
- QSize m_size;
-};
-
-QT_END_NAMESPACE
-
-#endif // QSGD3D12GLYPHCACHE_P_H
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12glyphnode.cpp b/src/plugins/scenegraph/d3d12/qsgd3d12glyphnode.cpp
deleted file mode 100644
index e559739018..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12glyphnode.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgd3d12glyphnode_p.h"
-#include "qsgd3d12builtinmaterials_p.h"
-
-QT_BEGIN_NAMESPACE
-
-void QSGD3D12GlyphNode::setMaterialColor(const QColor &color)
-{
- static_cast<QSGD3D12TextMaterial *>(m_material)->setColor(color);
-}
-
-void QSGD3D12GlyphNode::update()
-{
- QRawFont font = m_glyphs.rawFont();
- QMargins margins(0, 0, 0, 0);
-
- if (m_style == QQuickText::Normal) {
- // QSGBasicGlyphNode dtor will delete
- m_material = new QSGD3D12TextMaterial(QSGD3D12TextMaterial::Normal, m_rc, font);
- } else if (m_style == QQuickText::Outline) {
- QSGD3D12TextMaterial *material = new QSGD3D12TextMaterial(QSGD3D12TextMaterial::Outlined,
- m_rc, font, QFontEngine::Format_A8);
- material->setStyleColor(m_styleColor);
- m_material = material;
- margins = QMargins(1, 1, 1, 1);
- } else {
- QSGD3D12TextMaterial *material = new QSGD3D12TextMaterial(QSGD3D12TextMaterial::Styled,
- m_rc, font, QFontEngine::Format_A8);
- if (m_style == QQuickText::Sunken) {
- material->setStyleShift(QVector2D(0, -1));
- margins.setTop(1);
- } else if (m_style == QQuickText::Raised) {
- material->setStyleShift(QVector2D(0, 1));
- margins.setBottom(1);
- }
- material->setStyleColor(m_styleColor);
- m_material = material;
- }
-
- QSGD3D12TextMaterial *textMaterial = static_cast<QSGD3D12TextMaterial *>(m_material);
- textMaterial->setColor(m_color);
-
- QRectF boundingRect;
- textMaterial->populate(m_position, m_glyphs.glyphIndexes(), m_glyphs.positions(), geometry(),
- &boundingRect, &m_baseLine, margins);
- setBoundingRect(boundingRect);
-
- setMaterial(m_material);
- markDirty(DirtyGeometry);
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12glyphnode_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12glyphnode_p.h
deleted file mode 100644
index d04a8e8777..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12glyphnode_p.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12GLYPHNODE_P_H
-#define QSGD3D12GLYPHNODE_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <private/qsgbasicglyphnode_p.h>
-
-QT_BEGIN_NAMESPACE
-
-class QSGD3D12RenderContext;
-
-class QSGD3D12GlyphNode : public QSGBasicGlyphNode
-{
-public:
- QSGD3D12GlyphNode(QSGD3D12RenderContext *rc) : m_rc(rc) { }
-
- void setMaterialColor(const QColor &color) override;
- void update() override;
-
-private:
- QSGD3D12RenderContext *m_rc;
-};
-
-QT_END_NAMESPACE
-
-#endif // QSGD3D12GLYPHNODE_P_H
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12internalimagenode.cpp b/src/plugins/scenegraph/d3d12/qsgd3d12internalimagenode.cpp
deleted file mode 100644
index aa163cacbf..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12internalimagenode.cpp
+++ /dev/null
@@ -1,123 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgd3d12internalimagenode_p.h"
-
-QT_BEGIN_NAMESPACE
-
-QSGD3D12InternalImageNode::QSGD3D12InternalImageNode()
-{
- setMaterial(&m_material);
-}
-
-void QSGD3D12InternalImageNode::setFiltering(QSGTexture::Filtering filtering)
-{
- if (m_material.filtering() == filtering)
- return;
-
- m_material.setFiltering(filtering);
- m_smoothMaterial.setFiltering(filtering);
- markDirty(DirtyMaterial);
-}
-
-void QSGD3D12InternalImageNode::setMipmapFiltering(QSGTexture::Filtering filtering)
-{
- if (m_material.mipmapFiltering() == filtering)
- return;
-
- m_material.setMipmapFiltering(filtering);
- m_smoothMaterial.setMipmapFiltering(filtering);
- markDirty(DirtyMaterial);
-}
-
-void QSGD3D12InternalImageNode::setVerticalWrapMode(QSGTexture::WrapMode wrapMode)
-{
- if (m_material.verticalWrapMode() == wrapMode)
- return;
-
- m_material.setVerticalWrapMode(wrapMode);
- m_smoothMaterial.setVerticalWrapMode(wrapMode);
- markDirty(DirtyMaterial);
-}
-
-void QSGD3D12InternalImageNode::setHorizontalWrapMode(QSGTexture::WrapMode wrapMode)
-{
- if (m_material.horizontalWrapMode() == wrapMode)
- return;
-
- m_material.setHorizontalWrapMode(wrapMode);
- m_smoothMaterial.setHorizontalWrapMode(wrapMode);
- markDirty(DirtyMaterial);
-}
-
-void QSGD3D12InternalImageNode::updateMaterialAntialiasing()
-{
- if (m_antialiasing)
- setMaterial(&m_smoothMaterial);
- else
- setMaterial(&m_material);
-}
-
-void QSGD3D12InternalImageNode::setMaterialTexture(QSGTexture *texture)
-{
- m_material.setTexture(texture);
- m_smoothMaterial.setTexture(texture);
-}
-
-QSGTexture *QSGD3D12InternalImageNode::materialTexture() const
-{
- return m_material.texture();
-}
-
-bool QSGD3D12InternalImageNode::updateMaterialBlending()
-{
- const bool alpha = m_material.flags() & QSGMaterial::Blending;
- if (materialTexture() && alpha != materialTexture()->hasAlphaChannel()) {
- m_material.setFlag(QSGMaterial::Blending, !alpha);
- return true;
- }
- return false;
-}
-
-bool QSGD3D12InternalImageNode::supportsWrap(const QSize &) const
-{
- return true;
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12internalimagenode_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12internalimagenode_p.h
deleted file mode 100644
index 26284740ee..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12internalimagenode_p.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12INTERNALIMAGENODE_P_H
-#define QSGD3D12INTERNALIMAGENODE_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <private/qsgbasicinternalimagenode_p.h>
-#include "qsgd3d12builtinmaterials_p.h"
-
-QT_BEGIN_NAMESPACE
-
-class QSGD3D12InternalImageNode : public QSGBasicInternalImageNode
-{
-public:
- QSGD3D12InternalImageNode();
-
- void setMipmapFiltering(QSGTexture::Filtering filtering) override;
- void setFiltering(QSGTexture::Filtering filtering) override;
- void setHorizontalWrapMode(QSGTexture::WrapMode wrapMode) override;
- void setVerticalWrapMode(QSGTexture::WrapMode wrapMode) override;
-
- void updateMaterialAntialiasing() override;
- void setMaterialTexture(QSGTexture *texture) override;
- QSGTexture *materialTexture() const override;
- bool updateMaterialBlending() override;
- bool supportsWrap(const QSize &size) const override;
-
-private:
- QSGD3D12TextureMaterial m_material;
- QSGD3D12SmoothTextureMaterial m_smoothMaterial;
-};
-
-QT_END_NAMESPACE
-
-#endif // QSGD3D12INTERNALIMAGENODE_P_H
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12internalrectanglenode_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12internalrectanglenode_p.h
deleted file mode 100644
index 2fc3c69285..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12internalrectanglenode_p.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12INTERNALRECTANGLENODE_P_H
-#define QSGD3D12INTERNALRECTANGLENODE_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <private/qsgbasicinternalrectanglenode_p.h>
-#include "qsgd3d12builtinmaterials_p.h"
-
-QT_BEGIN_NAMESPACE
-
-class QSGD3D12InternalRectangleNode : public QSGBasicInternalRectangleNode
-{
-public:
- QSGD3D12InternalRectangleNode();
-
-private:
- void updateMaterialAntialiasing() override;
- void updateMaterialBlending(QSGNode::DirtyState *state) override;
-
- QSGD3D12VertexColorMaterial m_material;
- QSGD3D12SmoothColorMaterial m_smoothMaterial;
-};
-
-QT_END_NAMESPACE
-
-#endif // QSGD3D12INTERNALRECTANGLENODE_P_H
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12layer.cpp b/src/plugins/scenegraph/d3d12/qsgd3d12layer.cpp
deleted file mode 100644
index b9d3a180cf..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12layer.cpp
+++ /dev/null
@@ -1,370 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgd3d12layer_p.h"
-#include "qsgd3d12rendercontext_p.h"
-#include "qsgd3d12engine_p.h"
-#include "qsgd3d12renderer_p.h"
-
-QT_BEGIN_NAMESPACE
-
-// NOTE: Avoid categorized logging. It is slow.
-
-#define DECLARE_DEBUG_VAR(variable) \
- static bool debug_ ## variable() \
- { static bool value = qgetenv("QSG_RENDERER_DEBUG").contains(QT_STRINGIFY(variable)); return value; }
-
-DECLARE_DEBUG_VAR(render)
-
-QSGD3D12Layer::QSGD3D12Layer(QSGD3D12RenderContext *rc)
- : QSGLayer(*(new QSGD3D12LayerPrivate)),
- m_rc(rc)
-{
- if (Q_UNLIKELY(debug_render()))
- qDebug("new layer %p", this);
-}
-
-QSGD3D12Layer::~QSGD3D12Layer()
-{
- if (Q_UNLIKELY(debug_render()))
- qDebug("destroying layer %p", this);
-
- cleanup();
-}
-
-// QSGTexture
-
-int QSGD3D12Layer::textureId() const
-{
- return m_rt; // not a texture id per se but will do
-}
-
-int QSGD3D12LayerPrivate::comparisonKey() const
-{
- Q_Q(const QSGD3D12Layer);
- return q->m_rt;
-}
-
-QSize QSGD3D12Layer::textureSize() const
-{
- return m_size;
-}
-
-bool QSGD3D12Layer::hasAlphaChannel() const
-{
- return true;
-}
-
-bool QSGD3D12Layer::hasMipmaps() const
-{
- // mipmapped layers are not supported for now
- return false;
-}
-
-QRectF QSGD3D12Layer::normalizedTextureSubRect() const
-{
- return QRectF(m_mirrorHorizontal ? 1 : 0,
- m_mirrorVertical ? 0 : 1,
- m_mirrorHorizontal ? -1 : 1,
- m_mirrorVertical ? 1 : -1);
-}
-
-void QSGD3D12Layer::bind()
-{
- if (Q_UNLIKELY(debug_render()))
- qDebug("layer %p bind rt=%u", this, m_rt);
-
- QSGD3D12Engine *engine = m_rc->engine();
- Q_ASSERT(m_rt);
-
-#ifndef QT_NO_DEBUG
- // Should not use the color buffer as a texture while it is the current render target.
- if (!m_recursive && engine->activeRenderTarget() == m_rt && engine->windowSamples() == 1)
- qWarning("ShaderEffectSource: \'recursive\' must be set to true when rendering recursively.");
-#endif
-
- engine->useRenderTargetAsTexture(m_rt);
-}
-
-// QSGDynamicTexture
-
-bool QSGD3D12Layer::updateTexture()
-{
- if (Q_UNLIKELY(debug_render()))
- qDebug("layer %p updateTexture", this);
-
- const bool doUpdate = (m_live || m_updateContentPending) && m_dirtyTexture;
-
- if (doUpdate)
- updateContent();
-
- if (m_updateContentPending) {
- m_updateContentPending = false;
- emit scheduledUpdateCompleted();
- }
-
- return doUpdate;
-}
-
-// QSGLayer
-
-void QSGD3D12Layer::setItem(QSGNode *item)
-{
- if (m_item == item)
- return;
-
- if (m_live && !item)
- resetRenderTarget();
-
- m_item = item;
- markDirtyTexture();
-}
-
-void QSGD3D12Layer::setRect(const QRectF &rect)
-{
- if (m_rect == rect)
- return;
-
- m_rect = rect;
- markDirtyTexture();
-}
-
-void QSGD3D12Layer::setSize(const QSize &size)
-{
- if (m_size == size)
- return;
-
- if (m_live && size.isNull())
- resetRenderTarget();
-
- m_size = size;
- markDirtyTexture();
-}
-
-void QSGD3D12Layer::scheduleUpdate()
-{
- if (m_updateContentPending)
- return;
-
- if (Q_UNLIKELY(debug_render()))
- qDebug("layer %p scheduleUpdate", this);
-
- m_updateContentPending = true;
-
- if (m_dirtyTexture)
- emit updateRequested();
-}
-
-QImage QSGD3D12Layer::toImage() const
-{
- return m_rc->engine()->executeAndWaitReadbackRenderTarget(m_rt);
-}
-
-void QSGD3D12Layer::setLive(bool live)
-{
- if (m_live == live)
- return;
-
- if (live && (!m_item || m_size.isNull()))
- resetRenderTarget();
-
- m_live = live;
- markDirtyTexture();
-}
-
-void QSGD3D12Layer::setRecursive(bool recursive)
-{
- m_recursive = recursive;
-}
-
-void QSGD3D12Layer::setFormat(uint format)
-{
- Q_UNUSED(format);
-}
-
-void QSGD3D12Layer::setHasMipmaps(bool mipmap)
-{
- // mipmapped layers are not supported for now
- Q_UNUSED(mipmap);
-}
-
-void QSGD3D12Layer::setDevicePixelRatio(qreal ratio)
-{
- m_dpr = ratio;
-}
-
-void QSGD3D12Layer::setMirrorHorizontal(bool mirror)
-{
- m_mirrorHorizontal = mirror;
-}
-
-void QSGD3D12Layer::setMirrorVertical(bool mirror)
-{
- m_mirrorVertical = mirror;
-}
-
-void QSGD3D12Layer::markDirtyTexture()
-{
- if (Q_UNLIKELY(debug_render()))
- qDebug("layer %p markDirtyTexture", this);
-
- m_dirtyTexture = true;
-
- if (m_live || m_updateContentPending)
- emit updateRequested();
-}
-
-void QSGD3D12Layer::invalidated()
-{
- cleanup();
-}
-
-void QSGD3D12Layer::cleanup()
-{
- if (!m_renderer && !m_rt)
- return;
-
- if (Q_UNLIKELY(debug_render()))
- qDebug("layer %p cleanup renderer=%p rt=%u", this, m_renderer, m_rt);
-
- delete m_renderer;
- m_renderer = nullptr;
-
- resetRenderTarget();
-}
-
-void QSGD3D12Layer::resetRenderTarget()
-{
- if (!m_rt)
- return;
-
- if (Q_UNLIKELY(debug_render()))
- qDebug("layer %p resetRenderTarget rt=%u", this, m_rt);
-
- m_rc->engine()->releaseRenderTarget(m_rt);
- m_rt = 0;
-
- if (m_secondaryRT) {
- m_rc->engine()->releaseRenderTarget(m_secondaryRT);
- m_secondaryRT = 0;
- }
-}
-
-void QSGD3D12Layer::updateContent()
-{
- if (Q_UNLIKELY(debug_render()))
- qDebug("layer %p updateContent", this);
-
- if (!m_item || m_size.isNull()) {
- resetRenderTarget();
- m_dirtyTexture = false;
- return;
- }
-
- QSGNode *root = m_item;
- while (root->firstChild() && root->type() != QSGNode::RootNodeType)
- root = root->firstChild();
-
- if (root->type() != QSGNode::RootNodeType)
- return;
-
- if (!m_renderer) {
- m_renderer = m_rc->createRenderer();
- static_cast<QSGD3D12Renderer *>(m_renderer)->turnToLayerRenderer();
- connect(m_renderer, &QSGRenderer::sceneGraphChanged, this, &QSGD3D12Layer::markDirtyTexture);
- }
-
- m_renderer->setDevicePixelRatio(m_dpr);
- m_renderer->setRootNode(static_cast<QSGRootNode *>(root));
-
- QSGD3D12Engine *engine = m_rc->engine();
- const uint sampleCount = engine->windowSamples();
- const QVector4D clearColor;
-
- if (!m_rt || m_rtSize != m_size) {
- if (m_rt)
- resetRenderTarget();
-
- m_rt = engine->genRenderTarget();
- m_rtSize = m_size;
-
- if (Q_UNLIKELY(debug_render()))
- qDebug("new render target for layer %p, size=%dx%d, samples=%d",
- this, m_size.width(), m_size.height(), sampleCount);
-
- engine->createRenderTarget(m_rt, m_rtSize, clearColor, sampleCount);
-
- // For multisampling the resolving via an extra non-ms color buffer is
- // handled internally in the engine, no need to worry about it here.
- }
-
- if (m_recursive && !m_secondaryRT && sampleCount == 1) {
- m_secondaryRT = engine->genRenderTarget();
- engine->createRenderTarget(m_secondaryRT, m_rtSize, clearColor, sampleCount);
- }
-
- m_dirtyTexture = false;
-
- m_renderer->setDeviceRect(m_size);
- m_renderer->setViewportRect(m_size);
-
- // Note that the handling of vertical mirroring differs from OpenGL here
- // due to y running top-bottom with D3D as opposed to bottom-top with GL.
- // The common parts of Quick follow OpenGL so vertical mirroring is
- // typically enabled.
- QRectF mirrored(m_mirrorHorizontal ? m_rect.right() : m_rect.left(),
- m_mirrorVertical ? m_rect.top() : m_rect.bottom(),
- m_mirrorHorizontal ? -m_rect.width() : m_rect.width(),
- m_mirrorVertical ? m_rect.height() : -m_rect.height());
-
- m_renderer->setProjectionMatrixToRect(mirrored);
- m_renderer->setClearColor(Qt::transparent);
-
- if (!m_recursive || sampleCount > 1) {
- m_renderer->renderScene(m_rt);
- } else {
- m_renderer->renderScene(m_secondaryRT);
- qSwap(m_rt, m_secondaryRT);
- }
-
- if (m_recursive)
- markDirtyTexture(); // Continuously update if 'live' and 'recursive'.
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12layer_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12layer_p.h
deleted file mode 100644
index 42a56877cf..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12layer_p.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12LAYER_P_H
-#define QSGD3D12LAYER_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <private/qsgadaptationlayer_p.h>
-#include <private/qsgtexture_p.h>
-
-QT_BEGIN_NAMESPACE
-
-class QSGD3D12RenderContext;
-class QSGD3D12LayerPrivate;
-
-class QSGD3D12Layer : public QSGLayer
-{
- Q_DECLARE_PRIVATE(QSGD3D12Layer)
- Q_OBJECT
-
-public:
- QSGD3D12Layer(QSGD3D12RenderContext *rc);
- ~QSGD3D12Layer();
-
- int textureId() const override;
- QSize textureSize() const override;
- bool hasAlphaChannel() const override;
- bool hasMipmaps() const override;
- QRectF normalizedTextureSubRect() const override;
- void bind() override;
-
- bool updateTexture() override;
-
- void setItem(QSGNode *item) override;
- void setRect(const QRectF &rect) override;
- void setSize(const QSize &size) override;
- void scheduleUpdate() override;
- QImage toImage() const override;
- void setLive(bool live) override;
- void setRecursive(bool recursive) override;
- void setFormat(uint format) override;
- void setHasMipmaps(bool mipmap) override;
- void setDevicePixelRatio(qreal ratio) override;
- void setMirrorHorizontal(bool mirror) override;
- void setMirrorVertical(bool mirror) override;
- void setSamples(int) override { }
-
-public Q_SLOTS:
- void markDirtyTexture() override;
- void invalidated() override;
-
-private:
- void cleanup();
- void resetRenderTarget();
- void updateContent();
-
- QSGD3D12RenderContext *m_rc;
- uint m_rt = 0;
- uint m_secondaryRT = 0;
- QSize m_rtSize;
- QSize m_size;
- QRectF m_rect;
- QSGNode *m_item = nullptr;
- QSGRenderer *m_renderer = nullptr;
- float m_dpr = 1;
- bool m_mirrorHorizontal = false;
- bool m_mirrorVertical = true;
- bool m_live = true;
- bool m_recursive = false;
- bool m_dirtyTexture = true;
- bool m_updateContentPending = false;
-};
-
-class QSGD3D12LayerPrivate : public QSGTexturePrivate
-{
- Q_DECLARE_PUBLIC(QSGD3D12Layer)
-public:
- int comparisonKey() const override;
-};
-
-QT_END_NAMESPACE
-
-#endif // QSGD3D12LAYER_P_H
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12material.cpp b/src/plugins/scenegraph/d3d12/qsgd3d12material.cpp
deleted file mode 100644
index 1b638106ee..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12material.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgd3d12material_p.h"
-
-QT_BEGIN_NAMESPACE
-
-QSGMaterialShader *QSGD3D12Material::createShader() const
-{
- return nullptr;
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12material_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12material_p.h
deleted file mode 100644
index 65d53600c3..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12material_p.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12MATERIAL_P_H
-#define QSGD3D12MATERIAL_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <QtQuick/qsgmaterial.h>
-#include "qsgd3d12engine_p.h"
-
-QT_BEGIN_NAMESPACE
-
-class QSGRenderer;
-
-// The D3D renderer works with QSGD3D12Material as the "base" class since
-// QSGMaterial and its GL program related bits are not suitable. Also, there is
-// no split like with QSGMaterialShader.
-
-typedef QSGMaterialShader::RenderState QSGD3D12MaterialRenderState;
-
-class QSGD3D12Material : public QSGMaterial
-{
-public:
- struct ExtraState {
- QVector4D blendFactor;
- };
-
- enum UpdateResult {
- UpdatedShaders = 0x0001,
- UpdatedConstantBuffer = 0x0002,
- UpdatedBlendFactor = 0x0004
- };
- Q_DECLARE_FLAGS(UpdateResults, UpdateResult)
-
- virtual int constantBufferSize() const = 0;
- virtual void preparePipeline(QSGD3D12PipelineState *pipelineState) = 0;
- virtual UpdateResults updatePipeline(const QSGD3D12MaterialRenderState &state,
- QSGD3D12PipelineState *pipelineState,
- ExtraState *extraState,
- quint8 *constantBuffer) = 0;
-
-private:
- QSGMaterialShader *createShader() const override; // dummy, QSGMaterialShader is too GL dependent
-};
-
-Q_DECLARE_OPERATORS_FOR_FLAGS(QSGD3D12Material::UpdateResults)
-
-QT_END_NAMESPACE
-
-#endif // QSGD3D12MATERIAL_P_H
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12painternode.cpp b/src/plugins/scenegraph/d3d12/qsgd3d12painternode.cpp
deleted file mode 100644
index b22c42f2e5..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12painternode.cpp
+++ /dev/null
@@ -1,255 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgd3d12painternode_p.h"
-#include "qsgd3d12rendercontext_p.h"
-#include "qsgd3d12engine_p.h"
-#include <private/qquickitem_p.h>
-#include <qmath.h>
-
-QT_BEGIN_NAMESPACE
-
-QSGD3D12PainterTexture::QSGD3D12PainterTexture(QSGD3D12Engine *engine)
- : QSGD3D12Texture(engine)
-{
-}
-
-void QSGD3D12PainterTexture::bind()
-{
- if (m_image.isNull()) {
- if (!m_id) {
- m_id = m_engine->genTexture();
- m_engine->createTexture(m_id, QSize(16, 16), QImage::Format_RGB32, 0);
- }
- } else if (m_image.size() != lastSize) {
- lastSize = m_image.size();
- if (m_id)
- m_engine->releaseTexture(m_id);
- m_id = m_engine->genTexture();
- m_engine->createTexture(m_id, m_image.size(), m_image.format(), QSGD3D12Engine::TextureWithAlpha);
- m_engine->queueTextureUpload(m_id, m_image);
- } else if (!dirty.isEmpty()) {
- const int bpl = m_image.bytesPerLine();
- const uchar *p = m_image.constBits() + dirty.y() * bpl + dirty.x() * 4;
- QImage subImg(p, dirty.width(), dirty.height(), bpl, QImage::Format_ARGB32_Premultiplied);
- m_engine->queueTextureUpload(m_id, subImg, dirty.topLeft());
- }
-
- dirty = QRect();
-
- m_engine->useTexture(m_id);
-}
-
-QSGD3D12PainterNode::QSGD3D12PainterNode(QQuickPaintedItem *item)
- : m_item(item),
- m_engine(static_cast<QSGD3D12RenderContext *>(QQuickItemPrivate::get(item)->sceneGraphRenderContext())->engine()),
- m_texture(new QSGD3D12PainterTexture(m_engine)),
- m_geometry(QSGGeometry::defaultAttributes_TexturedPoint2D(), 4),
- m_dirtyGeometry(false),
- m_dirtyContents(false)
-{
- setGeometry(&m_geometry);
- m_material.setTexture(m_texture);
- setMaterial(&m_material);
-}
-
-QSGD3D12PainterNode::~QSGD3D12PainterNode()
-{
- delete m_texture;
-}
-
-void QSGD3D12PainterNode::setPreferredRenderTarget(QQuickPaintedItem::RenderTarget)
-{
- // always QImage-based
-}
-
-void QSGD3D12PainterNode::setSize(const QSize &size)
-{
- if (m_size == size)
- return;
-
- m_size = size;
- m_dirtyGeometry = true;
-}
-
-void QSGD3D12PainterNode::setDirty(const QRect &dirtyRect)
-{
- m_dirtyRect = dirtyRect;
- m_dirtyContents = true;
- markDirty(DirtyMaterial);
-}
-
-void QSGD3D12PainterNode::setOpaquePainting(bool)
-{
- // ignored
-}
-
-void QSGD3D12PainterNode::setLinearFiltering(bool linearFiltering)
-{
- m_material.setFiltering(linearFiltering ? QSGTexture::Linear : QSGTexture::Nearest);
- markDirty(DirtyMaterial);
-}
-
-void QSGD3D12PainterNode::setMipmapping(bool)
-{
- // ### not yet
-}
-
-void QSGD3D12PainterNode::setSmoothPainting(bool s)
-{
- if (m_smoothPainting == s)
- return;
-
- m_smoothPainting = s;
- m_dirtyContents = true;
- markDirty(DirtyMaterial);
-}
-
-void QSGD3D12PainterNode::setFillColor(const QColor &c)
-{
- if (m_fillColor == c)
- return;
-
- m_fillColor = c;
- m_dirtyContents = true;
- markDirty(DirtyMaterial);
-}
-
-void QSGD3D12PainterNode::setContentsScale(qreal s)
-{
- if (m_contentsScale == s)
- return;
-
- m_contentsScale = s;
- m_dirtyContents = true;
- markDirty(DirtyMaterial);
-}
-
-void QSGD3D12PainterNode::setFastFBOResizing(bool)
-{
- // nope
-}
-
-void QSGD3D12PainterNode::setTextureSize(const QSize &size)
-{
- if (m_textureSize == size)
- return;
-
- m_textureSize = size;
- m_dirtyGeometry = true;
-}
-
-QImage QSGD3D12PainterNode::toImage() const
-{
- return *m_texture->image();
-}
-
-void QSGD3D12PainterNode::update()
-{
- if (m_dirtyGeometry) {
- m_dirtyGeometry = false;
- QRectF src(0, 0, 1, 1);
- QRectF dst(QPointF(0, 0), m_size);
- QSGGeometry::updateTexturedRectGeometry(&m_geometry, dst, src);
- markDirty(DirtyGeometry);
- }
-
- QImage *img = m_texture->image();
- if (img->size() != m_textureSize) {
- *img = QImage(m_textureSize, QImage::Format_ARGB32_Premultiplied);
- img->fill(Qt::transparent);
- m_dirtyContents = true;
- }
-
- if (m_dirtyContents) {
- m_dirtyContents = false;
- if (!img->isNull()) {
- QRect dirtyRect = m_dirtyRect.isNull() ? QRect(QPoint(0, 0), m_size) : m_dirtyRect;
- QPainter painter;
- painter.begin(img);
- if (m_smoothPainting)
- painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform);
-
- QRect clipRect;
- QRect dirtyTextureRect;
-
- if (m_contentsScale == 1) {
- float scaleX = m_textureSize.width() / (float) m_size.width();
- float scaleY = m_textureSize.height() / (float) m_size.height();
- painter.scale(scaleX, scaleY);
- clipRect = dirtyRect;
- dirtyTextureRect = QRectF(dirtyRect.x() * scaleX,
- dirtyRect.y() * scaleY,
- dirtyRect.width() * scaleX,
- dirtyRect.height() * scaleY).toAlignedRect();
- } else {
- painter.scale(m_contentsScale, m_contentsScale);
- QRect sclip(qFloor(dirtyRect.x() / m_contentsScale),
- qFloor(dirtyRect.y() / m_contentsScale),
- qCeil(dirtyRect.width() / m_contentsScale + dirtyRect.x() / m_contentsScale
- - qFloor(dirtyRect.x() / m_contentsScale)),
- qCeil(dirtyRect.height() / m_contentsScale + dirtyRect.y() / m_contentsScale
- - qFloor(dirtyRect.y() / m_contentsScale)));
- clipRect = sclip;
- dirtyTextureRect = dirtyRect;
- }
-
- // only clip if we were originally updating only a subrect
- if (!m_dirtyRect.isNull())
- painter.setClipRect(clipRect);
-
- painter.setCompositionMode(QPainter::CompositionMode_Source);
- painter.fillRect(clipRect, m_fillColor);
- painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
-
- m_item->paint(&painter);
- painter.end();
-
- m_texture->dirty = dirtyTextureRect;
- }
- m_dirtyRect = QRect();
- }
-}
-
-QSGTexture *QSGD3D12PainterNode::texture() const
-{
- return m_texture;
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12painternode_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12painternode_p.h
deleted file mode 100644
index 7f4842b3a6..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12painternode_p.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12PAINTERNODE_P_H
-#define QSGD3D12PAINTERNODE_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <private/qsgadaptationlayer_p.h>
-#include "qsgd3d12texture_p.h"
-#include "qsgd3d12builtinmaterials_p.h"
-
-QT_BEGIN_NAMESPACE
-
-class QSGD3D12Engine;
-
-class QSGD3D12PainterTexture : public QSGD3D12Texture
-{
-public:
- QSGD3D12PainterTexture(QSGD3D12Engine *engine);
-
- void bind() override;
- bool hasAlphaChannel() const override { return true; }
-
- QImage *image() { return &m_image; }
-
- QRect dirty;
-
-private:
- QSize lastSize;
-};
-
-class QSGD3D12PainterNode : public QSGPainterNode
-{
-public:
- QSGD3D12PainterNode(QQuickPaintedItem *item);
- ~QSGD3D12PainterNode();
-
- void setPreferredRenderTarget(QQuickPaintedItem::RenderTarget target) override;
- void setSize(const QSize &size) override;
- void setDirty(const QRect &dirtyRect = QRect()) override;
- void setOpaquePainting(bool opaque) override;
- void setLinearFiltering(bool linearFiltering) override;
- void setMipmapping(bool mipmapping) override;
- void setSmoothPainting(bool s) override;
- void setFillColor(const QColor &c) override;
- void setContentsScale(qreal s) override;
- void setFastFBOResizing(bool dynamic) override;
- void setTextureSize(const QSize &size) override;
-
- QImage toImage() const override;
- void update() override;
- QSGTexture *texture() const override;
-
-private:
- QQuickPaintedItem *m_item;
- QSGD3D12Engine *m_engine;
- QSGD3D12PainterTexture *m_texture;
- QSize m_size;
- QSize m_textureSize;
- float m_contentsScale = 1;
- bool m_smoothPainting = false;
- QColor m_fillColor = Qt::transparent;
- QRect m_dirtyRect;
-
- QSGGeometry m_geometry;
- QSGD3D12TextureMaterial m_material;
-
- uint m_dirtyGeometry : 1;
- uint m_dirtyContents : 1;
-};
-
-QT_END_NAMESPACE
-
-#endif // QSGD3D12PAINTERNODE_P_H
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12publicnodes.cpp b/src/plugins/scenegraph/d3d12/qsgd3d12publicnodes.cpp
deleted file mode 100644
index 1f01c440e5..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12publicnodes.cpp
+++ /dev/null
@@ -1,250 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgd3d12publicnodes_p.h"
-
-QT_BEGIN_NAMESPACE
-
-QSGD3D12RectangleNode::QSGD3D12RectangleNode()
- : m_geometry(QSGGeometry::defaultAttributes_Point2D(), 4)
-{
- QSGGeometry::updateRectGeometry(&m_geometry, QRectF());
- setMaterial(&m_material);
- setGeometry(&m_geometry);
-#ifdef QSG_RUNTIME_DESCRIPTION
- qsgnode_set_description(this, QLatin1String("rectangle"));
-#endif
-}
-
-void QSGD3D12RectangleNode::setRect(const QRectF &rect)
-{
- QSGGeometry::updateRectGeometry(&m_geometry, rect);
- markDirty(QSGNode::DirtyGeometry);
-}
-
-QRectF QSGD3D12RectangleNode::rect() const
-{
- const QSGGeometry::Point2D *pts = m_geometry.vertexDataAsPoint2D();
- return QRectF(pts[0].x,
- pts[0].y,
- pts[3].x - pts[0].x,
- pts[3].y - pts[0].y);
-}
-
-void QSGD3D12RectangleNode::setColor(const QColor &color)
-{
- if (color != m_material.color()) {
- m_material.setColor(color);
- markDirty(QSGNode::DirtyMaterial);
- }
-}
-
-QColor QSGD3D12RectangleNode::color() const
-{
- return m_material.color();
-}
-
-QSGD3D12ImageNode::QSGD3D12ImageNode()
- : m_geometry(QSGGeometry::defaultAttributes_TexturedPoint2D(), 4),
- m_texCoordMode(QSGD3D12ImageNode::NoTransform),
- m_isAtlasTexture(false),
- m_ownsTexture(false)
-{
- setGeometry(&m_geometry);
- setMaterial(&m_material);
- m_material.setMipmapFiltering(QSGTexture::None);
-#ifdef QSG_RUNTIME_DESCRIPTION
- qsgnode_set_description(this, QLatin1String("image"));
-#endif
-}
-
-QSGD3D12ImageNode::~QSGD3D12ImageNode()
-{
- if (m_ownsTexture)
- delete m_material.texture();
-}
-
-void QSGD3D12ImageNode::setFiltering(QSGTexture::Filtering filtering)
-{
- if (m_material.filtering() == filtering)
- return;
-
- m_material.setFiltering(filtering);
- markDirty(DirtyMaterial);
-}
-
-QSGTexture::Filtering QSGD3D12ImageNode::filtering() const
-{
- return m_material.filtering();
-}
-
-void QSGD3D12ImageNode::setMipmapFiltering(QSGTexture::Filtering filtering)
-{
- if (m_material.mipmapFiltering() == filtering)
- return;
-
- m_material.setMipmapFiltering(filtering);
- markDirty(DirtyMaterial);
-}
-
-QSGTexture::Filtering QSGD3D12ImageNode::mipmapFiltering() const
-{
- return m_material.mipmapFiltering();
-}
-
-void QSGD3D12ImageNode::setRect(const QRectF &r)
-{
- if (m_rect == r)
- return;
-
- m_rect = r;
- QSGImageNode::rebuildGeometry(&m_geometry, texture(), m_rect, m_sourceRect, m_texCoordMode);
- markDirty(DirtyGeometry);
-}
-
-QRectF QSGD3D12ImageNode::rect() const
-{
- return m_rect;
-}
-
-void QSGD3D12ImageNode::setSourceRect(const QRectF &r)
-{
- if (m_sourceRect == r)
- return;
-
- m_sourceRect = r;
- QSGImageNode::rebuildGeometry(&m_geometry, texture(), m_rect, m_sourceRect, m_texCoordMode);
- markDirty(DirtyGeometry);
-}
-
-QRectF QSGD3D12ImageNode::sourceRect() const
-{
- return m_sourceRect;
-}
-
-void QSGD3D12ImageNode::setTexture(QSGTexture *texture)
-{
- Q_ASSERT(texture);
-
- if (m_ownsTexture)
- delete m_material.texture();
-
- m_material.setTexture(texture);
- QSGImageNode::rebuildGeometry(&m_geometry, texture, m_rect, m_sourceRect, m_texCoordMode);
-
- DirtyState dirty = DirtyMaterial;
- const bool wasAtlas = m_isAtlasTexture;
- m_isAtlasTexture = texture->isAtlasTexture();
- if (wasAtlas || m_isAtlasTexture)
- dirty |= DirtyGeometry;
-
- markDirty(dirty);
-}
-
-QSGTexture *QSGD3D12ImageNode::texture() const
-{
- return m_material.texture();
-}
-
-void QSGD3D12ImageNode::setTextureCoordinatesTransform(TextureCoordinatesTransformMode mode)
-{
- if (m_texCoordMode == mode)
- return;
-
- m_texCoordMode = mode;
- QSGImageNode::rebuildGeometry(&m_geometry, texture(), m_rect, m_sourceRect, m_texCoordMode);
- markDirty(DirtyMaterial);
-}
-
-QSGD3D12ImageNode::TextureCoordinatesTransformMode QSGD3D12ImageNode::textureCoordinatesTransform() const
-{
- return m_texCoordMode;
-}
-
-void QSGD3D12ImageNode::setOwnsTexture(bool owns)
-{
- m_ownsTexture = owns;
-}
-
-bool QSGD3D12ImageNode::ownsTexture() const
-{
- return m_ownsTexture;
-}
-
-QSGD3D12NinePatchNode::QSGD3D12NinePatchNode()
- : m_geometry(QSGGeometry::defaultAttributes_TexturedPoint2D(), 4)
-{
- m_geometry.setDrawingMode(QSGGeometry::DrawTriangleStrip);
- setGeometry(&m_geometry);
- setMaterial(&m_material);
-}
-
-QSGD3D12NinePatchNode::~QSGD3D12NinePatchNode()
-{
- delete m_material.texture();
-}
-
-void QSGD3D12NinePatchNode::setTexture(QSGTexture *texture)
-{
- delete m_material.texture();
- m_material.setTexture(texture);
-}
-
-void QSGD3D12NinePatchNode::setBounds(const QRectF &bounds)
-{
- m_bounds = bounds;
-}
-
-void QSGD3D12NinePatchNode::setDevicePixelRatio(qreal ratio)
-{
- m_devicePixelRatio = ratio;
-}
-
-void QSGD3D12NinePatchNode::setPadding(qreal left, qreal top, qreal right, qreal bottom)
-{
- m_padding = QVector4D(left, top, right, bottom);
-}
-
-void QSGD3D12NinePatchNode::update()
-{
- QSGNinePatchNode::rebuildGeometry(m_material.texture(), &m_geometry, m_padding, m_bounds, m_devicePixelRatio);
- markDirty(QSGNode::DirtyGeometry | QSGNode::DirtyMaterial);
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12publicnodes_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12publicnodes_p.h
deleted file mode 100644
index 6150083aaf..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12publicnodes_p.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12PUBLICNODES_P_H
-#define QSGD3D12PUBLICNODES_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <QtQuick/qsgrectanglenode.h>
-#include <QtQuick/qsgimagenode.h>
-#include <QtQuick/qsgninepatchnode.h>
-#include "qsgd3d12builtinmaterials_p.h"
-
-QT_BEGIN_NAMESPACE
-
-class QSGD3D12RectangleNode : public QSGRectangleNode
-{
-public:
- QSGD3D12RectangleNode();
-
- void setRect(const QRectF &rect) override;
- QRectF rect() const override;
-
- void setColor(const QColor &color) override;
- QColor color() const override;
-
-private:
- QSGGeometry m_geometry;
- QSGD3D12FlatColorMaterial m_material;
-};
-
-class QSGD3D12ImageNode : public QSGImageNode
-{
-public:
- QSGD3D12ImageNode();
- ~QSGD3D12ImageNode();
-
- void setRect(const QRectF &rect) override;
- QRectF rect() const override;
-
- void setSourceRect(const QRectF &r) override;
- QRectF sourceRect() const override;
-
- void setTexture(QSGTexture *texture) override;
- QSGTexture *texture() const override;
-
- void setFiltering(QSGTexture::Filtering filtering) override;
- QSGTexture::Filtering filtering() const override;
-
- void setMipmapFiltering(QSGTexture::Filtering filtering) override;
- QSGTexture::Filtering mipmapFiltering() const override;
-
- void setTextureCoordinatesTransform(TextureCoordinatesTransformMode mode) override;
- TextureCoordinatesTransformMode textureCoordinatesTransform() const override;
-
- void setOwnsTexture(bool owns) override;
- bool ownsTexture() const override;
-
-private:
- QSGGeometry m_geometry;
- QSGD3D12TextureMaterial m_material;
- QRectF m_rect;
- QRectF m_sourceRect;
- TextureCoordinatesTransformMode m_texCoordMode;
- uint m_isAtlasTexture : 1;
- uint m_ownsTexture : 1;
-};
-
-class QSGD3D12NinePatchNode : public QSGNinePatchNode
-{
-public:
- QSGD3D12NinePatchNode();
- ~QSGD3D12NinePatchNode();
-
- void setTexture(QSGTexture *texture) override;
- void setBounds(const QRectF &bounds) override;
- void setDevicePixelRatio(qreal ratio) override;
- void setPadding(qreal left, qreal top, qreal right, qreal bottom) override;
- void update() override;
-
-private:
- QSGGeometry m_geometry;
- QSGD3D12TextureMaterial m_material;
- QRectF m_bounds;
- qreal m_devicePixelRatio;
- QVector4D m_padding;
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12rendercontext.cpp b/src/plugins/scenegraph/d3d12/qsgd3d12rendercontext.cpp
deleted file mode 100644
index 48693207c6..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12rendercontext.cpp
+++ /dev/null
@@ -1,169 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgd3d12rendercontext_p.h"
-#include "qsgd3d12renderer_p.h"
-#include "qsgd3d12texture_p.h"
-
-QT_BEGIN_NAMESPACE
-
-// NOTE: Avoid categorized logging. It is slow.
-
-#define DECLARE_DEBUG_VAR(variable) \
- static bool debug_ ## variable() \
- { static bool value = qgetenv("QSG_RENDERER_DEBUG").contains(QT_STRINGIFY(variable)); return value; }
-
-DECLARE_DEBUG_VAR(render)
-
-QSGD3D12RenderContext::QSGD3D12RenderContext(QSGContext *ctx)
- : QSGRenderContext(ctx)
-{
-}
-
-bool QSGD3D12RenderContext::isValid() const
-{
- // The render thread sets an engine when it starts up and resets when it
- // quits. The rc is initialized and functional between those two points,
- // regardless of any calls to invalidate(). See setEngine().
- return m_engine != nullptr;
-}
-
-void QSGD3D12RenderContext::initialize(const InitParams *)
-{
- if (m_initialized)
- return;
-
- m_initialized = true;
- emit initialized();
-}
-
-void QSGD3D12RenderContext::invalidate()
-{
- if (!m_initialized)
- return;
-
- m_initialized = false;
-
- if (Q_UNLIKELY(debug_render()))
- qDebug("rendercontext invalidate engine %p, %d/%d/%d", m_engine,
- m_texturesToDelete.count(), m_textures.count(), m_fontEnginesToClean.count());
-
- qDeleteAll(m_texturesToDelete);
- m_texturesToDelete.clear();
-
- qDeleteAll(m_textures);
- m_textures.clear();
-
- for (QSet<QFontEngine *>::const_iterator it = m_fontEnginesToClean.constBegin(),
- end = m_fontEnginesToClean.constEnd(); it != end; ++it) {
- (*it)->clearGlyphCache(m_engine);
- if (!(*it)->ref.deref())
- delete *it;
- }
- m_fontEnginesToClean.clear();
-
- m_sg->renderContextInvalidated(this);
- emit invalidated();
-}
-
-QSGTexture *QSGD3D12RenderContext::createTexture(const QImage &image, uint flags) const
-{
- Q_ASSERT(m_engine);
- QSGD3D12Texture *t = new QSGD3D12Texture(m_engine);
- t->create(image, flags);
- return t;
-}
-
-QSGRenderer *QSGD3D12RenderContext::createRenderer()
-{
- return new QSGD3D12Renderer(this);
-}
-
-int QSGD3D12RenderContext::maxTextureSize() const
-{
- return 16384; // D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION
-}
-
-void QSGD3D12RenderContext::renderNextFrame(QSGRenderer *renderer, uint fbo)
-{
- static_cast<QSGD3D12Renderer *>(renderer)->renderScene(fbo);
-}
-
-void QSGD3D12RenderContext::setEngine(QSGD3D12Engine *engine)
-{
- if (m_engine == engine)
- return;
-
- m_engine = engine;
-
- if (m_engine)
- initialize(nullptr);
-}
-
-QSGRendererInterface::GraphicsApi QSGD3D12RenderContext::graphicsApi() const
-{
- return Direct3D12;
-}
-
-void *QSGD3D12RenderContext::getResource(QQuickWindow *window, Resource resource) const
-{
- if (!m_engine) {
- qWarning("getResource: No D3D12 engine available yet (window not exposed?)");
- return nullptr;
- }
- // window can be ignored since the rendercontext and engine are both per window
- return m_engine->getResource(window, resource);
-}
-
-QSGRendererInterface::ShaderType QSGD3D12RenderContext::shaderType() const
-{
- return HLSL;
-}
-
-QSGRendererInterface::ShaderCompilationTypes QSGD3D12RenderContext::shaderCompilationType() const
-{
- return RuntimeCompilation | OfflineCompilation;
-}
-
-QSGRendererInterface::ShaderSourceTypes QSGD3D12RenderContext::shaderSourceType() const
-{
- return ShaderSourceString | ShaderSourceFile | ShaderByteCode;
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12rendercontext_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12rendercontext_p.h
deleted file mode 100644
index c555c0808e..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12rendercontext_p.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12RENDERCONTEXT_P_H
-#define QSGD3D12RENDERCONTEXT_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <private/qsgcontext_p.h>
-#include <qsgrendererinterface.h>
-
-QT_BEGIN_NAMESPACE
-
-class QSGD3D12Engine;
-
-class QSGD3D12RenderContext : public QSGRenderContext, public QSGRendererInterface
-{
-public:
- QSGD3D12RenderContext(QSGContext *ctx);
- bool isValid() const override;
- void initialize(const InitParams *params) override;
- void invalidate() override;
- void renderNextFrame(QSGRenderer *renderer, uint fbo) override;
- QSGTexture *createTexture(const QImage &image, uint flags) const override;
- QSGRenderer *createRenderer() override;
- int maxTextureSize() const override;
-
- void setEngine(QSGD3D12Engine *engine);
- QSGD3D12Engine *engine() { return m_engine; }
-
- // QSGRendererInterface
- GraphicsApi graphicsApi() const override;
- void *getResource(QQuickWindow *window, Resource resource) const override;
- ShaderType shaderType() const override;
- ShaderCompilationTypes shaderCompilationType() const override;
- ShaderSourceTypes shaderSourceType() const override;
-
-private:
- QSGD3D12Engine *m_engine = nullptr;
- bool m_initialized = false;
-};
-
-QT_END_NAMESPACE
-
-#endif // QSGD3D12RENDERCONTEXT_P_H
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12renderer.cpp b/src/plugins/scenegraph/d3d12/qsgd3d12renderer.cpp
deleted file mode 100644
index c38c616ae6..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12renderer.cpp
+++ /dev/null
@@ -1,785 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgd3d12renderer_p.h"
-#include "qsgd3d12rendercontext_p.h"
-#include <private/qsgnodeupdater_p.h>
-#include <private/qsgrendernode_p.h>
-
-#include "vs_stencilclip.hlslh"
-#include "ps_stencilclip.hlslh"
-
-//#define I_LIKE_STENCIL
-
-QT_BEGIN_NAMESPACE
-
-#define QSGNODE_TRAVERSE(NODE) for (QSGNode *child = NODE->firstChild(); child; child = child->nextSibling())
-
-// NOTE: Avoid categorized logging. It is slow.
-
-#define DECLARE_DEBUG_VAR(variable) \
- static bool debug_ ## variable() \
- { static bool value = qgetenv("QSG_RENDERER_DEBUG").contains(QT_STRINGIFY(variable)); return value; }
-
-DECLARE_DEBUG_VAR(build)
-DECLARE_DEBUG_VAR(change)
-DECLARE_DEBUG_VAR(render)
-
-class DummyUpdater : public QSGNodeUpdater
-{
-public:
- void updateState(QSGNode *) { };
-};
-
-QSGD3D12Renderer::QSGD3D12Renderer(QSGRenderContext *context)
- : QSGRenderer(context),
- m_vboData(1024),
- m_iboData(256),
- m_cboData(4096),
- m_renderList(16)
-{
- setNodeUpdater(new DummyUpdater);
-}
-
-QSGD3D12Renderer::~QSGD3D12Renderer()
-{
- if (m_engine) {
- m_engine->releaseBuffer(m_vertexBuf);
- m_engine->releaseBuffer(m_indexBuf);
- m_engine->releaseBuffer(m_constantBuf);
- }
-}
-
-void QSGD3D12Renderer::renderScene(GLuint fboId)
-{
- m_renderTarget = fboId;
-
- struct DummyBindable : public QSGBindable {
- void bind() const { }
- } bindable;
-
- QSGRenderer::renderScene(bindable); // calls back render()
-}
-
-// Search through the node set and remove nodes that are descendants of other
-// nodes in the same set.
-static QSet<QSGNode *> qsg_removeDescendants(const QSet<QSGNode *> &nodes, QSGRootNode *root)
-{
- QSet<QSGNode *> result = nodes;
- for (QSGNode *node : nodes) {
- QSGNode *n = node;
- while (n != root) {
- if (n != node && result.contains(n)) {
- result.remove(node);
- break;
- }
- n = n->parent();
- }
- }
- return result;
-}
-
-void QSGD3D12Renderer::updateMatrices(QSGNode *node, QSGTransformNode *xform)
-{
- if (node->isSubtreeBlocked())
- return;
-
- if (node->type() == QSGNode::TransformNodeType) {
- QSGTransformNode *tn = static_cast<QSGTransformNode *>(node);
- if (xform)
- tn->setCombinedMatrix(xform->combinedMatrix() * tn->matrix());
- else
- tn->setCombinedMatrix(tn->matrix());
- QSGNODE_TRAVERSE(node)
- updateMatrices(child, tn);
- } else {
- if (node->type() == QSGNode::GeometryNodeType || node->type() == QSGNode::ClipNodeType) {
- m_nodeDirtyMap[node] |= QSGD3D12MaterialRenderState::DirtyMatrix;
- QSGBasicGeometryNode *gnode = static_cast<QSGBasicGeometryNode *>(node);
- const QMatrix4x4 *newMatrix = xform ? &xform->combinedMatrix() : nullptr;
- // NB the newMatrix ptr is usually the same as before as it just
- // references the transform node's own matrix.
- gnode->setRendererMatrix(newMatrix);
- }
- QSGNODE_TRAVERSE(node)
- updateMatrices(child, xform);
- }
-}
-
-void QSGD3D12Renderer::updateOpacities(QSGNode *node, float inheritedOpacity)
-{
- if (node->isSubtreeBlocked())
- return;
-
- if (node->type() == QSGNode::OpacityNodeType) {
- QSGOpacityNode *on = static_cast<QSGOpacityNode *>(node);
- float combined = inheritedOpacity * on->opacity();
- on->setCombinedOpacity(combined);
- QSGNODE_TRAVERSE(node)
- updateOpacities(child, combined);
- } else {
- if (node->type() == QSGNode::GeometryNodeType) {
- m_nodeDirtyMap[node] |= QSGD3D12MaterialRenderState::DirtyOpacity;
- QSGGeometryNode *gn = static_cast<QSGGeometryNode *>(node);
- gn->setInheritedOpacity(inheritedOpacity);
- }
- QSGNODE_TRAVERSE(node)
- updateOpacities(child, inheritedOpacity);
- }
-}
-
-void QSGD3D12Renderer::buildRenderList(QSGNode *node, QSGClipNode *clip)
-{
- if (node->isSubtreeBlocked())
- return;
-
- if (node->type() == QSGNode::GeometryNodeType || node->type() == QSGNode::ClipNodeType) {
- QSGBasicGeometryNode *gn = static_cast<QSGBasicGeometryNode *>(node);
- QSGGeometry *g = gn->geometry();
-
- Element e;
- e.node = gn;
-
- if (g->vertexCount() > 0) {
- e.vboOffset = m_vboData.size();
- const int vertexSize = g->sizeOfVertex() * g->vertexCount();
- m_vboData.resize(m_vboData.size() + vertexSize);
- memcpy(m_vboData.data() + e.vboOffset, g->vertexData(), vertexSize);
- }
-
- if (g->indexCount() > 0) {
- e.iboOffset = m_iboData.size();
- e.iboStride = g->sizeOfIndex();
- const int indexSize = e.iboStride * g->indexCount();
- m_iboData.resize(m_iboData.size() + indexSize);
- memcpy(m_iboData.data() + e.iboOffset, g->indexData(), indexSize);
- }
-
- e.cboOffset = m_cboData.size();
- if (node->type() == QSGNode::GeometryNodeType) {
- QSGD3D12Material *m = static_cast<QSGD3D12Material *>(static_cast<QSGGeometryNode *>(node)->activeMaterial());
- e.cboSize = m->constantBufferSize();
- } else {
- // Stencil-based clipping needs a 4x4 matrix.
- e.cboSize = QSGD3D12Engine::alignedConstantBufferSize(16 * sizeof(float));
- }
- m_cboData.resize(m_cboData.size() + e.cboSize);
-
- m_renderList.add(e);
-
- gn->setRendererClipList(clip);
- if (node->type() == QSGNode::ClipNodeType)
- clip = static_cast<QSGClipNode *>(node);
- } else if (node->type() == QSGNode::RenderNodeType) {
- QSGRenderNode *rn = static_cast<QSGRenderNode *>(node);
- Element e;
- e.node = rn;
- m_renderList.add(e);
- }
-
- QSGNODE_TRAVERSE(node)
- buildRenderList(child, clip);
-}
-
-void QSGD3D12Renderer::render()
-{
- QSGD3D12RenderContext *rc = static_cast<QSGD3D12RenderContext *>(context());
- m_engine = rc->engine();
- if (!m_layerRenderer)
- m_engine->beginFrame();
- else
- m_engine->beginLayer();
-
- m_activeScissorRect = QRect();
-
- if (m_rebuild) {
- m_rebuild = false;
-
- m_dirtyTransformNodes.clear();
- m_dirtyTransformNodes.insert(rootNode());
- m_dirtyOpacityNodes.clear();
- m_dirtyOpacityNodes.insert(rootNode());
-
- m_renderList.reset();
- m_vboData.reset();
- m_iboData.reset();
- m_cboData.reset();
-
- buildRenderList(rootNode(), nullptr);
-
- if (!m_vertexBuf)
- m_vertexBuf = m_engine->genBuffer();
- m_engine->resetBuffer(m_vertexBuf, m_vboData.data(), m_vboData.size());
-
- if (!m_constantBuf)
- m_constantBuf = m_engine->genBuffer();
- m_engine->resetBuffer(m_constantBuf, m_cboData.data(), m_cboData.size());
-
- if (m_iboData.size()) {
- if (!m_indexBuf)
- m_indexBuf = m_engine->genBuffer();
- m_engine->resetBuffer(m_indexBuf, m_iboData.data(), m_iboData.size());
- } else if (m_indexBuf) {
- m_engine->releaseBuffer(m_indexBuf);
- m_indexBuf = 0;
- }
-
- if (Q_UNLIKELY(debug_build())) {
- qDebug("renderList: %d elements in total", m_renderList.size());
- for (int i = 0; i < m_renderList.size(); ++i) {
- const Element &e = m_renderList.at(i);
- qDebug() << " - " << e.vboOffset << e.iboOffset << e.cboOffset << e.cboSize << e.node;
- }
- }
- }
-
- const QRect devRect = deviceRect();
- m_projectionChangedDueToDeviceSize = devRect != m_lastDeviceRect;
- if (m_projectionChangedDueToDeviceSize)
- m_lastDeviceRect = devRect;
-
- if (m_dirtyTransformNodes.size()) {
- const QSet<QSGNode *> subTreeRoots = qsg_removeDescendants(m_dirtyTransformNodes, rootNode());
- for (QSGNode *node : subTreeRoots) {
- // First find the parent transform so we have the accumulated
- // matrix up until this point.
- QSGTransformNode *xform = 0;
- QSGNode *n = node;
- if (n->type() == QSGNode::TransformNodeType)
- n = node->parent();
- while (n != rootNode() && n->type() != QSGNode::TransformNodeType)
- n = n->parent();
- if (n != rootNode())
- xform = static_cast<QSGTransformNode *>(n);
-
- // Then update in the subtree
- updateMatrices(node, xform);
- }
- }
-
- if (m_dirtyOpacityNodes.size()) {
- const QSet<QSGNode *> subTreeRoots = qsg_removeDescendants(m_dirtyOpacityNodes, rootNode());
- for (QSGNode *node : subTreeRoots) {
- float opacity = 1.0f;
- QSGNode *n = node;
- if (n->type() == QSGNode::OpacityNodeType)
- n = node->parent();
- while (n != rootNode() && n->type() != QSGNode::OpacityNodeType)
- n = n->parent();
- if (n != rootNode())
- opacity = static_cast<QSGOpacityNode *>(n)->combinedOpacity();
-
- updateOpacities(node, opacity);
- }
- m_dirtyOpaqueElements = true;
- }
-
- if (m_dirtyOpaqueElements) {
- m_dirtyOpaqueElements = false;
- m_opaqueElements.clear();
- m_opaqueElements.resize(m_renderList.size());
- for (int i = 0; i < m_renderList.size(); ++i) {
- const Element &e = m_renderList.at(i);
- if (e.node->type() == QSGNode::GeometryNodeType) {
- const QSGGeometryNode *gn = static_cast<QSGGeometryNode *>(e.node);
- if (gn->inheritedOpacity() > 0.999f && ((gn->activeMaterial()->flags() & QSGMaterial::Blending) == 0))
- m_opaqueElements.setBit(i);
- }
- // QSGRenderNodes are always treated as non-opaque
- }
- }
-
- // Build pipeline state and draw calls.
- renderElements();
-
- m_dirtyTransformNodes.clear();
- m_dirtyOpacityNodes.clear();
- m_dirtyOpaqueElements = false;
- m_nodeDirtyMap.clear();
-
- // Finalize buffers and execute commands.
- if (!m_layerRenderer)
- m_engine->endFrame();
- else
- m_engine->endLayer();
-}
-
-void QSGD3D12Renderer::nodeChanged(QSGNode *node, QSGNode::DirtyState state)
-{
- // note that with DirtyNodeRemoved the window and all the graphics engine may already be gone
-
- if (Q_UNLIKELY(debug_change())) {
- QDebug debug = qDebug();
- debug << "dirty:";
- if (state & QSGNode::DirtyGeometry)
- debug << "Geometry";
- if (state & QSGNode::DirtyMaterial)
- debug << "Material";
- if (state & QSGNode::DirtyMatrix)
- debug << "Matrix";
- if (state & QSGNode::DirtyNodeAdded)
- debug << "Added";
- if (state & QSGNode::DirtyNodeRemoved)
- debug << "Removed";
- if (state & QSGNode::DirtyOpacity)
- debug << "Opacity";
- if (state & QSGNode::DirtySubtreeBlocked)
- debug << "SubtreeBlocked";
- if (state & QSGNode::DirtyForceUpdate)
- debug << "ForceUpdate";
-
- // when removed, some parts of the node could already have been destroyed
- // so don't debug it out.
- if (state & QSGNode::DirtyNodeRemoved)
- debug << (void *) node << node->type();
- else
- debug << node;
- }
-
- if (state & (QSGNode::DirtyNodeAdded
- | QSGNode::DirtyNodeRemoved
- | QSGNode::DirtySubtreeBlocked
- | QSGNode::DirtyGeometry
- | QSGNode::DirtyForceUpdate))
- m_rebuild = true;
-
- if (state & QSGNode::DirtyMatrix)
- m_dirtyTransformNodes << node;
-
- if (state & QSGNode::DirtyOpacity)
- m_dirtyOpacityNodes << node;
-
- if (state & QSGNode::DirtyMaterial)
- m_dirtyOpaqueElements = true;
-
- QSGRenderer::nodeChanged(node, state);
-}
-
-void QSGD3D12Renderer::renderElements()
-{
- m_engine->queueSetRenderTarget(m_renderTarget);
- m_engine->queueViewport(viewportRect());
- m_engine->queueClearRenderTarget(clearColor());
- m_engine->queueClearDepthStencil(1, 0, QSGD3D12Engine::ClearDepth | QSGD3D12Engine::ClearStencil);
-
- m_pipelineState.blend = m_freshPipelineState.blend = QSGD3D12PipelineState::BlendNone;
- m_pipelineState.depthEnable = m_freshPipelineState.depthEnable = true;
- m_pipelineState.depthWrite = m_freshPipelineState.depthWrite = true;
-
- // First do opaque...
- // The algorithm is quite simple. We traverse the list back-to-front, and
- // for every item we start a second traversal and draw all elements which
- // have identical material. Then we clear the bit for this in the rendered
- // list so we don't draw it again when we come to that index.
- QBitArray rendered = m_opaqueElements;
- for (int i = m_renderList.size() - 1; i >= 0; --i) {
- if (rendered.testBit(i)) {
- renderElement(i);
- for (int j = i - 1; j >= 0; --j) {
- if (rendered.testBit(j)) {
- const QSGGeometryNode *gni = static_cast<QSGGeometryNode *>(m_renderList.at(i).node);
- const QSGGeometryNode *gnj = static_cast<QSGGeometryNode *>(m_renderList.at(j).node);
- if (gni->clipList() == gnj->clipList()
- && gni->inheritedOpacity() == gnj->inheritedOpacity()
- && gni->geometry()->drawingMode() == gnj->geometry()->drawingMode()
- && gni->geometry()->attributes() == gnj->geometry()->attributes()) {
- const QSGMaterial *ami = gni->activeMaterial();
- const QSGMaterial *amj = gnj->activeMaterial();
- if (ami->type() == amj->type()
- && ami->flags() == amj->flags()
- && ami->compare(amj) == 0) {
- renderElement(j);
- rendered.clearBit(j);
- }
- }
- }
- }
- }
- }
-
- m_pipelineState.blend = m_freshPipelineState.blend = QSGD3D12PipelineState::BlendPremul;
- m_pipelineState.depthWrite = m_freshPipelineState.depthWrite = false;
-
- // ...then the alpha ones
- for (int i = 0; i < m_renderList.size(); ++i) {
- if ((m_renderList.at(i).node->type() == QSGNode::GeometryNodeType && !m_opaqueElements.testBit(i))
- || m_renderList.at(i).node->type() == QSGNode::RenderNodeType)
- renderElement(i);
- }
-}
-
-struct RenderNodeState : public QSGRenderNode::RenderState
-{
- const QMatrix4x4 *projectionMatrix() const override { return m_projectionMatrix; }
- QRect scissorRect() const override { return m_scissorRect; }
- bool scissorEnabled() const override { return m_scissorEnabled; }
- int stencilValue() const override { return m_stencilValue; }
- bool stencilEnabled() const override { return m_stencilEnabled; }
- const QRegion *clipRegion() const override { return nullptr; }
-
- const QMatrix4x4 *m_projectionMatrix;
- QRect m_scissorRect;
- bool m_scissorEnabled;
- int m_stencilValue;
- bool m_stencilEnabled;
-};
-
-void QSGD3D12Renderer::renderElement(int elementIndex)
-{
- Element &e = m_renderList.at(elementIndex);
- Q_ASSERT(e.node->type() == QSGNode::GeometryNodeType || e.node->type() == QSGNode::RenderNodeType);
-
- if (e.node->type() == QSGNode::RenderNodeType) {
- renderRenderNode(static_cast<QSGRenderNode *>(e.node), elementIndex);
- return;
- }
-
- if (e.vboOffset < 0)
- return;
-
- Q_ASSERT(e.cboOffset >= 0);
-
- const QSGGeometryNode *gn = static_cast<QSGGeometryNode *>(e.node);
- if (Q_UNLIKELY(debug_render()))
- qDebug() << "renderElement:" << elementIndex << gn << e.vboOffset << e.iboOffset << gn->inheritedOpacity() << gn->clipList();
-
- if (gn->inheritedOpacity() < 0.001f) // pretty much invisible, don't draw it
- return;
-
- // Update the QSGRenderer members which the materials will access.
- m_current_projection_matrix = projectionMatrix();
- const float scale = 1.0 / m_renderList.size();
- m_current_projection_matrix(2, 2) = scale;
- m_current_projection_matrix(2, 3) = 1.0f - (elementIndex + 1) * scale;
- m_current_model_view_matrix = gn->matrix() ? *gn->matrix() : QMatrix4x4();
- m_current_determinant = m_current_model_view_matrix.determinant();
- m_current_opacity = gn->inheritedOpacity();
-
- const QSGGeometry *g = gn->geometry();
- QSGD3D12Material *m = static_cast<QSGD3D12Material *>(gn->activeMaterial());
-
- if (m->type() != m_lastMaterialType) {
- m_pipelineState = m_freshPipelineState;
- m->preparePipeline(&m_pipelineState);
- }
-
- QSGD3D12MaterialRenderState::DirtyStates dirtyState = m_nodeDirtyMap.value(e.node);
-
- // After a rebuild everything in the cbuffer has to be updated.
- if (!e.cboPrepared) {
- e.cboPrepared = true;
- dirtyState = QSGD3D12MaterialRenderState::DirtyAll;
- }
-
- // DirtyMatrix does not include projection matrix changes that can arise
- // due to changing the render target's size (and there is no rebuild).
- // Accommodate for this.
- if (m_projectionChangedDueToDeviceSize)
- dirtyState |= QSGD3D12MaterialRenderState::DirtyMatrix;
-
- quint8 *cboPtr = nullptr;
- if (e.cboSize > 0)
- cboPtr = m_cboData.data() + e.cboOffset;
-
- if (Q_UNLIKELY(debug_render()))
- qDebug() << "dirty state for" << e.node << "is" << dirtyState;
-
- QSGD3D12Material::ExtraState extraState;
- QSGD3D12Material::UpdateResults updRes = m->updatePipeline(state(dirtyState),
- &m_pipelineState,
- &extraState,
- cboPtr);
-
- if (updRes.testFlag(QSGD3D12Material::UpdatedConstantBuffer))
- m_engine->markBufferDirty(m_constantBuf, e.cboOffset, e.cboSize);
-
- if (updRes.testFlag(QSGD3D12Material::UpdatedBlendFactor))
- m_engine->queueSetBlendFactor(extraState.blendFactor);
-
- setInputLayout(g, &m_pipelineState);
-
- m_lastMaterialType = m->type();
-
- setupClipping(gn->clipList(), elementIndex);
-
- // ### Lines and points with sizes other than 1 have to be implemented in some other way. Just ignore for now.
- if (g->drawingMode() == QSGGeometry::DrawLineStrip || g->drawingMode() == QSGGeometry::DrawLines) {
- if (g->lineWidth() != 1.0f)
- qWarning("QSGD3D12Renderer: Line widths other than 1 are not supported by this renderer");
- } else if (g->drawingMode() == QSGGeometry::DrawPoints) {
- if (g->lineWidth() != 1.0f)
- qWarning("QSGD3D12Renderer: Point sprites are not supported by this renderer");
- }
-
- m_engine->finalizePipeline(m_pipelineState);
-
- queueDrawCall(g, e);
-}
-
-void QSGD3D12Renderer::setInputLayout(const QSGGeometry *g, QSGD3D12PipelineState *pipelineState)
-{
- pipelineState->inputElementCount = g->attributeCount();
- const QSGGeometry::Attribute *attrs = g->attributes();
- quint32 offset = 0;
- for (int i = 0; i < g->attributeCount(); ++i) {
- QSGD3D12InputElement &ie(pipelineState->inputElements[i]);
- static const char *semanticNames[] = { "UNKNOWN", "POSITION", "COLOR", "TEXCOORD", "TEXCOORD", "TEXCOORD" };
- static const int semanticIndices[] = { 0, 0, 0, 0, 1, 2 };
- const int semantic = attrs[i].attributeType;
- Q_ASSERT(semantic >= 1 && semantic < _countof(semanticNames));
- const int tupleSize = attrs[i].tupleSize;
- ie.semanticName = semanticNames[semantic];
- ie.semanticIndex = semanticIndices[semantic];
- ie.offset = offset;
- int bytesPerTuple = 0;
- ie.format = QSGD3D12Engine::toDXGIFormat(QSGGeometry::Type(attrs[i].type), tupleSize, &bytesPerTuple);
- if (ie.format == FmtUnknown)
- qFatal("QSGD3D12Renderer: unsupported tuple size for attribute type 0x%x", attrs[i].type);
- offset += bytesPerTuple;
- // There is one buffer with interleaved data so the slot is always 0.
- ie.slot = 0;
- }
-}
-
-void QSGD3D12Renderer::queueDrawCall(const QSGGeometry *g, const QSGD3D12Renderer::Element &e)
-{
- QSGD3D12Engine::DrawParams dp;
- dp.mode = QSGGeometry::DrawingMode(g->drawingMode());
- dp.vertexBuf = m_vertexBuf;
- dp.constantBuf = m_constantBuf;
- dp.vboOffset = e.vboOffset;
- dp.vboSize = g->vertexCount() * g->sizeOfVertex();
- dp.vboStride = g->sizeOfVertex();
- dp.cboOffset = e.cboOffset;
-
- if (e.iboOffset >= 0) {
- const QSGGeometry::Type indexType = QSGGeometry::Type(g->indexType());
- const QSGD3D12Format indexFormat = QSGD3D12Engine::toDXGIFormat(indexType);
- if (indexFormat == FmtUnknown)
- qFatal("QSGD3D12Renderer: unsupported index type 0x%x", indexType);
- dp.count = g->indexCount();
- dp.indexBuf = m_indexBuf;
- dp.startIndexIndex = e.iboOffset / e.iboStride;
- dp.indexFormat = indexFormat;
- } else {
- dp.count = g->vertexCount();
- }
-
- m_engine->queueDraw(dp);
-}
-
-void QSGD3D12Renderer::setupClipping(const QSGClipNode *clip, int elementIndex)
-{
- const QRect devRect = deviceRect();
- QRect scissorRect;
- int clipTypes = 0;
- quint32 stencilValue = 0;
-
- while (clip) {
- QMatrix4x4 m = projectionMatrix();
- if (clip->matrix())
- m *= *clip->matrix();
-
-#ifndef I_LIKE_STENCIL
- const bool isRectangleWithNoPerspective = clip->isRectangular()
- && qFuzzyIsNull(m(3, 0)) && qFuzzyIsNull(m(3, 1));
- const bool noRotate = qFuzzyIsNull(m(0, 1)) && qFuzzyIsNull(m(1, 0));
- const bool isRotate90 = qFuzzyIsNull(m(0, 0)) && qFuzzyIsNull(m(1, 1));
-
- if (isRectangleWithNoPerspective && (noRotate || isRotate90)) {
- QRectF bbox = clip->clipRect();
- float invW = 1.0f / m(3, 3);
- float fx1, fy1, fx2, fy2;
- if (noRotate) {
- fx1 = (bbox.left() * m(0, 0) + m(0, 3)) * invW;
- fy1 = (bbox.bottom() * m(1, 1) + m(1, 3)) * invW;
- fx2 = (bbox.right() * m(0, 0) + m(0, 3)) * invW;
- fy2 = (bbox.top() * m(1, 1) + m(1, 3)) * invW;
- } else {
- Q_ASSERT(isRotate90);
- fx1 = (bbox.bottom() * m(0, 1) + m(0, 3)) * invW;
- fy1 = (bbox.left() * m(1, 0) + m(1, 3)) * invW;
- fx2 = (bbox.top() * m(0, 1) + m(0, 3)) * invW;
- fy2 = (bbox.right() * m(1, 0) + m(1, 3)) * invW;
- }
-
- if (fx1 > fx2)
- qSwap(fx1, fx2);
- if (fy1 > fy2)
- qSwap(fy1, fy2);
-
- int ix1 = qRound((fx1 + 1) * devRect.width() * 0.5f);
- int iy1 = qRound((fy1 + 1) * devRect.height() * 0.5f);
- int ix2 = qRound((fx2 + 1) * devRect.width() * 0.5f);
- int iy2 = qRound((fy2 + 1) * devRect.height() * 0.5f);
-
- if (!(clipTypes & ClipScissor)) {
- scissorRect = QRect(ix1, devRect.height() - iy2, ix2 - ix1, iy2 - iy1);
- clipTypes |= ClipScissor;
- } else {
- scissorRect &= QRect(ix1, devRect.height() - iy2, ix2 - ix1, iy2 - iy1);
- }
- } else
-#endif
- {
- clipTypes |= ClipStencil;
- renderStencilClip(clip, elementIndex, m, stencilValue);
- }
-
- clip = clip->clipList();
- }
-
- setScissor((clipTypes & ClipScissor) ? scissorRect : viewportRect());
-
- if (clipTypes & ClipStencil) {
- m_pipelineState.stencilEnable = true;
- m_engine->queueSetStencilRef(stencilValue);
- m_currentStencilValue = stencilValue;
- } else {
- m_pipelineState.stencilEnable = false;
- m_currentStencilValue = 0;
- }
-
- m_currentClipTypes = clipTypes;
-}
-
-void QSGD3D12Renderer::setScissor(const QRect &r)
-{
- if (m_activeScissorRect == r)
- return;
-
- m_activeScissorRect = r;
- m_engine->queueScissor(r);
-}
-
-void QSGD3D12Renderer::renderStencilClip(const QSGClipNode *clip, int elementIndex,
- const QMatrix4x4 &m, quint32 &stencilValue)
-{
- QSGD3D12PipelineState sps;
- sps.shaders.vs = g_VS_StencilClip;
- sps.shaders.vsSize = sizeof(g_VS_StencilClip);
- sps.shaders.ps = g_PS_StencilClip;
- sps.shaders.psSize = sizeof(g_PS_StencilClip);
-
- m_engine->queueClearDepthStencil(1, 0, QSGD3D12Engine::ClearStencil);
- sps.stencilEnable = true;
- sps.colorWrite = false;
- sps.depthWrite = false;
-
- sps.stencilFunc = QSGD3D12PipelineState::CompareEqual;
- sps.stencilFailOp = QSGD3D12PipelineState::StencilKeep;
- sps.stencilDepthFailOp = QSGD3D12PipelineState::StencilKeep;
- sps.stencilPassOp = QSGD3D12PipelineState::StencilIncr;
-
- m_engine->queueSetStencilRef(stencilValue);
-
- int clipIndex = elementIndex;
- while (m_renderList.at(--clipIndex).node != clip) {
- Q_ASSERT(clipIndex >= 0);
- }
- const Element &ce = m_renderList.at(clipIndex);
- Q_ASSERT(ce.node == clip);
-
- const QSGGeometry *g = clip->geometry();
- Q_ASSERT(g->attributeCount() == 1);
- Q_ASSERT(g->attributes()[0].tupleSize == 2);
- Q_ASSERT(g->attributes()[0].type == QSGGeometry::FloatType);
-
- setInputLayout(g, &sps);
- m_engine->finalizePipeline(sps);
-
- Q_ASSERT(ce.cboSize > 0);
- quint8 *p = m_cboData.data() + ce.cboOffset;
- memcpy(p, m.constData(), 16 * sizeof(float));
- m_engine->markBufferDirty(m_constantBuf, ce.cboOffset, ce.cboSize);
-
- queueDrawCall(g, ce);
-
- ++stencilValue;
-}
-
-void QSGD3D12Renderer::renderRenderNode(QSGRenderNode *node, int elementIndex)
-{
- QSGRenderNodePrivate *rd = QSGRenderNodePrivate::get(node);
- RenderNodeState state;
-
- setupClipping(rd->m_clip_list, elementIndex);
-
- QMatrix4x4 pm = projectionMatrix();
- state.m_projectionMatrix = &pm;
- state.m_scissorEnabled = m_currentClipTypes & ClipScissor;
- state.m_stencilEnabled = m_currentClipTypes & ClipStencil;
- state.m_scissorRect = m_activeScissorRect;
- state.m_stencilValue = m_currentStencilValue;
-
- // ### rendernodes do not have the QSGBasicGeometryNode infrastructure
- // for storing combined matrices, opacity and such, but perhaps they should.
- QSGNode *xform = node->parent();
- QSGNode *root = rootNode();
- QMatrix4x4 modelview;
- while (xform != root) {
- if (xform->type() == QSGNode::TransformNodeType) {
- modelview *= static_cast<QSGTransformNode *>(xform)->combinedMatrix();
- break;
- }
- xform = xform->parent();
- }
- rd->m_matrix = &modelview;
-
- QSGNode *opacity = node->parent();
- rd->m_opacity = 1.0;
- while (opacity != rootNode()) {
- if (opacity->type() == QSGNode::OpacityNodeType) {
- rd->m_opacity = static_cast<QSGOpacityNode *>(opacity)->combinedOpacity();
- break;
- }
- opacity = opacity->parent();
- }
-
- node->render(&state);
-
- m_engine->invalidateCachedFrameState();
- // For simplicity, reset viewport, scissor, blend factor, stencil ref when
- // any of them got changed. This will likely be rare so skip these otherwise.
- // Render target, pipeline state, draw call related stuff will be reset always.
- const bool restoreMinimal = node->changedStates() == 0;
- m_engine->restoreFrameState(restoreMinimal);
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12renderer_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12renderer_p.h
deleted file mode 100644
index df30a49f0d..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12renderer_p.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12RENDERER_P_H
-#define QSGD3D12RENDERER_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <private/qsgrenderer_p.h>
-#include <QtGui/private/qdatabuffer_p.h>
-#include <QtCore/qbitarray.h>
-#include "qsgd3d12engine_p.h"
-#include "qsgd3d12material_p.h"
-
-QT_BEGIN_NAMESPACE
-
-class QSGRenderNode;
-
-class QSGD3D12Renderer : public QSGRenderer
-{
-public:
- QSGD3D12Renderer(QSGRenderContext *context);
- ~QSGD3D12Renderer();
-
- void renderScene(GLuint fboId) override;
- void render() override;
- void nodeChanged(QSGNode *node, QSGNode::DirtyState state) override;
-
- void turnToLayerRenderer() { m_layerRenderer = true; }
-
-private:
- void updateMatrices(QSGNode *node, QSGTransformNode *xform);
- void updateOpacities(QSGNode *node, float inheritedOpacity);
- void buildRenderList(QSGNode *node, QSGClipNode *clip);
- void renderElements();
- void renderElement(int elementIndex);
- void setInputLayout(const QSGGeometry *g, QSGD3D12PipelineState *pipelineState);
- void setupClipping(const QSGClipNode *clip, int elementIndex);
- void setScissor(const QRect &r);
- void renderStencilClip(const QSGClipNode *clip, int elementIndex, const QMatrix4x4 &m, quint32 &stencilValue);
- void renderRenderNode(QSGRenderNode *node, int elementIndex);
-
- struct Element {
- QSGNode *node = nullptr;
- qint32 vboOffset = -1;
- qint32 iboOffset = -1;
- quint32 iboStride = 0;
- qint32 cboOffset = -1;
- quint32 cboSize = 0;
- bool cboPrepared = false;
- };
-
- void queueDrawCall(const QSGGeometry *g, const Element &e);
-
- bool m_layerRenderer = false;
- QSet<QSGNode *> m_dirtyTransformNodes;
- QSet<QSGNode *> m_dirtyOpacityNodes;
- QBitArray m_opaqueElements;
- bool m_rebuild = true;
- bool m_dirtyOpaqueElements = true;
- QDataBuffer<quint8> m_vboData;
- QDataBuffer<quint8> m_iboData;
- QDataBuffer<quint8> m_cboData;
- QDataBuffer<Element> m_renderList;
- uint m_vertexBuf = 0;
- uint m_indexBuf = 0;
- uint m_constantBuf = 0;
- QSGD3D12Engine *m_engine = nullptr;
-
- QSGMaterialType *m_lastMaterialType = nullptr;
- QSGD3D12PipelineState m_pipelineState;
- QSGD3D12PipelineState m_freshPipelineState;
-
- typedef QHash<QSGNode *, QSGD3D12MaterialRenderState::DirtyStates> NodeDirtyMap;
- NodeDirtyMap m_nodeDirtyMap;
-
- QRect m_activeScissorRect;
- QRect m_lastDeviceRect;
- bool m_projectionChangedDueToDeviceSize;
-
- uint m_renderTarget = 0;
- quint32 m_currentStencilValue;
- enum ClipType {
- ClipScissor = 0x1,
- ClipStencil = 0x2
- };
- int m_currentClipTypes;
-};
-
-QT_END_NAMESPACE
-
-#endif // QSGD3D12RENDERER_P_H
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12renderloop.cpp b/src/plugins/scenegraph/d3d12/qsgd3d12renderloop.cpp
deleted file mode 100644
index 4a6894e69e..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12renderloop.cpp
+++ /dev/null
@@ -1,536 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgd3d12renderloop_p.h"
-#include "qsgd3d12engine_p.h"
-#include "qsgd3d12context_p.h"
-#include "qsgd3d12rendercontext_p.h"
-#include "qsgd3d12shadereffectnode_p.h"
-#include <private/qquickwindow_p.h>
-#include <private/qquickprofiler_p.h>
-#include <private/qquickanimatorcontroller_p.h>
-#include <QElapsedTimer>
-#include <QGuiApplication>
-#include <QScreen>
-
-QT_BEGIN_NAMESPACE
-
-// NOTE: Avoid categorized logging. It is slow.
-
-#define DECLARE_DEBUG_VAR(variable) \
- static bool debug_ ## variable() \
- { static bool value = qgetenv("QSG_RENDERER_DEBUG").contains(QT_STRINGIFY(variable)); return value; }
-
-DECLARE_DEBUG_VAR(loop)
-DECLARE_DEBUG_VAR(time)
-
-
-// This render loop operates on the gui (main) thread.
-// Conceptually it matches the OpenGL 'windows' render loop.
-
-static inline int qsgrl_animation_interval()
-{
- const qreal refreshRate = QGuiApplication::primaryScreen() ? QGuiApplication::primaryScreen()->refreshRate() : 0;
- return refreshRate < 1 ? 16 : int(1000 / refreshRate);
-}
-
-QSGD3D12RenderLoop::QSGD3D12RenderLoop()
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug("new d3d12 render loop");
-
- sg = new QSGD3D12Context;
-
- m_anims = sg->createAnimationDriver(this);
- connect(m_anims, &QAnimationDriver::started, this, &QSGD3D12RenderLoop::onAnimationStarted);
- connect(m_anims, &QAnimationDriver::stopped, this, &QSGD3D12RenderLoop::onAnimationStopped);
- m_anims->install();
-
- m_vsyncDelta = qsgrl_animation_interval();
-}
-
-QSGD3D12RenderLoop::~QSGD3D12RenderLoop()
-{
- delete sg;
-}
-
-void QSGD3D12RenderLoop::show(QQuickWindow *window)
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "show" << window;
-}
-
-void QSGD3D12RenderLoop::hide(QQuickWindow *window)
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "hide" << window;
-}
-
-void QSGD3D12RenderLoop::resize(QQuickWindow *window)
-{
- if (!m_windows.contains(window) || window->size().isEmpty())
- return;
-
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "resize" << window;
-
- const WindowData &data(m_windows[window]);
-
- if (!data.exposed)
- return;
-
- if (data.engine)
- data.engine->setWindowSize(window->size(), window->effectiveDevicePixelRatio());
-}
-
-void QSGD3D12RenderLoop::windowDestroyed(QQuickWindow *window)
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "window destroyed" << window;
-
- if (!m_windows.contains(window))
- return;
-
- QQuickWindowPrivate *wd = QQuickWindowPrivate::get(window);
- wd->fireAboutToStop();
-
- WindowData &data(m_windows[window]);
- QSGD3D12Engine *engine = data.engine;
- QSGD3D12RenderContext *rc = data.rc;
- m_windows.remove(window);
-
- // QSGNode destruction may release graphics resources in use so wait first.
- engine->waitGPU();
-
- // Bye bye nodes...
- wd->cleanupNodesOnShutdown();
-
- QSGD3D12ShaderEffectNode::cleanupMaterialTypeCache();
-
- rc->invalidate();
-
- delete rc;
- delete engine;
-
- wd->animationController.reset();
-}
-
-void QSGD3D12RenderLoop::exposeWindow(QQuickWindow *window)
-{
- WindowData data;
- data.exposed = true;
- data.engine = new QSGD3D12Engine;
- data.rc = static_cast<QSGD3D12RenderContext *>(QQuickWindowPrivate::get(window)->context);
- data.rc->setEngine(data.engine);
- m_windows[window] = data;
-
- const int samples = window->format().samples();
- const bool alpha = window->format().alphaBufferSize() > 0;
- const qreal dpr = window->effectiveDevicePixelRatio();
-
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "initializing D3D12 engine" << window << window->size() << dpr << samples << alpha;
-
- data.engine->attachToWindow(window->winId(), window->size(), dpr, samples, alpha);
-}
-
-void QSGD3D12RenderLoop::obscureWindow(QQuickWindow *window)
-{
- m_windows[window].exposed = false;
- QQuickWindowPrivate *wd = QQuickWindowPrivate::get(window);
- wd->fireAboutToStop();
-}
-
-void QSGD3D12RenderLoop::exposureChanged(QQuickWindow *window)
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "exposure changed" << window << window->isExposed();
-
- if (window->isExposed()) {
- if (!m_windows.contains(window))
- exposeWindow(window);
-
- // Stop non-visual animation timer as we now have a window rendering.
- if (m_animationTimer && somethingVisible()) {
- killTimer(m_animationTimer);
- m_animationTimer = 0;
- }
- // If we have a pending timer and we get an expose, we need to stop it.
- // Otherwise we get two frames and two animation ticks in the same time interval.
- if (m_updateTimer) {
- killTimer(m_updateTimer);
- m_updateTimer = 0;
- }
-
- WindowData &data(m_windows[window]);
- data.exposed = true;
- data.updatePending = true;
-
- render();
-
- } else if (m_windows.contains(window)) {
- obscureWindow(window);
-
- // Potentially start the non-visual animation timer if nobody is rendering.
- if (m_anims->isRunning() && !somethingVisible() && !m_animationTimer)
- m_animationTimer = startTimer(m_vsyncDelta);
- }
-}
-
-QImage QSGD3D12RenderLoop::grab(QQuickWindow *window)
-{
- const bool tempExpose = !m_windows.contains(window);
- if (tempExpose)
- exposeWindow(window);
-
- m_windows[window].grabOnly = true;
-
- renderWindow(window);
-
- QImage grabbed = m_grabContent;
- m_grabContent = QImage();
-
- if (tempExpose)
- obscureWindow(window);
-
- return grabbed;
-}
-
-bool QSGD3D12RenderLoop::somethingVisible() const
-{
- for (auto it = m_windows.constBegin(), itEnd = m_windows.constEnd(); it != itEnd; ++it) {
- if (it.key()->isVisible() && it.key()->isExposed())
- return true;
- }
- return false;
-}
-
-void QSGD3D12RenderLoop::maybePostUpdateTimer()
-{
- if (!m_updateTimer) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("starting update timer");
- m_updateTimer = startTimer(m_vsyncDelta / 3);
- }
-}
-
-void QSGD3D12RenderLoop::update(QQuickWindow *window)
-{
- maybeUpdate(window);
-}
-
-void QSGD3D12RenderLoop::maybeUpdate(QQuickWindow *window)
-{
- if (!m_windows.contains(window) || !somethingVisible())
- return;
-
- m_windows[window].updatePending = true;
- maybePostUpdateTimer();
-}
-
-QAnimationDriver *QSGD3D12RenderLoop::animationDriver() const
-{
- return m_anims;
-}
-
-QSGContext *QSGD3D12RenderLoop::sceneGraphContext() const
-{
- return sg;
-}
-
-QSGRenderContext *QSGD3D12RenderLoop::createRenderContext(QSGContext *) const
-{
- // The rendercontext and engine are per-window, like with the threaded
- // loop, but unlike the non-threaded OpenGL variants.
- return sg->createRenderContext();
-}
-
-void QSGD3D12RenderLoop::releaseResources(QQuickWindow *window)
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "releaseResources" << window;
-}
-
-void QSGD3D12RenderLoop::postJob(QQuickWindow *window, QRunnable *job)
-{
- Q_UNUSED(window);
- Q_ASSERT(job);
- Q_ASSERT(window);
- job->run();
- delete job;
-}
-
-QSurface::SurfaceType QSGD3D12RenderLoop::windowSurfaceType() const
-{
- return QSurface::OpenGLSurface;
-}
-
-bool QSGD3D12RenderLoop::interleaveIncubation() const
-{
- return m_anims->isRunning() && somethingVisible();
-}
-
-void QSGD3D12RenderLoop::onAnimationStarted()
-{
- if (!somethingVisible()) {
- if (!m_animationTimer) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("starting non-visual animation timer");
- m_animationTimer = startTimer(m_vsyncDelta);
- }
- } else {
- maybePostUpdateTimer();
- }
-}
-
-void QSGD3D12RenderLoop::onAnimationStopped()
-{
- if (m_animationTimer) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("stopping non-visual animation timer");
- killTimer(m_animationTimer);
- m_animationTimer = 0;
- }
-}
-
-bool QSGD3D12RenderLoop::event(QEvent *event)
-{
- switch (event->type()) {
- case QEvent::Timer:
- {
- QTimerEvent *te = static_cast<QTimerEvent *>(event);
- if (te->timerId() == m_animationTimer) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("animation tick while no windows exposed");
- m_anims->advance();
- } else if (te->timerId() == m_updateTimer) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("update timeout - rendering");
- killTimer(m_updateTimer);
- m_updateTimer = 0;
- render();
- }
- return true;
- }
- default:
- break;
- }
-
- return QObject::event(event);
-}
-
-void QSGD3D12RenderLoop::render()
-{
- bool rendered = false;
- for (auto it = m_windows.begin(), itEnd = m_windows.end(); it != itEnd; ++it) {
- if (it->updatePending) {
- it->updatePending = false;
- renderWindow(it.key());
- rendered = true;
- }
- }
-
- if (!rendered) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("render - no changes, sleep");
- QThread::msleep(m_vsyncDelta);
- }
-
- if (m_anims->isRunning()) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("render - advancing animations");
-
- m_anims->advance();
-
- // It is not given that animations triggered another maybeUpdate()
- // and thus another render pass, so to keep things running,
- // make sure there is another frame pending.
- maybePostUpdateTimer();
-
- emit timeToIncubate();
- }
-}
-
-void QSGD3D12RenderLoop::renderWindow(QQuickWindow *window)
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "renderWindow" << window;
-
- QQuickWindowPrivate *wd = QQuickWindowPrivate::get(window);
- if (!m_windows.contains(window) || !window->geometry().isValid())
- return;
-
- WindowData &data(m_windows[window]);
- if (!data.exposed) { // not the same as window->isExposed(), when grabbing invisible windows for instance
- if (Q_UNLIKELY(debug_loop()))
- qDebug("renderWindow - not exposed, abort");
- return;
- }
-
- if (!data.grabOnly)
- wd->flushFrameSynchronousEvents();
-
- QElapsedTimer renderTimer;
- qint64 renderTime = 0, syncTime = 0, polishTime = 0;
- const bool profileFrames = debug_time();
- if (profileFrames)
- renderTimer.start();
- Q_QUICK_SG_PROFILE_START(QQuickProfiler::SceneGraphPolishFrame);
-
- wd->polishItems();
-
- if (profileFrames)
- polishTime = renderTimer.nsecsElapsed();
- Q_QUICK_SG_PROFILE_SWITCH(QQuickProfiler::SceneGraphPolishFrame,
- QQuickProfiler::SceneGraphRenderLoopFrame,
- QQuickProfiler::SceneGraphPolishPolish);
-
- emit window->afterAnimating();
-
- // The native window may change in some (quite artificial) cases, e.g. due
- // to a hide - destroy - show on the QWindow.
- bool needsWindow = !data.engine->window();
- if (data.engine->window() && data.engine->window() != window->winId()) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("sync - native window handle changes for active engine");
- data.engine->waitGPU();
- wd->cleanupNodesOnShutdown();
- QSGD3D12ShaderEffectNode::cleanupMaterialTypeCache();
- data.rc->invalidate();
- data.engine->releaseResources();
- needsWindow = true;
- }
- if (needsWindow) {
- // Must only ever get here when there is no window or releaseResources() has been called.
- const int samples = window->format().samples();
- const bool alpha = window->format().alphaBufferSize() > 0;
- const qreal dpr = window->effectiveDevicePixelRatio();
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "sync - reinitializing D3D12 engine" << window << window->size() << dpr << samples << alpha;
- data.engine->attachToWindow(window->winId(), window->size(), dpr, samples, alpha);
- }
-
- // Recover from device loss.
- if (!data.engine->hasResources()) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("sync - device was lost, resetting scenegraph");
- wd->cleanupNodesOnShutdown();
- QSGD3D12ShaderEffectNode::cleanupMaterialTypeCache();
- data.rc->invalidate();
- }
-
- data.rc->initialize(nullptr);
-
- wd->syncSceneGraph();
- data.rc->endSync();
-
- if (profileFrames)
- syncTime = renderTimer.nsecsElapsed();
- Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRenderLoopFrame,
- QQuickProfiler::SceneGraphRenderLoopSync);
-
- wd->renderSceneGraph(window->size());
-
- if (profileFrames)
- renderTime = renderTimer.nsecsElapsed();
- Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRenderLoopFrame,
- QQuickProfiler::SceneGraphRenderLoopRender);
-
- if (!data.grabOnly) {
- // The engine is able to have multiple frames in flight. This in effect is
- // similar to BufferQueueingOpenGL. Provide an env var to force the
- // traditional blocking swap behavior, just in case.
- static bool blockOnEachFrame = qEnvironmentVariableIntValue("QT_D3D_BLOCKING_PRESENT") != 0;
-
- if (window->isVisible()) {
- data.engine->present();
- if (blockOnEachFrame)
- data.engine->waitGPU();
- // The concept of "frame swaps" is quite misleading by default, when
- // blockOnEachFrame is not used, but emit it for compatibility.
- wd->fireFrameSwapped();
- } else {
- if (blockOnEachFrame)
- data.engine->waitGPU();
- }
- } else {
- m_grabContent = data.engine->executeAndWaitReadbackRenderTarget();
- data.grabOnly = false;
- }
-
- qint64 swapTime = 0;
- if (profileFrames)
- swapTime = renderTimer.nsecsElapsed();
- Q_QUICK_SG_PROFILE_END(QQuickProfiler::SceneGraphRenderLoopFrame,
- QQuickProfiler::SceneGraphRenderLoopSwap);
-
- if (Q_UNLIKELY(debug_time())) {
- static QTime lastFrameTime = QTime::currentTime();
- qDebug("Frame rendered with 'd3d12' renderloop in %dms, polish=%d, sync=%d, render=%d, swap=%d, frameDelta=%d",
- int(swapTime / 1000000),
- int(polishTime / 1000000),
- int((syncTime - polishTime) / 1000000),
- int((renderTime - syncTime) / 1000000),
- int((swapTime - renderTime) / 10000000),
- int(lastFrameTime.msecsTo(QTime::currentTime())));
- lastFrameTime = QTime::currentTime();
- }
-
- // Simulate device loss if requested.
- static int devLossTest = qEnvironmentVariableIntValue("QT_D3D_TEST_DEVICE_LOSS");
- if (devLossTest > 0) {
- static QElapsedTimer kt;
- static bool timerRunning = false;
- if (!timerRunning) {
- kt.start();
- timerRunning = true;
- } else if (kt.elapsed() > 5000) {
- --devLossTest;
- kt.restart();
- data.engine->simulateDeviceLoss();
- }
- }
-}
-
-int QSGD3D12RenderLoop::flags() const
-{
- return SupportsGrabWithoutExpose;
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12renderloop_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12renderloop_p.h
deleted file mode 100644
index c0333ffad0..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12renderloop_p.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12RENDERLOOP_P_H
-#define QSGD3D12RENDERLOOP_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <private/qsgrenderloop_p.h>
-
-QT_BEGIN_NAMESPACE
-
-class QSGD3D12Engine;
-class QSGD3D12Context;
-class QSGD3D12RenderContext;
-
-class QSGD3D12RenderLoop : public QSGRenderLoop
-{
- Q_OBJECT
-
-public:
- QSGD3D12RenderLoop();
- ~QSGD3D12RenderLoop();
-
- void show(QQuickWindow *window) override;
- void hide(QQuickWindow *window) override;
- void resize(QQuickWindow *window) override;
-
- void windowDestroyed(QQuickWindow *window) override;
-
- void exposureChanged(QQuickWindow *window) override;
-
- QImage grab(QQuickWindow *window) override;
-
- void update(QQuickWindow *window) override;
- void maybeUpdate(QQuickWindow *window) override;
-
- QAnimationDriver *animationDriver() const override;
-
- QSGContext *sceneGraphContext() const override;
- QSGRenderContext *createRenderContext(QSGContext *) const override;
-
- void releaseResources(QQuickWindow *window) override;
- void postJob(QQuickWindow *window, QRunnable *job) override;
-
- QSurface::SurfaceType windowSurfaceType() const override;
- bool interleaveIncubation() const override;
- int flags() const override;
-
- bool event(QEvent *event) override;
-
-public Q_SLOTS:
- void onAnimationStarted();
- void onAnimationStopped();
-
-private:
- void exposeWindow(QQuickWindow *window);
- void obscureWindow(QQuickWindow *window);
- void renderWindow(QQuickWindow *window);
- void render();
- void maybePostUpdateTimer();
- bool somethingVisible() const;
-
- QSGD3D12Context *sg;
- QAnimationDriver *m_anims;
- int m_vsyncDelta;
- int m_updateTimer = 0;
- int m_animationTimer = 0;
-
- struct WindowData {
- QSGD3D12RenderContext *rc = nullptr;
- QSGD3D12Engine *engine = nullptr;
- bool updatePending = false;
- bool grabOnly = false;
- bool exposed = false;
- };
-
- QHash<QQuickWindow *, WindowData> m_windows;
-
- QImage m_grabContent;
-};
-
-QT_END_NAMESPACE
-
-#endif // QSGD3D12RENDERLOOP_P_H
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12shadereffectnode.cpp b/src/plugins/scenegraph/d3d12/qsgd3d12shadereffectnode.cpp
deleted file mode 100644
index 1f574a9802..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12shadereffectnode.cpp
+++ /dev/null
@@ -1,995 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgd3d12shadereffectnode_p.h"
-#include "qsgd3d12rendercontext_p.h"
-#include "qsgd3d12texture_p.h"
-#include "qsgd3d12engine_p.h"
-#include <QtCore/qthreadpool.h>
-#include <QtCore/qfile.h>
-#include <QtCore/qfileselector.h>
-#include <QtQml/qqmlfile.h>
-#include <qsgtextureprovider.h>
-
-#include <d3d12shader.h>
-#include <d3dcompiler.h>
-
-#include "vs_shadereffectdefault.hlslh"
-#include "ps_shadereffectdefault.hlslh"
-
-QT_BEGIN_NAMESPACE
-
-// NOTE: Avoid categorized logging. It is slow.
-
-#define DECLARE_DEBUG_VAR(variable) \
- static bool debug_ ## variable() \
- { static bool value = qgetenv("QSG_RENDERER_DEBUG").contains(QT_STRINGIFY(variable)); return value; }
-
-DECLARE_DEBUG_VAR(shader)
-
-void QSGD3D12ShaderLinker::reset(const QByteArray &vertBlob, const QByteArray &fragBlob)
-{
- Q_ASSERT(!vertBlob.isEmpty() && !fragBlob.isEmpty());
- vs = vertBlob;
- fs = fragBlob;
-
- error = false;
-
- constantBufferSize = 0;
- constants.clear();
- samplers.clear();
- textures.clear();
- textureNameMap.clear();
-}
-
-void QSGD3D12ShaderLinker::feedConstants(const QSGShaderEffectNode::ShaderData &shader, const QSet<int> *dirtyIndices)
-{
- Q_ASSERT(shader.shaderInfo.variables.count() == shader.varData.count());
- if (!dirtyIndices) {
- constantBufferSize = qMax(constantBufferSize, shader.shaderInfo.constantDataSize);
- for (int i = 0; i < shader.shaderInfo.variables.count(); ++i) {
- const auto &var(shader.shaderInfo.variables.at(i));
- if (var.type == QSGGuiThreadShaderEffectManager::ShaderInfo::Constant) {
- const auto &vd(shader.varData.at(i));
- Constant c;
- c.size = var.size;
- c.specialType = vd.specialType;
- if (c.specialType != QSGShaderEffectNode::VariableData::SubRect) {
- c.value = vd.value;
- } else {
- Q_ASSERT(var.name.startsWith(QByteArrayLiteral("qt_SubRect_")));
- c.value = var.name.mid(11);
- }
- constants[var.offset] = c;
- }
- }
- } else {
- for (int idx : *dirtyIndices)
- constants[shader.shaderInfo.variables.at(idx).offset].value = shader.varData.at(idx).value;
- }
-}
-
-void QSGD3D12ShaderLinker::feedSamplers(const QSGShaderEffectNode::ShaderData &shader)
-{
- for (int i = 0; i < shader.shaderInfo.variables.count(); ++i) {
- const auto &var(shader.shaderInfo.variables.at(i));
- if (var.type == QSGGuiThreadShaderEffectManager::ShaderInfo::Sampler) {
- Q_ASSERT(shader.varData.at(i).specialType == QSGShaderEffectNode::VariableData::Unused);
- samplers.insert(var.bindPoint);
- }
- }
-}
-
-void QSGD3D12ShaderLinker::feedTextures(const QSGShaderEffectNode::ShaderData &shader, const QSet<int> *dirtyIndices)
-{
- if (!dirtyIndices) {
- for (int i = 0; i < shader.shaderInfo.variables.count(); ++i) {
- const auto &var(shader.shaderInfo.variables.at(i));
- const auto &vd(shader.varData.at(i));
- if (var.type == QSGGuiThreadShaderEffectManager::ShaderInfo::Texture) {
- Q_ASSERT(vd.specialType == QSGShaderEffectNode::VariableData::Source);
- textures.insert(var.bindPoint, vd.value);
- textureNameMap.insert(var.name, var.bindPoint);
- }
- }
- } else {
- for (int idx : *dirtyIndices) {
- const auto &var(shader.shaderInfo.variables.at(idx));
- const auto &vd(shader.varData.at(idx));
- textures.insert(var.bindPoint, vd.value);
- textureNameMap.insert(var.name, var.bindPoint);
- }
- }
-}
-
-void QSGD3D12ShaderLinker::linkTextureSubRects()
-{
- // feedConstants stores <name> in Constant::value for subrect entries. Now
- // that both constants and textures are known, replace the name with the
- // texture bind point.
- for (Constant &c : constants) {
- if (c.specialType == QSGShaderEffectNode::VariableData::SubRect) {
- if (c.value.type() == QVariant::ByteArray) {
- const QByteArray name = c.value.toByteArray();
- if (!textureNameMap.contains(name))
- qWarning("ShaderEffect: qt_SubRect_%s refers to unknown source texture", qPrintable(name));
- c.value = textureNameMap[name];
- }
- }
- }
-}
-
-void QSGD3D12ShaderLinker::dump()
-{
- if (error) {
- qDebug() << "Failed to generate program data";
- return;
- }
- qDebug() << "Combined shader data" << vs.size() << fs.size() << "cbuffer size" << constantBufferSize;
- qDebug() << " - constants" << constants;
- qDebug() << " - samplers" << samplers;
- qDebug() << " - textures" << textures;
-}
-
-QDebug operator<<(QDebug debug, const QSGD3D12ShaderLinker::Constant &c)
-{
- QDebugStateSaver saver(debug);
- debug.space();
- debug << "size" << c.size;
- if (c.specialType != QSGShaderEffectNode::VariableData::None)
- debug << "special" << c.specialType;
- else
- debug << "value" << c.value;
- return debug;
-}
-
-QSGD3D12ShaderEffectMaterial::QSGD3D12ShaderEffectMaterial(QSGD3D12ShaderEffectNode *node)
- : node(node)
-{
- setFlag(Blending | RequiresFullMatrix, true); // may be changed in sync()
-}
-
-QSGD3D12ShaderEffectMaterial::~QSGD3D12ShaderEffectMaterial()
-{
- delete dummy;
-}
-
-struct QSGD3D12ShaderMaterialTypeCache
-{
- QSGMaterialType *get(const QByteArray &vs, const QByteArray &fs);
- void reset() { qDeleteAll(m_types); m_types.clear(); }
-
- struct Key {
- QByteArray blob[2];
- Key() { }
- Key(const QByteArray &vs, const QByteArray &fs) { blob[0] = vs; blob[1] = fs; }
- bool operator==(const Key &other) const {
- return blob[0] == other.blob[0] && blob[1] == other.blob[1];
- }
- };
- QHash<Key, QSGMaterialType *> m_types;
-};
-
-uint qHash(const QSGD3D12ShaderMaterialTypeCache::Key &key, uint seed = 0)
-{
- uint hash = seed;
- for (int i = 0; i < 2; ++i)
- hash = hash * 31337 + qHash(key.blob[i]);
- return hash;
-}
-
-QSGMaterialType *QSGD3D12ShaderMaterialTypeCache::get(const QByteArray &vs, const QByteArray &fs)
-{
- const Key k(vs, fs);
- if (m_types.contains(k))
- return m_types.value(k);
-
- QSGMaterialType *t = new QSGMaterialType;
- m_types.insert(k, t);
- return t;
-}
-
-Q_GLOBAL_STATIC(QSGD3D12ShaderMaterialTypeCache, shaderMaterialTypeCache)
-
-void QSGD3D12ShaderEffectNode::cleanupMaterialTypeCache()
-{
- shaderMaterialTypeCache()->reset();
-}
-
-QSGMaterialType *QSGD3D12ShaderEffectMaterial::type() const
-{
- return mtype;
-}
-
-static bool hasAtlasTexture(const QVector<QSGTextureProvider *> &textureProviders)
-{
- for (int i = 0; i < textureProviders.count(); ++i) {
- QSGTextureProvider *t = textureProviders.at(i);
- if (t && t->texture() && t->texture()->isAtlasTexture())
- return true;
- }
- return false;
-}
-
-int QSGD3D12ShaderEffectMaterial::compare(const QSGMaterial *other) const
-{
- Q_ASSERT(other && type() == other->type());
- const QSGD3D12ShaderEffectMaterial *o = static_cast<const QSGD3D12ShaderEffectMaterial *>(other);
-
- if (int diff = cullMode - o->cullMode)
- return diff;
-
- if (int diff = textureProviders.count() - o->textureProviders.count())
- return diff;
-
- if (linker.constants != o->linker.constants)
- return 1;
-
- if ((hasAtlasTexture(textureProviders) && !geometryUsesTextureSubRect)
- || (hasAtlasTexture(o->textureProviders) && !o->geometryUsesTextureSubRect))
- return 1;
-
- for (int i = 0; i < textureProviders.count(); ++i) {
- QSGTextureProvider *tp1 = textureProviders.at(i);
- QSGTextureProvider *tp2 = o->textureProviders.at(i);
- if (!tp1 || !tp2)
- return tp1 == tp2 ? 0 : 1;
- QSGTexture *t1 = tp1->texture();
- QSGTexture *t2 = tp2->texture();
- if (!t1 || !t2)
- return t1 == t2 ? 0 : 1;
- if (int diff = t1->textureId() - t2->textureId())
- return diff;
- }
-
- return 0;
-}
-
-int QSGD3D12ShaderEffectMaterial::constantBufferSize() const
-{
- return QSGD3D12Engine::alignedConstantBufferSize(linker.constantBufferSize);
-}
-
-void QSGD3D12ShaderEffectMaterial::preparePipeline(QSGD3D12PipelineState *pipelineState)
-{
- pipelineState->shaders.vs = reinterpret_cast<const quint8 *>(linker.vs.constData());
- pipelineState->shaders.vsSize = linker.vs.size();
- pipelineState->shaders.ps = reinterpret_cast<const quint8 *>(linker.fs.constData());
- pipelineState->shaders.psSize = linker.fs.size();
-
- pipelineState->shaders.rootSig.textureViewCount = textureProviders.count();
-}
-
-static inline QColor qsg_premultiply_color(const QColor &c)
-{
- return QColor::fromRgbF(c.redF() * c.alphaF(), c.greenF() * c.alphaF(), c.blueF() * c.alphaF(), c.alphaF());
-}
-
-QSGD3D12Material::UpdateResults QSGD3D12ShaderEffectMaterial::updatePipeline(const QSGD3D12MaterialRenderState &state,
- QSGD3D12PipelineState *pipelineState,
- ExtraState *,
- quint8 *constantBuffer)
-{
- QSGD3D12Material::UpdateResults r = 0;
- quint8 *p = constantBuffer;
-
- for (auto it = linker.constants.constBegin(), itEnd = linker.constants.constEnd(); it != itEnd; ++it) {
- quint8 *dst = p + it.key();
- const QSGD3D12ShaderLinker::Constant &c(it.value());
- if (c.specialType == QSGShaderEffectNode::VariableData::Opacity) {
- if (state.isOpacityDirty()) {
- const float f = state.opacity();
- Q_ASSERT(sizeof(f) == c.size);
- memcpy(dst, &f, sizeof(f));
- r |= UpdatedConstantBuffer;
- }
- } else if (c.specialType == QSGShaderEffectNode::VariableData::Matrix) {
- if (state.isMatrixDirty()) {
- const int sz = 16 * sizeof(float);
- Q_ASSERT(sz == c.size);
- memcpy(dst, state.combinedMatrix().constData(), sz);
- r |= UpdatedConstantBuffer;
- }
- } else if (c.specialType == QSGShaderEffectNode::VariableData::SubRect) {
- // float4
- QRectF subRect(0, 0, 1, 1);
- int srcBindPoint = c.value.toInt(); // filled in by linkTextureSubRects
- if (QSGTexture *t = textureProviders.at(srcBindPoint)->texture())
- subRect = t->normalizedTextureSubRect();
- const float f[4] = { float(subRect.x()), float(subRect.y()),
- float(subRect.width()), float(subRect.height()) };
- Q_ASSERT(sizeof(f) == c.size);
- memcpy(dst, f, sizeof(f));
- } else if (c.specialType == QSGShaderEffectNode::VariableData::None) {
- r |= UpdatedConstantBuffer;
- switch (c.value.type()) {
- case QMetaType::QColor: {
- const QColor v = qsg_premultiply_color(qvariant_cast<QColor>(c.value));
- const float f[4] = { float(v.redF()), float(v.greenF()), float(v.blueF()), float(v.alphaF()) };
- Q_ASSERT(sizeof(f) == c.size);
- memcpy(dst, f, sizeof(f));
- break;
- }
- case QMetaType::Float: {
- const float f = qvariant_cast<float>(c.value);
- Q_ASSERT(sizeof(f) == c.size);
- memcpy(dst, &f, sizeof(f));
- break;
- }
- case QMetaType::Double: {
- const float f = float(qvariant_cast<double>(c.value));
- Q_ASSERT(sizeof(f) == c.size);
- memcpy(dst, &f, sizeof(f));
- break;
- }
- case QMetaType::Int: {
- const int i = c.value.toInt();
- Q_ASSERT(sizeof(i) == c.size);
- memcpy(dst, &i, sizeof(i));
- break;
- }
- case QMetaType::Bool: {
- const bool b = c.value.toBool();
- Q_ASSERT(sizeof(b) == c.size);
- memcpy(dst, &b, sizeof(b));
- break;
- }
- case QMetaType::QTransform: { // float3x3
- const QTransform v = qvariant_cast<QTransform>(c.value);
- const float m[3][3] = {
- { float(v.m11()), float(v.m12()), float(v.m13()) },
- { float(v.m21()), float(v.m22()), float(v.m23()) },
- { float(v.m31()), float(v.m32()), float(v.m33()) }
- };
- Q_ASSERT(sizeof(m) == c.size);
- memcpy(dst, m[0], sizeof(m));
- break;
- }
- case QMetaType::QSize:
- case QMetaType::QSizeF: { // float2
- const QSizeF v = c.value.toSizeF();
- const float f[2] = { float(v.width()), float(v.height()) };
- Q_ASSERT(sizeof(f) == c.size);
- memcpy(dst, f, sizeof(f));
- break;
- }
- case QMetaType::QPoint:
- case QMetaType::QPointF: { // float2
- const QPointF v = c.value.toPointF();
- const float f[2] = { float(v.x()), float(v.y()) };
- Q_ASSERT(sizeof(f) == c.size);
- memcpy(dst, f, sizeof(f));
- break;
- }
- case QMetaType::QRect:
- case QMetaType::QRectF: { // float4
- const QRectF v = c.value.toRectF();
- const float f[4] = { float(v.x()), float(v.y()), float(v.width()), float(v.height()) };
- Q_ASSERT(sizeof(f) == c.size);
- memcpy(dst, f, sizeof(f));
- break;
- }
- case QMetaType::QVector2D: { // float2
- const QVector2D v = qvariant_cast<QVector2D>(c.value);
- const float f[2] = { float(v.x()), float(v.y()) };
- Q_ASSERT(sizeof(f) == c.size);
- memcpy(dst, f, sizeof(f));
- break;
- }
- case QMetaType::QVector3D: { // float3
- const QVector3D v = qvariant_cast<QVector3D>(c.value);
- const float f[3] = { float(v.x()), float(v.y()), float(v.z()) };
- Q_ASSERT(sizeof(f) == c.size);
- memcpy(dst, f, sizeof(f));
- break;
- }
- case QMetaType::QVector4D: { // float4
- const QVector4D v = qvariant_cast<QVector4D>(c.value);
- const float f[4] = { float(v.x()), float(v.y()), float(v.z()), float(v.w()) };
- Q_ASSERT(sizeof(f) == c.size);
- memcpy(dst, f, sizeof(f));
- break;
- }
- case QMetaType::QQuaternion: { // float4
- const QQuaternion v = qvariant_cast<QQuaternion>(c.value);
- const float f[4] = { float(v.x()), float(v.y()), float(v.z()), float(v.scalar()) };
- Q_ASSERT(sizeof(f) == c.size);
- memcpy(dst, f, sizeof(f));
- break;
- }
- case QMetaType::QMatrix4x4: { // float4x4
- const QMatrix4x4 v = qvariant_cast<QMatrix4x4>(c.value);
- const int sz = 16 * sizeof(float);
- Q_ASSERT(sz == c.size);
- memcpy(dst, v.constData(), sz);
- break;
- }
- default:
- break;
- }
- }
- }
-
- for (int i = 0; i < textureProviders.count(); ++i) {
- QSGTextureProvider *tp = textureProviders[i];
- QSGD3D12TextureView &tv(pipelineState->shaders.rootSig.textureViews[i]);
- if (tp) {
- if (QSGTexture *t = tp->texture()) {
- if (t->isAtlasTexture() && !geometryUsesTextureSubRect) {
- QSGTexture *newTexture = t->removedFromAtlas();
- if (newTexture)
- t = newTexture;
- }
- tv.filter = t->filtering() == QSGTexture::Linear
- ? QSGD3D12TextureView::FilterLinear : QSGD3D12TextureView::FilterNearest;
- tv.addressModeHoriz = t->horizontalWrapMode() == QSGTexture::ClampToEdge
- ? QSGD3D12TextureView::AddressClamp : QSGD3D12TextureView::AddressWrap;
- tv.addressModeVert = t->verticalWrapMode() == QSGTexture::ClampToEdge
- ? QSGD3D12TextureView::AddressClamp : QSGD3D12TextureView::AddressWrap;
- t->bind();
- continue;
- }
- }
- if (!dummy) {
- dummy = new QSGD3D12Texture(node->renderContext()->engine());
- QImage img(128, 128, QImage::Format_ARGB32_Premultiplied);
- img.fill(0);
- dummy->create(img, QSGRenderContext::CreateTexture_Alpha);
- }
- tv.filter = QSGD3D12TextureView::FilterNearest;
- tv.addressModeHoriz = QSGD3D12TextureView::AddressWrap;
- tv.addressModeVert = QSGD3D12TextureView::AddressWrap;
- dummy->bind();
- }
-
- switch (cullMode) {
- case QSGShaderEffectNode::FrontFaceCulling:
- pipelineState->cullMode = QSGD3D12PipelineState::CullFront;
- break;
- case QSGShaderEffectNode::BackFaceCulling:
- pipelineState->cullMode = QSGD3D12PipelineState::CullBack;
- break;
- default:
- pipelineState->cullMode = QSGD3D12PipelineState::CullNone;
- break;
- }
-
- return r;
-}
-
-void QSGD3D12ShaderEffectMaterial::updateTextureProviders(bool layoutChange)
-{
- if (layoutChange) {
- for (QSGTextureProvider *tp : textureProviders) {
- if (tp) {
- QObject::disconnect(tp, SIGNAL(textureChanged()), node,
- SLOT(handleTextureChange()));
- QObject::disconnect(tp, SIGNAL(destroyed(QObject*)), node,
- SLOT(handleTextureProviderDestroyed(QObject*)));
- }
- }
-
- textureProviders.fill(nullptr, linker.textures.count());
- }
-
- for (auto it = linker.textures.constBegin(), itEnd = linker.textures.constEnd(); it != itEnd; ++it) {
- const int bindPoint = it.key();
- // Now that the linker has merged the textures, we can switch over to a
- // simple vector indexed by the binding point for textureProviders.
- Q_ASSERT(bindPoint >= 0 && bindPoint < textureProviders.count());
- QQuickItem *source = qobject_cast<QQuickItem *>(qvariant_cast<QObject *>(it.value()));
- QSGTextureProvider *newProvider = source && source->isTextureProvider() ? source->textureProvider() : nullptr;
- QSGTextureProvider *&activeProvider(textureProviders[bindPoint]);
- if (newProvider != activeProvider) {
- if (activeProvider) {
- QObject::disconnect(activeProvider, SIGNAL(textureChanged()), node,
- SLOT(handleTextureChange()));
- QObject::disconnect(activeProvider, SIGNAL(destroyed(QObject*)), node,
- SLOT(handleTextureProviderDestroyed(QObject*)));
- }
- if (newProvider) {
- Q_ASSERT_X(newProvider->thread() == QThread::currentThread(),
- "QSGD3D12ShaderEffectMaterial::updateTextureProviders",
- "Texture provider must belong to the rendering thread");
- QObject::connect(newProvider, SIGNAL(textureChanged()), node, SLOT(handleTextureChange()));
- QObject::connect(newProvider, SIGNAL(destroyed(QObject*)), node,
- SLOT(handleTextureProviderDestroyed(QObject*)));
- } else {
- const char *typeName = source ? source->metaObject()->className() : it.value().typeName();
- qWarning("ShaderEffect: Texture t%d is not assigned a valid texture provider (%s).",
- bindPoint, typeName);
- }
- activeProvider = newProvider;
- }
- }
-}
-
-QSGD3D12ShaderEffectNode::QSGD3D12ShaderEffectNode(QSGD3D12RenderContext *rc, QSGD3D12GuiThreadShaderEffectManager *mgr)
- : QSGShaderEffectNode(mgr),
- m_rc(rc),
- m_mgr(mgr),
- m_material(this)
-{
- setFlag(UsePreprocess, true);
- setMaterial(&m_material);
-}
-
-QRectF QSGD3D12ShaderEffectNode::updateNormalizedTextureSubRect(bool supportsAtlasTextures)
-{
- QRectF srcRect(0, 0, 1, 1);
- bool geometryUsesTextureSubRect = false;
- if (supportsAtlasTextures && m_material.textureProviders.count() == 1) {
- QSGTextureProvider *provider = m_material.textureProviders.at(0);
- if (provider->texture()) {
- srcRect = provider->texture()->normalizedTextureSubRect();
- geometryUsesTextureSubRect = true;
- }
- }
-
- if (m_material.geometryUsesTextureSubRect != geometryUsesTextureSubRect) {
- m_material.geometryUsesTextureSubRect = geometryUsesTextureSubRect;
- markDirty(QSGNode::DirtyMaterial);
- }
-
- return srcRect;
-}
-
-void QSGD3D12ShaderEffectNode::syncMaterial(SyncData *syncData)
-{
- if (Q_UNLIKELY(debug_shader()))
- qDebug() << "shadereffect node sync" << syncData->dirty;
-
- if (bool(m_material.flags() & QSGMaterial::Blending) != syncData->blending) {
- m_material.setFlag(QSGMaterial::Blending, syncData->blending);
- markDirty(QSGNode::DirtyMaterial);
- }
-
- if (m_material.cullMode != syncData->cullMode) {
- m_material.cullMode = syncData->cullMode;
- markDirty(QSGNode::DirtyMaterial);
- }
-
- if (syncData->dirty & QSGShaderEffectNode::DirtyShaders) {
- QByteArray vertBlob, fragBlob;
-
- m_material.hasCustomVertexShader = syncData->vertex.shader->hasShaderCode;
- if (m_material.hasCustomVertexShader) {
- vertBlob = syncData->vertex.shader->shaderInfo.blob;
- } else {
- vertBlob = QByteArray::fromRawData(reinterpret_cast<const char *>(g_VS_DefaultShaderEffect),
- sizeof(g_VS_DefaultShaderEffect));
- }
-
- m_material.hasCustomFragmentShader = syncData->fragment.shader->hasShaderCode;
- if (m_material.hasCustomFragmentShader) {
- fragBlob = syncData->fragment.shader->shaderInfo.blob;
- } else {
- fragBlob = QByteArray::fromRawData(reinterpret_cast<const char *>(g_PS_DefaultShaderEffect),
- sizeof(g_PS_DefaultShaderEffect));
- }
-
- m_material.mtype = shaderMaterialTypeCache()->get(vertBlob, fragBlob);
- m_material.linker.reset(vertBlob, fragBlob);
-
- if (m_material.hasCustomVertexShader) {
- m_material.linker.feedConstants(*syncData->vertex.shader);
- } else {
- QSGShaderEffectNode::ShaderData defaultSD;
- defaultSD.shaderInfo.blob = vertBlob;
- defaultSD.shaderInfo.type = QSGGuiThreadShaderEffectManager::ShaderInfo::TypeVertex;
-
- // { float4x4 qt_Matrix; float qt_Opacity; } where only the matrix is used
- QSGGuiThreadShaderEffectManager::ShaderInfo::Variable v;
- v.name = QByteArrayLiteral("qt_Matrix");
- v.offset = 0;
- v.size = 16 * sizeof(float);
- defaultSD.shaderInfo.variables.append(v);
- QSGShaderEffectNode::VariableData vd;
- vd.specialType = QSGShaderEffectNode::VariableData::Matrix;
- defaultSD.varData.append(vd);
- defaultSD.shaderInfo.constantDataSize = (16 + 1) * sizeof(float);
- m_material.linker.feedConstants(defaultSD);
- }
-
- m_material.linker.feedSamplers(*syncData->vertex.shader);
- m_material.linker.feedTextures(*syncData->vertex.shader);
-
- if (m_material.hasCustomFragmentShader) {
- m_material.linker.feedConstants(*syncData->fragment.shader);
- } else {
- QSGShaderEffectNode::ShaderData defaultSD;
- defaultSD.shaderInfo.blob = fragBlob;
- defaultSD.shaderInfo.type = QSGGuiThreadShaderEffectManager::ShaderInfo::TypeFragment;
-
- // { float4x4 qt_Matrix; float qt_Opacity; } where only the opacity is used
- QSGGuiThreadShaderEffectManager::ShaderInfo::Variable v;
- v.name = QByteArrayLiteral("qt_Opacity");
- v.offset = 16 * sizeof(float);
- v.size = sizeof(float);
- defaultSD.shaderInfo.variables.append(v);
- QSGShaderEffectNode::VariableData vd;
- vd.specialType = QSGShaderEffectNode::VariableData::Opacity;
- defaultSD.varData.append(vd);
-
- v.name = QByteArrayLiteral("source");
- v.bindPoint = 0;
- v.type = QSGGuiThreadShaderEffectManager::ShaderInfo::Texture;
- defaultSD.shaderInfo.variables.append(v);
- vd.specialType = QSGShaderEffectNode::VariableData::Source;
- defaultSD.varData.append(vd);
-
- v.name = QByteArrayLiteral("sourceSampler");
- v.bindPoint = 0;
- v.type = QSGGuiThreadShaderEffectManager::ShaderInfo::Sampler;
- defaultSD.shaderInfo.variables.append(v);
- vd.specialType = QSGShaderEffectNode::VariableData::Unused;
- defaultSD.varData.append(vd);
-
- defaultSD.shaderInfo.constantDataSize = (16 + 1) * sizeof(float);
-
- m_material.linker.feedConstants(defaultSD);
- m_material.linker.feedSamplers(defaultSD);
- m_material.linker.feedTextures(defaultSD);
- }
-
- // While this may seem unnecessary for the built-in shaders, the value
- // of 'source' is still in there and we have to process it.
- m_material.linker.feedSamplers(*syncData->fragment.shader);
- m_material.linker.feedTextures(*syncData->fragment.shader);
-
- m_material.linker.linkTextureSubRects();
-
- m_material.updateTextureProviders(true);
-
- markDirty(QSGNode::DirtyMaterial);
-
- if (Q_UNLIKELY(debug_shader()))
- m_material.linker.dump();
- } else {
- if (syncData->dirty & QSGShaderEffectNode::DirtyShaderConstant) {
- if (!syncData->vertex.dirtyConstants->isEmpty())
- m_material.linker.feedConstants(*syncData->vertex.shader, syncData->vertex.dirtyConstants);
- if (!syncData->fragment.dirtyConstants->isEmpty())
- m_material.linker.feedConstants(*syncData->fragment.shader, syncData->fragment.dirtyConstants);
- markDirty(QSGNode::DirtyMaterial);
- if (Q_UNLIKELY(debug_shader()))
- m_material.linker.dump();
- }
-
- if (syncData->dirty & QSGShaderEffectNode::DirtyShaderTexture) {
- if (!syncData->vertex.dirtyTextures->isEmpty())
- m_material.linker.feedTextures(*syncData->vertex.shader, syncData->vertex.dirtyTextures);
- if (!syncData->fragment.dirtyTextures->isEmpty())
- m_material.linker.feedTextures(*syncData->fragment.shader, syncData->fragment.dirtyTextures);
- m_material.linker.linkTextureSubRects();
- m_material.updateTextureProviders(false);
- markDirty(QSGNode::DirtyMaterial);
- if (Q_UNLIKELY(debug_shader()))
- m_material.linker.dump();
- }
- }
-
- if (bool(m_material.flags() & QSGMaterial::RequiresFullMatrix) != m_material.hasCustomVertexShader) {
- m_material.setFlag(QSGMaterial::RequiresFullMatrix, m_material.hasCustomVertexShader);
- markDirty(QSGNode::DirtyMaterial);
- }
-}
-
-void QSGD3D12ShaderEffectNode::handleTextureChange()
-{
- markDirty(QSGNode::DirtyMaterial);
- emit m_mgr->textureChanged();
-}
-
-void QSGD3D12ShaderEffectNode::handleTextureProviderDestroyed(QObject *object)
-{
- for (QSGTextureProvider *&tp : m_material.textureProviders) {
- if (tp == object)
- tp = nullptr;
- }
-}
-
-void QSGD3D12ShaderEffectNode::preprocess()
-{
- for (QSGTextureProvider *tp : m_material.textureProviders) {
- if (tp) {
- if (QSGDynamicTexture *texture = qobject_cast<QSGDynamicTexture *>(tp->texture()))
- texture->updateTexture();
- }
- }
-}
-
-bool QSGD3D12GuiThreadShaderEffectManager::hasSeparateSamplerAndTextureObjects() const
-{
- return true;
-}
-
-QString QSGD3D12GuiThreadShaderEffectManager::log() const
-{
- return m_log;
-}
-
-QSGGuiThreadShaderEffectManager::Status QSGD3D12GuiThreadShaderEffectManager::status() const
-{
- return m_status;
-}
-
-struct RefGuard {
- RefGuard(IUnknown *p) : p(p) { }
- ~RefGuard() { p->Release(); }
- IUnknown *p;
-};
-
-class QSGD3D12ShaderCompileTask : public QRunnable
-{
-public:
- QSGD3D12ShaderCompileTask(QSGD3D12GuiThreadShaderEffectManager *mgr,
- QSGD3D12GuiThreadShaderEffectManager::ShaderInfo::Type typeHint,
- const QByteArray &src,
- QSGD3D12GuiThreadShaderEffectManager::ShaderInfo *result)
- : mgr(mgr), typeHint(typeHint), src(src), result(result) { }
-
- void run() override;
-
-private:
- QSGD3D12GuiThreadShaderEffectManager *mgr;
- QSGD3D12GuiThreadShaderEffectManager::ShaderInfo::Type typeHint;
- QByteArray src;
- QSGD3D12GuiThreadShaderEffectManager::ShaderInfo *result;
-};
-
-void QSGD3D12ShaderCompileTask::run()
-{
- const char *target = typeHint == QSGD3D12GuiThreadShaderEffectManager::ShaderInfo::TypeVertex ? "vs_5_0" : "ps_5_0";
- ID3DBlob *bytecode = nullptr;
- ID3DBlob *errors = nullptr;
- HRESULT hr = D3DCompile(src.constData(), src.size(), nullptr, nullptr, nullptr,
- "main", target, 0, 0, &bytecode, &errors);
- if (FAILED(hr) || !bytecode) {
- qWarning("HLSL shader compilation failed: 0x%x", hr);
- if (errors) {
- mgr->m_log += QString::fromUtf8(static_cast<const char *>(errors->GetBufferPointer()), errors->GetBufferSize());
- errors->Release();
- }
- mgr->m_status = QSGGuiThreadShaderEffectManager::Error;
- emit mgr->shaderCodePrepared(false, typeHint, src, result);
- emit mgr->logAndStatusChanged();
- return;
- }
-
- result->blob.resize(bytecode->GetBufferSize());
- memcpy(result->blob.data(), bytecode->GetBufferPointer(), result->blob.size());
- bytecode->Release();
-
- const bool ok = mgr->reflect(result);
- mgr->m_status = ok ? QSGGuiThreadShaderEffectManager::Compiled : QSGGuiThreadShaderEffectManager::Error;
- emit mgr->shaderCodePrepared(ok, typeHint, src, result);
- emit mgr->logAndStatusChanged();
-}
-
-static const int BYTECODE_MAGIC = 0x43425844; // 'DXBC'
-
-void QSGD3D12GuiThreadShaderEffectManager::prepareShaderCode(ShaderInfo::Type typeHint, const QByteArray &src, ShaderInfo *result)
-{
- // The D3D12 backend's ShaderEffect implementation supports both HLSL
- // source strings and bytecode or source in files as input. Bytecode is
- // strongly recommended, but in order to make ShaderEffect users' (and
- // anything that stiches shader strings together dynamically, e.g.
- // qtgraphicaleffects) life easier, and since we link to d3dcompiler
- // anyways, compiling from source is also supported.
-
- QByteArray shaderSourceCode = src;
- QUrl srcUrl(QString::fromUtf8(src));
- if (!srcUrl.scheme().compare(QLatin1String("qrc"), Qt::CaseInsensitive) || srcUrl.isLocalFile()) {
- if (!m_fileSelector) {
- m_fileSelector = new QFileSelector(this);
- m_fileSelector->setExtraSelectors(QStringList() << QStringLiteral("hlsl"));
- }
- const QString fn = m_fileSelector->select(QQmlFile::urlToLocalFileOrQrc(srcUrl));
- QFile f(fn);
- if (!f.open(QIODevice::ReadOnly)) {
- qWarning("ShaderEffect: Failed to read %s", qPrintable(fn));
- emit shaderCodePrepared(false, typeHint, src, result);
- return;
- }
- QByteArray blob = f.readAll();
- f.close();
- if (blob.size() > 4) {
- const quint32 *p = reinterpret_cast<const quint32 *>(blob.constData());
- if (*p == BYTECODE_MAGIC) {
- // already compiled D3D bytecode, skip straight to reflection
- result->blob = blob;
- const bool ok = reflect(result);
- m_status = ok ? Compiled : Error;
- emit shaderCodePrepared(ok, typeHint, src, result);
- emit logAndStatusChanged();
- return;
- }
- // assume the file contained HLSL source code
- shaderSourceCode = blob;
- }
- }
-
- QThreadPool::globalInstance()->start(new QSGD3D12ShaderCompileTask(this, typeHint, shaderSourceCode, result));
-}
-
-bool QSGD3D12GuiThreadShaderEffectManager::reflect(ShaderInfo *result)
-{
- ID3D12ShaderReflection *reflector;
- HRESULT hr = D3DReflect(result->blob.constData(), result->blob.size(), IID_PPV_ARGS(&reflector));
- if (FAILED(hr)) {
- qWarning("D3D shader reflection failed: 0x%x", hr);
- return false;
- }
- RefGuard rg(reflector);
-
- D3D12_SHADER_DESC shaderDesc;
- reflector->GetDesc(&shaderDesc);
-
- const uint progType = (shaderDesc.Version & 0xFFFF0000) >> 16;
- const uint major = (shaderDesc.Version & 0x000000F0) >> 4;
- const uint minor = (shaderDesc.Version & 0x0000000F);
-
- switch (progType) {
- case D3D12_SHVER_VERTEX_SHADER:
- result->type = ShaderInfo::TypeVertex;
- break;
- case D3D12_SHVER_PIXEL_SHADER:
- result->type = ShaderInfo::TypeFragment;
- break;
- default:
- result->type = ShaderInfo::TypeOther;
- qWarning("D3D shader is of unknown type 0x%x", shaderDesc.Version);
- return false;
- }
-
- if (major < 5) {
- qWarning("D3D shader model version %u.%u is too low", major, minor);
- return false;
- }
-
- const int ieCount = shaderDesc.InputParameters;
- const int cbufferCount = shaderDesc.ConstantBuffers;
- const int boundResCount = shaderDesc.BoundResources;
-
- result->constantDataSize = 0;
-
- if (ieCount < 1) {
- qWarning("Invalid shader: Not enough input parameters (%d)", ieCount);
- return false;
- }
- if (cbufferCount < 1) {
- qWarning("Invalid shader: Shader has no constant buffers");
- return false;
- }
- if (boundResCount < 1) {
- qWarning("Invalid shader: No resources bound. Expected to have at least a constant buffer bound.");
- return false;
- }
-
- if (Q_UNLIKELY(debug_shader()))
- qDebug("Shader reflection size %d type %d v%u.%u input elems %d cbuffers %d boundres %d",
- result->blob.size(), result->type, major, minor, ieCount, cbufferCount, boundResCount);
-
- for (int i = 0; i < boundResCount; ++i) {
- D3D12_SHADER_INPUT_BIND_DESC desc;
- if (FAILED(reflector->GetResourceBindingDesc(i, &desc))) {
- qWarning("D3D reflection: Failed to query resource binding %d", i);
- continue;
- }
- bool gotCBuffer = false;
- if (desc.Type == D3D_SIT_CBUFFER) {
- ID3D12ShaderReflectionConstantBuffer *cbuf = reflector->GetConstantBufferByName(desc.Name);
- D3D12_SHADER_BUFFER_DESC bufDesc;
- if (FAILED(cbuf->GetDesc(&bufDesc))) {
- qWarning("D3D reflection: Failed to query constant buffer description");
- continue;
- }
- if (gotCBuffer) {
- qWarning("D3D reflection: Found more than one constant buffers. Only the first one is used.");
- continue;
- }
- gotCBuffer = true;
- result->constantDataSize = bufDesc.Size;
- for (uint cbIdx = 0; cbIdx < bufDesc.Variables; ++cbIdx) {
- ID3D12ShaderReflectionVariable *cvar = cbuf->GetVariableByIndex(cbIdx);
- D3D12_SHADER_VARIABLE_DESC varDesc;
- if (FAILED(cvar->GetDesc(&varDesc))) {
- qWarning("D3D reflection: Failed to query constant buffer variable %d", cbIdx);
- return false;
- }
- // we report the full size of the buffer but only return variables that are actually used by this shader
- if (!(varDesc.uFlags & D3D_SVF_USED))
- continue;
- ShaderInfo::Variable v;
- v.type = ShaderInfo::Constant;
- v.name = QByteArray(varDesc.Name);
- v.offset = varDesc.StartOffset;
- v.size = varDesc.Size;
- result->variables.append(v);
- }
- } else if (desc.Type == D3D_SIT_TEXTURE) {
- if (desc.Dimension != D3D_SRV_DIMENSION_TEXTURE2D) {
- qWarning("D3D reflection: Texture %s is not a 2D texture, ignoring.", qPrintable(desc.Name));
- continue;
- }
- if (desc.NumSamples != (UINT) -1) {
- qWarning("D3D reflection: Texture %s is multisample (%u), ignoring.", qPrintable(desc.Name), desc.NumSamples);
- continue;
- }
- if (desc.BindCount != 1) {
- qWarning("D3D reflection: Texture %s is an array, ignoring.", qPrintable(desc.Name));
- continue;
- }
- if (desc.Space != 0) {
- qWarning("D3D reflection: Texture %s is not using register space 0, ignoring.", qPrintable(desc.Name));
- continue;
- }
- ShaderInfo::Variable v;
- v.type = ShaderInfo::Texture;
- v.name = QByteArray(desc.Name);
- v.bindPoint = desc.BindPoint;
- result->variables.append(v);
- } else if (desc.Type == D3D_SIT_SAMPLER) {
- if (desc.BindCount != 1) {
- qWarning("D3D reflection: Sampler %s is an array, ignoring.", qPrintable(desc.Name));
- continue;
- }
- if (desc.Space != 0) {
- qWarning("D3D reflection: Sampler %s is not using register space 0, ignoring.", qPrintable(desc.Name));
- continue;
- }
- ShaderInfo::Variable v;
- v.type = ShaderInfo::Sampler;
- v.name = QByteArray(desc.Name);
- v.bindPoint = desc.BindPoint;
- result->variables.append(v);
- } else {
- qWarning("D3D reflection: Resource binding %d has an unknown type of %d and will be ignored.", i, desc.Type);
- continue;
- }
- }
-
- if (Q_UNLIKELY(debug_shader()))
- qDebug() << "Variables:" << result->variables << "cbuffer size" << result->constantDataSize;
-
- return true;
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12shadereffectnode_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12shadereffectnode_p.h
deleted file mode 100644
index dec85fd782..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12shadereffectnode_p.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12SHADEREFFECTNODE_P_H
-#define QSGD3D12SHADEREFFECTNODE_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <private/qsgadaptationlayer_p.h>
-#include "qsgd3d12material_p.h"
-
-QT_BEGIN_NAMESPACE
-
-class QSGD3D12RenderContext;
-class QSGD3D12GuiThreadShaderEffectManager;
-class QSGD3D12ShaderEffectNode;
-class QSGD3D12Texture;
-class QFileSelector;
-
-class QSGD3D12ShaderLinker
-{
-public:
- void reset(const QByteArray &vertBlob, const QByteArray &fragBlob);
-
- void feedConstants(const QSGShaderEffectNode::ShaderData &shader, const QSet<int> *dirtyIndices = nullptr);
- void feedSamplers(const QSGShaderEffectNode::ShaderData &shader);
- void feedTextures(const QSGShaderEffectNode::ShaderData &shader, const QSet<int> *dirtyIndices = nullptr);
- void linkTextureSubRects();
-
- void dump();
-
- struct Constant {
- uint size;
- QSGShaderEffectNode::VariableData::SpecialType specialType;
- QVariant value;
- bool operator==(const Constant &other) const {
- return size == other.size && specialType == other.specialType
- && (specialType == QSGShaderEffectNode::VariableData::None ? value == other.value : true);
- }
- };
-
- bool error;
- QByteArray vs;
- QByteArray fs;
- uint constantBufferSize;
- QHash<uint, Constant> constants; // offset -> Constant
- QSet<int> samplers; // bindpoint
- QHash<int, QVariant> textures; // bindpoint -> value (source ref)
- QHash<QByteArray, int> textureNameMap; // name -> bindpoint
-};
-
-QDebug operator<<(QDebug debug, const QSGD3D12ShaderLinker::Constant &c);
-
-class QSGD3D12ShaderEffectMaterial : public QSGD3D12Material
-{
-public:
- QSGD3D12ShaderEffectMaterial(QSGD3D12ShaderEffectNode *node);
- ~QSGD3D12ShaderEffectMaterial();
-
- QSGMaterialType *type() const override;
- int compare(const QSGMaterial *other) const override;
-
- int constantBufferSize() const override;
- void preparePipeline(QSGD3D12PipelineState *pipelineState) override;
- UpdateResults updatePipeline(const QSGD3D12MaterialRenderState &state,
- QSGD3D12PipelineState *pipelineState,
- ExtraState *extraState,
- quint8 *constantBuffer) override;
-
- void updateTextureProviders(bool layoutChange);
-
- QSGD3D12ShaderEffectNode *node;
- bool valid = false;
- QSGShaderEffectNode::CullMode cullMode = QSGShaderEffectNode::NoCulling;
- bool hasCustomVertexShader = false;
- bool hasCustomFragmentShader = false;
- QSGD3D12ShaderLinker linker;
- QSGMaterialType *mtype = nullptr;
- QVector<QSGTextureProvider *> textureProviders;
- QSGD3D12Texture *dummy = nullptr;
- bool geometryUsesTextureSubRect = false;
-};
-
-class QSGD3D12ShaderEffectNode : public QObject, public QSGShaderEffectNode
-{
- Q_OBJECT
-
-public:
- QSGD3D12ShaderEffectNode(QSGD3D12RenderContext *rc, QSGD3D12GuiThreadShaderEffectManager *mgr);
-
- QRectF updateNormalizedTextureSubRect(bool supportsAtlasTextures) override;
- void syncMaterial(SyncData *syncData) override;
-
- static void cleanupMaterialTypeCache();
-
- void preprocess() override;
-
- QSGD3D12RenderContext *renderContext() { return m_rc; }
-
-private Q_SLOTS:
- void handleTextureChange();
- void handleTextureProviderDestroyed(QObject *object);
-
-private:
- QSGD3D12RenderContext *m_rc;
- QSGD3D12GuiThreadShaderEffectManager *m_mgr;
- QSGD3D12ShaderEffectMaterial m_material;
-};
-
-class QSGD3D12GuiThreadShaderEffectManager : public QSGGuiThreadShaderEffectManager
-{
-public:
- bool hasSeparateSamplerAndTextureObjects() const override;
-
- QString log() const override;
- Status status() const override;
-
- void prepareShaderCode(ShaderInfo::Type typeHint, const QByteArray &src, ShaderInfo *result) override;
-
-private:
- bool reflect(ShaderInfo *result);
- QString m_log;
- Status m_status = Uncompiled;
- QFileSelector *m_fileSelector = nullptr;
-
- friend class QSGD3D12ShaderCompileTask;
-};
-
-QT_END_NAMESPACE
-
-#endif // QSGD3D12SHADEREFFECTNODE_P_H
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12spritenode.cpp b/src/plugins/scenegraph/d3d12/qsgd3d12spritenode.cpp
deleted file mode 100644
index 807fbcdcec..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12spritenode.cpp
+++ /dev/null
@@ -1,314 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgd3d12spritenode_p.h"
-#include "qsgd3d12material_p.h"
-
-#include "vs_sprite.hlslh"
-#include "ps_sprite.hlslh"
-
-QT_BEGIN_NAMESPACE
-
-struct SpriteVertex
-{
- float x;
- float y;
- float tx;
- float ty;
-};
-
-struct SpriteVertices
-{
- SpriteVertex v1;
- SpriteVertex v2;
- SpriteVertex v3;
- SpriteVertex v4;
-};
-
-class QSGD3D12SpriteMaterial : public QSGD3D12Material
-{
-public:
- QSGD3D12SpriteMaterial();
- ~QSGD3D12SpriteMaterial();
-
- QSGMaterialType *type() const override { static QSGMaterialType type; return &type; }
-
- int compare(const QSGMaterial *other) const override
- {
- return this - static_cast<const QSGD3D12SpriteMaterial *>(other);
- }
-
- int constantBufferSize() const override;
- void preparePipeline(QSGD3D12PipelineState *pipelineState) override;
- UpdateResults updatePipeline(const QSGD3D12MaterialRenderState &state,
- QSGD3D12PipelineState *pipelineState,
- ExtraState *extraState,
- quint8 *constantBuffer) override;
-
- QSGTexture *texture;
-
- float animT;
- float animX1;
- float animY1;
- float animX2;
- float animY2;
- float animW;
- float animH;
-};
-
-QSGD3D12SpriteMaterial::QSGD3D12SpriteMaterial()
- : texture(nullptr),
- animT(0.0f),
- animX1(0.0f),
- animY1(0.0f),
- animX2(0.0f),
- animY2(0.0f),
- animW(1.0f),
- animH(1.0f)
-{
- setFlag(Blending, true);
-}
-
-QSGD3D12SpriteMaterial::~QSGD3D12SpriteMaterial()
-{
- delete texture;
-}
-
-static const int SPRITE_CB_SIZE_0 = 16 * sizeof(float); // float4x4
-static const int SPRITE_CB_SIZE_1 = 4 * sizeof(float); // float4
-static const int SPRITE_CB_SIZE_2 = 3 * sizeof(float); // float3
-static const int SPRITE_CB_SIZE_3 = sizeof(float); // float
-static const int SPRITE_CB_SIZE = SPRITE_CB_SIZE_0 + SPRITE_CB_SIZE_1 + SPRITE_CB_SIZE_2 + SPRITE_CB_SIZE_3;
-
-int QSGD3D12SpriteMaterial::constantBufferSize() const
-{
- return QSGD3D12Engine::alignedConstantBufferSize(SPRITE_CB_SIZE);
-}
-
-void QSGD3D12SpriteMaterial::preparePipeline(QSGD3D12PipelineState *pipelineState)
-{
- pipelineState->shaders.vs = g_VS_Sprite;
- pipelineState->shaders.vsSize = sizeof(g_VS_Sprite);
- pipelineState->shaders.ps = g_PS_Sprite;
- pipelineState->shaders.psSize = sizeof(g_PS_Sprite);
-
- pipelineState->shaders.rootSig.textureViewCount = 1;
-}
-
-QSGD3D12Material::UpdateResults QSGD3D12SpriteMaterial::updatePipeline(const QSGD3D12MaterialRenderState &state,
- QSGD3D12PipelineState *,
- ExtraState *,
- quint8 *constantBuffer)
-{
- QSGD3D12Material::UpdateResults r = UpdatedConstantBuffer;
- quint8 *p = constantBuffer;
-
- if (state.isMatrixDirty())
- memcpy(p, state.combinedMatrix().constData(), SPRITE_CB_SIZE_0);
- p += SPRITE_CB_SIZE_0;
-
- {
- const float v[] = { animX1, animY1, animX2, animY2 };
- memcpy(p, v, SPRITE_CB_SIZE_1);
- }
- p += SPRITE_CB_SIZE_1;
-
- {
- const float v[] = { animW, animH, animT };
- memcpy(p, v, SPRITE_CB_SIZE_2);
- }
- p += SPRITE_CB_SIZE_2;
-
- if (state.isOpacityDirty()) {
- const float opacity = state.opacity();
- memcpy(p, &opacity, SPRITE_CB_SIZE_3);
- }
-
- texture->bind();
-
- return r;
-}
-
-static QSGGeometry::Attribute Sprite_Attributes[] = {
- QSGGeometry::Attribute::createWithAttributeType(0, 2, QSGGeometry::FloatType, QSGGeometry::PositionAttribute),
- QSGGeometry::Attribute::createWithAttributeType(1, 2, QSGGeometry::FloatType, QSGGeometry::TexCoordAttribute),
-};
-
-static QSGGeometry::AttributeSet Sprite_AttributeSet = { 2, 4 * sizeof(float), Sprite_Attributes };
-
-QSGD3D12SpriteNode::QSGD3D12SpriteNode()
- : m_material(new QSGD3D12SpriteMaterial)
- , m_geometryDirty(true)
- , m_sheetSize(QSize(64, 64))
-{
- m_geometry = new QSGGeometry(Sprite_AttributeSet, 4, 6);
- m_geometry->setDrawingMode(QSGGeometry::DrawTriangles);
-
- quint16 *indices = m_geometry->indexDataAsUShort();
- indices[0] = 0;
- indices[1] = 1;
- indices[2] = 2;
- indices[3] = 1;
- indices[4] = 3;
- indices[5] = 2;
-
- setGeometry(m_geometry);
- setMaterial(m_material);
- setFlag(OwnsGeometry, true);
- setFlag(OwnsMaterial, true);
-}
-
-void QSGD3D12SpriteNode::setTexture(QSGTexture *texture)
-{
- m_material->texture = texture;
- m_geometryDirty = true;
- markDirty(DirtyMaterial);
-}
-
-void QSGD3D12SpriteNode::setTime(float time)
-{
- m_material->animT = time;
- markDirty(DirtyMaterial);
-}
-
-void QSGD3D12SpriteNode::setSourceA(const QPoint &source)
-{
- if (m_sourceA != source) {
- m_sourceA = source;
- m_material->animX1 = static_cast<float>(source.x()) / m_sheetSize.width();
- m_material->animY1 = static_cast<float>(source.y()) / m_sheetSize.height();
- markDirty(DirtyMaterial);
- }
-}
-
-void QSGD3D12SpriteNode::setSourceB(const QPoint &source)
-{
- if (m_sourceB != source) {
- m_sourceB = source;
- m_material->animX2 = static_cast<float>(source.x()) / m_sheetSize.width();
- m_material->animY2 = static_cast<float>(source.y()) / m_sheetSize.height();
- markDirty(DirtyMaterial);
- }
-}
-
-void QSGD3D12SpriteNode::setSpriteSize(const QSize &size)
-{
- if (m_spriteSize != size) {
- m_spriteSize = size;
- m_material->animW = static_cast<float>(size.width()) / m_sheetSize.width();
- m_material->animH = static_cast<float>(size.height()) / m_sheetSize.height();
- markDirty(DirtyMaterial);
- }
-}
-
-void QSGD3D12SpriteNode::setSheetSize(const QSize &size)
-{
- if (m_sheetSize != size) {
- m_sheetSize = size;
-
- // Update all dependent properties
- m_material->animX1 = static_cast<float>(m_sourceA.x()) / m_sheetSize.width();
- m_material->animY1 = static_cast<float>(m_sourceA.y()) / m_sheetSize.height();
- m_material->animX2 = static_cast<float>(m_sourceB.x()) / m_sheetSize.width();
- m_material->animY2 = static_cast<float>(m_sourceB.y()) / m_sheetSize.height();
- m_material->animW = static_cast<float>(m_spriteSize.width()) / m_sheetSize.width();
- m_material->animH = static_cast<float>(m_spriteSize.height()) / m_sheetSize.height();
-
- markDirty(DirtyMaterial);
- }
-}
-
-void QSGD3D12SpriteNode::setSize(const QSizeF &size)
-{
- if (m_size != size) {
- m_size = size;
- m_geometryDirty = true;
- }
-}
-
-void QSGD3D12SpriteNode::setFiltering(QSGTexture::Filtering filtering)
-{
- m_material->texture->setFiltering(filtering);
- markDirty(DirtyMaterial);
-}
-
-void QSGD3D12SpriteNode::update()
-{
- if (m_geometryDirty) {
- m_geometryDirty = false;
- updateGeometry();
- }
-}
-
-void QSGD3D12SpriteNode::updateGeometry()
-{
- if (!m_material->texture)
- return;
-
- SpriteVertices *p = static_cast<SpriteVertices *>(m_geometry->vertexData());
- const QRectF texRect = m_material->texture->normalizedTextureSubRect();
-
- p->v1.tx = texRect.topLeft().x();
- p->v1.ty = texRect.topLeft().y();
-
- p->v2.tx = texRect.topRight().x();
- p->v2.ty = texRect.topRight().y();
-
- p->v3.tx = texRect.bottomLeft().x();
- p->v3.ty = texRect.bottomLeft().y();
-
- p->v4.tx = texRect.bottomRight().x();
- p->v4.ty = texRect.bottomRight().y();
-
- p->v1.x = 0;
- p->v1.y = 0;
-
- p->v2.x = m_size.width();
- p->v2.y = 0;
-
- p->v3.x = 0;
- p->v3.y = m_size.height();
-
- p->v4.x = m_size.width();
- p->v4.y = m_size.height();
-
- markDirty(DirtyGeometry);
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12spritenode_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12spritenode_p.h
deleted file mode 100644
index 265bec7c78..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12spritenode_p.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12SPRITENODE_H
-#define QSGD3D12SPRITENODE_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <private/qsgadaptationlayer_p.h>
-
-QT_BEGIN_NAMESPACE
-
-class QSGD3D12SpriteMaterial;
-
-class QSGD3D12SpriteNode : public QSGSpriteNode
-{
-public:
- QSGD3D12SpriteNode();
-
- void setTexture(QSGTexture *texture) override;
- void setTime(float time) override;
- void setSourceA(const QPoint &source) override;
- void setSourceB(const QPoint &source) override;
- void setSpriteSize(const QSize &size) override;
- void setSheetSize(const QSize &size) override;
- void setSize(const QSizeF &size) override;
- void setFiltering(QSGTexture::Filtering filtering) override;
- void update() override;
-
-private:
- void updateGeometry();
-
- QSGD3D12SpriteMaterial *m_material;
- QSGGeometry *m_geometry;
- bool m_geometryDirty;
- QPoint m_sourceA;
- QPoint m_sourceB;
- QSize m_spriteSize;
- QSize m_sheetSize;
- QSizeF m_size;
-};
-
-QT_END_NAMESPACE
-
-#endif // QSGD3D12SPRITENODE_H
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12texture.cpp b/src/plugins/scenegraph/d3d12/qsgd3d12texture.cpp
deleted file mode 100644
index b49b851c23..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12texture.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgd3d12texture_p.h"
-#include "qsgd3d12engine_p.h"
-#include <private/qsgcontext_p.h>
-
-QT_BEGIN_NAMESPACE
-
-#define RETAIN_IMAGE
-
-void QSGD3D12Texture::create(const QImage &image, uint flags)
-{
- // ### atlas?
-
- const bool alphaRequest = flags & QSGRenderContext::CreateTexture_Alpha;
- m_alphaWanted = alphaRequest && image.hasAlphaChannel();
-
- // The engine maps 8-bit formats to R8. This is fine for glyphs and such
- // but may not be what apps expect for ordinary image data. The OpenGL
- // implementation maps these to ARGB32_Pre so let's follow suit.
- if (image.depth() != 8)
- m_image = image;
- else
- m_image = image.convertToFormat(m_alphaWanted ? QImage::Format_ARGB32_Premultiplied : QImage::Format_RGB32);
-
- m_id = m_engine->genTexture();
- Q_ASSERT(m_id);
-
- // We could kick off the texture creation and the async upload right here.
- // Unfortunately we cannot tell at this stage if mipmaps will be enabled
- // via an Image element's mipmap property...so defer to bind().
- m_createPending = true;
-}
-
-QSGD3D12Texture::QSGD3D12Texture(QSGD3D12Engine *engine)
- : QSGTexture(*(new QSGD3D12TexturePrivate)),
- m_engine(engine)
-{
-}
-
-QSGD3D12Texture::~QSGD3D12Texture()
-{
- if (m_id)
- m_engine->releaseTexture(m_id);
-}
-
-int QSGD3D12Texture::textureId() const
-{
- return m_id;
-}
-
-int QSGD3D12TexturePrivate::comparisonKey() const
-{
- Q_Q(const QSGD3D12Texture);
- return q->m_id;
-}
-
-QSize QSGD3D12Texture::textureSize() const
-{
- return m_image.size();
-}
-
-bool QSGD3D12Texture::hasAlphaChannel() const
-{
- return m_alphaWanted;
-}
-
-bool QSGD3D12Texture::hasMipmaps() const
-{
- return mipmapFiltering() != QSGTexture::None;
-}
-
-QRectF QSGD3D12Texture::normalizedTextureSubRect() const
-{
- return QRectF(0, 0, 1, 1);
-}
-
-void QSGD3D12Texture::bind()
-{
- // Called when the texture material updates the pipeline state.
-
- if (!m_createPending && hasMipmaps() != m_createdWithMipMaps) {
-#ifdef RETAIN_IMAGE
- m_engine->releaseTexture(m_id);
- m_id = m_engine->genTexture();
- Q_ASSERT(m_id);
- m_createPending = true;
-#else
- // ### this can be made working some day (something similar to
- // queueTextureResize) but skip for now
- qWarning("D3D12: mipmap property cannot be changed once the texture is created");
-#endif
- }
-
- if (m_createPending) {
- m_createPending = false;
-
- QSGD3D12Engine::TextureCreateFlags createFlags = 0;
- if (m_alphaWanted)
- createFlags |= QSGD3D12Engine::TextureWithAlpha;
-
- m_createdWithMipMaps = hasMipmaps();
- if (m_createdWithMipMaps)
- createFlags |= QSGD3D12Engine::TextureWithMipMaps;
-
- m_engine->createTexture(m_id, m_image.size(), m_image.format(), createFlags);
- m_engine->queueTextureUpload(m_id, m_image);
-
-#ifndef RETAIN_IMAGE
- m_image = QImage();
-#endif
- }
-
- // Here we know that the texture is going to be used in the current frame
- // by the next draw call. Notify the engine so that it can wait for
- // possible pending uploads and set up the pipeline accordingly.
- m_engine->useTexture(m_id);
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12texture_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12texture_p.h
deleted file mode 100644
index f6a5257773..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12texture_p.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12TEXTURE_P_H
-#define QSGD3D12TEXTURE_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <private/qsgtexture_p.h>
-#include <basetsd.h>
-
-QT_BEGIN_NAMESPACE
-
-class QSGD3D12Engine;
-class QSGD3D12TexturePrivate;
-
-class QSGD3D12Texture : public QSGTexture
-{
- Q_DECLARE_PRIVATE(QSGD3D12Texture)
-public:
- QSGD3D12Texture(QSGD3D12Engine *engine);
- ~QSGD3D12Texture();
-
- void create(const QImage &image, uint flags);
-
- int textureId() const override;
- QSize textureSize() const override;
- bool hasAlphaChannel() const override;
- bool hasMipmaps() const override;
- QRectF normalizedTextureSubRect() const override;
- void bind() override;
-
-protected:
- QSGD3D12Engine *m_engine;
- QImage m_image;
- bool m_createPending = false;
- bool m_createdWithMipMaps = false;
- uint m_id = 0;
- bool m_alphaWanted = false;
-};
-
-class QSGD3D12TexturePrivate : public QSGTexturePrivate
-{
- Q_DECLARE_PUBLIC(QSGD3D12Texture)
-public:
- int comparisonKey() const override;
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12threadedrenderloop.cpp b/src/plugins/scenegraph/d3d12/qsgd3d12threadedrenderloop.cpp
deleted file mode 100644
index 4302a9119b..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12threadedrenderloop.cpp
+++ /dev/null
@@ -1,1186 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgd3d12threadedrenderloop_p.h"
-#include "qsgd3d12engine_p.h"
-#include "qsgd3d12context_p.h"
-#include "qsgd3d12rendercontext_p.h"
-#include "qsgd3d12shadereffectnode_p.h"
-#include <private/qsgrenderer_p.h>
-#include <private/qquickwindow_p.h>
-#include <private/qquickanimatorcontroller_p.h>
-#include <private/qquickprofiler_p.h>
-#include <private/qqmldebugserviceinterfaces_p.h>
-#include <private/qqmldebugconnector_p.h>
-#include <QElapsedTimer>
-#include <QQueue>
-#include <QGuiApplication>
-
-QT_BEGIN_NAMESPACE
-
-// NOTE: Avoid categorized logging. It is slow.
-
-#define DECLARE_DEBUG_VAR(variable) \
- static bool debug_ ## variable() \
- { static bool value = qgetenv("QSG_RENDERER_DEBUG").contains(QT_STRINGIFY(variable)); return value; }
-
-DECLARE_DEBUG_VAR(loop)
-DECLARE_DEBUG_VAR(time)
-
-
-// NOTE: The threaded renderloop is not currently safe to use in practice as it
-// is prone to deadlocks, in particular when multiple windows are active. This
-// is because DXGI's limitation of relying on the gui message pump in certain
-// cases. See
-// https://msdn.microsoft.com/en-us/library/windows/desktop/ee417025(v=vs.85).aspx#multithreading_and_dxgi
-//
-// This means that if swap chain functions like create, release, and
-// potentially even Present, are called outside the gui thread, then the
-// application must ensure the gui thread does not ever block and wait for the
-// render thread - since on the render thread a DXGI call may be in turn
-// waiting for the gui thread to deliver a window message...
-//
-// Ensuring this is impossible with the current design where the gui thread
-// must block at certain points, waiting for the render thread. Qt moves out
-// rendering from the main thread, in order to make application's life easier,
-// whereas the typical DXGI-compatible model would require moving work, but not
-// windowing and presenting, out to additional threads.
-
-
-/*
- The D3D render loop mostly mirrors the threaded OpenGL render loop.
-
- There are two classes here. QSGD3D12ThreadedRenderLoop and
- QSGD3D12RenderThread. All communication between the two is based on event
- passing and we have a number of custom events.
-
- Render loop is per process, render thread is per window. The
- QSGD3D12RenderContext and QSGD3D12Engine are per window as well. The former
- is created (but not owned) by QQuickWindow. The D3D device is per process.
-
- In this implementation, the render thread is never blocked and the GUI
- thread will initiate a polishAndSync which will block and wait for the
- render thread to pick it up and release the block only after the render
- thread is done syncing. The reason for this is:
-
- 1. Clear blocking paradigm. We only have one real "block" point
- (polishAndSync()) and all blocking is initiated by GUI and picked up by
- Render at specific times based on events. This makes the execution
- deterministic.
-
- 2. Render does not have to interact with GUI. This is done so that the
- render thread can run its own animation system which stays alive even when
- the GUI thread is blocked doing I/O, object instantiation, QPainter-painting
- or any other non-trivial task.
-
- The render thread has affinity to the GUI thread until a window is shown.
- From that moment and until the window is destroyed, it will have affinity to
- the render thread. (moved back at the end of run for cleanup).
- */
-
-// Passed from the RL to the RT when a window is removed obscured and should be
-// removed from the render loop.
-const QEvent::Type WM_Obscure = QEvent::Type(QEvent::User + 1);
-
-// Passed from the RL to RT when GUI has been locked, waiting for sync.
-const QEvent::Type WM_RequestSync = QEvent::Type(QEvent::User + 2);
-
-// Passed by the RL to the RT to maybe release resource if no windows are
-// rendering.
-const QEvent::Type WM_TryRelease = QEvent::Type(QEvent::User + 4);
-
-// Passed by the RL to the RT when a QQuickWindow::grabWindow() is called.
-const QEvent::Type WM_Grab = QEvent::Type(QEvent::User + 5);
-
-// Passed by the window when there is a render job to run.
-const QEvent::Type WM_PostJob = QEvent::Type(QEvent::User + 6);
-
-class QSGD3D12WindowEvent : public QEvent
-{
-public:
- QSGD3D12WindowEvent(QQuickWindow *c, QEvent::Type type) : QEvent(type), window(c) { }
- QQuickWindow *window;
-};
-
-class QSGD3D12TryReleaseEvent : public QSGD3D12WindowEvent
-{
-public:
- QSGD3D12TryReleaseEvent(QQuickWindow *win, bool destroy)
- : QSGD3D12WindowEvent(win, WM_TryRelease), destroying(destroy) { }
- bool destroying;
-};
-
-class QSGD3D12SyncEvent : public QSGD3D12WindowEvent
-{
-public:
- QSGD3D12SyncEvent(QQuickWindow *c, bool inExpose, bool force)
- : QSGD3D12WindowEvent(c, WM_RequestSync)
- , size(c->size())
- , dpr(c->effectiveDevicePixelRatio())
- , syncInExpose(inExpose)
- , forceRenderPass(force) { }
- QSize size;
- float dpr;
- bool syncInExpose;
- bool forceRenderPass;
-};
-
-class QSGD3D12GrabEvent : public QSGD3D12WindowEvent
-{
-public:
- QSGD3D12GrabEvent(QQuickWindow *c, QImage *result)
- : QSGD3D12WindowEvent(c, WM_Grab), image(result) { }
- QImage *image;
-};
-
-class QSGD3D12JobEvent : public QSGD3D12WindowEvent
-{
-public:
- QSGD3D12JobEvent(QQuickWindow *c, QRunnable *postedJob)
- : QSGD3D12WindowEvent(c, WM_PostJob), job(postedJob) { }
- ~QSGD3D12JobEvent() { delete job; }
- QRunnable *job;
-};
-
-class QSGD3D12EventQueue : public QQueue<QEvent *>
-{
-public:
- void addEvent(QEvent *e) {
- mutex.lock();
- enqueue(e);
- if (waiting)
- condition.wakeOne();
- mutex.unlock();
- }
-
- QEvent *takeEvent(bool wait) {
- mutex.lock();
- if (isEmpty() && wait) {
- waiting = true;
- condition.wait(&mutex);
- waiting = false;
- }
- QEvent *e = dequeue();
- mutex.unlock();
- return e;
- }
-
- bool hasMoreEvents() {
- mutex.lock();
- bool has = !isEmpty();
- mutex.unlock();
- return has;
- }
-
-private:
- QMutex mutex;
- QWaitCondition condition;
- bool waiting = false;
-};
-
-static inline int qsgrl_animation_interval()
-{
- const qreal refreshRate = QGuiApplication::primaryScreen() ? QGuiApplication::primaryScreen()->refreshRate() : 0;
- return refreshRate < 1 ? 16 : int(1000 / refreshRate);
-}
-
-class QSGD3D12RenderThread : public QThread
-{
- Q_OBJECT
-
-public:
- QSGD3D12RenderThread(QSGD3D12ThreadedRenderLoop *rl, QSGRenderContext *renderContext)
- : renderLoop(rl)
- {
- rc = static_cast<QSGD3D12RenderContext *>(renderContext);
- vsyncDelta = qsgrl_animation_interval();
- }
-
- ~QSGD3D12RenderThread()
- {
- delete rc;
- }
-
- bool event(QEvent *e);
- void run();
-
- void syncAndRender();
- void sync(bool inExpose);
-
- void requestRepaint()
- {
- if (sleeping)
- stopEventProcessing = true;
- if (exposedWindow)
- pendingUpdate |= RepaintRequest;
- }
-
- void processEventsAndWaitForMore();
- void processEvents();
- void postEvent(QEvent *e);
-
- enum UpdateRequest {
- SyncRequest = 0x01,
- RepaintRequest = 0x02,
- ExposeRequest = 0x04 | RepaintRequest | SyncRequest
- };
-
- QSGD3D12Engine *engine = nullptr;
- QSGD3D12ThreadedRenderLoop *renderLoop;
- QSGD3D12RenderContext *rc;
- QAnimationDriver *rtAnim = nullptr;
- volatile bool active = false;
- uint pendingUpdate = 0;
- bool sleeping = false;
- bool syncResultedInChanges = false;
- float vsyncDelta;
- QMutex mutex;
- QWaitCondition waitCondition;
- QQuickWindow *exposedWindow = nullptr;
- bool stopEventProcessing = false;
- QSGD3D12EventQueue eventQueue;
- QElapsedTimer threadTimer;
- qint64 syncTime;
- qint64 renderTime;
- qint64 sinceLastTime;
-
-public slots:
- void onSceneGraphChanged() {
- syncResultedInChanges = true;
- }
-};
-
-bool QSGD3D12RenderThread::event(QEvent *e)
-{
- switch (e->type()) {
-
- case WM_Obscure:
- Q_ASSERT(!exposedWindow || exposedWindow == static_cast<QSGD3D12WindowEvent *>(e)->window);
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "RT - WM_Obscure" << exposedWindow;
- mutex.lock();
- if (exposedWindow) {
- QQuickWindowPrivate::get(exposedWindow)->fireAboutToStop();
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - WM_Obscure - window removed");
- exposedWindow = nullptr;
- }
- waitCondition.wakeOne();
- mutex.unlock();
- return true;
-
- case WM_RequestSync: {
- QSGD3D12SyncEvent *wme = static_cast<QSGD3D12SyncEvent *>(e);
- if (sleeping)
- stopEventProcessing = true;
- // One thread+engine for each window. However, the native window may
- // change in some (quite artificial) cases, e.g. due to a hide -
- // destroy - show on the QWindow.
- bool needsWindow = !engine->window();
- if (engine->window() && engine->window() != wme->window->winId()) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - WM_RequestSync - native window handle changes for active engine");
- engine->waitGPU();
- QQuickWindowPrivate::get(wme->window)->cleanupNodesOnShutdown();
- QSGD3D12ShaderEffectNode::cleanupMaterialTypeCache();
- rc->invalidate();
- engine->releaseResources();
- needsWindow = true;
- }
- if (needsWindow) {
- // Must only ever get here when there is no window or releaseResources() has been called.
- const int samples = wme->window->format().samples();
- const bool alpha = wme->window->format().alphaBufferSize() > 0;
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "RT - WM_RequestSync - initializing D3D12 engine" << wme->window
- << wme->size << wme->dpr << samples << alpha;
- engine->attachToWindow(wme->window->winId(), wme->size, wme->dpr, samples, alpha);
- }
- exposedWindow = wme->window;
- engine->setWindowSize(wme->size, wme->dpr);
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "RT - WM_RequestSync" << exposedWindow;
- pendingUpdate |= SyncRequest;
- if (wme->syncInExpose) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - WM_RequestSync - triggered from expose");
- pendingUpdate |= ExposeRequest;
- }
- if (wme->forceRenderPass) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - WM_RequestSync - repaint regardless");
- pendingUpdate |= RepaintRequest;
- }
- return true;
- }
-
- case WM_TryRelease: {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - WM_TryRelease");
- mutex.lock();
- renderLoop->lockedForSync = true;
- QSGD3D12TryReleaseEvent *wme = static_cast<QSGD3D12TryReleaseEvent *>(e);
- // Only when no windows are exposed anymore or we are shutting down.
- if (!exposedWindow || wme->destroying) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - WM_TryRelease - invalidating rc");
- if (wme->window) {
- QQuickWindowPrivate *wd = QQuickWindowPrivate::get(wme->window);
- if (wme->destroying) {
- // QSGNode destruction may release graphics resources in use so wait first.
- engine->waitGPU();
- // Bye bye nodes...
- wd->cleanupNodesOnShutdown();
- QSGD3D12ShaderEffectNode::cleanupMaterialTypeCache();
- }
- rc->invalidate();
- QCoreApplication::processEvents();
- QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
- if (wme->destroying)
- wd->animationController.reset();
- }
- if (wme->destroying)
- active = false;
- if (sleeping)
- stopEventProcessing = true;
- } else {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - WM_TryRelease - not releasing because window is still active");
- }
- waitCondition.wakeOne();
- renderLoop->lockedForSync = false;
- mutex.unlock();
- return true;
- }
-
- case WM_Grab: {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - WM_Grab");
- QSGD3D12GrabEvent *wme = static_cast<QSGD3D12GrabEvent *>(e);
- Q_ASSERT(wme->window);
- Q_ASSERT(wme->window == exposedWindow || !exposedWindow);
- mutex.lock();
- if (wme->window) {
- // Grabbing is generally done by rendering a frame and reading the
- // color buffer contents back, without presenting, and then
- // creating a QImage from the returned data. It is terribly
- // inefficient since it involves a full blocking wait for the GPU.
- // However, our hands are tied by the existing, synchronous APIs of
- // QQuickWindow and such.
- QQuickWindowPrivate *wd = QQuickWindowPrivate::get(wme->window);
- rc->initialize(nullptr);
- wd->syncSceneGraph();
- rc->endSync();
- wd->renderSceneGraph(wme->window->size());
- *wme->image = engine->executeAndWaitReadbackRenderTarget();
- }
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - WM_Grab - waking gui to handle result");
- waitCondition.wakeOne();
- mutex.unlock();
- return true;
- }
-
- case WM_PostJob: {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - WM_PostJob");
- QSGD3D12JobEvent *wme = static_cast<QSGD3D12JobEvent *>(e);
- Q_ASSERT(wme->window == exposedWindow);
- if (exposedWindow) {
- wme->job->run();
- delete wme->job;
- wme->job = nullptr;
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - WM_PostJob - job done");
- }
- return true;
- }
-
- default:
- break;
- }
-
- return QThread::event(e);
-}
-
-void QSGD3D12RenderThread::postEvent(QEvent *e)
-{
- eventQueue.addEvent(e);
-}
-
-void QSGD3D12RenderThread::processEvents()
-{
- while (eventQueue.hasMoreEvents()) {
- QEvent *e = eventQueue.takeEvent(false);
- event(e);
- delete e;
- }
-}
-
-void QSGD3D12RenderThread::processEventsAndWaitForMore()
-{
- stopEventProcessing = false;
- while (!stopEventProcessing) {
- QEvent *e = eventQueue.takeEvent(true);
- event(e);
- delete e;
- }
-}
-
-void QSGD3D12RenderThread::run()
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - run()");
-
- engine = new QSGD3D12Engine;
- rc->setEngine(engine);
-
- rtAnim = rc->sceneGraphContext()->createAnimationDriver(nullptr);
- rtAnim->install();
-
- if (QQmlDebugConnector::service<QQmlProfilerService>())
- QQuickProfiler::registerAnimationCallback();
-
- while (active) {
- if (exposedWindow)
- syncAndRender();
-
- processEvents();
- QCoreApplication::processEvents();
-
- if (pendingUpdate == 0 || !exposedWindow) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - done drawing, sleep");
- sleeping = true;
- processEventsAndWaitForMore();
- sleeping = false;
- }
- }
-
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - run() exiting");
-
- delete rtAnim;
- rtAnim = nullptr;
-
- rc->moveToThread(renderLoop->thread());
- moveToThread(renderLoop->thread());
-
- rc->setEngine(nullptr);
- delete engine;
- engine = nullptr;
-}
-
-void QSGD3D12RenderThread::sync(bool inExpose)
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - sync");
-
- mutex.lock();
- Q_ASSERT_X(renderLoop->lockedForSync, "QSGD3D12RenderThread::sync()", "sync triggered with gui not locked");
-
- // Recover from device loss.
- if (!engine->hasResources()) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - sync - device was lost, resetting scenegraph");
- QQuickWindowPrivate::get(exposedWindow)->cleanupNodesOnShutdown();
- QSGD3D12ShaderEffectNode::cleanupMaterialTypeCache();
- rc->invalidate();
- }
-
- if (engine->window()) {
- QQuickWindowPrivate *wd = QQuickWindowPrivate::get(exposedWindow);
- bool hadRenderer = wd->renderer != nullptr;
- // If the scene graph was touched since the last sync() make sure it sends the
- // changed signal.
- if (wd->renderer)
- wd->renderer->clearChangedFlag();
-
- rc->initialize(nullptr);
- wd->syncSceneGraph();
- rc->endSync();
-
- if (!hadRenderer && wd->renderer) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - created renderer");
- syncResultedInChanges = true;
- connect(wd->renderer, &QSGRenderer::sceneGraphChanged, this,
- &QSGD3D12RenderThread::onSceneGraphChanged, Qt::DirectConnection);
- }
-
- // Process deferred deletes now, directly after the sync as deleteLater
- // on the GUI must now also have resulted in SG changes and the delete
- // is a safe operation.
- QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
- }
-
- if (!inExpose) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - sync complete, waking gui");
- waitCondition.wakeOne();
- mutex.unlock();
- }
-}
-
-void QSGD3D12RenderThread::syncAndRender()
-{
- if (Q_UNLIKELY(debug_time())) {
- sinceLastTime = threadTimer.nsecsElapsed();
- threadTimer.start();
- }
- Q_QUICK_SG_PROFILE_START(QQuickProfiler::SceneGraphRenderLoopFrame);
-
- QElapsedTimer waitTimer;
- waitTimer.start();
-
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - syncAndRender()");
-
- syncResultedInChanges = false;
- QQuickWindowPrivate *wd = QQuickWindowPrivate::get(exposedWindow);
-
- const bool repaintRequested = (pendingUpdate & RepaintRequest) || wd->customRenderStage;
- const bool syncRequested = pendingUpdate & SyncRequest;
- const bool exposeRequested = (pendingUpdate & ExposeRequest) == ExposeRequest;
- pendingUpdate = 0;
-
- if (syncRequested)
- sync(exposeRequested);
-
-#ifndef QSG_NO_RENDER_TIMING
- if (Q_UNLIKELY(debug_time()))
- syncTime = threadTimer.nsecsElapsed();
-#endif
- Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRenderLoopFrame,
- QQuickProfiler::SceneGraphRenderLoopSync);
-
- if (!syncResultedInChanges && !repaintRequested) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - no changes, render aborted");
- int waitTime = vsyncDelta - (int) waitTimer.elapsed();
- if (waitTime > 0)
- msleep(waitTime);
- return;
- }
-
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - rendering started");
-
- if (rtAnim->isRunning()) {
- wd->animationController->lock();
- rtAnim->advance();
- wd->animationController->unlock();
- }
-
- bool canRender = wd->renderer != nullptr;
- // Recover from device loss.
- if (!engine->hasResources()) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - syncAndRender - device was lost, posting FullUpdateRequest");
- // Cannot do anything here because gui is not locked. Request a new
- // sync+render round on the gui thread and let the sync handle it.
- QCoreApplication::postEvent(exposedWindow, new QEvent(QEvent::Type(QQuickWindowPrivate::FullUpdateRequest)));
- canRender = false;
- }
-
- if (canRender) {
- wd->renderSceneGraph(engine->windowSize());
- if (Q_UNLIKELY(debug_time()))
- renderTime = threadTimer.nsecsElapsed();
- Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRenderLoopFrame,
- QQuickProfiler::SceneGraphRenderLoopRender);
-
- // The engine is able to have multiple frames in flight. This in effect is
- // similar to BufferQueueingOpenGL. Provide an env var to force the
- // traditional blocking swap behavior, just in case.
- static bool blockOnEachFrame = qEnvironmentVariableIntValue("QT_D3D_BLOCKING_PRESENT") != 0;
-
- if (!wd->customRenderStage || !wd->customRenderStage->swap())
- engine->present();
-
- if (blockOnEachFrame)
- engine->waitGPU();
-
- // The concept of "frame swaps" is quite misleading by default, when
- // blockOnEachFrame is not used, but emit it for compatibility.
- wd->fireFrameSwapped();
- } else {
- Q_QUICK_SG_PROFILE_SKIP(QQuickProfiler::SceneGraphRenderLoopFrame,
- QQuickProfiler::SceneGraphRenderLoopSync, 1);
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - window not ready, skipping render");
- }
-
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - rendering done");
-
- if (exposeRequested) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("RT - wake gui after initial expose");
- waitCondition.wakeOne();
- mutex.unlock();
- }
-
- if (Q_UNLIKELY(debug_time()))
- qDebug("Frame rendered with 'd3d12' renderloop in %dms, sync=%d, render=%d, swap=%d - (on render thread)",
- int(threadTimer.elapsed()),
- int((syncTime/1000000)),
- int((renderTime - syncTime) / 1000000),
- int(threadTimer.elapsed() - renderTime / 1000000));
-
- Q_QUICK_SG_PROFILE_END(QQuickProfiler::SceneGraphRenderLoopFrame,
- QQuickProfiler::SceneGraphRenderLoopSwap);
-
- static int devLossTest = qEnvironmentVariableIntValue("QT_D3D_TEST_DEVICE_LOSS");
- if (devLossTest > 0) {
- static QElapsedTimer kt;
- static bool timerRunning = false;
- if (!timerRunning) {
- kt.start();
- timerRunning = true;
- } else if (kt.elapsed() > 5000) {
- --devLossTest;
- kt.restart();
- engine->simulateDeviceLoss();
- }
- }
-}
-
-template<class T> T *windowFor(const QVector<T> &list, QQuickWindow *window)
-{
- for (const T &t : list) {
- if (t.window == window)
- return const_cast<T *>(&t);
- }
- return nullptr;
-}
-
-QSGD3D12ThreadedRenderLoop::QSGD3D12ThreadedRenderLoop()
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug("d3d12 THREADED render loop ctor");
-
- sg = new QSGD3D12Context;
-
- anim = sg->createAnimationDriver(this);
- connect(anim, &QAnimationDriver::started, this, &QSGD3D12ThreadedRenderLoop::onAnimationStarted);
- connect(anim, &QAnimationDriver::stopped, this, &QSGD3D12ThreadedRenderLoop::onAnimationStopped);
- anim->install();
-}
-
-QSGD3D12ThreadedRenderLoop::~QSGD3D12ThreadedRenderLoop()
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug("d3d12 THREADED render loop dtor");
-
- delete sg;
-}
-
-void QSGD3D12ThreadedRenderLoop::show(QQuickWindow *window)
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "show" << window;
-}
-
-void QSGD3D12ThreadedRenderLoop::hide(QQuickWindow *window)
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "hide" << window;
-
- if (window->isExposed())
- handleObscurity(windowFor(windows, window));
-
- releaseResources(window);
-}
-
-void QSGD3D12ThreadedRenderLoop::resize(QQuickWindow *window)
-{
- if (!window->isExposed() || window->size().isEmpty())
- return;
-
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "resize" << window << window->size();
-}
-
-void QSGD3D12ThreadedRenderLoop::windowDestroyed(QQuickWindow *window)
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "window destroyed" << window;
-
- WindowData *w = windowFor(windows, window);
- if (!w)
- return;
-
- handleObscurity(w);
- handleResourceRelease(w, true);
-
- QSGD3D12RenderThread *thread = w->thread;
- while (thread->isRunning())
- QThread::yieldCurrentThread();
-
- Q_ASSERT(thread->thread() == QThread::currentThread());
- delete thread;
-
- for (int i = 0; i < windows.size(); ++i) {
- if (windows.at(i).window == window) {
- windows.removeAt(i);
- break;
- }
- }
-
- // Now that we altered the window list, we may need to stop the animation
- // timer even if we didn't via handleObscurity. This covers the case where
- // we destroy a visible & exposed QQuickWindow.
- startOrStopAnimationTimer();
-}
-
-void QSGD3D12ThreadedRenderLoop::exposureChanged(QQuickWindow *window)
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "exposure changed" << window;
-
- if (window->isExposed()) {
- handleExposure(window);
- } else {
- WindowData *w = windowFor(windows, window);
- if (w)
- handleObscurity(w);
- }
-}
-
-QImage QSGD3D12ThreadedRenderLoop::grab(QQuickWindow *window)
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "grab" << window;
-
- WindowData *w = windowFor(windows, window);
- // Have to support invisible (but created()'ed) windows as well.
- // Unlike with GL, leaving that case for QQuickWindow to handle is not feasible.
- const bool tempExpose = !w;
- if (tempExpose) {
- handleExposure(window);
- w = windowFor(windows, window);
- Q_ASSERT(w);
- }
-
- if (!w->thread->isRunning())
- return QImage();
-
- if (!window->handle())
- window->create();
-
- QQuickWindowPrivate *wd = QQuickWindowPrivate::get(window);
- wd->polishItems();
-
- QImage result;
- w->thread->mutex.lock();
- lockedForSync = true;
- w->thread->postEvent(new QSGD3D12GrabEvent(window, &result));
- w->thread->waitCondition.wait(&w->thread->mutex);
- lockedForSync = false;
- w->thread->mutex.unlock();
-
- result.setDevicePixelRatio(window->effectiveDevicePixelRatio());
-
- if (tempExpose)
- handleObscurity(w);
-
- return result;
-}
-
-void QSGD3D12ThreadedRenderLoop::update(QQuickWindow *window)
-{
- WindowData *w = windowFor(windows, window);
- if (!w)
- return;
-
- if (w->thread == QThread::currentThread()) {
- w->thread->requestRepaint();
- return;
- }
-
- // We set forceRenderPass because we want to make sure the QQuickWindow
- // actually does a full render pass after the next sync.
- w->forceRenderPass = true;
- scheduleUpdate(w);
-}
-
-void QSGD3D12ThreadedRenderLoop::maybeUpdate(QQuickWindow *window)
-{
- WindowData *w = windowFor(windows, window);
- if (w)
- scheduleUpdate(w);
-}
-
-// called in response to window->requestUpdate()
-void QSGD3D12ThreadedRenderLoop::handleUpdateRequest(QQuickWindow *window)
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "handleUpdateRequest" << window;
-
- WindowData *w = windowFor(windows, window);
- if (w)
- polishAndSync(w, false);
-}
-
-QAnimationDriver *QSGD3D12ThreadedRenderLoop::animationDriver() const
-{
- return anim;
-}
-
-QSGContext *QSGD3D12ThreadedRenderLoop::sceneGraphContext() const
-{
- return sg;
-}
-
-QSGRenderContext *QSGD3D12ThreadedRenderLoop::createRenderContext(QSGContext *) const
-{
- return sg->createRenderContext();
-}
-
-void QSGD3D12ThreadedRenderLoop::releaseResources(QQuickWindow *window)
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "releaseResources" << window;
-
- WindowData *w = windowFor(windows, window);
- if (w)
- handleResourceRelease(w, false);
-}
-
-void QSGD3D12ThreadedRenderLoop::postJob(QQuickWindow *window, QRunnable *job)
-{
- WindowData *w = windowFor(windows, window);
- if (w && w->thread && w->thread->exposedWindow)
- w->thread->postEvent(new QSGD3D12JobEvent(window, job));
- else
- delete job;
-}
-
-QSurface::SurfaceType QSGD3D12ThreadedRenderLoop::windowSurfaceType() const
-{
- return QSurface::OpenGLSurface;
-}
-
-bool QSGD3D12ThreadedRenderLoop::interleaveIncubation() const
-{
- bool somethingVisible = false;
- for (const WindowData &w : windows) {
- if (w.window->isVisible() && w.window->isExposed()) {
- somethingVisible = true;
- break;
- }
- }
- return somethingVisible && anim->isRunning();
-}
-
-int QSGD3D12ThreadedRenderLoop::flags() const
-{
- return SupportsGrabWithoutExpose;
-}
-
-bool QSGD3D12ThreadedRenderLoop::event(QEvent *e)
-{
- if (e->type() == QEvent::Timer) {
- QTimerEvent *te = static_cast<QTimerEvent *>(e);
- if (te->timerId() == animationTimer) {
- anim->advance();
- emit timeToIncubate();
- return true;
- }
- }
-
- return QObject::event(e);
-}
-
-void QSGD3D12ThreadedRenderLoop::onAnimationStarted()
-{
- startOrStopAnimationTimer();
-
- for (const WindowData &w : qAsConst(windows))
- w.window->requestUpdate();
-}
-
-void QSGD3D12ThreadedRenderLoop::onAnimationStopped()
-{
- startOrStopAnimationTimer();
-}
-
-void QSGD3D12ThreadedRenderLoop::startOrStopAnimationTimer()
-{
- int exposedWindowCount = 0;
- const WindowData *exposed = nullptr;
-
- for (int i = 0; i < windows.size(); ++i) {
- const WindowData &w(windows[i]);
- if (w.window->isVisible() && w.window->isExposed()) {
- ++exposedWindowCount;
- exposed = &w;
- }
- }
-
- if (animationTimer && (exposedWindowCount == 1 || !anim->isRunning())) {
- killTimer(animationTimer);
- animationTimer = 0;
- // If animations are running, make sure we keep on animating
- if (anim->isRunning())
- exposed->window->requestUpdate();
- } else if (!animationTimer && exposedWindowCount != 1 && anim->isRunning()) {
- animationTimer = startTimer(qsgrl_animation_interval());
- }
-}
-
-void QSGD3D12ThreadedRenderLoop::handleExposure(QQuickWindow *window)
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "handleExposure" << window;
-
- WindowData *w = windowFor(windows, window);
- if (!w) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("adding window to list");
- WindowData win;
- win.window = window;
- QSGRenderContext *rc = QQuickWindowPrivate::get(window)->context; // will transfer ownership
- win.thread = new QSGD3D12RenderThread(this, rc);
- win.updateDuringSync = false;
- win.forceRenderPass = true; // also covered by polishAndSync(inExpose=true), but doesn't hurt
- windows.append(win);
- w = &windows.last();
- }
-
- // set this early as we'll be rendering shortly anyway and this avoids
- // special casing exposure in polishAndSync.
- w->thread->exposedWindow = window;
-
- if (w->window->size().isEmpty()
- || (w->window->isTopLevel() && !w->window->geometry().intersects(w->window->screen()->availableGeometry()))) {
-#ifndef QT_NO_DEBUG
- qWarning().noquote().nospace() << "QSGD3D12ThreadedRenderLoop: expose event received for window "
- << w->window << " with invalid geometry: " << w->window->geometry()
- << " on " << w->window->screen();
-#endif
- }
-
- if (!w->window->handle())
- w->window->create();
-
- // Start render thread if it is not running
- if (!w->thread->isRunning()) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("starting render thread");
- // Push a few things to the render thread.
- QQuickAnimatorController *controller = QQuickWindowPrivate::get(w->window)->animationController.data();
- if (controller->thread() != w->thread)
- controller->moveToThread(w->thread);
- if (w->thread->thread() == QThread::currentThread()) {
- w->thread->rc->moveToThread(w->thread);
- w->thread->moveToThread(w->thread);
- }
-
- w->thread->active = true;
- w->thread->start();
-
- if (!w->thread->isRunning())
- qFatal("Render thread failed to start, aborting application.");
- }
-
- polishAndSync(w, true);
-
- startOrStopAnimationTimer();
-}
-
-void QSGD3D12ThreadedRenderLoop::handleObscurity(WindowData *w)
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "handleObscurity" << w->window;
-
- if (w->thread->isRunning()) {
- w->thread->mutex.lock();
- w->thread->postEvent(new QSGD3D12WindowEvent(w->window, WM_Obscure));
- w->thread->waitCondition.wait(&w->thread->mutex);
- w->thread->mutex.unlock();
- }
-
- startOrStopAnimationTimer();
-}
-
-void QSGD3D12ThreadedRenderLoop::scheduleUpdate(WindowData *w)
-{
- if (!QCoreApplication::instance())
- return;
-
- if (!w || !w->thread->isRunning())
- return;
-
- QThread *current = QThread::currentThread();
- if (current != QCoreApplication::instance()->thread() && (current != w->thread || !lockedForSync)) {
- qWarning() << "Updates can only be scheduled from GUI thread or from QQuickItem::updatePaintNode()";
- return;
- }
-
- if (current == w->thread) {
- w->updateDuringSync = true;
- return;
- }
-
- w->window->requestUpdate();
-}
-
-void QSGD3D12ThreadedRenderLoop::handleResourceRelease(WindowData *w, bool destroying)
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "handleResourceRelease" << (destroying ? "destroying" : "hide/releaseResources") << w->window;
-
- w->thread->mutex.lock();
- if (w->thread->isRunning() && w->thread->active) {
- QQuickWindow *window = w->window;
-
- // Note that window->handle() is typically null by this time because
- // the platform window is already destroyed. This should not be a
- // problem for the D3D cleanup.
-
- w->thread->postEvent(new QSGD3D12TryReleaseEvent(window, destroying));
- w->thread->waitCondition.wait(&w->thread->mutex);
-
- // Avoid a shutdown race condition.
- // If SG is invalidated and 'active' becomes false, the thread's run()
- // method will exit. handleExposure() relies on QThread::isRunning() (because it
- // potentially needs to start the thread again) and our mutex cannot be used to
- // track the thread stopping, so we wait a few nanoseconds extra so the thread
- // can exit properly.
- if (!w->thread->active)
- w->thread->wait();
- }
- w->thread->mutex.unlock();
-}
-
-void QSGD3D12ThreadedRenderLoop::polishAndSync(WindowData *w, bool inExpose)
-{
- if (Q_UNLIKELY(debug_loop()))
- qDebug() << "polishAndSync" << (inExpose ? "(in expose)" : "(normal)") << w->window;
-
- QQuickWindow *window = w->window;
- if (!w->thread || !w->thread->exposedWindow) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("polishAndSync - not exposed, abort");
- return;
- }
-
- // Flush pending touch events.
- QQuickWindowPrivate::get(window)->flushFrameSynchronousEvents();
- // The delivery of the event might have caused the window to stop rendering
- w = windowFor(windows, window);
- if (!w || !w->thread || !w->thread->exposedWindow) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("polishAndSync - removed after touch event flushing, abort");
- return;
- }
-
- QElapsedTimer timer;
- qint64 polishTime = 0;
- qint64 waitTime = 0;
- qint64 syncTime = 0;
- if (Q_UNLIKELY(debug_time()))
- timer.start();
- Q_QUICK_SG_PROFILE_START(QQuickProfiler::SceneGraphPolishAndSync);
-
- QQuickWindowPrivate *wd = QQuickWindowPrivate::get(window);
- wd->polishItems();
-
- if (Q_UNLIKELY(debug_time()))
- polishTime = timer.nsecsElapsed();
- Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphPolishAndSync,
- QQuickProfiler::SceneGraphPolishAndSyncPolish);
-
- w->updateDuringSync = false;
-
- emit window->afterAnimating();
-
- if (Q_UNLIKELY(debug_loop()))
- qDebug("polishAndSync - lock for sync");
- w->thread->mutex.lock();
- lockedForSync = true;
- w->thread->postEvent(new QSGD3D12SyncEvent(window, inExpose, w->forceRenderPass));
- w->forceRenderPass = false;
-
- if (Q_UNLIKELY(debug_loop()))
- qDebug("polishAndSync - wait for sync");
- if (Q_UNLIKELY(debug_time()))
- waitTime = timer.nsecsElapsed();
- Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphPolishAndSync,
- QQuickProfiler::SceneGraphPolishAndSyncWait);
- w->thread->waitCondition.wait(&w->thread->mutex);
- lockedForSync = false;
- w->thread->mutex.unlock();
- if (Q_UNLIKELY(debug_loop()))
- qDebug("polishAndSync - unlock after sync");
-
- if (Q_UNLIKELY(debug_time()))
- syncTime = timer.nsecsElapsed();
- Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphPolishAndSync,
- QQuickProfiler::SceneGraphPolishAndSyncSync);
-
- if (!animationTimer && anim->isRunning()) {
- if (Q_UNLIKELY(debug_loop()))
- qDebug("polishAndSync - advancing animations");
- anim->advance();
- // We need to trigger another sync to keep animations running...
- w->window->requestUpdate();
- emit timeToIncubate();
- } else if (w->updateDuringSync) {
- w->window->requestUpdate();
- }
-
- if (Q_UNLIKELY(debug_time()))
- qDebug().nospace()
- << "Frame prepared with 'd3d12' renderloop"
- << ", polish=" << (polishTime / 1000000)
- << ", lock=" << (waitTime - polishTime) / 1000000
- << ", blockedForSync=" << (syncTime - waitTime) / 1000000
- << ", animations=" << (timer.nsecsElapsed() - syncTime) / 1000000
- << " - (on gui thread) " << window;
-
- Q_QUICK_SG_PROFILE_END(QQuickProfiler::SceneGraphPolishAndSync,
- QQuickProfiler::SceneGraphPolishAndSyncAnimations);
-}
-
-#include "qsgd3d12threadedrenderloop.moc"
-
-QT_END_NAMESPACE
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12threadedrenderloop_p.h b/src/plugins/scenegraph/d3d12/qsgd3d12threadedrenderloop_p.h
deleted file mode 100644
index 46f62948f1..0000000000
--- a/src/plugins/scenegraph/d3d12/qsgd3d12threadedrenderloop_p.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSGD3D12THREADEDRENDERLOOP_P_H
-#define QSGD3D12THREADEDRENDERLOOP_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <private/qsgrenderloop_p.h>
-
-QT_BEGIN_NAMESPACE
-
-class QSGD3D12Engine;
-class QSGD3D12Context;
-class QSGD3D12RenderContext;
-class QSGD3D12RenderThread;
-
-class QSGD3D12ThreadedRenderLoop : public QSGRenderLoop
-{
- Q_OBJECT
-
-public:
- QSGD3D12ThreadedRenderLoop();
- ~QSGD3D12ThreadedRenderLoop();
-
- void show(QQuickWindow *window) override;
- void hide(QQuickWindow *window) override;
- void resize(QQuickWindow *window) override;
-
- void windowDestroyed(QQuickWindow *window) override;
-
- void exposureChanged(QQuickWindow *window) override;
-
- QImage grab(QQuickWindow *window) override;
-
- void update(QQuickWindow *window) override;
- void maybeUpdate(QQuickWindow *window) override;
- void handleUpdateRequest(QQuickWindow *window) override;
-
- QAnimationDriver *animationDriver() const override;
-
- QSGContext *sceneGraphContext() const override;
- QSGRenderContext *createRenderContext(QSGContext *) const override;
-
- void releaseResources(QQuickWindow *window) override;
- void postJob(QQuickWindow *window, QRunnable *job) override;
-
- QSurface::SurfaceType windowSurfaceType() const override;
- bool interleaveIncubation() const override;
- int flags() const override;
-
- bool event(QEvent *e) override;
-
-public Q_SLOTS:
- void onAnimationStarted();
- void onAnimationStopped();
-
-private:
- struct WindowData {
- QQuickWindow *window;
- QSGD3D12RenderThread *thread;
- uint updateDuringSync : 1;
- uint forceRenderPass : 1;
- };
-
- void startOrStopAnimationTimer();
- void handleExposure(QQuickWindow *window);
- void handleObscurity(WindowData *w);
- void scheduleUpdate(WindowData *w);
- void handleResourceRelease(WindowData *w, bool destroying);
- void polishAndSync(WindowData *w, bool inExpose);
-
- QSGD3D12Context *sg;
- QAnimationDriver *anim;
- int animationTimer = 0;
- bool lockedForSync = false;
- QVector<WindowData> windows;
-
- friend class QSGD3D12RenderThread;
-};
-
-QT_END_NAMESPACE
-
-#endif // QSGD3D12THREADEDRENDERLOOP_P_H
diff --git a/src/plugins/scenegraph/d3d12/shaders/flatcolor.hlsl b/src/plugins/scenegraph/d3d12/shaders/flatcolor.hlsl
deleted file mode 100644
index 034b51435a..0000000000
--- a/src/plugins/scenegraph/d3d12/shaders/flatcolor.hlsl
+++ /dev/null
@@ -1,27 +0,0 @@
-struct VSInput
-{
- float4 position : POSITION;
-};
-
-cbuffer ConstantBuffer : register(b0)
-{
- float4x4 mvp;
- float4 color;
-};
-
-struct PSInput
-{
- float4 position : SV_POSITION;
-};
-
-PSInput VS_FlatColor(VSInput input)
-{
- PSInput result;
- result.position = mul(mvp, input.position);
- return result;
-}
-
-float4 PS_FlatColor(PSInput input) : SV_TARGET
-{
- return color;
-}
diff --git a/src/plugins/scenegraph/d3d12/shaders/mipmapgen.hlsl b/src/plugins/scenegraph/d3d12/shaders/mipmapgen.hlsl
deleted file mode 100644
index 6793b534b0..0000000000
--- a/src/plugins/scenegraph/d3d12/shaders/mipmapgen.hlsl
+++ /dev/null
@@ -1,60 +0,0 @@
-static const uint GROUP_DIM = 8; // 2 ^ (out_mip_count - 1)
-
-Texture2D tex : register(t0);
-SamplerState samp : register(s0);
-
-cbuffer ConstantBuffer : register(b0)
-{
- uint2 mip1Size;
- uint sampleLevel;
- uint totalMips;
-}
-
-RWTexture2D<float4> mip1 : register(u0);
-RWTexture2D<float4> mip2 : register(u1);
-RWTexture2D<float4> mip3 : register(u2);
-RWTexture2D<float4> mip4 : register(u3);
-
-groupshared float4 groupColor[GROUP_DIM][GROUP_DIM];
-
-[numthreads(GROUP_DIM, GROUP_DIM, 1)]
-void CS_Generate4MipMaps(uint3 localId: SV_GroupThreadId, uint3 globalId: SV_DispatchThreadID)
-{
- const float2 coord = float2(1.0f / float(mip1Size.x), 1.0f / float(mip1Size.y)) * (globalId.xy + 0.5);
- float4 c = tex.SampleLevel(samp, coord, sampleLevel);
-
- mip1[globalId.xy] = c;
- groupColor[localId.y][localId.x] = c;
-
- if (sampleLevel + 1 >= totalMips)
- return;
-
- GroupMemoryBarrierWithGroupSync();
-
- if ((localId.x & 1) == 0 && (localId.y & 1) == 0) {
- c = (c + groupColor[localId.y][localId.x + 1] + groupColor[localId.y + 1][localId.x] + groupColor[localId.y + 1][localId.x + 1]) / 4.0;
- mip2[globalId.xy / 2] = c;
- groupColor[localId.y][localId.x] = c;
- }
-
- if (sampleLevel + 2 >= totalMips)
- return;
-
- GroupMemoryBarrierWithGroupSync();
-
- if ((localId.x & 3) == 0 && (localId.y & 3) == 0) {
- c = (c + groupColor[localId.y][localId.x + 2] + groupColor[localId.y + 2][localId.x] + groupColor[localId.y + 2][localId.x + 2]) / 4.0;
- mip3[globalId.xy / 4] = c;
- groupColor[localId.y][localId.x] = c;
- }
-
- if (sampleLevel + 3 >= totalMips)
- return;
-
- GroupMemoryBarrierWithGroupSync();
-
- if ((localId.x & 7) == 0 && (localId.y & 7) == 0) {
- c = (c + groupColor[localId.y][localId.x + 3] + groupColor[localId.y + 3][localId.x] + groupColor[localId.y + 3][localId.x + 3]) / 4.0;
- mip4[globalId.xy / 8] = c;
- }
-}
diff --git a/src/plugins/scenegraph/d3d12/shaders/shadereffectdefault.hlsl b/src/plugins/scenegraph/d3d12/shaders/shadereffectdefault.hlsl
deleted file mode 100644
index 94672d6267..0000000000
--- a/src/plugins/scenegraph/d3d12/shaders/shadereffectdefault.hlsl
+++ /dev/null
@@ -1,27 +0,0 @@
-cbuffer ConstantBuffer : register(b0)
-{
- float4x4 qt_Matrix;
- float qt_Opacity;
-};
-
-struct PSInput
-{
- float4 position : SV_POSITION;
- float2 coord : TEXCOORD0;
-};
-
-Texture2D source : register(t0);
-SamplerState sourceSampler : register(s0);
-
-PSInput VS_DefaultShaderEffect(float4 position : POSITION, float2 coord : TEXCOORD0)
-{
- PSInput result;
- result.position = mul(qt_Matrix, position);
- result.coord = coord;
- return result;
-}
-
-float4 PS_DefaultShaderEffect(PSInput input) : SV_TARGET
-{
- return source.Sample(sourceSampler, input.coord) * qt_Opacity;
-}
diff --git a/src/plugins/scenegraph/d3d12/shaders/shaders.pri b/src/plugins/scenegraph/d3d12/shaders/shaders.pri
deleted file mode 100644
index 963f4c5d8c..0000000000
--- a/src/plugins/scenegraph/d3d12/shaders/shaders.pri
+++ /dev/null
@@ -1,141 +0,0 @@
-vertexcolor_VSPS = $$PWD/vertexcolor.hlsl
-vertexcolor_vshader.input = vertexcolor_VSPS
-vertexcolor_vshader.header = vs_vertexcolor.hlslh
-vertexcolor_vshader.entry = VS_VertexColor
-vertexcolor_vshader.type = vs_5_0
-vertexcolor_pshader.input = vertexcolor_VSPS
-vertexcolor_pshader.header = ps_vertexcolor.hlslh
-vertexcolor_pshader.entry = PS_VertexColor
-vertexcolor_pshader.type = ps_5_0
-
-flatcolor_VSPS = $$PWD/flatcolor.hlsl
-flatcolor_vshader.input = flatcolor_VSPS
-flatcolor_vshader.header = vs_flatcolor.hlslh
-flatcolor_vshader.entry = VS_FlatColor
-flatcolor_vshader.type = vs_5_0
-flatcolor_pshader.input = flatcolor_VSPS
-flatcolor_pshader.header = ps_flatcolor.hlslh
-flatcolor_pshader.entry = PS_FlatColor
-flatcolor_pshader.type = ps_5_0
-
-stencilclip_VSPS = $$PWD/stencilclip.hlsl
-stencilclip_vshader.input = stencilclip_VSPS
-stencilclip_vshader.header = vs_stencilclip.hlslh
-stencilclip_vshader.entry = VS_StencilClip
-stencilclip_vshader.type = vs_5_0
-stencilclip_pshader.input = stencilclip_VSPS
-stencilclip_pshader.header = ps_stencilclip.hlslh
-stencilclip_pshader.entry = PS_StencilClip
-stencilclip_pshader.type = ps_5_0
-
-smoothcolor_VSPS = $$PWD/smoothcolor.hlsl
-smoothcolor_vshader.input = smoothcolor_VSPS
-smoothcolor_vshader.header = vs_smoothcolor.hlslh
-smoothcolor_vshader.entry = VS_SmoothColor
-smoothcolor_vshader.type = vs_5_0
-smoothcolor_pshader.input = smoothcolor_VSPS
-smoothcolor_pshader.header = ps_smoothcolor.hlslh
-smoothcolor_pshader.entry = PS_SmoothColor
-smoothcolor_pshader.type = ps_5_0
-
-texture_VSPS = $$PWD/texture.hlsl
-texture_vshader.input = texture_VSPS
-texture_vshader.header = vs_texture.hlslh
-texture_vshader.entry = VS_Texture
-texture_vshader.type = vs_5_0
-texture_pshader.input = texture_VSPS
-texture_pshader.header = ps_texture.hlslh
-texture_pshader.entry = PS_Texture
-texture_pshader.type = ps_5_0
-
-smoothtexture_VSPS = $$PWD/smoothtexture.hlsl
-smoothtexture_vshader.input = smoothtexture_VSPS
-smoothtexture_vshader.header = vs_smoothtexture.hlslh
-smoothtexture_vshader.entry = VS_SmoothTexture
-smoothtexture_vshader.type = vs_5_0
-smoothtexture_pshader.input = smoothtexture_VSPS
-smoothtexture_pshader.header = ps_smoothtexture.hlslh
-smoothtexture_pshader.entry = PS_SmoothTexture
-smoothtexture_pshader.type = ps_5_0
-
-mipmapgen_CS = $$PWD/mipmapgen.hlsl
-mipmapgen_cshader.input = mipmapgen_CS
-mipmapgen_cshader.header = cs_mipmapgen.hlslh
-mipmapgen_cshader.entry = CS_Generate4MipMaps
-mipmapgen_cshader.type = cs_5_0
-
-textmask_VSPS = $$PWD/textmask.hlsl
-textmask_vshader.input = textmask_VSPS
-textmask_vshader.header = vs_textmask.hlslh
-textmask_vshader.entry = VS_TextMask
-textmask_vshader.type = vs_5_0
-textmask_pshader24.input = textmask_VSPS
-textmask_pshader24.header = ps_textmask24.hlslh
-textmask_pshader24.entry = PS_TextMask24
-textmask_pshader24.type = ps_5_0
-textmask_pshader32.input = textmask_VSPS
-textmask_pshader32.header = ps_textmask32.hlslh
-textmask_pshader32.entry = PS_TextMask32
-textmask_pshader32.type = ps_5_0
-textmask_pshader8.input = textmask_VSPS
-textmask_pshader8.header = ps_textmask8.hlslh
-textmask_pshader8.entry = PS_TextMask8
-textmask_pshader8.type = ps_5_0
-styledtext_vshader.input = textmask_VSPS
-styledtext_vshader.header = vs_styledtext.hlslh
-styledtext_vshader.entry = VS_StyledText
-styledtext_vshader.type = vs_5_0
-styledtext_pshader.input = textmask_VSPS
-styledtext_pshader.header = ps_styledtext.hlslh
-styledtext_pshader.entry = PS_StyledText
-styledtext_pshader.type = ps_5_0
-outlinedtext_vshader.input = textmask_VSPS
-outlinedtext_vshader.header = vs_outlinedtext.hlslh
-outlinedtext_vshader.entry = VS_OutlinedText
-outlinedtext_vshader.type = vs_5_0
-outlinedtext_pshader.input = textmask_VSPS
-outlinedtext_pshader.header = ps_outlinedtext.hlslh
-outlinedtext_pshader.entry = PS_OutlinedText
-outlinedtext_pshader.type = ps_5_0
-
-shadereffectdefault_VSPS = $$PWD/shadereffectdefault.hlsl
-shadereffectdefault_vshader.input = shadereffectdefault_VSPS
-shadereffectdefault_vshader.header = vs_shadereffectdefault.hlslh
-shadereffectdefault_vshader.entry = VS_DefaultShaderEffect
-shadereffectdefault_vshader.type = vs_5_0
-shadereffectdefault_pshader.input = shadereffectdefault_VSPS
-shadereffectdefault_pshader.header = ps_shadereffectdefault.hlslh
-shadereffectdefault_pshader.entry = PS_DefaultShaderEffect
-shadereffectdefault_pshader.type = ps_5_0
-
-sprite_VSPS = $$PWD/sprite.hlsl
-sprite_vshader.input = sprite_VSPS
-sprite_vshader.header = vs_sprite.hlslh
-sprite_vshader.entry = VS_Sprite
-sprite_vshader.type = vs_5_0
-sprite_pshader.input = sprite_VSPS
-sprite_pshader.header = ps_sprite.hlslh
-sprite_pshader.entry = PS_Sprite
-sprite_pshader.type = ps_5_0
-
-tdr_CS = $$PWD/tdr.hlsl
-tdr_cshader.input = tdr_CS
-tdr_cshader.header = cs_tdr.hlslh
-tdr_cshader.entry = timeout
-tdr_cshader.type = cs_5_0
-
-HLSL_SHADERS = \
- vertexcolor_vshader vertexcolor_pshader \
- flatcolor_vshader flatcolor_pshader \
- stencilclip_vshader stencilclip_pshader \
- smoothcolor_vshader smoothcolor_pshader \
- texture_vshader texture_pshader \
- smoothtexture_vshader smoothtexture_pshader \
- mipmapgen_cshader \
- textmask_vshader textmask_pshader24 textmask_pshader32 textmask_pshader8 \
- styledtext_vshader styledtext_pshader outlinedtext_vshader outlinedtext_pshader \
- shadereffectdefault_vshader shadereffectdefault_pshader \
- sprite_vshader sprite_pshader \
- tdr_cshader
-
-load(hlsl_bytecode_header)
diff --git a/src/plugins/scenegraph/d3d12/shaders/smoothcolor.hlsl b/src/plugins/scenegraph/d3d12/shaders/smoothcolor.hlsl
deleted file mode 100644
index 4f69eea60f..0000000000
--- a/src/plugins/scenegraph/d3d12/shaders/smoothcolor.hlsl
+++ /dev/null
@@ -1,64 +0,0 @@
-struct VSInput
-{
- float4 position : POSITION;
- float4 color : COLOR;
- float2 offset : TEXCOORD0;
-};
-
-cbuffer ConstantBuffer : register(b0)
-{
- float4x4 mvp;
- float opacity;
- float2 pixelSize;
-};
-
-struct PSInput
-{
- float4 position : SV_POSITION;
- float4 color : COLOR;
-};
-
-PSInput VS_SmoothColor(VSInput input)
-{
- PSInput result;
-
- float4 pos = mul(mvp, input.position);
-
- if (input.offset.x != 0.0) {
- // In HLSL matrix packing is column-major by default (which is good) but the math is row-major (unlike GLSL).
- float4 delta = float4(mvp._11, mvp._21, mvp._31, mvp._41) * input.offset.x;
- float2 dir = delta.xy * pos.w - pos.xy * delta.w;
- float2 ndir = 0.5 * pixelSize * normalize(dir / pixelSize);
- dir -= ndir * delta.w * pos.w;
- float numerator = dot(dir, ndir * pos.w * pos.w);
- float scale = 0.0;
- if (numerator < 0.0)
- scale = 1.0;
- else
- scale = min(1.0, numerator / dot(dir, dir));
- pos += scale * delta;
- }
-
- if (input.offset.y != 0.0) {
- float4 delta = float4(mvp._12, mvp._22, mvp._32, mvp._42) * input.offset.y;
- float2 dir = delta.xy * pos.w - pos.xy * delta.w;
- float2 ndir = 0.5 * pixelSize * normalize(dir / pixelSize);
- dir -= ndir * delta.w * pos.w;
- float numerator = dot(dir, ndir * pos.w * pos.w);
- float scale = 0.0;
- if (numerator < 0.0)
- scale = 1.0;
- else
- scale = min(1.0, numerator / dot(dir, dir));
- pos += scale * delta;
- }
-
- result.position = pos;
- result.color = input.color * opacity;
- return result;
-}
-
-float4 PS_SmoothColor(PSInput input) : SV_TARGET
-{
- return input.color;
-}
diff --git a/src/plugins/scenegraph/d3d12/shaders/smoothtexture.hlsl b/src/plugins/scenegraph/d3d12/shaders/smoothtexture.hlsl
deleted file mode 100644
index 05b1c6e9d4..0000000000
--- a/src/plugins/scenegraph/d3d12/shaders/smoothtexture.hlsl
+++ /dev/null
@@ -1,77 +0,0 @@
-struct VSInput
-{
- float4 position : POSITION;
- float2 coord : TEXCOORD0;
- float2 offset : TEXCOORD1;
- float2 coordOffset : TEXCOORD2;
-};
-
-cbuffer ConstantBuffer : register(b0)
-{
- float4x4 mvp;
- float opacity;
- float2 pixelSize;
-};
-
-struct PSInput
-{
- float4 position : SV_POSITION;
- float2 coord : TEXCOORD0;
- float vertexOpacity : TEXCOORD3;
-};
-
-Texture2D tex : register(t0);
-SamplerState samp : register(s0);
-
-PSInput VS_SmoothTexture(VSInput input)
-{
- PSInput result;
-
- float4 pos = mul(mvp, input.position);
- float2 coord = input.coord;
-
- if (input.offset.x != 0.0) {
- // In HLSL matrix packing is column-major by default (which is good) but the math is row-major (unlike GLSL).
- float4 delta = float4(mvp._11, mvp._21, mvp._31, mvp._41) * input.offset.x;
- float2 dir = delta.xy * pos.w - pos.xy * delta.w;
- float2 ndir = 0.5 * pixelSize * normalize(dir / pixelSize);
- dir -= ndir * delta.w * pos.w;
- float numerator = dot(dir, ndir * pos.w * pos.w);
- float scale = 0.0;
- if (numerator < 0.0)
- scale = 1.0;
- else
- scale = min(1.0, numerator / dot(dir, dir));
- pos += scale * delta;
- coord.x += scale * input.coordOffset.x;
- }
-
- if (input.offset.y != 0.0) {
- float4 delta = float4(mvp._12, mvp._22, mvp._32, mvp._42) * input.offset.y;
- float2 dir = delta.xy * pos.w - pos.xy * delta.w;
- float2 ndir = 0.5 * pixelSize * normalize(dir / pixelSize);
- dir -= ndir * delta.w * pos.w;
- float numerator = dot(dir, ndir * pos.w * pos.w);
- float scale = 0.0;
- if (numerator < 0.0)
- scale = 1.0;
- else
- scale = min(1.0, numerator / dot(dir, dir));
- pos += scale * delta;
- coord.y += scale * input.coordOffset.y;
- }
-
- if ((input.offset.x != 0.0 || input.offset.y != 0.0) && (input.coordOffset.x == 0.0 && input.coordOffset.y == 0.0))
- result.vertexOpacity = 0.0;
- else
- result.vertexOpacity = opacity;
-
- result.position = pos;
- result.coord = coord;
- return result;
-}
-
-float4 PS_SmoothTexture(PSInput input) : SV_TARGET
-{
- return tex.Sample(samp, input.coord) * input.vertexOpacity;
-}
diff --git a/src/plugins/scenegraph/d3d12/shaders/sprite.hlsl b/src/plugins/scenegraph/d3d12/shaders/sprite.hlsl
deleted file mode 100644
index d4e3b066ee..0000000000
--- a/src/plugins/scenegraph/d3d12/shaders/sprite.hlsl
+++ /dev/null
@@ -1,43 +0,0 @@
-struct VSInput
-{
- float4 position : POSITION;
- float2 coord : TEXCOORD0;
-};
-
-cbuffer ConstantBuffer : register(b0)
-{
- float4x4 mvp;
- float4 animPos;
- float3 animData;
- float opacity;
-};
-
-struct PSInput
-{
- float4 position : SV_POSITION;
- float4 fTexS : TEXCOORD0;
- float progress : TEXCOORD1;
-};
-
-Texture2D tex : register(t0);
-SamplerState samp : register(s0);
-
-PSInput VS_Sprite(VSInput input)
-{
- PSInput result;
-
- result.position = mul(mvp, input.position);
- result.progress = animData.z;
-
- // Calculate frame location in texture
- result.fTexS.xy = animPos.xy + input.coord.xy * animData.xy;
- // Next frame is also passed, for interpolation
- result.fTexS.zw = animPos.zw + input.coord.xy * animData.xy;
-
- return result;
-}
-
-float4 PS_Sprite(PSInput input) : SV_TARGET
-{
- return lerp(tex.Sample(samp, input.fTexS.xy), tex.Sample(samp, input.fTexS.zw), input.progress) * opacity;
-}
diff --git a/src/plugins/scenegraph/d3d12/shaders/stencilclip.hlsl b/src/plugins/scenegraph/d3d12/shaders/stencilclip.hlsl
deleted file mode 100644
index 9aff84d261..0000000000
--- a/src/plugins/scenegraph/d3d12/shaders/stencilclip.hlsl
+++ /dev/null
@@ -1,26 +0,0 @@
-struct VSInput
-{
- float4 position : POSITION;
-};
-
-cbuffer ConstantBuffer : register(b0)
-{
- float4x4 mvp;
-};
-
-struct PSInput
-{
- float4 position : SV_POSITION;
-};
-
-PSInput VS_StencilClip(VSInput input)
-{
- PSInput result;
- result.position = mul(mvp, input.position);
- return result;
-}
-
-float4 PS_StencilClip(PSInput input) : SV_TARGET
-{
- return float4(0.81, 0.83, 0.12, 1.0); // Trolltech green ftw!
-}
diff --git a/src/plugins/scenegraph/d3d12/shaders/tdr.hlsl b/src/plugins/scenegraph/d3d12/shaders/tdr.hlsl
deleted file mode 100644
index f32d4fbace..0000000000
--- a/src/plugins/scenegraph/d3d12/shaders/tdr.hlsl
+++ /dev/null
@@ -1,11 +0,0 @@
-// http://gamedev.stackexchange.com/questions/108141/how-can-i-test-dxgi-error-device-removed-error-handling
-
-RWBuffer<uint> uav;
-cbuffer ConstantBuffer { uint zero; }
-
-[numthreads(256, 1, 1)]
-void timeout(uint3 id: SV_DispatchThreadID)
-{
- while (zero == 0)
- uav[id.x] = zero;
-}
diff --git a/src/plugins/scenegraph/d3d12/shaders/textmask.hlsl b/src/plugins/scenegraph/d3d12/shaders/textmask.hlsl
deleted file mode 100644
index bb9381e7c0..0000000000
--- a/src/plugins/scenegraph/d3d12/shaders/textmask.hlsl
+++ /dev/null
@@ -1,104 +0,0 @@
-struct VSInput
-{
- float4 position : POSITION;
- float2 coord : TEXCOORD0;
-};
-
-cbuffer ConstantBuffer : register(b0)
-{
- float4x4 mvp;
- float2 textureScale;
- float dpr;
- float color; // for TextMask24 and 32
- float4 colorVec; // for TextMask8 and Styled and Outlined
- float2 shift; // for Styled
- float4 styleColor; // for Styled and Outlined
-};
-
-struct PSInput
-{
- float4 position : SV_POSITION;
- float2 coord : TEXCOORD0;
-};
-
-Texture2D tex : register(t0);
-SamplerState samp : register(s0);
-
-PSInput VS_TextMask(VSInput input)
-{
- PSInput result;
- result.position = mul(mvp, floor(input.position * dpr + 0.5) / dpr);
- result.coord = input.coord * textureScale;
- return result;
-}
-
-float4 PS_TextMask24(PSInput input) : SV_TARGET
-{
- float4 glyph = tex.Sample(samp, input.coord);
- return float4(glyph.rgb * color, glyph.a);
-}
-
-float4 PS_TextMask32(PSInput input) : SV_TARGET
-{
- return tex.Sample(samp, input.coord) * color;
-}
-
-float4 PS_TextMask8(PSInput input) : SV_TARGET
-{
- return colorVec * tex.Sample(samp, input.coord).a;
-}
-
-struct StyledPSInput
-{
- float4 position : SV_POSITION;
- float2 coord : TEXCOORD0;
- float2 shiftedCoord : TEXCOORD1;
-};
-
-StyledPSInput VS_StyledText(VSInput input)
-{
- StyledPSInput result;
- result.position = mul(mvp, floor(input.position * dpr + 0.5) / dpr);
- result.coord = input.coord * textureScale;
- result.shiftedCoord = (input.coord - shift) * textureScale;
- return result;
-}
-
-float4 PS_StyledText(StyledPSInput input) : SV_TARGET
-{
- float glyph = tex.Sample(samp, input.coord).a;
- float style = clamp(tex.Sample(samp, input.shiftedCoord).a - glyph, 0.0, 1.0);
- return style * styleColor + glyph * colorVec;
-}
-
-struct OutlinedPSInput
-{
- float4 position : SV_POSITION;
- float2 coord : TEXCOORD0;
- float2 coordUp : TEXCOORD1;
- float2 coordDown : TEXCOORD2;
- float2 coordLeft : TEXCOORD3;
- float2 coordRight : TEXCOORD4;
-};
-
-OutlinedPSInput VS_OutlinedText(VSInput input)
-{
- OutlinedPSInput result;
- result.position = mul(mvp, floor(input.position * dpr + 0.5) / dpr);
- result.coord = input.coord * textureScale;
- result.coordUp = (input.coord - float2(0.0, -1.0)) * textureScale;
- result.coordDown = (input.coord - float2(0.0, 1.0)) * textureScale;
- result.coordLeft = (input.coord - float2(-1.0, 0.0)) * textureScale;
- result.coordRight = (input.coord - float2(1.0, 0.0)) * textureScale;
- return result;
-}
-
-float4 PS_OutlinedText(OutlinedPSInput input) : SV_TARGET
-{
- float glyph = tex.Sample(samp, input.coord).a;
- float outline = clamp(clamp(tex.Sample(samp, input.coordUp).a
- + tex.Sample(samp, input.coordDown).a
- + tex.Sample(samp, input.coordLeft).a
- + tex.Sample(samp, input.coordRight).a, 0.0, 1.0) - glyph, 0.0, 1.0);
- return outline * styleColor + glyph * colorVec;
-}
diff --git a/src/plugins/scenegraph/d3d12/shaders/texture.hlsl b/src/plugins/scenegraph/d3d12/shaders/texture.hlsl
deleted file mode 100644
index 1ae6579e8d..0000000000
--- a/src/plugins/scenegraph/d3d12/shaders/texture.hlsl
+++ /dev/null
@@ -1,33 +0,0 @@
-struct VSInput
-{
- float4 position : POSITION;
- float2 coord : TEXCOORD0;
-};
-
-cbuffer ConstantBuffer : register(b0)
-{
- float4x4 mvp;
- float opacity;
-};
-
-struct PSInput
-{
- float4 position : SV_POSITION;
- float2 coord : TEXCOORD0;
-};
-
-Texture2D tex : register(t0);
-SamplerState samp : register(s0);
-
-PSInput VS_Texture(VSInput input)
-{
- PSInput result;
- result.position = mul(mvp, input.position);
- result.coord = input.coord;
- return result;
-}
-
-float4 PS_Texture(PSInput input) : SV_TARGET
-{
- return tex.Sample(samp, input.coord) * opacity;
-}
diff --git a/src/plugins/scenegraph/d3d12/shaders/vertexcolor.hlsl b/src/plugins/scenegraph/d3d12/shaders/vertexcolor.hlsl
deleted file mode 100644
index a0569bb5c1..0000000000
--- a/src/plugins/scenegraph/d3d12/shaders/vertexcolor.hlsl
+++ /dev/null
@@ -1,32 +0,0 @@
-struct VSInput
-{
- float4 position : POSITION;
- float4 color : COLOR;
-};
-
-cbuffer ConstantBuffer : register(b0)
-{
- float4x4 mvp;
- float opacity;
-};
-
-struct PSInput
-{
- float4 position : SV_POSITION;
- float4 color : COLOR;
-};
-
-PSInput VS_VertexColor(VSInput input)
-{
- PSInput result;
-
- result.position = mul(mvp, input.position);
- result.color = input.color * opacity;
-
- return result;
-}
-
-float4 PS_VertexColor(PSInput input) : SV_TARGET
-{
- return input.color;
-}
diff --git a/src/plugins/scenegraph/openvg/openvg.pro b/src/plugins/scenegraph/openvg/openvg.pro
index 43c2636343..7f9f4bfec5 100644
--- a/src/plugins/scenegraph/openvg/openvg.pro
+++ b/src/plugins/scenegraph/openvg/openvg.pro
@@ -6,6 +6,18 @@ PLUGIN_TYPE = scenegraph
PLUGIN_CLASS_NAME = QSGOpenVGAdaptation
load(qt_plugin)
+TRACEPOINT_PROVIDER = $$PWD/openvg.tracepoints
+CONFIG += qt_tracepoints
+debug_and_release {
+ CONFIG(debug, debug|release) {
+ INCLUDEPATH += $$OUT_PWD/../../../quick/.tracegen/debug
+ } else {
+ INCLUDEPATH += $$OUT_PWD/../../../quick/.tracegen/release
+ }
+} else {
+ INCLUDEPATH += $$OUT_PWD/../../../quick/.tracegen/
+}
+
QMAKE_TARGET_PRODUCT = "Qt Quick OpenVG Renderer (Qt $$QT_VERSION)"
QMAKE_TARGET_DESCRIPTION = "Quick OpenVG Renderer for Qt."
diff --git a/src/plugins/scenegraph/openvg/openvg.tracepoints b/src/plugins/scenegraph/openvg/openvg.tracepoints
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/src/plugins/scenegraph/openvg/openvg.tracepoints
diff --git a/src/plugins/scenegraph/openvg/qsgopenvgrenderloop.cpp b/src/plugins/scenegraph/openvg/qsgopenvgrenderloop.cpp
index 85651ece9d..90ccab2682 100644
--- a/src/plugins/scenegraph/openvg/qsgopenvgrenderloop.cpp
+++ b/src/plugins/scenegraph/openvg/qsgopenvgrenderloop.cpp
@@ -47,6 +47,8 @@
#include <private/qquickwindow_p.h>
#include <private/qquickprofiler_p.h>
+#include <qtquick_tracepoints_p.h>
+
#include "qopenvgcontext_p.h"
QT_BEGIN_NAMESPACE
@@ -171,6 +173,8 @@ void QSGOpenVGRenderLoop::renderWindow(QQuickWindow *window)
if (!cd->isRenderable() || !m_windows.contains(window))
return;
+ Q_TRACE_SCOPE(QSG_renderWindow);
+
WindowData &data = const_cast<WindowData &>(m_windows[window]);
if (vg == nullptr) {
@@ -198,14 +202,17 @@ void QSGOpenVGRenderLoop::renderWindow(QQuickWindow *window)
if (profileFrames)
renderTimer.start();
Q_QUICK_SG_PROFILE_START(QQuickProfiler::SceneGraphPolishFrame);
+ Q_TRACE(QSG_polishItems_entry);
cd->polishItems();
if (profileFrames)
polishTime = renderTimer.nsecsElapsed();
+ Q_TRACE(QSG_polishItems_exit);
Q_QUICK_SG_PROFILE_SWITCH(QQuickProfiler::SceneGraphPolishFrame,
QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphPolishPolish);
+ Q_TRACE(QSG_sync_entry);
emit window->afterAnimating();
@@ -214,8 +221,10 @@ void QSGOpenVGRenderLoop::renderWindow(QQuickWindow *window)
if (profileFrames)
syncTime = renderTimer.nsecsElapsed();
+ Q_TRACE(QSG_sync_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphRenderLoopSync);
+ Q_TRACE(QSG_render_entry);
// setup coordinate system for window
vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE);
@@ -227,8 +236,10 @@ void QSGOpenVGRenderLoop::renderWindow(QQuickWindow *window)
if (profileFrames)
renderTime = renderTimer.nsecsElapsed();
+ Q_TRACE(QSG_render_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphRenderLoopRender);
+ Q_TRACE(QSG_swap_entry);
if (data.grabOnly) {
grabContent = vg->readFramebuffer(window->size() * window->effectiveDevicePixelRatio());
@@ -243,6 +254,7 @@ void QSGOpenVGRenderLoop::renderWindow(QQuickWindow *window)
qint64 swapTime = 0;
if (profileFrames)
swapTime = renderTimer.nsecsElapsed();
+ Q_TRACE(QSG_swap_exit);
Q_QUICK_SG_PROFILE_END(QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphRenderLoopSwap);
diff --git a/src/plugins/scenegraph/scenegraph.pro b/src/plugins/scenegraph/scenegraph.pro
index 39c0c0815c..9cc521a191 100644
--- a/src/plugins/scenegraph/scenegraph.pro
+++ b/src/plugins/scenegraph/scenegraph.pro
@@ -1,5 +1,4 @@
TEMPLATE = subdirs
QT_FOR_CONFIG += quick
-qtConfig(d3d12): SUBDIRS += d3d12
qtConfig(openvg): SUBDIRS += openvg
diff --git a/src/qml/common/qv4compileddata_p.h b/src/qml/common/qv4compileddata_p.h
index 7abf530996..3e5e4ae11e 100644
--- a/src/qml/common/qv4compileddata_p.h
+++ b/src/qml/common/qv4compileddata_p.h
@@ -76,7 +76,7 @@ QT_BEGIN_NAMESPACE
// Also change the comment behind the number to describe the latest change. This has the added
// benefit that if another patch changes the version too, it will result in a merge conflict, and
// not get removed silently.
-#define QV4_DATA_STRUCTURE_VERSION 0x26// support required properties
+#define QV4_DATA_STRUCTURE_VERSION 0x27 // resolved merge
class QIODevice;
class QQmlTypeNameCache;
@@ -195,39 +195,14 @@ struct JSClass
};
static_assert(sizeof(JSClass) == 4, "JSClass structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
-// This data structure is intended to be binary compatible with QStringData/QStaticStringData on
-// 64-bit and 32-bit little-endian architectures, in all directions. So the same structure mapped
-// from a file must be castable to a QStringData regardless of the pointer size. With the first
-// few fields that's easy, they're always 32-bit. However the offset field of QArrayData is a
-// ptrdiff_t and thus variable in size.
-// On 64-bit systems compilers enforce an 8-byte alignment and thus place it at offset 16, while
-// on 32-bit systems offset 12 is sufficient. Therefore the two values don't overlap and contain
-// the same value.
struct String
{
- qint32_le refcount; // -1
qint32_le size;
- quint32_le allocAndCapacityReservedFlag; // 0
- quint32_le offsetOn32Bit;
- quint64_le offsetOn64Bit;
- // uint16 strdata[]
static int calculateSize(const QString &str) {
return (sizeof(String) + (str.length() + 1) * sizeof(quint16) + 7) & ~0x7;
}
};
-static_assert(sizeof(String) == 24, "String structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
-
-// Ensure compatibility with QString
-static_assert(offsetof(QArrayData, ref) == offsetof(String, refcount), "refcount must be at the same location");
-static_assert(offsetof(QArrayData, size) == offsetof(String, size), "size must be at the same location");
-static_assert(offsetof(String, offsetOn64Bit) == 16, "offset must be at 8-byte aligned location");
-static_assert(offsetof(String, offsetOn32Bit) == 12, "offset must be at 4-byte aligned location");
-#if QT_POINTER_SIZE == 8
-static_assert(offsetof(QArrayData, offset) == offsetof(String, offsetOn64Bit), "offset must be at the same location");
-#else
-static_assert(offsetof(QArrayData, offset) == offsetof(String, offsetOn32Bit), "offset must be at the same location");
-#endif
struct CodeOffsetToLine {
quint32_le codeOffset;
@@ -304,13 +279,15 @@ struct Function
quint16_le nLineNumbers;
size_t lineNumberOffset() const { return localsOffset + nLocals * sizeof(quint32); }
quint32_le nestedFunctionIndex; // for functions that only return a single closure, used in signal handlers
+
+ quint32_le nRegisters;
+ Location location;
+ quint32_le nLabelInfos;
+
quint16_le sizeOfLocalTemporalDeadZone;
quint16_le firstTemporalDeadZoneRegister;
quint16_le sizeOfRegisterTemporalDeadZone;
- quint16_le nRegisters;
- Location location;
- quint32_le nLabelInfos;
size_t labelInfosOffset() const { return lineNumberOffset() + nLineNumbers * sizeof(CodeOffsetToLine); }
// Keep all unaligned data at the end
@@ -960,14 +937,13 @@ struct Unit
const quint32_le *offsetTable = reinterpret_cast<const quint32_le*>((reinterpret_cast<const char *>(this)) + offsetToStringTable);
const quint32_le offset = offsetTable[idx];
const String *str = reinterpret_cast<const String*>(reinterpret_cast<const char *>(this) + offset);
+ Q_ASSERT(str->size >= 0);
if (str->size == 0)
return QString();
#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
- if (flags & StaticData) {
- const QStringDataPtr holder = { const_cast<QStringData *>(reinterpret_cast<const QStringData*>(str)) };
- return QString(holder);
- }
const QChar *characters = reinterpret_cast<const QChar *>(str + 1);
+ if (flags & StaticData)
+ return QString::fromRawData(characters, str->size);
return QString(characters, str->size);
#else
const quint16_le *characters = reinterpret_cast<const quint16_le *>(str + 1);
diff --git a/src/qml/common/qv4stringtoarrayindex_p.h b/src/qml/common/qv4stringtoarrayindex_p.h
index 61bd988d1e..d4b064f865 100644
--- a/src/qml/common/qv4stringtoarrayindex_p.h
+++ b/src/qml/common/qv4stringtoarrayindex_p.h
@@ -65,6 +65,8 @@ inline uint charToUInt(const char *ch) { return static_cast<unsigned char>(*ch);
template <typename T>
uint stringToArrayIndex(const T *ch, const T *end)
{
+ if (ch == end)
+ return std::numeric_limits<uint>::max();
uint i = charToUInt(ch) - '0';
if (i > 9)
return std::numeric_limits<uint>::max();
diff --git a/src/qml/compiler/qv4codegen.cpp b/src/qml/compiler/qv4codegen.cpp
index c43ea64e2e..d61456f38d 100644
--- a/src/qml/compiler/qv4codegen.cpp
+++ b/src/qml/compiler/qv4codegen.cpp
@@ -1371,6 +1371,40 @@ bool Codegen::visit(BinaryExpression *ast)
setExprResult(Reference::fromAccumulator(this));
}
return false;
+ } else if (ast->op == QSOperator::Coalesce) {
+
+ Reference left = expression(ast->left);
+ if (hasError())
+ return false;
+
+ BytecodeGenerator::Label iftrue = bytecodeGenerator->newLabel();
+ BytecodeGenerator::Label iffalse = bytecodeGenerator->newLabel();
+
+ Instruction::CmpNeNull cmp;
+
+ left = left.storeOnStack();
+ left.loadInAccumulator();
+ bytecodeGenerator->addInstruction(cmp);
+
+ bytecodeGenerator->jumpTrue().link(iftrue);
+ bytecodeGenerator->jumpFalse().link(iffalse);
+
+ blockTailCalls.unblock();
+
+ iftrue.link();
+
+ left.loadInAccumulator();
+
+ BytecodeGenerator::Jump jump_endif = bytecodeGenerator->jump();
+
+ iffalse.link();
+
+ Reference right = expression(ast->right);
+ right.loadInAccumulator();
+ jump_endif.link();
+ setExprResult(Reference::fromAccumulator(this));
+
+ return false;
} else if (ast->op == QSOperator::Assign) {
if (AST::Pattern *p = ast->left->patternCast()) {
RegisterScope scope(this);
@@ -1497,7 +1531,9 @@ bool Codegen::visit(BinaryExpression *ast)
break;
}
-
+ case QSOperator::As:
+ setExprResult(left);
+ break;
} // switch
return false;
diff --git a/src/qml/compiler/qv4compiler.cpp b/src/qml/compiler/qv4compiler.cpp
index acc4b02e96..0c0a005689 100644
--- a/src/qml/compiler/qv4compiler.cpp
+++ b/src/qml/compiler/qv4compiler.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2018 Intel Corporation.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtQml module of the Qt Toolkit.
@@ -47,6 +48,7 @@
#include <private/qml_compile_hash_p.h>
#include <private/qqmlirbuilder_p.h>
#include <QCryptographicHash>
+#include <QtEndian>
// Efficient implementation that takes advantage of powers of two.
static inline size_t roundUpToMultipleOf(size_t divisor, size_t x)
@@ -108,19 +110,11 @@ void QV4::Compiler::StringTableGenerator::serialize(CompiledData::Unit *unit)
QV4::CompiledData::String *s = reinterpret_cast<QV4::CompiledData::String *>(stringData);
Q_ASSERT(reinterpret_cast<uintptr_t>(s) % alignof(QV4::CompiledData::String) == 0);
- s->refcount = -1;
+ Q_ASSERT(qstr.length() >= 0);
s->size = qstr.length();
- s->allocAndCapacityReservedFlag = 0;
- s->offsetOn32Bit = sizeof(QV4::CompiledData::String);
- s->offsetOn64Bit = sizeof(QV4::CompiledData::String);
ushort *uc = reinterpret_cast<ushort *>(reinterpret_cast<char *>(s) + sizeof(*s));
-#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
- memcpy(uc, qstr.constData(), s->size * sizeof(ushort));
-#else
- for (int i = 0; i < s->size; ++i)
- uc[i] = qToLittleEndian<ushort>(qstr.at(i).unicode());
-#endif
+ qToLittleEndian<ushort>(qstr.constData(), s->size, uc);
uc[s->size] = 0;
stringData += QV4::CompiledData::String::calculateSize(qstr);
diff --git a/src/qml/dependencies.json b/src/qml/dependencies.json
new file mode 100644
index 0000000000..fe51488c70
--- /dev/null
+++ b/src/qml/dependencies.json
@@ -0,0 +1 @@
+[]
diff --git a/src/qml/doc/qtqml.qdocconf b/src/qml/doc/qtqml.qdocconf
index 74d0a3b27c..07ab974289 100644
--- a/src/qml/doc/qtqml.qdocconf
+++ b/src/qml/doc/qtqml.qdocconf
@@ -34,20 +34,14 @@ qhp.QtQml.subprojects.qmltypes.sortPages = true
tagfile = ../../../doc/qtqml/qtqml.tags
-depends += qtcore qtgui qtquick qtdoc qtlinguist qmake qtscript qtwidgets qtxmlpatterns qtquickcontrols
+depends += qtcore qtqmlmodels qtqmlworkerscript qtgui qtquick qtdoc qtlinguist qmake qtscript qtwidgets qtxmlpatterns qtquickcontrols
headerdirs += .. \
- ../../imports/models \
- ../../qmlmodels \
- ../../qml \
- ../../qmlworkerscript
+ ../../qml
sourcedirs += .. \
- ../../imports/models \
../../imports/statemachine \
- ../../qmlmodels \
- ../../qml \
- ../../qmlworkerscript
+ ../../qml
exampledirs += ../../../examples/qml \
../ \
diff --git a/src/qml/doc/src/cppintegration/data.qdoc b/src/qml/doc/src/cppintegration/data.qdoc
index 171b2b6a11..7c2693508c 100644
--- a/src/qml/doc/src/cppintegration/data.qdoc
+++ b/src/qml/doc/src/cppintegration/data.qdoc
@@ -308,6 +308,11 @@ In both the Q_PROPERTY and return from Q_INVOKABLE cases, the elements
of a std::vector are copied. This copying may be an expensive operation,
so std::vector should be used judiciously.
+You can also create a list-like data structure by constructing a QJSValue using
+QJSEngine::newArray(). Such a JavaScript array does not need any conversion
+when passing it between QML and C++. See \l{QJSValue#Working With Arrays} for
+details on how to manipulate JavaScript arrays from C++.
+
Other sequence types are not supported transparently, and instead an
instance of any other sequence type will be passed between QML and C++ as an
opaque QVariantList.
@@ -381,6 +386,14 @@ properties:
Q_DECLARE_METATYPE(Actor)
\endcode
+The usual pattern is to use a gadget class as the type of a property, or to
+emit a gadget as a signal argument. In such cases, the gadget instance is
+passed by value between C++ and QML (because it's a value type). If QML code
+changes a property of a gadget property, the entire gadget is re-created and
+passed back to the C++ property setter. In Qt 5, gadget types cannot be
+instantiated by direct declaration in QML. In contrast, a QObject instance can
+be declared; and QObject instances are always passed by pointer from C++ to QML.
+
\section1 Enumeration Types
To use a custom enumeration as a data type, its class must be registered and
diff --git a/src/qml/doc/src/cppintegration/extending-tutorial.qdoc b/src/qml/doc/src/cppintegration/extending-tutorial.qdoc
index 43987354ae..d587173e5a 100644
--- a/src/qml/doc/src/cppintegration/extending-tutorial.qdoc
+++ b/src/qml/doc/src/cppintegration/extending-tutorial.qdoc
@@ -133,10 +133,9 @@ Here is the application \c main.cpp:
\snippet tutorials/extending-qml/chapter1-basics/main.cpp 0
-This call to qmlRegisterType() registers the \c PieChart type as a type called "PieChart",
-in a type namespace called "Charts", with a version of 1.0.
-
-Lastly, we write a \c .pro project file that includes the files and the \c declarative library:
+We write a \c .pro project file that includes the files and the \c qml library, and
+defines a type namespace called "Charts" with a version of 1.0 for any types exposed
+to QML:
\quotefile tutorials/extending-qml/chapter1-basics/chapter1-basics.pro
@@ -314,15 +313,13 @@ item when its contents are drawn:
\snippet tutorials/extending-qml/chapter4-customPropertyTypes/piechart.cpp 0
-Like the \c PieChart type, the \c PieSlice type has to be registered
-using qmlRegisterType() to be used from QML. As with \c PieChart, we'll add the
-type to the "Charts" type namespace, version 1.0:
+Like the \c PieChart type, the \c PieSlice type has to be exposted to QML
+using QML_ELEMENT. As with \c PieChart, we add the "Charts" type namespace,
+version 1.0 to the .pro file:
-\snippet tutorials/extending-qml/chapter4-customPropertyTypes/main.cpp 0
-\dots
-\snippet tutorials/extending-qml/chapter4-customPropertyTypes/main.cpp 1
+\snippet tutorials/extending-qml/chapter4-customPropertyTypes/pieslice.h 0
\dots
-\snippet tutorials/extending-qml/chapter4-customPropertyTypes/main.cpp 2
+\quotefile tutorials/extending-qml/chapter1-basics/chapter4-customPropertyTypes.pro
The source code from the following files are referred to in this chapter:
\generatelist examplefiles .*chapter4.*
diff --git a/src/qml/doc/src/qmldiskcache.qdoc b/src/qml/doc/src/qmldiskcache.qdoc
new file mode 100644
index 0000000000..100334296c
--- /dev/null
+++ b/src/qml/doc/src/qmldiskcache.qdoc
@@ -0,0 +1,77 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://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: https://www.gnu.org/licenses/fdl-1.3.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+\page qmldiskcache.html
+\title The QML Disk Cache
+\brief QML caches compiled documents on disk to improve load time.
+
+When your application loads a QML or JavaScript file for the first time,
+the QML engine compiles the file into a byte code representation on the
+fly and runs it. The compiling process can be time consuming, and subsequent
+loads of the same document yield the same result. To optimize this step, the
+QML engine can cache the result. It stores the byte code in a cache file and
+later loads the cache file instead of re-compiling when the same file is
+requested again. Usually the files are stored in a subdirectory \c{qmlcache}
+of the system's cache directory, as denoted by QStandardPaths::CacheLocation.
+Checks are in place to make sure that the cache files are only loaded if all
+of the following conditions are met:
+\list
+ \li The Qt version has not changed
+ \li The source code in the original file has not changed
+ \li The QML debugger is not running
+\endlist
+
+The disk caching behavior can be fine tuned using the following environment
+variables:
+
+\table
+ \header
+ \li Environment Variable
+ \li Description
+ \row
+ \li \c{QML_DISABLE_DISK_CACHE}
+ \li Disables the disk cache and forces re-compilation from source for
+ all QML and JavaScript files.
+ \row
+ \li \c{QML_FORCE_DISK_CACHE}
+ \li Enables the disk cache even when debugging QML. You cannot use the
+ JavaScript debugger this way. It may fail to stop at breakpoints,
+ for example. You can still use the QML inspector to explore the
+ object hierarchy, though. \c{QML_FORCE_DISK_CACHE} overrides
+ \c{QML_DISABLE_DISK_CACHE}.
+ \row
+ \li \c{QML_DISK_CACHE_PATH}
+ \li Specifies a custom location where the cache files shall be stored
+ instead of using the default location.
+\endtable
+
+You can also specify \c{CONFIG += qtquickcompiler} in your \c{.pro} file
+to perform the compilation ahead of time and integrate the resulting byte code
+directly into your executable. For more information, see \l{Qt Quick Compiler}.
+
+*/
diff --git a/src/qml/doc/src/qmlfunctions.qdoc b/src/qml/doc/src/qmlfunctions.qdoc
index b2d322465d..67c0f6bb25 100644
--- a/src/qml/doc/src/qmlfunctions.qdoc
+++ b/src/qml/doc/src/qmlfunctions.qdoc
@@ -275,6 +275,7 @@
/*!
\fn int qmlRegisterAnonymousType(const char *uri, int versionMajor)
+ \relates QQmlEngine
This template function registers the C++ type in the QML system as an anonymous type. The
resulting QML type does not have a name. Therefore, instances of this type cannot be created from
diff --git a/src/qml/doc/src/qmllanguageref/modules/qqmlextensionplugin.qdocinc b/src/qml/doc/src/qmllanguageref/modules/qqmlextensionplugin.qdocinc
index 01e81e7c19..05447db627 100644
--- a/src/qml/doc/src/qmllanguageref/modules/qqmlextensionplugin.qdocinc
+++ b/src/qml/doc/src/qmllanguageref/modules/qqmlextensionplugin.qdocinc
@@ -29,7 +29,7 @@ Suppose there is a new \c TimeModel C++ class that should be made available
as a new QML type. It provides the current time through \c hour and \c minute
properties.
-\snippet qmlextensionplugins/plugin.cpp 0
+\snippet qmlextensionplugins/timemodel.h 0
\dots
To make this type available, we create a plugin class named \c QExampleQmlPlugin
diff --git a/src/qml/doc/src/qmllanguageref/syntax/imports.qdoc b/src/qml/doc/src/qmllanguageref/syntax/imports.qdoc
index 57e0ba1a14..32106d5bb8 100644
--- a/src/qml/doc/src/qmllanguageref/syntax/imports.qdoc
+++ b/src/qml/doc/src/qmllanguageref/syntax/imports.qdoc
@@ -299,6 +299,13 @@ Additional import paths can be added through QQmlEngine::addImportPath() or the
\l{Prototyping with qmlscene}{qmlscene} tool, you can also use the \c -I option
to add an import path.
+You can specify multiple import paths in the \c QML2_IMPORT_PATH environment
+variable by joining them using the path separator. On Windows the path separator
+is a semicolon (;), on other platforms it is a colon (:). This means that you
+cannot specify resource paths or URLs in QML2_IMPORT_PATH, as they contain
+colons themselves. However, you can add resource paths and URLs by calling
+QQmlEngine::addImportPath() programatically.
+
\section1 Debugging
diff --git a/src/qml/doc/src/qtqml.qdoc b/src/qml/doc/src/qtqml.qdoc
index 68d2b66950..205cbc147d 100644
--- a/src/qml/doc/src/qtqml.qdoc
+++ b/src/qml/doc/src/qtqml.qdoc
@@ -155,6 +155,8 @@ Further information for writing QML applications:
- essential information for application development with QML and Qt Quick
\li \l{Qt Quick} - a module which provides a set of QML types and C++ classes
for building user interfaces and applications with QML
+\li \l{The QML Disk Cache}
+ - how to fine tune if and where the QML engine caches compilation results.
\endlist
\section2 Reference
diff --git a/src/qml/jit/qv4assemblercommon.cpp b/src/qml/jit/qv4assemblercommon.cpp
index e75f35a665..cc8af723b2 100644
--- a/src/qml/jit/qv4assemblercommon.cpp
+++ b/src/qml/jit/qv4assemblercommon.cpp
@@ -146,7 +146,7 @@ void PlatformAssemblerCommon::link(Function *function, const char *jitKind)
// We use debugAddress here because it's actually for debugging and hidden behind an
// environment variable.
const QByteArray name = Function::prettyName(function, linkBuffer.debugAddress()).toUtf8();
- codeRef = linkBuffer.finalizeCodeWithDisassembly(jitKind, "function %s", name.constData());
+ codeRef = linkBuffer.finalizeCodeWithDisassembly(jitKind, name.constData());
WTF::setDataFile(stderr);
printDisassembledOutputWithCalls(buf.data(), functions);
diff --git a/src/qml/jsruntime/qv4arraybuffer.cpp b/src/qml/jsruntime/qv4arraybuffer.cpp
index a99ec16943..a2fac21b29 100644
--- a/src/qml/jsruntime/qv4arraybuffer.cpp
+++ b/src/qml/jsruntime/qv4arraybuffer.cpp
@@ -127,13 +127,17 @@ ReturnedValue ArrayBufferCtor::method_isView(const FunctionObject *, const Value
void Heap::SharedArrayBuffer::init(size_t length)
{
Object::init();
+ QPair<QTypedArrayData<char> *, char *> pair;
if (length < UINT_MAX)
- data = QTypedArrayData<char>::allocate(length + 1);
- if (!data) {
+ pair = QTypedArrayData<char>::allocate(length + 1);
+ if (!pair.first) {
+ new (&d) QArrayDataPointer<char>();
internalClass->engine->throwRangeError(QStringLiteral("ArrayBuffer: out of memory"));
return;
}
- data->size = int(length);
+ auto data = new (&d) QArrayDataPointer<char>{ pair.first, pair.second, uint(length) };
+
+ // can't use appendInitialize() because we want to set the terminating '\0'
memset(data->data(), 0, length + 1);
isShared = true;
}
@@ -141,41 +145,24 @@ void Heap::SharedArrayBuffer::init(size_t length)
void Heap::SharedArrayBuffer::init(const QByteArray& array)
{
Object::init();
- data = const_cast<QByteArray&>(array).data_ptr();
- data->ref.ref();
+ new (&d) QArrayDataPointer<char>(*const_cast<QByteArray &>(array).data_ptr());
isShared = true;
}
void Heap::SharedArrayBuffer::destroy()
{
- if (data && !data->ref.deref())
- QTypedArrayData<char>::deallocate(data);
+ data().~QArrayDataPointer();
Object::destroy();
}
QByteArray ArrayBuffer::asByteArray() const
{
- QByteArrayDataPtr ba = { d()->data };
- ba.ptr->ref.ref();
- return QByteArray(ba);
+ return QByteArray(d()->data());
}
-void ArrayBuffer::detach() {
- if (!d()->data->ref.isShared())
- return;
-
- QTypedArrayData<char> *oldData = d()->data;
-
- d()->data = QTypedArrayData<char>::allocate(oldData->size + 1);
- if (!d()->data) {
- engine()->throwRangeError(QStringLiteral("ArrayBuffer: out of memory"));
- return;
- }
-
- memcpy(d()->data->data(), oldData->data(), oldData->size + 1);
-
- if (!oldData->ref.deref())
- QTypedArrayData<char>::deallocate(oldData);
+void ArrayBuffer::detach()
+{
+ d()->data().detach();
}
@@ -200,7 +187,7 @@ ReturnedValue SharedArrayBufferPrototype::method_get_byteLength(const FunctionOb
if (!a || a->isDetachedBuffer() || !a->isSharedArrayBuffer())
return b->engine()->throwTypeError();
- return Encode(a->d()->data->size);
+ return Encode(a->d()->data()->size);
}
ReturnedValue SharedArrayBufferPrototype::method_slice(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc)
@@ -217,12 +204,12 @@ ReturnedValue SharedArrayBufferPrototype::slice(const FunctionObject *b, const V
double start = argc > 0 ? argv[0].toInteger() : 0;
double end = (argc < 2 || argv[1].isUndefined()) ?
- a->d()->data->size : argv[1].toInteger();
+ a->d()->data()->size : argv[1].toInteger();
if (scope.hasException())
return QV4::Encode::undefined();
- double first = (start < 0) ? qMax(a->d()->data->size + start, 0.) : qMin(start, (double)a->d()->data->size);
- double final = (end < 0) ? qMax(a->d()->data->size + end, 0.) : qMin(end, (double)a->d()->data->size);
+ double first = (start < 0) ? qMax(a->d()->data()->size + start, 0.) : qMin(start, (double)a->d()->data()->size);
+ double final = (end < 0) ? qMax(a->d()->data()->size + end, 0.) : qMin(end, (double)a->d()->data()->size);
const FunctionObject *constructor = a->speciesConstructor(scope, shared ? scope.engine->sharedArrayBufferCtor() : scope.engine->arrayBufferCtor());
if (!constructor)
@@ -231,13 +218,13 @@ ReturnedValue SharedArrayBufferPrototype::slice(const FunctionObject *b, const V
double newLen = qMax(final - first, 0.);
ScopedValue argument(scope, QV4::Encode(newLen));
QV4::Scoped<SharedArrayBuffer> newBuffer(scope, constructor->callAsConstructor(argument, 1));
- if (!newBuffer || newBuffer->d()->data->size < (int)newLen ||
+ if (!newBuffer || newBuffer->d()->data()->size < newLen ||
newBuffer->isDetachedBuffer() || (newBuffer->isSharedArrayBuffer() != shared) ||
newBuffer->sameValue(*a) ||
a->isDetachedBuffer())
return scope.engine->throwTypeError();
- memcpy(newBuffer->d()->data->data(), a->d()->data->data() + (uint)first, newLen);
+ memcpy(newBuffer->d()->data()->data(), a->d()->data()->data() + (uint)first, newLen);
return newBuffer->asReturnedValue();
}
@@ -265,7 +252,7 @@ ReturnedValue ArrayBufferPrototype::method_get_byteLength(const FunctionObject *
if (!a || a->isDetachedBuffer() || a->isSharedArrayBuffer())
return f->engine()->throwTypeError();
- return Encode(a->d()->data->size);
+ return Encode(a->d()->data()->size);
}
ReturnedValue ArrayBufferPrototype::method_slice(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc)
diff --git a/src/qml/jsruntime/qv4arraybuffer_p.h b/src/qml/jsruntime/qv4arraybuffer_p.h
index 8344fa2554..1873c41261 100644
--- a/src/qml/jsruntime/qv4arraybuffer_p.h
+++ b/src/qml/jsruntime/qv4arraybuffer_p.h
@@ -52,6 +52,7 @@
#include "qv4object_p.h"
#include "qv4functionobject_p.h"
+#include <QtCore/qarraydatapointer.h>
QT_BEGIN_NAMESPACE
@@ -71,12 +72,14 @@ struct Q_QML_PRIVATE_EXPORT SharedArrayBuffer : Object {
void init(size_t length);
void init(const QByteArray& array);
void destroy();
- QTypedArrayData<char> *data;
+ std::aligned_storage_t<sizeof(QArrayDataPointer<char>), alignof(QArrayDataPointer<char>)> d;
+ const QArrayDataPointer<char> &data() const { return *reinterpret_cast<const QArrayDataPointer<char> *>(&d); }
+ QArrayDataPointer<char> &data() { return *reinterpret_cast<QArrayDataPointer<char> *>(&d); }
bool isShared;
- uint byteLength() const { return data ? data->size : 0; }
+ uint byteLength() const { return data().size; }
- bool isDetachedBuffer() const { return !data; }
+ bool isDetachedBuffer() const { return data().isNull(); }
bool isSharedArrayBuffer() const { return isShared; }
};
@@ -90,9 +93,7 @@ struct Q_QML_PRIVATE_EXPORT ArrayBuffer : SharedArrayBuffer {
isShared = false;
}
void detachArrayBuffer() {
- if (data && !data->ref.deref())
- QTypedArrayData<char>::deallocate(data);
- data = nullptr;
+ data().clear();
}
};
@@ -124,11 +125,11 @@ struct Q_QML_PRIVATE_EXPORT SharedArrayBuffer : Object
QByteArray asByteArray() const;
uint byteLength() const { return d()->byteLength(); }
- char *data() { Q_ASSERT(d()->data); return d()->data->data(); }
- const char *constData() { Q_ASSERT(d()->data); return d()->data->data(); }
+ char *data() { return d()->data()->data(); }
+ const char *constData() { return d()->data()->data(); }
- bool isShared() { return d()->data->ref.isShared(); }
- bool isDetachedBuffer() const { return !d()->data; }
+ bool isShared() { return d()->data()->isShared(); }
+ bool isDetachedBuffer() const { return d()->data().isNull(); }
bool isSharedArrayBuffer() const { return d()->isShared; }
};
@@ -140,11 +141,11 @@ struct Q_QML_PRIVATE_EXPORT ArrayBuffer : SharedArrayBuffer
QByteArray asByteArray() const;
uint byteLength() const { return d()->byteLength(); }
- char *data() { detach(); return d()->data ? d()->data->data() : nullptr; }
+ char *data() { if (d()->data().needsDetach()) detach(); return d()->data().data(); }
// ### is that detach needed?
- const char *constData() { detach(); return d()->data ? d()->data->data() : nullptr; }
+ const char *constData() const { return d()->data().data(); }
- bool isShared() { return d()->data && d()->data->ref.isShared(); }
+ bool isShared() { return d()->data()->isShared(); }
void detach();
void detachArrayBuffer() { d()->detachArrayBuffer(); }
};
diff --git a/src/qml/jsruntime/qv4arraydata.cpp b/src/qml/jsruntime/qv4arraydata.cpp
index 654d33b8d1..1c587d2367 100644
--- a/src/qml/jsruntime/qv4arraydata.cpp
+++ b/src/qml/jsruntime/qv4arraydata.cpp
@@ -586,7 +586,7 @@ uint ArrayData::append(Object *obj, ArrayObject *otherObj, uint n)
obj->arrayPut(oldSize, os->values.data() + os->offset, chunk);
toCopy -= chunk;
if (toCopy)
- obj->arrayPut(oldSize + chunk, os->values.data(), toCopy);
+ obj->setArrayLength(oldSize + chunk + toCopy);
}
return oldSize + n;
@@ -659,6 +659,12 @@ bool ArrayElementLessThan::operator()(Value v1, Value v2) const
}
ScopedString p1s(scope, v1.toString(scope.engine));
ScopedString p2s(scope, v2.toString(scope.engine));
+
+ if (!p1s)
+ return false;
+ if (!p2s)
+ return true;
+
return p1s->toQString() < p2s->toQString();
}
diff --git a/src/qml/jsruntime/qv4arrayobject.cpp b/src/qml/jsruntime/qv4arrayobject.cpp
index d8d0d4739f..6c51b4cbcb 100644
--- a/src/qml/jsruntime/qv4arrayobject.cpp
+++ b/src/qml/jsruntime/qv4arrayobject.cpp
@@ -1048,8 +1048,9 @@ ReturnedValue ArrayPrototype::method_includes(const FunctionObject *b, const Val
}
}
+ ScopedValue val(scope);
while (k < len) {
- ScopedValue val(scope, instance->get(k));
+ val = instance->get(k);
if (val->sameValueZero(argv[0])) {
return Encode(true);
}
diff --git a/src/qml/jsruntime/qv4dataview.cpp b/src/qml/jsruntime/qv4dataview.cpp
index 5ab8cf2dcb..bb1acb963e 100644
--- a/src/qml/jsruntime/qv4dataview.cpp
+++ b/src/qml/jsruntime/qv4dataview.cpp
@@ -85,7 +85,7 @@ ReturnedValue DataViewCtor::virtualCallAsConstructor(const FunctionObject *f, co
if (buffer->isDetachedBuffer())
return scope.engine->throwTypeError();
- uint bufferLength = buffer->d()->data->size;
+ uint bufferLength = buffer->d()->data()->size;
if (offset > bufferLength)
return scope.engine->throwRangeError(QStringLiteral("DataView: constructor arguments out of range"));
@@ -197,7 +197,7 @@ ReturnedValue DataViewPrototype::method_getChar(const FunctionObject *b, const V
return e->throwRangeError(QStringLiteral("index out of range"));
idx += v->d()->byteOffset;
- T t = T(v->d()->buffer->data->data()[idx]);
+ T t = T(v->d()->buffer->data()->data()[idx]);
return Encode((int)t);
}
@@ -221,8 +221,8 @@ ReturnedValue DataViewPrototype::method_get(const FunctionObject *b, const Value
bool littleEndian = argc < 2 ? false : argv[1].toBoolean();
T t = littleEndian
- ? qFromLittleEndian<T>((uchar *)v->d()->buffer->data->data() + idx)
- : qFromBigEndian<T>((uchar *)v->d()->buffer->data->data() + idx);
+ ? qFromLittleEndian<T>((uchar *)v->d()->buffer->data()->data() + idx)
+ : qFromBigEndian<T>((uchar *)v->d()->buffer->data()->data() + idx);
return Encode(t);
}
@@ -252,8 +252,8 @@ ReturnedValue DataViewPrototype::method_getFloat(const FunctionObject *b, const
float f;
} u;
u.i = littleEndian
- ? qFromLittleEndian<uint>((uchar *)v->d()->buffer->data->data() + idx)
- : qFromBigEndian<uint>((uchar *)v->d()->buffer->data->data() + idx);
+ ? qFromLittleEndian<uint>((uchar *)v->d()->buffer->data()->data() + idx)
+ : qFromBigEndian<uint>((uchar *)v->d()->buffer->data()->data() + idx);
return Encode(u.f);
} else {
Q_ASSERT(sizeof(T) == 8);
@@ -262,8 +262,8 @@ ReturnedValue DataViewPrototype::method_getFloat(const FunctionObject *b, const
double d;
} u;
u.i = littleEndian
- ? qFromLittleEndian<quint64>((uchar *)v->d()->buffer->data->data() + idx)
- : qFromBigEndian<quint64>((uchar *)v->d()->buffer->data->data() + idx);
+ ? qFromLittleEndian<quint64>((uchar *)v->d()->buffer->data()->data() + idx)
+ : qFromBigEndian<quint64>((uchar *)v->d()->buffer->data()->data() + idx);
return Encode(u.d);
}
}
@@ -288,7 +288,7 @@ ReturnedValue DataViewPrototype::method_setChar(const FunctionObject *b, const V
return e->throwRangeError(QStringLiteral("index out of range"));
idx += v->d()->byteOffset;
- v->d()->buffer->data->data()[idx] = (char)val;
+ v->d()->buffer->data()->data()[idx] = (char)val;
RETURN_UNDEFINED();
}
@@ -316,9 +316,9 @@ ReturnedValue DataViewPrototype::method_set(const FunctionObject *b, const Value
if (littleEndian)
- qToLittleEndian<T>(val, (uchar *)v->d()->buffer->data->data() + idx);
+ qToLittleEndian<T>(val, (uchar *)v->d()->buffer->data()->data() + idx);
else
- qToBigEndian<T>(val, (uchar *)v->d()->buffer->data->data() + idx);
+ qToBigEndian<T>(val, (uchar *)v->d()->buffer->data()->data() + idx);
RETURN_UNDEFINED();
}
@@ -352,9 +352,9 @@ ReturnedValue DataViewPrototype::method_setFloat(const FunctionObject *b, const
} u;
u.f = val;
if (littleEndian)
- qToLittleEndian(u.i, (uchar *)v->d()->buffer->data->data() + idx);
+ qToLittleEndian(u.i, (uchar *)v->d()->buffer->data()->data() + idx);
else
- qToBigEndian(u.i, (uchar *)v->d()->buffer->data->data() + idx);
+ qToBigEndian(u.i, (uchar *)v->d()->buffer->data()->data() + idx);
} else {
Q_ASSERT(sizeof(T) == 8);
union {
@@ -363,9 +363,9 @@ ReturnedValue DataViewPrototype::method_setFloat(const FunctionObject *b, const
} u;
u.d = val;
if (littleEndian)
- qToLittleEndian(u.i, (uchar *)v->d()->buffer->data->data() + idx);
+ qToLittleEndian(u.i, (uchar *)v->d()->buffer->data()->data() + idx);
else
- qToBigEndian(u.i, (uchar *)v->d()->buffer->data->data() + idx);
+ qToBigEndian(u.i, (uchar *)v->d()->buffer->data()->data() + idx);
}
RETURN_UNDEFINED();
}
diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp
index 590cebfa7c..14eaa5bce8 100644
--- a/src/qml/jsruntime/qv4engine.cpp
+++ b/src/qml/jsruntime/qv4engine.cpp
@@ -43,6 +43,7 @@
#include <private/qqmljsdiagnosticmessage_p.h>
#include <QtCore/QTextStream>
+#include <QtCore/private/qvariant_p.h>
#include <QDateTime>
#include <QDir>
#include <QFileInfo>
@@ -118,6 +119,7 @@
#endif
#include <private/qv4sqlerrors_p.h>
#include <qqmlfile.h>
+#include <qmetatype.h>
#if USE(PTHREADS)
# include <pthread.h>
@@ -185,6 +187,91 @@ static void restoreJSValue(QDataStream &stream, void *data)
}
}
+struct JSArrayIterator {
+ QJSValue const* data;
+ quint32 index;
+};
+
+namespace {
+void createNewIteratorIfNonExisting(void **iterator) {
+ if (*iterator == nullptr)
+ *iterator = new JSArrayIterator;
+}
+}
+
+static QtMetaTypePrivate::QSequentialIterableImpl jsvalueToSequence (const QJSValue& value) {
+ using namespace QtMetaTypePrivate;
+
+ QSequentialIterableImpl iterator {};
+ if (!value.isArray()) {
+ // set up some functions so that non-array QSequentialIterables do not crash
+ // but instead appear as an empty sequence
+ iterator._size = [](const void *) {return 0;};
+ iterator._moveToBegin = [](const void *, void **) {};
+ iterator._moveToEnd = [](const void *, void **) {};
+ iterator._advance = [](void **, int) {};
+ iterator._equalIter = [](void * const *, void * const *){return true; /*all iterators are nullptr*/};
+ iterator._destroyIter = [](void **){};
+ return iterator;
+ }
+
+ iterator._iterable = &value;
+ iterator._iterator = nullptr;
+ iterator._metaType_id = qMetaTypeId<QVariant>();
+ iterator._metaType_flags = QVariantConstructionFlags::ShouldDeleteVariantData;
+ iterator._iteratorCapabilities = RandomAccessCapability | BiDirectionalCapability | ForwardCapability;
+ iterator._size = [](const void *p) -> int {
+ return static_cast<QJSValue const *>(p)->property(QString::fromLatin1("length")).toInt();
+ };
+ /* Lifetime management notes:
+ * _at and _get return a pointer to a JSValue allocated via QMetaType::create
+ * Because we set QVariantConstructionFlags::ShouldDeleteVariantData, QSequentialIterable::at
+ * and QSequentialIterable::operator*() will free that memory
+ */
+
+ iterator._at = [](const void *iterable, int index) -> void const * {
+ auto const value = static_cast<QJSValue const *>(iterable)->property(quint32(index)).toVariant();
+ return QMetaType::create(qMetaTypeId<QVariant>(), &value);
+ };
+ iterator._moveToBegin = [](const void *iterable, void **iterator) {
+ createNewIteratorIfNonExisting(iterator);
+ auto jsArrayIterator = static_cast<JSArrayIterator *>(*iterator);
+ jsArrayIterator->index = 0;
+ jsArrayIterator->data = reinterpret_cast<QJSValue const*>(iterable);
+ };
+ iterator._moveToEnd = [](const void *iterable, void **iterator) {
+ createNewIteratorIfNonExisting(iterator);
+ auto jsArrayIterator = static_cast<JSArrayIterator *>(*iterator);
+ auto length = static_cast<QJSValue const *>(iterable)->property(QString::fromLatin1("length")).toInt();
+ jsArrayIterator->data = reinterpret_cast<QJSValue const*>(iterable);
+ jsArrayIterator->index = quint32(length);
+ };
+ iterator._advance = [](void **iterator, int advanceBy) {
+ static_cast<JSArrayIterator *>(*iterator)->index += quint32(advanceBy);
+ };
+ iterator._get = []( void * const *iterator, int metaTypeId, uint flags) -> VariantData {
+ auto const * const arrayIterator = static_cast<const JSArrayIterator *>(*iterator);
+ QJSValue const * const jsArray = arrayIterator->data;
+ auto const value = jsArray->property(arrayIterator->index).toVariant();
+ Q_ASSERT(flags & QVariantConstructionFlags::ShouldDeleteVariantData);
+ return {metaTypeId, QMetaType::create(qMetaTypeId<QVariant>(), &value), flags};
+ };
+ iterator._destroyIter = [](void **iterator) {
+ delete static_cast<JSArrayIterator *>(*iterator);
+ };
+ iterator._equalIter = [](void * const *p, void * const *other) {
+ auto this_ = static_cast<const JSArrayIterator *>(*p);
+ auto that_ = static_cast<const JSArrayIterator *>(*other);
+ return this_->index == that_->index && this_->data == that_->data;
+ };
+ iterator._copyIter = [](void **iterator, void * const * otherIterator) {
+ auto *otherIter = (static_cast<JSArrayIterator const *>(*otherIterator));
+ static_cast<JSArrayIterator *>(*iterator)->index = otherIter->index;
+ static_cast<JSArrayIterator *>(*iterator)->data = otherIter->data;
+ };
+ return iterator;
+}
+
ExecutionEngine::ExecutionEngine(QJSEngine *jsEngine)
: executableAllocator(new QV4::ExecutableAllocator)
, regExpAllocator(new QV4::ExecutableAllocator)
@@ -222,7 +309,7 @@ ExecutionEngine::ExecutionEngine(QJSEngine *jsEngine)
ok = false;
maxCallDepth = qEnvironmentVariableIntValue("QV4_MAX_CALL_DEPTH", &ok);
if (!ok || maxCallDepth <= 0) {
-#if defined(QT_NO_DEBUG) && !defined(__SANITIZE_ADDRESS__) && !QT_HAS_FEATURE(address_sanitizer)
+#if defined(QT_NO_DEBUG) && !defined(__SANITIZE_ADDRESS__) && !__has_feature(address_sanitizer)
maxCallDepth = 1234;
#else
// no (tail call) optimization is done, so there'll be a lot mare stack frames active
@@ -712,6 +799,8 @@ ExecutionEngine::ExecutionEngine(QJSEngine *jsEngine)
QMetaType::registerConverter<QJSValue, QVariantList>(convertJSValueToVariantType<QVariantList>);
if (!QMetaType::hasRegisteredConverterFunction<QJSValue, QStringList>())
QMetaType::registerConverter<QJSValue, QStringList>(convertJSValueToVariantType<QStringList>);
+ if (!QMetaType::hasRegisteredConverterFunction<QJSValue, QtMetaTypePrivate::QSequentialIterableImpl>())
+ QMetaType::registerConverter<QJSValue, QtMetaTypePrivate::QSequentialIterableImpl>(jsvalueToSequence);
QMetaType::registerStreamOperators(qMetaTypeId<QJSValue>(), saveJSValue, restoreJSValue);
QV4::QObjectWrapper::initializeBindings(this);
@@ -1178,8 +1267,11 @@ QUrl ExecutionEngine::resolvedUrl(const QString &file)
void ExecutionEngine::markObjects(MarkStack *markStack)
{
for (int i = 0; i < NClasses; ++i)
- if (classes[i])
+ if (classes[i]) {
classes[i]->mark(markStack);
+ if (markStack->top >= markStack->limit)
+ markStack->drain();
+ }
markStack->drain();
identifierTable->markObjects(markStack);
@@ -2238,4 +2330,9 @@ int ExecutionEngine::registerExtension()
return registrationData()->extensionCount++;
}
+QNetworkAccessManager *QV4::detail::getNetworkAccessManager(ExecutionEngine *engine)
+{
+ return engine->qmlEngine()->networkAccessManager();
+}
+
QT_END_NAMESPACE
diff --git a/src/qml/jsruntime/qv4engine_p.h b/src/qml/jsruntime/qv4engine_p.h
index d233347060..e0025feb00 100644
--- a/src/qml/jsruntime/qv4engine_p.h
+++ b/src/qml/jsruntime/qv4engine_p.h
@@ -91,7 +91,14 @@ class PageAllocation;
QT_BEGIN_NAMESPACE
-namespace QV4 { struct QObjectMethod; }
+class QNetworkAccessManager;
+
+namespace QV4 {
+struct QObjectMethod;
+namespace detail {
+QNetworkAccessManager *getNetworkAccessManager(ExecutionEngine *engine);
+}
+}
// Used to allow a QObject method take and return raw V4 handles without having to expose
// 48 in the public API.
@@ -348,6 +355,8 @@ public:
FunctionObject *getStackFunction() const { return reinterpret_cast<FunctionObject *>(jsObjects + GetStack_Function); }
FunctionObject *thrower() const { return reinterpret_cast<FunctionObject *>(jsObjects + ThrowerObject); }
+ QNetworkAccessManager* (*networkAccessManager)(ExecutionEngine*) = detail::getNetworkAccessManager;
+
enum JSStrings {
String_Empty,
String_undefined,
diff --git a/src/qml/jsruntime/qv4enginebase_p.h b/src/qml/jsruntime/qv4enginebase_p.h
index 788897bdad..5e62c5bd50 100644
--- a/src/qml/jsruntime/qv4enginebase_p.h
+++ b/src/qml/jsruntime/qv4enginebase_p.h
@@ -86,7 +86,6 @@ struct Q_QML_EXPORT EngineBase {
quint8 isExecutingInRegExpJIT = false;
quint8 padding[3];
MemoryManager *memoryManager = nullptr;
- Runtime runtime;
qint32 callDepth = 0;
Value *jsStackLimit = nullptr;
@@ -146,7 +145,6 @@ Q_STATIC_ASSERT(offsetof(EngineBase, currentStackFrame) == 0);
Q_STATIC_ASSERT(offsetof(EngineBase, jsStackTop) == offsetof(EngineBase, currentStackFrame) + QT_POINTER_SIZE);
Q_STATIC_ASSERT(offsetof(EngineBase, hasException) == offsetof(EngineBase, jsStackTop) + QT_POINTER_SIZE);
Q_STATIC_ASSERT(offsetof(EngineBase, memoryManager) == offsetof(EngineBase, hasException) + 8);
-Q_STATIC_ASSERT(offsetof(EngineBase, runtime) == offsetof(EngineBase, memoryManager) + QT_POINTER_SIZE);
Q_STATIC_ASSERT(offsetof(EngineBase, isInterrupted) + sizeof(EngineBase::isInterrupted) <= offsetof(EngineBase, hasException) + 4);
}
diff --git a/src/qml/jsruntime/qv4executablecompilationunit.cpp b/src/qml/jsruntime/qv4executablecompilationunit.cpp
index 7c6368d60a..b1e2879bba 100644
--- a/src/qml/jsruntime/qv4executablecompilationunit.cpp
+++ b/src/qml/jsruntime/qv4executablecompilationunit.cpp
@@ -94,11 +94,15 @@ ExecutableCompilationUnit::~ExecutableCompilationUnit()
QString ExecutableCompilationUnit::localCacheFilePath(const QUrl &url)
{
+ static const QByteArray envCachePath = qgetenv("QML_DISK_CACHE_PATH");
+
const QString localSourcePath = QQmlFile::urlToLocalFileOrQrc(url);
const QString cacheFileSuffix = QFileInfo(localSourcePath + QLatin1Char('c')).completeSuffix();
QCryptographicHash fileNameHash(QCryptographicHash::Sha1);
fileNameHash.addData(localSourcePath.toUtf8());
- QString directory = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QLatin1String("/qmlcache/");
+ QString directory = envCachePath.isEmpty()
+ ? QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QLatin1String("/qmlcache/")
+ : QString::fromLocal8Bit(envCachePath) + QLatin1String("/");
QDir::root().mkpath(directory);
return directory + QString::fromUtf8(fileNameHash.result().toHex()) + QLatin1Char('.') + cacheFileSuffix;
}
diff --git a/src/qml/jsruntime/qv4functionobject.cpp b/src/qml/jsruntime/qv4functionobject.cpp
index 6fb7946023..dfef52583e 100644
--- a/src/qml/jsruntime/qv4functionobject.cpp
+++ b/src/qml/jsruntime/qv4functionobject.cpp
@@ -364,7 +364,13 @@ ReturnedValue FunctionPrototype::method_apply(const QV4::FunctionObject *b, cons
if (!arr)
return v4->throwTypeError();
- uint len = arr->getLength();
+ const qint64 len64 = arr->getLength();
+ if (len64 < 0ll || len64 > qint64(std::numeric_limits<int>::max()))
+ return v4->throwRangeError(QStringLiteral("Invalid array length."));
+ if (len64 > qint64(v4->jsStackLimit - v4->jsStackTop))
+ return v4->throwRangeError(QStringLiteral("Array too large for apply()."));
+
+ const uint len = uint(len64);
Scope scope(v4);
Value *arguments = scope.alloc<Scope::Uninitialized>(len);
diff --git a/src/qml/jsruntime/qv4object_p.h b/src/qml/jsruntime/qv4object_p.h
index f3375929a3..9e901d6a34 100644
--- a/src/qml/jsruntime/qv4object_p.h
+++ b/src/qml/jsruntime/qv4object_p.h
@@ -157,7 +157,7 @@ struct Q_QML_EXPORT Object: Managed {
const Value *propertyData(uint index) const { return d()->propertyData(index); }
Heap::ArrayData *arrayData() const { return d()->arrayData; }
- void setArrayData(ArrayData *a) { d()->arrayData.set(engine(), a->d()); }
+ void setArrayData(ArrayData *a) { d()->arrayData.set(engine(), a ? a->d() : nullptr); }
void getProperty(const InternalClassEntry &entry, Property *p) const;
void setProperty(const InternalClassEntry &entry, const Property *p);
diff --git a/src/qml/jsruntime/qv4objectiterator.cpp b/src/qml/jsruntime/qv4objectiterator.cpp
index e529b8e86b..65f6fa8b12 100644
--- a/src/qml/jsruntime/qv4objectiterator.cpp
+++ b/src/qml/jsruntime/qv4objectiterator.cpp
@@ -182,7 +182,7 @@ PropertyKey ForInIteratorObject::nextProperty() const
if (d()->current != d()->object) {
o = d()->object;
bool shadowed = false;
- while (o->d() != c->heapObject()) {
+ while (o && o->d() != c->heapObject()) {
if (o->getOwnProperty(key) != Attr_Invalid) {
shadowed = true;
break;
diff --git a/src/qml/jsruntime/qv4objectproto.cpp b/src/qml/jsruntime/qv4objectproto.cpp
index 3d3b3f413f..7d910a1cbc 100644
--- a/src/qml/jsruntime/qv4objectproto.cpp
+++ b/src/qml/jsruntime/qv4objectproto.cpp
@@ -658,6 +658,7 @@ ReturnedValue ObjectPrototype::method_toString(const FunctionObject *b, const Va
ReturnedValue ObjectPrototype::method_toLocaleString(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc)
{
Scope scope(b);
+ CHECK_STACK_LIMITS(scope.engine)
ScopedObject o(scope, thisObject->toObject(scope.engine));
if (!o)
RETURN_UNDEFINED();
diff --git a/src/qml/jsruntime/qv4proxy.cpp b/src/qml/jsruntime/qv4proxy.cpp
index 9325e2e53b..51f96b9003 100644
--- a/src/qml/jsruntime/qv4proxy.cpp
+++ b/src/qml/jsruntime/qv4proxy.cpp
@@ -515,7 +515,7 @@ ProxyObjectOwnPropertyKeyIterator::ProxyObjectOwnPropertyKeyIterator(ArrayObject
PropertyKey ProxyObjectOwnPropertyKeyIterator::next(const Object *m, Property *pd, PropertyAttributes *attrs)
{
- if (index >= len)
+ if (index >= len || m == nullptr)
return PropertyKey::invalid();
Scope scope(m);
diff --git a/src/qml/jsruntime/qv4regexp.cpp b/src/qml/jsruntime/qv4regexp.cpp
index 9e77061882..76daead842 100644
--- a/src/qml/jsruntime/qv4regexp.cpp
+++ b/src/qml/jsruntime/qv4regexp.cpp
@@ -73,15 +73,13 @@ DEFINE_MANAGED_VTABLE(RegExp);
uint RegExp::match(const QString &string, int start, uint *matchOffsets)
{
- static const uint offsetJITFail = std::numeric_limits<unsigned>::max() - 1;
- Q_UNUSED(offsetJITFail);
-
if (!isValid())
return JSC::Yarr::offsetNoMatch;
WTF::String s(string);
#if ENABLE(YARR_JIT)
+ static const uint offsetJITFail = std::numeric_limits<unsigned>::max() - 1;
auto *priv = d();
if (priv->hasValidJITCode()) {
uint ret = JSC::Yarr::offsetNoMatch;
diff --git a/src/qml/jsruntime/qv4regexpobject.cpp b/src/qml/jsruntime/qv4regexpobject.cpp
index c1a42c4afa..f1375e4ca4 100644
--- a/src/qml/jsruntime/qv4regexpobject.cpp
+++ b/src/qml/jsruntime/qv4regexpobject.cpp
@@ -961,8 +961,8 @@ ReturnedValue RegExpPrototype::method_compile(const FunctionObject *b, const Val
return scope.engine->throwTypeError();
Scoped<RegExpObject> re(scope, scope.engine->regExpCtor()->callAsConstructor(argv, argc));
-
- r->d()->value.set(scope.engine, re->value());
+ if (re) // Otherwise the regexp constructor should have thrown an exception
+ r->d()->value.set(scope.engine, re->value());
return Encode::undefined();
}
diff --git a/src/qml/jsruntime/qv4runtime.cpp b/src/qml/jsruntime/qv4runtime.cpp
index 21a0017728..e47a7a0b46 100644
--- a/src/qml/jsruntime/qv4runtime.cpp
+++ b/src/qml/jsruntime/qv4runtime.cpp
@@ -408,6 +408,15 @@ QV4::ReturnedValue Runtime::In::call(ExecutionEngine *engine, const Value &left,
double RuntimeHelpers::stringToNumber(const QString &string)
{
+ // The actual maximum valid length is certainly shorter, but due to the sheer number of
+ // different number formatting variants, we rather err on the side of caution here.
+ // For example, you can have up to 772 valid decimal digits left of the dot, as stated in the
+ // libdoubleconversion sources. The same maximum value would be represented by roughly 3.5 times
+ // as many binary digits.
+ const int excessiveLength = 16 * 1024;
+ if (string.length() > excessiveLength)
+ return qQNaN();
+
const QStringRef s = QStringRef(&string).trimmed();
if (s.startsWith(QLatin1Char('0'))) {
int base = -1;
diff --git a/src/qml/jsruntime/qv4sequenceobject.cpp b/src/qml/jsruntime/qv4sequenceobject.cpp
index 7caa122698..ee42342bf2 100644
--- a/src/qml/jsruntime/qv4sequenceobject.cpp
+++ b/src/qml/jsruntime/qv4sequenceobject.cpp
@@ -304,8 +304,10 @@ public:
return false;
}
- if (d()->isReadOnly)
+ if (d()->isReadOnly) {
+ engine()->throwTypeError(QLatin1String("Cannot insert into a readonly container"));
return false;
+ }
if (d()->isReference) {
if (!d()->object)
@@ -370,7 +372,7 @@ public:
if (attrs)
*attrs = QV4::Attr_Data;
if (pd)
- pd->value = convertElementToValue(s->engine(), s->d()->container->at(index));
+ pd->value = convertElementToValue(s->engine(), (*s->d()->container)[index]);
return PropertyKey::fromArrayIndex(index);
}
diff --git a/src/qml/jsruntime/qv4string.cpp b/src/qml/jsruntime/qv4string.cpp
index 223f4a4769..fc004a2ce0 100644
--- a/src/qml/jsruntime/qv4string.cpp
+++ b/src/qml/jsruntime/qv4string.cpp
@@ -91,18 +91,14 @@ bool String::virtualIsEqualTo(Managed *t, Managed *o)
void Heap::String::init(const QString &t)
{
- Base::init();
-
+ QString mutableText(t);
+ StringOrSymbol::init(mutableText.data_ptr());
subtype = String::StringType_Unknown;
-
- text = const_cast<QString &>(t).data_ptr();
- text->ref.ref();
}
void Heap::ComplexString::init(String *l, String *r)
{
- Base::init();
-
+ StringOrSymbol::init();
subtype = String::StringType_AddedString;
left = l;
@@ -125,7 +121,7 @@ void Heap::ComplexString::init(String *l, String *r)
void Heap::ComplexString::init(Heap::String *ref, int from, int len)
{
Q_ASSERT(ref->length() >= from + len);
- Base::init();
+ StringOrSymbol::init();
subtype = String::StringType_SubString;
@@ -136,11 +132,11 @@ void Heap::ComplexString::init(Heap::String *ref, int from, int len)
void Heap::StringOrSymbol::destroy()
{
- if (text) {
- internalClass->engine->memoryManager->changeUnmanagedHeapSizeUsage(qptrdiff(-text->size) * (int)sizeof(QChar));
- if (!text->ref.deref())
- QStringData::deallocate(text);
+ if (subtype < Heap::String::StringType_AddedString) {
+ internalClass->engine->memoryManager->changeUnmanagedHeapSizeUsage(
+ qptrdiff(-text()->size) * qptrdiff(sizeof(QChar)));
}
+ text().~QStringPrivate();
Base::destroy();
}
@@ -164,27 +160,27 @@ uint String::toUInt(bool *ok) const
void String::createPropertyKeyImpl() const
{
- if (!d()->text)
+ if (d()->subtype >= Heap::String::StringType_AddedString)
d()->simplifyString();
- Q_ASSERT(d()->text);
+ Q_ASSERT(d()->subtype < Heap::String::StringType_AddedString);
engine()->identifierTable->asPropertyKey(this);
}
void Heap::String::simplifyString() const
{
- Q_ASSERT(!text);
+ Q_ASSERT(subtype >= StringType_AddedString);
int l = length();
QString result(l, Qt::Uninitialized);
QChar *ch = const_cast<QChar *>(result.constData());
append(this, ch);
- text = result.data_ptr();
- text->ref.ref();
+ text() = result.data_ptr();
const ComplexString *cs = static_cast<const ComplexString *>(this);
identifier = PropertyKey::invalid();
cs->left = cs->right = nullptr;
- internalClass->engine->memoryManager->changeUnmanagedHeapSizeUsage(qptrdiff(text->size) * (qptrdiff)sizeof(QChar));
+ internalClass->engine->memoryManager->changeUnmanagedHeapSizeUsage(
+ qptrdiff(text().size) * qptrdiff(sizeof(QChar)));
subtype = StringType_Unknown;
}
@@ -206,7 +202,7 @@ bool Heap::String::startsWithUpper() const
offset = cs->from;
}
Q_ASSERT(str->subtype < Heap::String::StringType_Complex);
- return str->text->size > offset && QChar::isUpper(str->text->data()[offset]);
+ return str->text().size > offset && QChar::isUpper(str->text().data()[offset]);
}
void Heap::String::append(const String *data, QChar *ch)
@@ -228,21 +224,21 @@ void Heap::String::append(const String *data, QChar *ch)
memcpy(ch, cs->left->toQString().constData() + cs->from, cs->len*sizeof(QChar));
ch += cs->len;
} else {
- memcpy(static_cast<void *>(ch), static_cast<const void *>(item->text->data()), item->text->size * sizeof(QChar));
- ch += item->text->size;
+ memcpy(static_cast<void *>(ch), item->text().data(), item->text().size * sizeof(QChar));
+ ch += item->text().size;
}
}
}
void Heap::StringOrSymbol::createHashValue() const
{
- if (!text) {
+ if (subtype >= StringType_AddedString) {
Q_ASSERT(internalClass->vtable->isString);
static_cast<const Heap::String *>(this)->simplifyString();
}
- Q_ASSERT(text);
- const QChar *ch = reinterpret_cast<const QChar *>(text->data());
- const QChar *end = ch + text->size;
+ Q_ASSERT(subtype < StringType_AddedString);
+ const QChar *ch = reinterpret_cast<const QChar *>(text().data());
+ const QChar *end = ch + text().size;
stringHash = QV4::String::calculateHashValue(ch, end, &subtype);
}
diff --git a/src/qml/jsruntime/qv4string_p.h b/src/qml/jsruntime/qv4string_p.h
index 52fe09cd72..d5d11ef660 100644
--- a/src/qml/jsruntime/qv4string_p.h
+++ b/src/qml/jsruntime/qv4string_p.h
@@ -77,7 +77,18 @@ struct Q_QML_PRIVATE_EXPORT StringOrSymbol : Base
StringType_Complex = StringType_AddedString
};
- mutable QStringData *text;
+ void init() {
+ Base::init();
+ new (&textStorage) QStringPrivate;
+ }
+
+ void init(QStringPrivate text)
+ {
+ Base::init();
+ new (&textStorage) QStringPrivate(std::move(text));
+ }
+
+ mutable std::aligned_storage<sizeof(QStringPrivate), alignof(QStringPrivate)>::type textStorage;
mutable PropertyKey identifier;
mutable uint subtype;
mutable uint stringHash;
@@ -85,12 +96,11 @@ struct Q_QML_PRIVATE_EXPORT StringOrSymbol : Base
static void markObjects(Heap::Base *that, MarkStack *markStack);
void destroy();
+ QStringPrivate &text() const { return *reinterpret_cast<QStringPrivate *>(&textStorage); }
+
inline QString toQString() const {
- if (!text)
- return QString();
- QStringDataPtr ptr = { text };
- text->ref.ref();
- return QString(ptr);
+ QStringPrivate dd = text();
+ return QString(std::move(dd));
}
void createHashValue() const;
inline unsigned hashValue() const {
@@ -113,14 +123,12 @@ struct Q_QML_PRIVATE_EXPORT String : StringOrSymbol {
void simplifyString() const;
int length() const;
std::size_t retainedTextSize() const {
- return subtype >= StringType_Complex ? 0 : (std::size_t(text->size) * sizeof(QChar));
+ return subtype >= StringType_Complex ? 0 : (std::size_t(text().size) * sizeof(QChar));
}
inline QString toQString() const {
if (subtype >= StringType_Complex)
simplifyString();
- QStringDataPtr ptr = { text };
- text->ref.ref();
- return QString(ptr);
+ return StringOrSymbol::toQString();
}
inline bool isEqualTo(const String *other) const {
if (this == other)
@@ -158,7 +166,7 @@ Q_STATIC_ASSERT(std::is_trivial< ComplexString >::value);
inline
int String::length() const {
- return text ? text->size : static_cast<const ComplexString *>(this)->len;
+ return subtype < StringType_AddedString ? text().size : static_cast<const ComplexString *>(this)->len;
}
}
@@ -252,7 +260,7 @@ public:
}
if (subtype)
- *subtype = (charToUInt(ch) == '@') ? Heap::StringOrSymbol::StringType_Symbol : Heap::StringOrSymbol::StringType_Regular;
+ *subtype = (ch != end && charToUInt(ch) == '@') ? Heap::StringOrSymbol::StringType_Symbol : Heap::StringOrSymbol::StringType_Regular;
return h;
}
};
diff --git a/src/qml/jsruntime/qv4symbol.cpp b/src/qml/jsruntime/qv4symbol.cpp
index 004a9938e2..be6d821c14 100644
--- a/src/qml/jsruntime/qv4symbol.cpp
+++ b/src/qml/jsruntime/qv4symbol.cpp
@@ -50,10 +50,9 @@ DEFINE_OBJECT_VTABLE(SymbolObject);
void Heap::Symbol::init(const QString &s)
{
Q_ASSERT(s.at(0) == QLatin1Char('@'));
- identifier = PropertyKey::fromStringOrSymbol(this);
QString desc(s);
- text = desc.data_ptr();
- text->ref.ref();
+ StringOrSymbol::init(desc.data_ptr());
+ identifier = PropertyKey::fromStringOrSymbol(this);
}
void Heap::SymbolCtor::init(QV4::ExecutionContext *scope)
diff --git a/src/qml/jsruntime/qv4typedarray.cpp b/src/qml/jsruntime/qv4typedarray.cpp
index 893fe06e8e..40a434d301 100644
--- a/src/qml/jsruntime/qv4typedarray.cpp
+++ b/src/qml/jsruntime/qv4typedarray.cpp
@@ -338,8 +338,8 @@ ReturnedValue TypedArrayCtor::virtualCallAsConstructor(const FunctionObject *f,
array->d()->byteLength = destByteLength;
array->d()->byteOffset = 0;
- const char *src = buffer->d()->data->data() + typedArray->d()->byteOffset;
- char *dest = newBuffer->d()->data->data();
+ const char *src = buffer->d()->data()->data() + typedArray->d()->byteOffset;
+ char *dest = newBuffer->d()->data()->data();
// check if src and new type have the same size. In that case we can simply memcpy the data
if (srcElementSize == destElementSize) {
@@ -420,7 +420,7 @@ ReturnedValue TypedArrayCtor::virtualCallAsConstructor(const FunctionObject *f,
array->d()->byteOffset = 0;
uint idx = 0;
- char *b = newBuffer->d()->data->data();
+ char *b = newBuffer->d()->data()->data();
ScopedValue val(scope);
while (idx < l) {
val = o->get(idx);
@@ -480,7 +480,7 @@ ReturnedValue TypedArray::virtualGet(const Managed *m, PropertyKey id, const Val
if (hasProperty)
*hasProperty = true;
- return a->d()->type->read(a->d()->buffer->data->data() + byteOffset);
+ return a->d()->type->read(a->d()->buffer->data()->data() + byteOffset);
}
bool TypedArray::virtualHasProperty(const Managed *m, PropertyKey id)
@@ -538,7 +538,7 @@ bool TypedArray::virtualPut(Managed *m, PropertyKey id, const Value &value, Valu
Value v = Value::fromReturnedValue(value.convertedToNumber());
if (scope.hasException() || a->d()->buffer->isDetachedBuffer())
return scope.engine->throwTypeError();
- a->d()->type->write(a->d()->buffer->data->data() + byteOffset, v);
+ a->d()->type->write(a->d()->buffer->data()->data() + byteOffset, v);
return true;
}
@@ -569,7 +569,7 @@ bool TypedArray::virtualDefineOwnProperty(Managed *m, PropertyKey id, const Prop
uint bytesPerElement = a->d()->type->bytesPerElement;
uint byteOffset = a->d()->byteOffset + index * bytesPerElement;
Q_ASSERT(byteOffset + bytesPerElement <= (uint)a->d()->buffer->byteLength());
- a->d()->type->write(a->d()->buffer->data->data() + byteOffset, v);
+ a->d()->type->write(a->d()->buffer->data()->data() + byteOffset, v);
}
return true;
}
@@ -713,7 +713,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_copyWithin(const FunctionObje
if (from != to) {
int elementSize = O->d()->type->bytesPerElement;
- char *data = O->d()->buffer->data->data() + O->d()->byteOffset;
+ char *data = O->d()->buffer->data()->data() + O->d()->byteOffset;
memmove(data + to*elementSize, data + from*elementSize, count*elementSize);
}
@@ -749,7 +749,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_every(const FunctionObject *b
ScopedValue r(scope);
Value *arguments = scope.alloc(3);
- const char *data = v->d()->buffer->data->data();
+ const char *data = v->d()->buffer->data()->data();
uint bytesPerElement = v->d()->type->bytesPerElement;
uint byteOffset = v->d()->byteOffset;
@@ -802,7 +802,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_fill(const FunctionObject *b,
if (scope.hasException() || v->d()->buffer->isDetachedBuffer())
return scope.engine->throwTypeError();
- char *data = v->d()->buffer->data->data();
+ char *data = v->d()->buffer->data()->data();
uint bytesPerElement = v->d()->type->bytesPerElement;
uint byteOffset = v->d()->byteOffset;
@@ -1409,13 +1409,14 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_set(const FunctionObject *b,
if (scope.engine->hasException || l != len)
return scope.engine->throwTypeError();
- if (offset + l > a->length())
+ const uint aLength = a->length();
+ if (offset > aLength || l > aLength - offset)
RETURN_RESULT(scope.engine->throwRangeError(QStringLiteral("TypedArray.set: out of range")));
uint idx = 0;
if (buffer->isDetachedBuffer())
return scope.engine->throwTypeError();
- char *b = buffer->d()->data->data() + a->d()->byteOffset + offset*elementSize;
+ char *b = buffer->d()->data()->data() + a->d()->byteOffset + offset*elementSize;
ScopedValue val(scope);
while (idx < l) {
val = o->get(idx);
@@ -1439,11 +1440,13 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_set(const FunctionObject *b,
return scope.engine->throwTypeError();
uint l = srcTypedArray->length();
- if (offset + l > a->length())
+
+ const uint aLength = a->length();
+ if (offset > aLength || l > aLength - offset)
RETURN_RESULT(scope.engine->throwRangeError(QStringLiteral("TypedArray.set: out of range")));
- char *dest = buffer->d()->data->data() + a->d()->byteOffset + offset*elementSize;
- const char *src = srcBuffer->d()->data->data() + srcTypedArray->d()->byteOffset;
+ char *dest = buffer->d()->data()->data() + a->d()->byteOffset + offset*elementSize;
+ const char *src = srcBuffer->d()->data()->data() + srcTypedArray->d()->byteOffset;
if (srcTypedArray->d()->type == a->d()->type) {
// same type of typed arrays, use memmove (as srcbuffer and buffer could be the same)
memmove(dest, src, srcTypedArray->d()->byteLength);
@@ -1641,6 +1644,158 @@ ReturnedValue IntrinsicTypedArrayCtor::method_of(const FunctionObject *f, const
return newObj->asReturnedValue();
}
+ReturnedValue IntrinsicTypedArrayCtor::method_from(const FunctionObject *f, const Value *thisObject, const Value *argv, int argc)
+{
+ Scope scope(f);
+ ScopedObject itemsObject(scope, argv[0]);
+ bool usingIterator = false;
+
+ ScopedFunctionObject mapfn(scope, Value::undefinedValue());
+ Value *mapArguments = nullptr;
+ if (argc > 1) {
+ mapfn = ScopedFunctionObject(scope, argv[1]);
+ if (!mapfn)
+ return scope.engine->throwTypeError(QString::fromLatin1("%1 is not a function").arg(argv[1].toQStringNoThrow()));
+ mapArguments = scope.alloc(2);
+ }
+
+ // Iterator validity check goes after map function validity has been checked.
+ if (itemsObject) {
+ // If the object claims to support iterators, then let's try use them.
+ ScopedValue it(scope, itemsObject->get(scope.engine->symbol_iterator()));
+ CHECK_EXCEPTION();
+ if (!it->isNullOrUndefined()) {
+ ScopedFunctionObject itfunc(scope, it);
+ if (!itfunc)
+ return scope.engine->throwTypeError();
+ usingIterator = true;
+ }
+ }
+
+ ScopedValue thisArg(scope);
+ if (argc > 2)
+ thisArg = argv[2];
+
+ const FunctionObject *C = thisObject->as<FunctionObject>();
+
+ if (usingIterator) {
+ // Item iteration supported, so let's go ahead and try use that.
+ CHECK_EXCEPTION();
+
+ qint64 iterableLength = 0;
+ Value *nextValue = scope.alloc(1);
+ ScopedValue done(scope);
+
+ ScopedObject lengthIterator(scope, Runtime::GetIterator::call(scope.engine, itemsObject, true));
+ CHECK_EXCEPTION(); // symbol_iterator threw; whoops.
+ if (!lengthIterator) {
+ return scope.engine->throwTypeError(); // symbol_iterator wasn't an object.
+ }
+
+ forever {
+ // Here we calculate the length of the iterable range.
+ if (iterableLength > (static_cast<qint64>(1) << 53) - 1) {
+ ScopedValue falsey(scope, Encode(false));
+ ScopedValue error(scope, scope.engine->throwTypeError());
+ return Runtime::IteratorClose::call(scope.engine, lengthIterator, falsey);
+ }
+ // Retrieve the next value. If the iteration ends, we're done here.
+ done = Value::fromReturnedValue(Runtime::IteratorNext::call(scope.engine, lengthIterator, nextValue));
+ if (scope.engine->hasException)
+ return Runtime::IteratorClose::call(scope.engine, lengthIterator, Value::fromBoolean(false));
+ if (done->toBoolean()) {
+ break;
+ }
+ iterableLength++;
+ }
+
+ // Constructor validity check goes after we have calculated the length, because that calculation can throw
+ // errors that are not type errors and at least the tests expect those rather than type errors.
+ if (!C || !C->isConstructor())
+ return scope.engine->throwTypeError();
+
+ ScopedObject iterator(scope, Runtime::GetIterator::call(scope.engine, itemsObject, true));
+ CHECK_EXCEPTION(); // symbol_iterator can throw.
+ if (!iterator) {
+ return scope.engine->throwTypeError(); // symbol_iterator wasn't an object.
+ }
+
+ ScopedObject a(scope, Value::undefinedValue());
+ ScopedValue ctorArgument(scope, Value::fromReturnedValue(QV4::Encode(int(iterableLength))));
+ a = C->callAsConstructor(ctorArgument, 1);
+ CHECK_EXCEPTION();
+
+ // We check exceptions above, and only after doing so, check the array's validity after construction.
+ if (!::validateTypedArray(a) || (a->getLength() < iterableLength))
+ return scope.engine->throwTypeError();
+
+
+ // The loop below traverses the iterator, and puts elements into the created array.
+ ScopedValue mappedValue(scope, Value::undefinedValue());
+ for (qint64 k = 0; k < iterableLength; ++k) {
+ done = Value::fromReturnedValue(Runtime::IteratorNext::call(scope.engine, iterator, nextValue));
+ if (scope.engine->hasException)
+ return Runtime::IteratorClose::call(scope.engine, iterator, Value::fromBoolean(false));
+
+ if (mapfn) {
+ mapArguments[0] = *nextValue;
+ mapArguments[1] = Value::fromDouble(k);
+ mappedValue = mapfn->call(thisArg, mapArguments, 2);
+ if (scope.engine->hasException)
+ return Runtime::IteratorClose::call(scope.engine, iterator, Value::fromBoolean(false));
+ } else {
+ mappedValue = *nextValue;
+ }
+
+ a->put(k, mappedValue);
+ if (scope.engine->hasException)
+ return Runtime::IteratorClose::call(scope.engine, iterator, Value::fromBoolean(false));
+ }
+ return a.asReturnedValue();
+ } else {
+ // Array-like fallback. We request elements by index, and put them into the created array.
+ ScopedObject arrayLike(scope, argv[0].toObject(scope.engine));
+ if (!arrayLike)
+ return scope.engine->throwTypeError(QString::fromLatin1("Cannot convert %1 to object").arg(argv[0].toQStringNoThrow()));
+
+ int len = arrayLike->getLength();
+ CHECK_EXCEPTION();
+
+ // Getting the length may throw, and must do so before we check the constructor validity.
+ if (!C || !C->isConstructor())
+ return scope.engine->throwTypeError();
+
+ ScopedObject a(scope, Value::undefinedValue());
+ ScopedValue ctorArgument(scope, Value::fromReturnedValue(QV4::Encode(len)));
+ a = C->callAsConstructor(ctorArgument, 1);
+ CHECK_EXCEPTION();
+
+ // We check exceptions above, and only after doing so, check the array's validity after construction.
+ if (!::validateTypedArray(a) || (a->getLength() < len))
+ return scope.engine->throwTypeError();
+
+ ScopedValue mappedValue(scope, Value::undefinedValue());
+ ScopedValue kValue(scope);
+ for (int k = 0; k < len; ++k) {
+ kValue = arrayLike->get(k);
+ CHECK_EXCEPTION();
+
+ if (mapfn) {
+ mapArguments[0] = kValue;
+ mapArguments[1] = Value::fromDouble(k);
+ mappedValue = mapfn->call(thisArg, mapArguments, 2);
+ CHECK_EXCEPTION();
+ } else {
+ mappedValue = kValue;
+ }
+
+ a->put(k, mappedValue);
+ CHECK_EXCEPTION();
+ }
+ return a.asReturnedValue();
+ }
+}
+
void IntrinsicTypedArrayPrototype::init(ExecutionEngine *engine, IntrinsicTypedArrayCtor *ctor)
{
Scope scope(engine);
@@ -1650,6 +1805,8 @@ void IntrinsicTypedArrayPrototype::init(ExecutionEngine *engine, IntrinsicTypedA
ctor->defineReadonlyConfigurableProperty(engine->id_name(), s);
s = scope.engine->newString(QStringLiteral("of"));
ctor->defineDefaultProperty(s, IntrinsicTypedArrayCtor::method_of);
+ s = scope.engine->newString(QStringLiteral("from"));
+ ctor->defineDefaultProperty(s, IntrinsicTypedArrayCtor::method_from, 1);
ctor->addSymbolSpecies();
defineAccessorProperty(QStringLiteral("buffer"), method_get_buffer, nullptr);
diff --git a/src/qml/jsruntime/qv4typedarray_p.h b/src/qml/jsruntime/qv4typedarray_p.h
index 64792f23a2..e590083bc3 100644
--- a/src/qml/jsruntime/qv4typedarray_p.h
+++ b/src/qml/jsruntime/qv4typedarray_p.h
@@ -156,8 +156,8 @@ struct Q_QML_PRIVATE_EXPORT TypedArray : Object
return d()->byteLength/d()->type->bytesPerElement;
}
- QTypedArrayData<char> *arrayData() {
- return d()->buffer->data;
+ QArrayDataPointer<char> *arrayData() {
+ return &d()->buffer->data();
}
Heap::TypedArray::Type arrayType() const {
@@ -181,6 +181,7 @@ struct IntrinsicTypedArrayCtor: FunctionObject
static constexpr VTable::Call virtualCall = nullptr;
static ReturnedValue method_of(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
+ static ReturnedValue method_from(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
};
struct TypedArrayCtor: FunctionObject
diff --git a/src/qml/jsruntime/qv4value_p.h b/src/qml/jsruntime/qv4value_p.h
index 4e901721cb..ae12033eb4 100644
--- a/src/qml/jsruntime/qv4value_p.h
+++ b/src/qml/jsruntime/qv4value_p.h
@@ -555,6 +555,8 @@ struct ValueArray {
} else {
while (v < end) {
v->mark(markStack);
+ if (markStack->top >= markStack->limit)
+ markStack->drain();
++v;
}
}
diff --git a/src/qml/jsruntime/qv4vme_moth.cpp b/src/qml/jsruntime/qv4vme_moth.cpp
index ad5a6ebc8c..fb103d492d 100644
--- a/src/qml/jsruntime/qv4vme_moth.cpp
+++ b/src/qml/jsruntime/qv4vme_moth.cpp
@@ -341,7 +341,17 @@ static struct InstrCount {
}
#endif
-#define STACK_VALUE(temp) stack[temp]
+static inline QV4::Value &stackValue(QV4::Value *stack, size_t slot, const CppStackFrame *frame)
+{
+ Q_ASSERT(slot < CallData::HeaderSize() / sizeof(QV4::StaticValue)
+ + frame->jsFrame->argc()
+ + frame->v4Function->compiledFunction->nRegisters);
+ Q_UNUSED(frame);
+
+ return stack[slot];
+}
+
+#define STACK_VALUE(temp) stackValue(stack, temp, frame)
// qv4scopedvalue_p.h also defines a CHECK_EXCEPTION macro
#ifdef CHECK_EXCEPTION
@@ -424,7 +434,7 @@ ReturnedValue VME::exec(CppStackFrame *frame, ExecutionEngine *engine)
Function *function = frame->v4Function;
Q_TRACE_SCOPE(QQmlV4_function_call, engine, function->name()->toQString(),
- function->compilationUnit->fileName(),
+ function->executableCompilationUnit()->fileName(),
function->compiledFunction->location.line,
function->compiledFunction->location.column);
Profiling::FunctionCallProfiler profiler(engine, function); // start execution profiling
@@ -521,14 +531,14 @@ QV4::ReturnedValue VME::interpret(CppStackFrame *frame, ExecutionEngine *engine,
MOTH_END_INSTR(LoadImport)
MOTH_BEGIN_INSTR(LoadLocal)
- auto cc = static_cast<Heap::CallContext *>(stack[CallData::Context].m());
+ auto cc = static_cast<Heap::CallContext *>(STACK_VALUE(CallData::Context).m());
Q_ASSERT(cc->type != QV4::Heap::CallContext::Type_GlobalContext);
acc = cc->locals[index].asReturnedValue();
MOTH_END_INSTR(LoadLocal)
MOTH_BEGIN_INSTR(StoreLocal)
CHECK_EXCEPTION;
- auto cc = static_cast<Heap::CallContext *>(stack[CallData::Context].m());
+ auto cc = static_cast<Heap::CallContext *>(STACK_VALUE(CallData::Context).m());
Q_ASSERT(cc->type != QV4::Heap::CallContext::Type_GlobalContext);
QV4::WriteBarrier::write(engine, cc, cc->locals.values[index].data_ptr(), acc);
MOTH_END_INSTR(StoreLocal)
@@ -714,7 +724,7 @@ QV4::ReturnedValue VME::interpret(CppStackFrame *frame, ExecutionEngine *engine,
MOTH_BEGIN_INSTR(CallProperty)
STORE_IP();
- acc = Runtime::CallProperty::call(engine, stack[base], name, stack + argv, argc);
+ acc = Runtime::CallProperty::call(engine, STACK_VALUE(base), name, stack + argv, argc);
CHECK_EXCEPTION;
MOTH_END_INSTR(CallProperty)
@@ -722,21 +732,21 @@ QV4::ReturnedValue VME::interpret(CppStackFrame *frame, ExecutionEngine *engine,
STORE_IP();
Lookup *l = function->executableCompilationUnit()->runtimeLookups + lookupIndex;
- if (stack[base].isNullOrUndefined()) {
+ if (STACK_VALUE(base).isNullOrUndefined()) {
QString message = QStringLiteral("Cannot call method '%1' of %2")
.arg(engine->currentStackFrame->v4Function->compilationUnit->runtimeStrings[l->nameIndex]->toQString())
- .arg(stack[base].toQStringNoThrow());
+ .arg(STACK_VALUE(base).toQStringNoThrow());
acc = engine->throwTypeError(message);
goto handleUnwind;
}
// ok to have the value on the stack here
- Value f = Value::fromReturnedValue(l->getter(l, engine, stack[base]));
+ Value f = Value::fromReturnedValue(l->getter(l, engine, STACK_VALUE(base)));
if (Q_UNLIKELY(!f.isFunctionObject())) {
QString message = QStringLiteral("Property '%1' of object %2 is not a function")
.arg(engine->currentStackFrame->v4Function->compilationUnit->runtimeStrings[l->nameIndex]->toQString())
- .arg(stack[base].toQStringNoThrow());
+ .arg(STACK_VALUE(base).toQStringNoThrow());
acc = engine->throwTypeError(message);
goto handleUnwind;
}
@@ -747,7 +757,7 @@ QV4::ReturnedValue VME::interpret(CppStackFrame *frame, ExecutionEngine *engine,
MOTH_BEGIN_INSTR(CallElement)
STORE_IP();
- acc = Runtime::CallElement::call(engine, stack[base], STACK_VALUE(index), stack + argv, argc);
+ acc = Runtime::CallElement::call(engine, STACK_VALUE(base), STACK_VALUE(index), stack + argv, argc);
CHECK_EXCEPTION;
MOTH_END_INSTR(CallElement)
@@ -864,7 +874,7 @@ QV4::ReturnedValue VME::interpret(CppStackFrame *frame, ExecutionEngine *engine,
MOTH_BEGIN_INSTR(PushWithContext)
STORE_IP();
STORE_ACC();
- acc = Runtime::PushWithContext::call(engine, stack[CallData::Accumulator]);
+ acc = Runtime::PushWithContext::call(engine, STACK_VALUE(CallData::Accumulator));
CHECK_EXCEPTION;
MOTH_END_INSTR(PushWithContext)
@@ -971,12 +981,13 @@ QV4::ReturnedValue VME::interpret(CppStackFrame *frame, ExecutionEngine *engine,
MOTH_BEGIN_INSTR(ConvertThisToObject)
STORE_ACC();
- stack[CallData::This] = Runtime::ConvertThisToObject::call(engine, stack[CallData::This]);
+ stack[CallData::This] = Runtime::ConvertThisToObject::call(
+ engine, STACK_VALUE(CallData::This));
CHECK_EXCEPTION;
MOTH_END_INSTR(ConvertThisToObject)
MOTH_BEGIN_INSTR(LoadSuperConstructor)
- acc = Runtime::LoadSuperConstructor::call(engine, stack[CallData::Function]);
+ acc = Runtime::LoadSuperConstructor::call(engine, STACK_VALUE(CallData::Function));
CHECK_EXCEPTION;
MOTH_END_INSTR(LoadSuperConstructor)
diff --git a/src/qml/memory/qv4mm.cpp b/src/qml/memory/qv4mm.cpp
index 3465036c86..35b2ff2749 100644
--- a/src/qml/memory/qv4mm.cpp
+++ b/src/qml/memory/qv4mm.cpp
@@ -1220,6 +1220,8 @@ void MemoryManager::collectFromJSStack(MarkStack *markStack) const
Q_ASSERT(m->inUse());
// Skip pointers to already freed objects, they are bogus as well
m->mark(markStack);
+ if (markStack->top >= markStack->limit)
+ markStack->drain();
}
++v;
}
diff --git a/src/qml/parser/qqmljs.g b/src/qml/parser/qqmljs.g
index e28899883f..6fbb9df164 100644
--- a/src/qml/parser/qqmljs.g
+++ b/src/qml/parser/qqmljs.g
@@ -80,6 +80,7 @@
%token T_COMMENT "comment"
%token T_COMPATIBILITY_SEMICOLON
%token T_ARROW "=>"
+%token T_QUESTION_QUESTION "??"
%token T_ENUM "enum"
%token T_ELLIPSIS "..."
%token T_YIELD "yield"
@@ -125,6 +126,7 @@
%nonassoc T_IDENTIFIER T_COLON T_SIGNAL T_PROPERTY T_READONLY T_ON T_SET T_GET T_OF T_STATIC T_FROM T_AS T_REQUIRED
%nonassoc REDUCE_HERE
%right T_THEN T_ELSE
+%right T_WITHOUTAS T_AS
%start TopLevel
@@ -1011,15 +1013,27 @@ UiObjectMember: UiQualifiedId T_ON UiQualifiedId UiObjectInitializer;
./
-UiObjectLiteral: T_LBRACE ExpressionStatementLookahead UiPropertyDefinitionList T_RBRACE;
-/. case $rule_number: Q_FALLTHROUGH(); ./
-UiObjectLiteral: T_LBRACE ExpressionStatementLookahead UiPropertyDefinitionList T_COMMA T_RBRACE;
+UiObjectLiteral: T_LBRACE ExpressionStatementLookahead UiPropertyDefinitionList T_RBRACE Semicolon;
/.
case $rule_number: {
AST::ObjectPattern *l = new (pool) AST::ObjectPattern(sym(3).PatternPropertyList->finish());
l->lbraceToken = loc(1);
l->rbraceToken = loc(4);
AST::ExpressionStatement *node = new (pool) AST::ExpressionStatement(l);
+ node->semicolonToken = loc(5);
+ sym(1).Node = node;
+ } break;
+./
+
+
+UiObjectLiteral: T_LBRACE ExpressionStatementLookahead UiPropertyDefinitionList T_COMMA T_RBRACE Semicolon;
+/.
+ case $rule_number: {
+ AST::ObjectPattern *l = new (pool) AST::ObjectPattern(sym(3).PatternPropertyList->finish());
+ l->lbraceToken = loc(1);
+ l->rbraceToken = loc(5);
+ AST::ExpressionStatement *node = new (pool) AST::ExpressionStatement(l);
+ node->semicolonToken = loc(6);
sym(1).Node = node;
} break;
./
@@ -2500,6 +2514,20 @@ RelationalExpression_In: RelationalExpression_In T_IN ShiftExpression;
} break;
./
+TypeAssertExpression_In: RelationalExpression_In T_AS Type;
+/. case $rule_number: Q_FALLTHROUGH(); ./
+TypeAssertExpression: RelationalExpression T_AS Type;
+/.
+ case $rule_number: {
+ AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::As, sym(3).Expression);
+ node->operatorToken = loc(2);
+ sym(1).Node = node;
+ } break;
+./
+
+RelationalExpression_In: TypeAssertExpression_In;
+RelationalExpression: TypeAssertExpression;
+
EqualityExpression_In: RelationalExpression_In;
EqualityExpression: RelationalExpression;
@@ -2611,13 +2639,48 @@ LogicalORExpression_In: LogicalORExpression_In T_OR_OR LogicalANDExpression_In;
} break;
./
+CoalesceExpression: LogicalORExpression;
+CoalesceExpression_In: LogicalORExpression_In;
+
+CoalesceExpression: CoalesceExpression T_QUESTION_QUESTION LogicalORExpression;
+/. case $rule_number: Q_FALLTHROUGH(); ./
+CoalesceExpression_In: CoalesceExpression_In T_QUESTION_QUESTION LogicalORExpression_In;
+/.
+ case $rule_number: {
+
+ auto *lhs = sym(1).Expression;
+ auto *rhs = sym(3).Expression;
+
+ // Check if lhs or rhs contain || or &&
+
+ if (lhs->binaryExpressionCast() != nullptr) {
+ auto *binaryExpr = lhs->binaryExpressionCast();
+ if (binaryExpr->op == QSOperator::And || binaryExpr->op == QSOperator::Or) {
+ syntaxError(binaryExpr->operatorToken, "Left-hand side may not contain || or &&");
+ return false;
+ }
+ }
+
+ if (rhs->binaryExpressionCast() != nullptr) {
+ auto *binaryExpr = rhs->binaryExpressionCast();
+ if (binaryExpr->op == QSOperator::And || binaryExpr->op == QSOperator::Or) {
+ syntaxError(binaryExpr->operatorToken, "Right-hand side may not contain || or &&");
+ return false;
+ }
+ }
+
+ AST::BinaryExpression *node = new (pool) AST::BinaryExpression(lhs, QSOperator::Coalesce, rhs);
+ node->operatorToken = loc(2);
+ sym(1).Node = node;
+ } break;
+./
-ConditionalExpression: LogicalORExpression;
-ConditionalExpression_In: LogicalORExpression_In;
+ConditionalExpression: CoalesceExpression;
+ConditionalExpression_In: CoalesceExpression_In;
-ConditionalExpression: LogicalORExpression T_QUESTION AssignmentExpression_In T_COLON AssignmentExpression;
+ConditionalExpression: CoalesceExpression T_QUESTION AssignmentExpression_In T_COLON AssignmentExpression;
/. case $rule_number: Q_FALLTHROUGH(); ./
-ConditionalExpression_In: LogicalORExpression_In T_QUESTION AssignmentExpression_In T_COLON AssignmentExpression_In;
+ConditionalExpression_In: CoalesceExpression_In T_QUESTION AssignmentExpression_In T_COLON AssignmentExpression_In;
/.
case $rule_number: {
AST::ConditionalExpression *node = new (pool) AST::ConditionalExpression(sym(1).Expression, sym(3).Expression, sym(5).Expression);
@@ -4356,7 +4419,10 @@ ImportsList: ImportsList T_COMMA ImportSpecifier;
} break;
./
-ImportSpecifier: ImportedBinding;
+-- When enconutering an IdentifierReference it can resolve to both ImportedBinding and IdentifierName
+-- Using %right and %prec, we tell qlalr that it should not reduce immediately, but rather shift
+-- so that we have a chance of actually parsing the correct rule if there is an "as" identifier
+ImportSpecifier: ImportedBinding %prec T_WITHOUTAS;
/.
case $rule_number: {
auto importSpecifier = new (pool) AST::ImportSpecifier(stringRef(1));
diff --git a/src/qml/parser/qqmljsast_p.h b/src/qml/parser/qqmljsast_p.h
index e436c4673d..aa355fed85 100644
--- a/src/qml/parser/qqmljsast_p.h
+++ b/src/qml/parser/qqmljsast_p.h
@@ -104,6 +104,8 @@ enum Op {
URShift,
InplaceURightShift,
InplaceXor,
+ As,
+ Coalesce,
Invalid
};
@@ -1782,7 +1784,7 @@ public:
{ return expression->firstSourceLocation(); }
SourceLocation lastSourceLocation() const override
- { return expression->lastSourceLocation(); }
+ { return semicolonToken; }
// attributes
ExpressionNode *expression;
diff --git a/src/qml/parser/qqmljslexer.cpp b/src/qml/parser/qqmljslexer.cpp
index 443e1a7476..80d883e52f 100644
--- a/src/qml/parser/qqmljslexer.cpp
+++ b/src/qml/parser/qqmljslexer.cpp
@@ -580,7 +580,14 @@ again:
case ']': return T_RBRACKET;
case '[': return T_LBRACKET;
- case '?': return T_QUESTION;
+ case '?': {
+ if (_char == QLatin1Char('?')) {
+ scanChar();
+ return T_QUESTION_QUESTION;
+ }
+
+ return T_QUESTION;
+ }
case '>':
if (_char == QLatin1Char('>')) {
diff --git a/src/qml/qml.pro b/src/qml/qml.pro
index 3c889244f4..985f7ca383 100644
--- a/src/qml/qml.pro
+++ b/src/qml/qml.pro
@@ -63,8 +63,14 @@ qtConfig(qml-animation) {
include(types/types.pri)
include(../3rdparty/masm/masm-defs.pri)
include(../3rdparty/masm/masm.pri)
-include(../3rdparty/llvm/llvm.pri)
MODULE_PLUGIN_TYPES = \
qmltooling
+
+QMLTYPES_FILENAME = plugins.qmltypes
+QMLTYPES_INSTALL_DIR = $$[QT_INSTALL_QML]/QtQml
+QML_IMPORT_NAME = QtQml
+IMPORT_VERSION = 2.15
+CONFIG += qmltypes install_qmltypes install_metatypes
+
load(qt_module)
diff --git a/src/qml/qml/ftw/qhashedstring.cpp b/src/qml/qml/ftw/qhashedstring.cpp
index 7a8fdd0a14..bbe374044d 100644
--- a/src/qml/qml/ftw/qhashedstring.cpp
+++ b/src/qml/qml/ftw/qhashedstring.cpp
@@ -44,7 +44,7 @@ QT_BEGIN_NAMESPACE
// Copy of QString's qMemCompare
bool QHashedString::compare(const QChar *lhs, const QChar *rhs, int length)
{
- Q_ASSERT(lhs && rhs);
+ Q_ASSERT((lhs && rhs) || !length);
const quint16 *a = (const quint16 *)lhs;
const quint16 *b = (const quint16 *)rhs;
diff --git a/src/qml/qml/ftw/qstringhash_p.h b/src/qml/qml/ftw/qstringhash_p.h
index f9435b4919..fc73fdfa50 100644
--- a/src/qml/qml/ftw/qstringhash_p.h
+++ b/src/qml/qml/ftw/qstringhash_p.h
@@ -54,25 +54,31 @@
#include <private/qhashedstring_p.h>
#include <private/qprimefornumbits_p.h>
-#include <QtCore/qglobal.h>
+#include <QtCore/qbytearray.h>
+#include <QtCore/qstring.h>
QT_BEGIN_NAMESPACE
+static inline QString::DataPointer &mutableStringData(const QHashedString &key)
+{
+ return const_cast<QHashedString &>(key).data_ptr();
+}
+
class QStringHashData;
class QStringHashNode
{
public:
QStringHashNode()
- : ckey(nullptr)
{
}
QStringHashNode(const QHashedString &key)
: length(key.length()), hash(key.hash()), symbolId(0)
+ , arrayData(mutableStringData(key).d_ptr())
+ , strData(mutableStringData(key).data())
{
- strData = const_cast<QHashedString &>(key).data_ptr();
+ arrayData->ref();
setQString(true);
- strData->ref.ref();
}
QStringHashNode(const QHashedCStringRef &key)
@@ -81,15 +87,21 @@ public:
}
QStringHashNode(const QStringHashNode &o)
- : length(o.length), hash(o.hash), symbolId(o.symbolId), ckey(o.ckey)
+ : length(o.length), hash(o.hash), symbolId(o.symbolId), arrayData(o.arrayData)
{
setQString(o.isQString());
- if (isQString()) { strData->ref.ref(); }
+ if (isQString()) {
+ strData = o.strData;
+ arrayData->ref();
+ } else {
+ ckey = o.ckey;
+ }
}
~QStringHashNode()
{
- if (isQString()) { if (!strData->ref.deref()) free(strData); }
+ if (isQString() && !arrayData->deref())
+ QTypedArrayData<ushort>::deallocate(arrayData);
}
QFlagPointer<QStringHashNode> next;
@@ -98,15 +110,18 @@ public:
quint32 hash = 0;
quint32 symbolId = 0;
+ QTypedArrayData<ushort> *arrayData = nullptr;
union {
- const char *ckey;
- QStringData *strData;
+ const char *ckey = nullptr;
+ ushort *strData;
};
inline QHashedString key() const
{
- if (isQString())
- return QHashedString(QString((QChar *)strData->data(), length), hash);
+ if (isQString()) {
+ arrayData->ref();
+ return QHashedString(QString(QStringPrivate(arrayData, strData, length)), hash);
+ }
return QHashedString(QString::fromLatin1(ckey, length), hash);
}
@@ -114,16 +129,14 @@ public:
bool isQString() const { return next.flag(); }
void setQString(bool v) { if (v) next.setFlag(); else next.clearFlag(); }
- inline char *cStrData() const { return (char *)ckey; }
- inline quint16 *utf16Data() const { return (quint16 *)strData->data(); }
+ inline qsizetype size() const { return length; }
+ inline const char *cStrData() const { return ckey; }
+ inline const quint16 *utf16Data() const { return strData; }
inline bool equals(const QV4::Value &string) const {
QString s = string.toQStringNoThrow();
if (isQString()) {
- QStringDataPtr dd;
- dd.ptr = strData;
- strData->ref.ref();
- return QString(dd) == s;
+ return QStringView(utf16Data(), length) == s;
} else {
return QLatin1String(cStrData(), length) == s;
}
@@ -133,10 +146,7 @@ public:
if (length != string->d()->length() || hash != string->hashValue())
return false;
if (isQString()) {
- QStringDataPtr dd;
- dd.ptr = strData;
- strData->ref.ref();
- return QString(dd) == string->toQString();
+ return QStringView(utf16Data(), length) == string->toQString();
} else {
return QLatin1String(cStrData(), length) == string->toQString();
}
@@ -510,8 +520,9 @@ void QStringHash<T>::initializeNode(Node *node, const QHashedString &key)
{
node->length = key.length();
node->hash = key.hash();
- node->strData = const_cast<QHashedString &>(key).data_ptr();
- node->strData->ref.ref();
+ node->arrayData = mutableStringData(key).d_ptr();
+ node->strData = mutableStringData(key).data();
+ node->arrayData->ref();
node->setQString(true);
}
@@ -547,10 +558,11 @@ typename QStringHash<T>::Node *QStringHash<T>::takeNode(const Node &o)
Node *rv = nodePool->nodes + nodePool->used++;
rv->length = o.length;
rv->hash = o.hash;
+ rv->arrayData = o.arrayData;
if (o.isQString()) {
rv->strData = o.strData;
- rv->strData->ref.ref();
rv->setQString(true);
+ rv->arrayData->ref();
} else {
rv->ckey = o.ckey;
}
diff --git a/src/qml/qml/qqmlapplicationengine.cpp b/src/qml/qml/qqmlapplicationengine.cpp
index adb036e2d0..7f80fe5e1c 100644
--- a/src/qml/qml/qqmlapplicationengine.cpp
+++ b/src/qml/qml/qqmlapplicationengine.cpp
@@ -127,7 +127,7 @@ void QQmlApplicationEnginePrivate::finishLoad(QQmlComponent *c)
switch (c->status()) {
case QQmlComponent::Error:
qWarning() << "QQmlApplicationEngine failed to load component";
- qWarning() << qPrintable(c->errorString());
+ warning(c->errors());
q->objectCreated(nullptr, c->url());
break;
case QQmlComponent::Ready: {
diff --git a/src/qml/qml/qqmlbinding.cpp b/src/qml/qml/qqmlbinding.cpp
index 112e5b558a..162adf8364 100644
--- a/src/qml/qml/qqmlbinding.cpp
+++ b/src/qml/qml/qqmlbinding.cpp
@@ -54,6 +54,8 @@
#include <private/qv4variantobject_p.h>
#include <private/qv4jscall_p.h>
+#include <qtqml_tracepoints_p.h>
+
#include <QVariant>
#include <QtCore/qdebug.h>
#include <QVector>
@@ -182,6 +184,8 @@ void QQmlBinding::update(QQmlPropertyData::WriteFlags flags)
if (canUseAccessor())
flags.setFlag(QQmlPropertyData::BypassInterceptor);
+ Q_TRACE_SCOPE(QQmlBinding, engine, function() ? function()->name()->toQString() : QString(),
+ sourceLocation().sourceFile, sourceLocation().line, sourceLocation().column);
QQmlBindingProfiler prof(QQmlEnginePrivate::get(engine)->profiler, function());
doUpdate(watcher, flags, scope);
diff --git a/src/qml/qml/qqmlboundsignal.cpp b/src/qml/qml/qqmlboundsignal.cpp
index ff01e737ca..b347bb3829 100644
--- a/src/qml/qml/qqmlboundsignal.cpp
+++ b/src/qml/qml/qqmlboundsignal.cpp
@@ -60,6 +60,7 @@
#include <QtCore/qdebug.h>
+#include <qtqml_tracepoints_p.h>
QT_BEGIN_NAMESPACE
@@ -352,6 +353,10 @@ void QQmlBoundSignal_callback(QQmlNotifierEndpoint *e, void **a)
QQmlEngine *engine;
if (s->m_expression && (engine = s->m_expression->engine())) {
+ Q_TRACE_SCOPE(QQmlHandlingSignal, engine,
+ s->m_expression->function() ? s->m_expression->function()->name()->toQString() : QString(),
+ s->m_expression->sourceLocation().sourceFile, s->m_expression->sourceLocation().line,
+ s->m_expression->sourceLocation().column);
QQmlHandlingSignalProfiler prof(QQmlEnginePrivate::get(engine)->profiler, s->m_expression);
s->m_expression->evaluate(a);
if (s->m_expression && s->m_expression->hasError()) {
diff --git a/src/qml/qml/qqmlcomponent.cpp b/src/qml/qml/qqmlcomponent.cpp
index 1d5f974d5c..279998b5de 100644
--- a/src/qml/qml/qqmlcomponent.cpp
+++ b/src/qml/qml/qqmlcomponent.cpp
@@ -376,7 +376,7 @@ bool QQmlComponentPrivate::setInitialProperty(QObject *component, const QString&
{
QQmlProperty prop = QQmlComponentPrivate::removePropertyFromRequired(component, name, requiredProperties());
QQmlPropertyPrivate *privProp = QQmlPropertyPrivate::get(prop);
- if (!prop.isValid() || !privProp->writeValueProperty(value, nullptr)) {
+ if (!prop.isValid() || !privProp->writeValueProperty(value, {})) {
QQmlError error{};
error.setUrl(url);
error.setDescription(QLatin1String("Could not set property %1").arg(name));
diff --git a/src/qml/qml/qqmlcustomparser.cpp b/src/qml/qml/qqmlcustomparser.cpp
index a5f34dafdf..87f7fffe41 100644
--- a/src/qml/qml/qqmlcustomparser.cpp
+++ b/src/qml/qml/qqmlcustomparser.cpp
@@ -108,12 +108,6 @@ void QQmlCustomParser::error(const QV4::CompiledData::Location &location, const
exceptions << error;
}
-struct StaticQtMetaObject : public QObject
-{
- static const QMetaObject *get()
- { return &staticQtMetaObject; }
-};
-
/*!
If \a script is a simple enumeration expression (eg. Text.AlignLeft),
returns the integer equivalent (eg. 1), and sets \a ok to true.
@@ -164,7 +158,7 @@ int QQmlCustomParser::evaluateEnum(const QByteArray& script, bool *ok) const
}
QByteArray enumValue = script.mid(dot + 1);
- const QMetaObject *mo = StaticQtMetaObject::get();
+ const QMetaObject *mo = &Qt::staticMetaObject;
int i = mo->enumeratorCount();
while (i--) {
int v = mo->enumerator(i).keyToValue(enumValue.constData(), ok);
diff --git a/src/qml/qml/qqmldata_p.h b/src/qml/qml/qqmldata_p.h
index 299476f5c8..ee31cb38d9 100644
--- a/src/qml/qml/qqmldata_p.h
+++ b/src/qml/qml/qqmldata_p.h
@@ -335,7 +335,7 @@ bool QQmlData::wasDeleted(const QObject *object)
return true;
const QObjectPrivate *priv = QObjectPrivate::get(object);
- if (!priv || priv->wasDeleted)
+ if (!priv || priv->wasDeleted || priv->isDeletingChildren)
return true;
const QQmlData *ddata = QQmlData::get(object);
diff --git a/src/qml/qml/qqmldatablob.cpp b/src/qml/qml/qqmldatablob.cpp
index 750fc6de50..1ab6002f0a 100644
--- a/src/qml/qml/qqmldatablob.cpp
+++ b/src/qml/qml/qqmldatablob.cpp
@@ -45,6 +45,8 @@
#include <QtQml/qqmlengine.h>
+#include <qtqml_tracepoints_p.h>
+
#ifdef DATABLOB_DEBUG
#define ASSERT_CALLBACK() do { if (!m_typeLoader || !m_typeLoader->m_thread->isThisThread()) qFatal("QQmlDataBlob: An API call was made outside a callback"); } while (false)
#else
@@ -559,6 +561,7 @@ void QQmlDataBlob::notifyAllWaitingOnMe()
void QQmlDataBlob::notifyComplete(QQmlDataBlob *blob)
{
Q_ASSERT(blob->status() == Error || blob->status() == Complete);
+ Q_TRACE_SCOPE(QQmlCompiling, blob->url());
QQmlCompilingProfiler prof(typeLoader()->profiler(), blob);
m_inCallback = true;
diff --git a/src/qml/qml/qqmlengine.cpp b/src/qml/qml/qqmlengine.cpp
index bde4df1340..f11959b7fb 100644
--- a/src/qml/qml/qqmlengine.cpp
+++ b/src/qml/qml/qqmlengine.cpp
@@ -197,25 +197,6 @@ int qmlRegisterUncreatableMetaObject(const QMetaObject &staticMetaObject,
bool QQmlEnginePrivate::qml_debugging_enabled = false;
bool QQmlEnginePrivate::s_designerMode = false;
-void QQmlEnginePrivate::defineModule()
-{
- const char uri[] = "QtQml";
-
- qmlRegisterTypesAndRevisions<
- QObjectForeign,
-#if QT_CONFIG(qml_animation)
- QQmlTimer,
-#endif
-#if QT_CONFIG(qml_locale)
- QQmlLocale,
-#endif
- QQmlComponent,
- QQmlBind,
- QQmlConnections,
- QQmlLoggingCategory
- >(uri, 2);
-}
-
bool QQmlEnginePrivate::designerMode()
{
return s_designerMode;
@@ -783,10 +764,12 @@ void QQmlData::signalEmitted(QAbstractDeclarativeData *, QObject *object, int in
// QQmlEngine to emit signals from a different thread. These signals are then automatically
// marshalled back onto the QObject's thread and handled by QML from there. This is tested
// by the qqmlecmascript::threadSignal() autotest.
- if (ddata->notifyList &&
- QThread::currentThreadId() != QObjectPrivate::get(object)->getThreadData()->threadId.loadRelaxed()) {
+ if (!ddata->notifyList)
+ return;
- if (!QObjectPrivate::get(object)->getThreadData()->thread.loadAcquire())
+ auto objectThreadData = QObjectPrivate::get(object)->threadData.loadRelaxed();
+ if (QThread::currentThreadId() != objectThreadData->threadId.loadRelaxed()) {
+ if (!objectThreadData->thread.loadAcquire())
return;
QMetaMethod m = QMetaObjectPrivate::signal(object->metaObject(), index);
@@ -818,7 +801,7 @@ void QQmlData::signalEmitted(QAbstractDeclarativeData *, QObject *object, int in
QQmlThreadNotifierProxyObject *mpo = new QQmlThreadNotifierProxyObject;
mpo->target = object;
- mpo->moveToThread(QObjectPrivate::get(object)->getThreadData()->thread.loadAcquire());
+ mpo->moveToThread(objectThreadData->thread.loadAcquire());
QCoreApplication::postEvent(mpo, ev.take());
} else {
@@ -1002,8 +985,6 @@ QQmlEngine::~QQmlEngine()
Q_D(QQmlEngine);
QJSEnginePrivate::removeFromDebugServer(this);
- d->typeLoader.invalidate();
-
// Emit onDestruction signals for the root context before
// we destroy the contexts, engine, Singleton Types etc. that
// may be required to handle the destruction signal.
@@ -1013,12 +994,14 @@ QQmlEngine::~QQmlEngine()
// we do this here and not in the private dtor since otherwise a crash can
// occur (if we are the QObject parent of the QObject singleton instance)
// XXX TODO: performance -- store list of singleton types separately?
- QList<QQmlType> singletonTypes = QQmlMetaType::qmlSingletonTypes();
+ const QList<QQmlType> singletonTypes = QQmlMetaType::qmlSingletonTypes();
for (const QQmlType &currType : singletonTypes)
d->destroySingletonInstance(currType);
delete d->rootContext;
d->rootContext = nullptr;
+
+ d->typeLoader.invalidate();
}
/*! \fn void QQmlEngine::quit()
@@ -1595,6 +1578,9 @@ static QObject *resolveAttachedProperties(QQmlAttachedPropertiesFunc pf, QQmlDat
}
#if QT_DEPRECATED_SINCE(5, 14)
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
+
QObject *qmlAttachedPropertiesObjectById(int id, const QObject *object, bool create)
{
QQmlData *data = QQmlData::get(object, create);
@@ -1605,7 +1591,9 @@ QObject *qmlAttachedPropertiesObjectById(int id, const QObject *object, bool cre
return nullptr;
QQmlEnginePrivate *engine = QQmlEnginePrivate::get(data->context);
- return resolveAttachedProperties(QQmlMetaType::attachedPropertiesFuncById(engine, id), data,
+
+ const QQmlType type = QQmlMetaType::qmlType(id, QQmlMetaType::TypeIdCategory::QmlType);
+ return resolveAttachedProperties(type.attachedPropertiesFunction(engine), data,
const_cast<QObject *>(object), create);
}
@@ -1622,6 +1610,8 @@ QObject *qmlAttachedPropertiesObject(int *idCache, const QObject *object,
return qmlAttachedPropertiesObjectById(*idCache, object, create);
}
+
+QT_WARNING_POP
#endif
QQmlAttachedPropertiesFunc qmlAttachedPropertiesFunction(QObject *object,
@@ -1650,6 +1640,8 @@ QObject *qmlAttachedPropertiesObject(QObject *object, QQmlAttachedPropertiesFunc
} // namespace QtQml
#if QT_DEPRECATED_SINCE(5, 1)
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
// Also define symbols outside namespace to keep binary compatibility with Qt 5.0
@@ -1680,6 +1672,7 @@ Q_QML_EXPORT QObject *qmlAttachedPropertiesObject(int *idCache, const QObject *o
return QtQml::qmlAttachedPropertiesObject(idCache, object, attachedMetaObject, create);
}
+QT_WARNING_POP
#endif // QT_DEPRECATED_SINCE(5, 1)
class QQmlDataExtended {
diff --git a/src/qml/qml/qqmlextensionplugin.cpp b/src/qml/qml/qqmlextensionplugin.cpp
index 26364661a8..7a62c967e7 100644
--- a/src/qml/qml/qqmlextensionplugin.cpp
+++ b/src/qml/qml/qqmlextensionplugin.cpp
@@ -127,8 +127,6 @@ void QQmlExtensionPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
}
/*!
- \fn void QQmlEngineExtensionPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
-
Initializes the extension from the \a uri using the \a engine. Here an application
plugin might, for example, expose some data or objects to QML,
as context properties on the engine's root context.
diff --git a/src/qml/qml/qqmlimport.cpp b/src/qml/qml/qqmlimport.cpp
index 21ca24d38b..7da0685872 100644
--- a/src/qml/qml/qqmlimport.cpp
+++ b/src/qml/qml/qqmlimport.cpp
@@ -245,9 +245,9 @@ public:
QQmlTypeLoader *typeLoader;
- static bool locateQmldir(const QString &uri, int vmaj, int vmin,
- QQmlImportDatabase *database,
- QString *outQmldirFilePath, QString *outUrl);
+ static QQmlImports::LocalQmldirResult locateLocalQmldir(
+ const QString &uri, int vmaj, int vmin, QQmlImportDatabase *database,
+ QString *outQmldirFilePath, QString *outUrl);
static bool validateQmldirVersion(const QQmlTypeLoaderQmldirContent &qmldir, const QString &uri, int vmaj, int vmin,
QList<QQmlError> *errors);
@@ -1076,7 +1076,13 @@ bool QQmlImportsPrivate::importExtension(const QString &qmldirFilePath,
if (qmldirPluginCount == 0)
return true;
- if (!database->qmlDirFilesForWhichPluginsHaveBeenLoaded.contains(qmldirFilePath)) {
+ if (database->qmlDirFilesForWhichPluginsHaveBeenLoaded.contains(qmldirFilePath)) {
+ if ((vmaj >= 0 && vmin >= 0)
+ ? !QQmlMetaType::isModule(uri, vmaj, vmin)
+ : !QQmlMetaType::isAnyModule(uri)) {
+ QQmlMetaType::qmlRegisterModuleTypes(uri, vmaj);
+ }
+ } else {
// First search for listed qmldir plugins dynamically. If we cannot resolve them all, we continue
// searching static plugins that has correct metadata uri. Note that since we only know the uri
// for a static plugin, and not the filename, we cannot know which static plugin belongs to which
@@ -1237,8 +1243,9 @@ Locates the qmldir file for \a uri version \a vmaj.vmin. Returns true if found,
and fills in outQmldirFilePath and outQmldirUrl appropriately. Otherwise returns
false.
*/
-bool QQmlImportsPrivate::locateQmldir(const QString &uri, int vmaj, int vmin, QQmlImportDatabase *database,
- QString *outQmldirFilePath, QString *outQmldirPathUrl)
+QQmlImports::LocalQmldirResult QQmlImportsPrivate::locateLocalQmldir(
+ const QString &uri, int vmaj, int vmin, QQmlImportDatabase *database,
+ QString *outQmldirFilePath, QString *outQmldirPathUrl)
{
Q_ASSERT(vmaj >= 0 && vmin >= 0); // Versions are always specified for libraries
@@ -1246,20 +1253,21 @@ bool QQmlImportsPrivate::locateQmldir(const QString &uri, int vmaj, int vmin, QQ
QQmlImportDatabase::QmldirCache *cacheHead = nullptr;
{
- QQmlImportDatabase::QmldirCache **cachePtr = database->qmldirCache.value(uri);
- if (cachePtr) {
- cacheHead = *cachePtr;
- QQmlImportDatabase::QmldirCache *cache = cacheHead;
- while (cache) {
- if (cache->versionMajor == vmaj && cache->versionMinor == vmin) {
- *outQmldirFilePath = cache->qmldirFilePath;
- *outQmldirPathUrl = cache->qmldirPathUrl;
- return !cache->qmldirFilePath.isEmpty();
+ QQmlImportDatabase::QmldirCache **cachePtr = database->qmldirCache.value(uri);
+ if (cachePtr) {
+ cacheHead = *cachePtr;
+ QQmlImportDatabase::QmldirCache *cache = cacheHead;
+ while (cache) {
+ if (cache->versionMajor == vmaj && cache->versionMinor == vmin) {
+ *outQmldirFilePath = cache->qmldirFilePath;
+ *outQmldirPathUrl = cache->qmldirPathUrl;
+ return cache->qmldirFilePath.isEmpty() ? QQmlImports::QmldirNotFound
+ : QQmlImports::QmldirFound;
+ }
+ cache = cache->next;
}
- cache = cache->next;
}
}
- }
QQmlTypeLoader &typeLoader = QQmlEnginePrivate::get(database->engine)->typeLoader;
@@ -1269,12 +1277,17 @@ bool QQmlImportsPrivate::locateQmldir(const QString &uri, int vmaj, int vmin, QQ
interceptor ? QQmlImportDatabase::LocalOrRemote : QQmlImportDatabase::Local);
// Search local import paths for a matching version
- const QStringList qmlDirPaths = QQmlImports::completeQmldirPaths(uri, localImportPaths, vmaj, vmin);
+ const QStringList qmlDirPaths = QQmlImports::completeQmldirPaths(
+ uri, localImportPaths, vmaj, vmin);
+ bool pathTurnedRemote = false;
for (QString qmldirPath : qmlDirPaths) {
if (interceptor) {
- qmldirPath = QQmlFile::urlToLocalFileOrQrc(
- interceptor->intercept(QQmlImports::urlFromLocalFileOrQrcOrUrl(qmldirPath),
- QQmlAbstractUrlInterceptor::QmldirFile));
+ const QUrl intercepted = interceptor->intercept(
+ QQmlImports::urlFromLocalFileOrQrcOrUrl(qmldirPath),
+ QQmlAbstractUrlInterceptor::QmldirFile);
+ qmldirPath = QQmlFile::urlToLocalFileOrQrc(intercepted);
+ if (!pathTurnedRemote && qmldirPath.isEmpty() && !QQmlFile::isLocalFile(intercepted))
+ pathTurnedRemote = true;
}
QString absoluteFilePath = typeLoader.absoluteFilePath(qmldirPath);
@@ -1297,7 +1310,7 @@ bool QQmlImportsPrivate::locateQmldir(const QString &uri, int vmaj, int vmin, QQ
*outQmldirFilePath = absoluteFilePath;
*outQmldirPathUrl = url;
- return true;
+ return QQmlImports::QmldirFound;
}
}
@@ -1307,7 +1320,7 @@ bool QQmlImportsPrivate::locateQmldir(const QString &uri, int vmaj, int vmin, QQ
cache->next = cacheHead;
database->qmldirCache.insert(uri, cache);
- return false;
+ return pathTurnedRemote ? QQmlImports::QmldirInterceptedToRemote : QQmlImports::QmldirNotFound;
}
bool QQmlImportsPrivate::validateQmldirVersion(const QQmlTypeLoaderQmldirContent &qmldir, const QString &uri, int vmaj, int vmin,
@@ -1701,11 +1714,11 @@ bool QQmlImports::updateQmldirContent(QQmlImportDatabase *importDb,
return d->updateQmldirContent(uri, prefix, qmldirIdentifier, qmldirUrl, importDb, errors);
}
-bool QQmlImports::locateQmldir(QQmlImportDatabase *importDb,
- const QString& uri, int vmaj, int vmin,
- QString *qmldirFilePath, QString *url)
+QQmlImports::LocalQmldirResult QQmlImports::locateLocalQmldir(
+ QQmlImportDatabase *importDb, const QString &uri, int vmaj, int vmin,
+ QString *qmldirFilePath, QString *url)
{
- return d->locateQmldir(uri, vmaj, vmin, importDb, qmldirFilePath, url);
+ return d->locateLocalQmldir(uri, vmaj, vmin, importDb, qmldirFilePath, url);
}
bool QQmlImports::isLocal(const QString &url)
diff --git a/src/qml/qml/qqmlimport_p.h b/src/qml/qml/qqmlimport_p.h
index 7cf1ae61b9..1f44b22deb 100644
--- a/src/qml/qml/qqmlimport_p.h
+++ b/src/qml/qml/qqmlimport_p.h
@@ -163,9 +163,15 @@ public:
const QString &uri, const QString &prefix,
const QString &qmldirIdentifier, const QString &qmldirUrl, QList<QQmlError> *errors);
- bool locateQmldir(QQmlImportDatabase *,
- const QString &uri, int vmaj, int vmin,
- QString *qmldirFilePath, QString *url);
+ enum LocalQmldirResult {
+ QmldirFound,
+ QmldirNotFound,
+ QmldirInterceptedToRemote
+ };
+
+ LocalQmldirResult locateLocalQmldir(
+ QQmlImportDatabase *, const QString &uri, int vmaj, int vmin,
+ QString *qmldirFilePath, QString *url);
void populateCache(QQmlTypeNameCache *cache) const;
diff --git a/src/qml/qml/qqmlinfo.cpp b/src/qml/qml/qqmlinfo.cpp
index 2bfd2d5bb4..dd401bdb20 100644
--- a/src/qml/qml/qqmlinfo.cpp
+++ b/src/qml/qml/qqmlinfo.cpp
@@ -57,7 +57,6 @@ QT_BEGIN_NAMESPACE
/*!
\fn QQmlInfo QtQml::qmlDebug(const QObject *object)
- \relates QtQml
\since 5.9
Prints debug messages that include the file and line number for the
@@ -91,7 +90,6 @@ QT_BEGIN_NAMESPACE
/*!
\fn QQmlInfo QtQml::qmlInfo(const QObject *object)
- \relates QtQml
Prints informational messages that include the file and line number for the
specified QML \a object.
@@ -119,7 +117,6 @@ QT_BEGIN_NAMESPACE
/*!
\fn QQmlInfo QtQml::qmlWarning(const QObject *object)
- \relates QtQml
\since 5.9
Prints warning messages that include the file and line number for the
diff --git a/src/qml/qml/qqmllocale.cpp b/src/qml/qml/qqmllocale.cpp
index dca13ac8d4..1743410776 100644
--- a/src/qml/qml/qqmllocale.cpp
+++ b/src/qml/qml/qqmllocale.cpp
@@ -478,6 +478,23 @@ ReturnedValue QQmlLocaleData::method_get_firstDayOfWeek(const QV4::FunctionObjec
RETURN_RESULT(fdow);
}
+ReturnedValue QQmlLocaleData::method_get_numberOptions(const QV4::FunctionObject *b, const QV4::Value *thisObject, const QV4::Value *, int) {
+ QV4::Scope scope(b);
+ const QLocale *locale = getThisLocale(scope, thisObject);
+ if (!locale)
+ return Encode::undefined();
+ int numberOptions = int(locale->numberOptions());
+ RETURN_RESULT(numberOptions);
+}
+
+ReturnedValue QQmlLocaleData::method_set_numberOptions(const QV4::FunctionObject *b, const QV4::Value *thisObject, const QV4::Value *argv, int argc) {
+ QV4::Scope scope(b);
+ QLocale *locale = getThisLocale(scope, thisObject);
+ int const numberOptions = argc ? int(argv[0].toNumber()) : QLocale::DefaultNumberOptions;
+ locale->setNumberOptions(QLocale::NumberOptions {numberOptions});
+ return Encode::undefined();
+}
+
ReturnedValue QQmlLocaleData::method_get_measurementSystem(const QV4::FunctionObject *b, const QV4::Value *thisObject, const QV4::Value *, int)
{
QV4::Scope scope(b);
@@ -701,6 +718,7 @@ QV4LocaleDataDeletable::QV4LocaleDataDeletable(QV4::ExecutionEngine *engine)
o->defineAccessorProperty(QStringLiteral("amText"), QQmlLocaleData::method_get_amText, nullptr);
o->defineAccessorProperty(QStringLiteral("measurementSystem"), QQmlLocaleData::method_get_measurementSystem, nullptr);
o->defineAccessorProperty(QStringLiteral("exponential"), QQmlLocaleData::method_get_exponential, nullptr);
+ o->defineAccessorProperty(QStringLiteral("numberOptions"), QQmlLocaleData::method_get_numberOptions, QQmlLocaleData::method_set_numberOptions);
prototype.set(engine, o);
}
@@ -817,7 +835,7 @@ QV4::ReturnedValue QQmlLocale::locale(ExecutionEngine *engine, const QString &lo
{
QLocale qlocale;
if (!localeName.isEmpty())
- qlocale = localeName;
+ qlocale = QLocale(localeName);
return wrap(engine, qlocale);
}
@@ -873,6 +891,16 @@ ReturnedValue QQmlLocale::method_localeCompare(const QV4::FunctionObject *b, con
*/
/*!
+ \qmlproperty enumeration QtQml::Locale::NumberOption
+
+ Holds a set of options for number-to-string and
+ string-to-number conversions.
+
+ \sa Number::toLocaleString()
+ \sa Number::fromLocaleString()
+*/
+
+/*!
\qmlproperty string QtQml::Locale::percent
Holds the percent character of this locale.
diff --git a/src/qml/qml/qqmllocale_p.h b/src/qml/qml/qqmllocale_p.h
index 10e0dfcc38..1d6fdb12a7 100644
--- a/src/qml/qml/qqmllocale_p.h
+++ b/src/qml/qml/qqmllocale_p.h
@@ -131,6 +131,16 @@ public:
Saturday = Qt::Saturday
};
Q_ENUM(DayOfWeek)
+ enum NumberOptions {
+ DefaultNumberOptions = QLocale::DefaultNumberOptions,
+ OmitGroupSeparator = QLocale::OmitGroupSeparator,
+ RejectGroupSeparator = QLocale::RejectGroupSeparator,
+ OmitLeadingZeroInExponent = QLocale::OmitLeadingZeroInExponent,
+ RejectLeadingZeroInExponent = QLocale::RejectLeadingZeroInExponent,
+ IncludeTrailingZeroesAfterDot = QLocale::IncludeTrailingZeroesAfterDot,
+ RejectTrailingZeroesAfterDot = QLocale::RejectTrailingZeroesAfterDot
+ };
+ Q_ENUM(NumberOptions)
static QV4::ReturnedValue locale(QV4::ExecutionEngine *engine, const QString &localeName);
static QV4::ReturnedValue wrap(QV4::ExecutionEngine *engine, const QLocale &locale);
@@ -200,6 +210,9 @@ struct QQmlLocaleData : public QV4::Object
static QV4::ReturnedValue method_get_exponential(const QV4::FunctionObject *, const QV4::Value *thisObject, const QV4::Value *argv, int argc);
static QV4::ReturnedValue method_get_amText(const QV4::FunctionObject *, const QV4::Value *thisObject, const QV4::Value *argv, int argc);
static QV4::ReturnedValue method_get_pmText(const QV4::FunctionObject *, const QV4::Value *thisObject, const QV4::Value *argv, int argc);
+
+ static QV4::ReturnedValue method_get_numberOptions(const QV4::FunctionObject *, const QV4::Value *thisObject, const QV4::Value *argv, int argc);
+ static QV4::ReturnedValue method_set_numberOptions(const QV4::FunctionObject *, const QV4::Value *thisObject, const QV4::Value *argv, int argc);
};
}
diff --git a/src/qml/qml/qqmlmetaobject.cpp b/src/qml/qml/qqmlmetaobject.cpp
index a967f46b12..a87865fd81 100644
--- a/src/qml/qml/qqmlmetaobject.cpp
+++ b/src/qml/qml/qqmlmetaobject.cpp
@@ -44,12 +44,6 @@
QT_BEGIN_NAMESPACE
-struct StaticQtMetaObject : public QObject
-{
- static const QMetaObject *get()
- { return &staticQtMetaObject; }
-};
-
static bool isNamedEnumeratorInScope(const QMetaObject *resolvedMetaObject, const QByteArray &scope,
const QByteArray &name)
{
@@ -74,7 +68,7 @@ static bool isNamedEnumerator(const QMetaObject *metaObj, const QByteArray &scop
}
if (scope == "Qt")
- return isNamedEnumeratorInScope(StaticQtMetaObject::get(), scope, name);
+ return isNamedEnumeratorInScope(&Qt::staticMetaObject, scope, name);
if (isNamedEnumeratorInScope(metaObj, scope, name))
return true;
diff --git a/src/qml/qml/qqmlmetatype.cpp b/src/qml/qml/qqmlmetatype.cpp
index b8c17c9374..f506cdece3 100644
--- a/src/qml/qml/qqmlmetatype.cpp
+++ b/src/qml/qml/qqmlmetatype.cpp
@@ -273,11 +273,25 @@ void QQmlMetaType::qmlInsertModuleRegistration(const QString &uri, int majorVers
const QQmlMetaTypeData::VersionedUri versionedUri(uri, majorVersion);
QQmlMetaTypeDataPtr data;
if (data->moduleTypeRegistrationFunctions.contains(versionedUri))
- qFatal("Canot add multiple registrations for %s %d", qPrintable(uri), majorVersion);
+ qFatal("Cannot add multiple registrations for %s %d", qPrintable(uri), majorVersion);
else
data->moduleTypeRegistrationFunctions.insert(versionedUri, registerFunction);
}
+void QQmlMetaType::qmlRemoveModuleRegistration(const QString &uri, int majorVersion)
+{
+ const QQmlMetaTypeData::VersionedUri versionedUri(uri, majorVersion);
+ QQmlMetaTypeDataPtr data;
+
+ if (!data.isValid())
+ return; // shutdown/deletion race. Not a problem.
+
+ if (!data->moduleTypeRegistrationFunctions.contains(versionedUri))
+ qFatal("Cannot remove multiple registrations for %s %d", qPrintable(uri), majorVersion);
+ else
+ data->moduleTypeRegistrationFunctions.remove(versionedUri);
+}
+
bool QQmlMetaType::qmlRegisterModuleTypes(const QString &uri, int majorVersion)
{
QQmlMetaTypeDataPtr data;
@@ -329,7 +343,6 @@ QQmlType QQmlMetaType::registerInterface(const QQmlPrivate::RegisterInterface &t
data->idToType.insert(priv->typeId, priv);
data->idToType.insert(priv->listId, priv);
- // XXX No insertMulti, so no multi-version interfaces?
if (!priv->elementName.isEmpty())
data->nameToType.insert(priv->elementName, priv);
@@ -414,10 +427,10 @@ void addTypeToData(QQmlTypePrivate *type, QQmlMetaTypeData *data)
Q_ASSERT(type);
if (!type->elementName.isEmpty())
- data->nameToType.insertMulti(type->elementName, type);
+ data->nameToType.insert(type->elementName, type);
if (type->baseMetaObject)
- data->metaObjectToType.insertMulti(type->baseMetaObject, type);
+ data->metaObjectToType.insert(type->baseMetaObject, type);
if (type->typeId) {
data->idToType.insert(type->typeId, type);
@@ -492,7 +505,7 @@ QQmlType QQmlMetaType::registerCompositeSingletonType(const QQmlPrivate::Registe
addTypeToData(priv, data);
QQmlMetaTypeData::Files *files = fileImport ? &(data->urlToType) : &(data->urlToNonFileImportType);
- files->insertMulti(QQmlTypeLoader::normalize(type.url), priv);
+ files->insert(QQmlTypeLoader::normalize(type.url), priv);
return QQmlType(priv);
}
@@ -513,7 +526,7 @@ QQmlType QQmlMetaType::registerCompositeType(const QQmlPrivate::RegisterComposit
addTypeToData(priv, data);
QQmlMetaTypeData::Files *files = fileImport ? &(data->urlToType) : &(data->urlToNonFileImportType);
- files->insertMulti(QQmlTypeLoader::normalize(type.url), priv);
+ files->insert(QQmlTypeLoader::normalize(type.url), priv);
return QQmlType(priv);
}
@@ -797,7 +810,7 @@ QQmlType QQmlMetaType::typeForUrl(const QString &urlString,
data->registerType(priv);
addTypeToData(priv, data);
- data->urlToType.insertMulti(url, priv);
+ data->urlToType.insert(url, priv);
return QQmlType(priv);
}
@@ -927,11 +940,11 @@ int QQmlMetaType::attachedPropertiesFuncId(QQmlEnginePrivate *engine, const QMet
for (auto it = data->metaObjectToType.constFind(mo), end = data->metaObjectToType.constEnd();
it != end && it.key() == mo; ++it) {
- const QQmlType type(it.value());
- if (type.attachedPropertiesFunction(engine))
- return type.attachedPropertiesId(engine);
+ if (const QQmlTypePrivate *type = it.value()) {
+ if (const QQmlTypePrivate *base = type->attachedPropertiesBase(engine))
+ return base->index;
+ }
}
-
return -1;
}
diff --git a/src/qml/qml/qqmlmetatype_p.h b/src/qml/qml/qqmlmetatype_p.h
index ed4675046d..80126cbffb 100644
--- a/src/qml/qml/qqmlmetatype_p.h
+++ b/src/qml/qml/qqmlmetatype_p.h
@@ -200,6 +200,8 @@ public:
static void qmlInsertModuleRegistration(const QString &uri, int majorVersion,
void (*registerFunction)());
+ static void qmlRemoveModuleRegistration(const QString &uri, int majorVersion);
+
static bool qmlRegisterModuleTypes(const QString &uri, int majorVersion);
};
diff --git a/src/qml/qml/qqmlmetatypedata_p.h b/src/qml/qml/qqmlmetatypedata_p.h
index f193e51f5a..e51d4ca1a4 100644
--- a/src/qml/qml/qqmlmetatypedata_p.h
+++ b/src/qml/qml/qqmlmetatypedata_p.h
@@ -71,7 +71,7 @@ struct QQmlMetaTypeData
QSet<QQmlType> undeletableTypes;
typedef QHash<int, QQmlTypePrivate *> Ids;
Ids idToType;
- typedef QHash<QHashedStringRef, QQmlTypePrivate *> Names;
+ typedef QMultiHash<QHashedStringRef, QQmlTypePrivate *> Names;
Names nameToType;
typedef QHash<QUrl, QQmlTypePrivate *> Files; //For file imported composite types only
Files urlToType;
@@ -79,7 +79,7 @@ struct QQmlMetaTypeData
// singleton types. This way we can locate any
// of them by url, even if it was registered as
// a module via QQmlPrivate::RegisterCompositeType
- typedef QHash<const QMetaObject *, QQmlTypePrivate *> MetaObjects;
+ typedef QMultiHash<const QMetaObject *, QQmlTypePrivate *> MetaObjects;
MetaObjects metaObjectToType;
typedef QHash<int, QQmlMetaType::StringConverter> StringConverters;
StringConverters stringConverters;
diff --git a/src/qml/qml/qqmlmoduleregistration.cpp b/src/qml/qml/qqmlmoduleregistration.cpp
index bb82ec1d95..b7bc3555a6 100644
--- a/src/qml/qml/qqmlmoduleregistration.cpp
+++ b/src/qml/qml/qqmlmoduleregistration.cpp
@@ -39,16 +39,28 @@
#include <QtQml/private/qqmlmetatype_p.h>
#include <QtQml/qqmlmoduleregistration.h>
-#include <QtCore/qglobalstatic.h>
QT_BEGIN_NAMESPACE
+struct QQmlModuleRegistrationPrivate
+{
+ const QString uri;
+ const int majorVersion;
+};
+
QQmlModuleRegistration::QQmlModuleRegistration(
const char *uri, int majorVersion,
- void (*registerFunction)())
+ void (*registerFunction)()) :
+ d(new QQmlModuleRegistrationPrivate { QString::fromUtf8(uri), majorVersion })
{
- QQmlMetaType::qmlInsertModuleRegistration(QString::fromUtf8(uri), majorVersion,
+ QQmlMetaType::qmlInsertModuleRegistration(d->uri, d->majorVersion,
registerFunction);
}
+QQmlModuleRegistration::~QQmlModuleRegistration()
+{
+ QQmlMetaType::qmlRemoveModuleRegistration(d->uri, d->majorVersion);
+ delete d;
+}
+
QT_END_NAMESPACE
diff --git a/src/qml/qml/qqmlmoduleregistration.h b/src/qml/qml/qqmlmoduleregistration.h
index 8924724b48..6f553a2823 100644
--- a/src/qml/qml/qqmlmoduleregistration.h
+++ b/src/qml/qml/qqmlmoduleregistration.h
@@ -44,13 +44,16 @@
QT_BEGIN_NAMESPACE
+struct QQmlModuleRegistrationPrivate;
class Q_QML_EXPORT QQmlModuleRegistration
{
Q_DISABLE_COPY_MOVE(QQmlModuleRegistration)
-
public:
QQmlModuleRegistration(const char *uri, int majorVersion, void (*registerFunction)());
- ~QQmlModuleRegistration() = default;
+ ~QQmlModuleRegistration();
+
+private:
+ QQmlModuleRegistrationPrivate *d = nullptr;
};
QT_END_NAMESPACE
diff --git a/src/qml/qml/qqmlnotifier.cpp b/src/qml/qml/qqmlnotifier.cpp
index fe839a50dc..df3731684a 100644
--- a/src/qml/qml/qqmlnotifier.cpp
+++ b/src/qml/qml/qqmlnotifier.cpp
@@ -118,8 +118,8 @@ void QQmlNotifierEndpoint::connect(QObject *source, int sourceSignal, QQmlEngine
disconnect();
Q_ASSERT(engine);
- if (QObjectPrivate::get(source)->getThreadData()->threadId.loadRelaxed() !=
- QObjectPrivate::get(engine)->getThreadData()->threadId.loadRelaxed()) {
+ if (QObjectPrivate::get(source)->threadData.loadRelaxed()->threadId.loadRelaxed() !=
+ QObjectPrivate::get(engine)->threadData.loadRelaxed()->threadId.loadRelaxed()) {
QString sourceName;
QDebug(&sourceName) << source;
diff --git a/src/qml/qml/qqmlproperty.cpp b/src/qml/qml/qqmlproperty.cpp
index 27667de678..871bec1c17 100644
--- a/src/qml/qml/qqmlproperty.cpp
+++ b/src/qml/qml/qqmlproperty.cpp
@@ -785,7 +785,7 @@ static void removeOldBinding(QObject *object, QQmlPropertyIndex index, QQmlPrope
return;
if (!(flags & QQmlPropertyPrivate::DontEnable))
- oldBinding->setEnabled(false, nullptr);
+ oldBinding->setEnabled(false, {});
oldBinding->removeFromObject();
}
@@ -1451,7 +1451,7 @@ QQmlMetaObject QQmlPropertyPrivate::rawMetaObjectForType(QQmlEnginePrivate *engi
*/
bool QQmlProperty::write(const QVariant &value) const
{
- return QQmlPropertyPrivate::write(*this, value, nullptr);
+ return QQmlPropertyPrivate::write(*this, value, {});
}
/*!
diff --git a/src/qml/qml/qqmlproperty_p.h b/src/qml/qml/qqmlproperty_p.h
index 285c34d7fa..8abd83d7b4 100644
--- a/src/qml/qml/qqmlproperty_p.h
+++ b/src/qml/qml/qqmlproperty_p.h
@@ -107,9 +107,9 @@ public:
static bool writeValueProperty(QObject *,
const QQmlPropertyData &, const QQmlPropertyData &valueTypeData,
const QVariant &, QQmlContextData *,
- QQmlPropertyData::WriteFlags flags = nullptr);
+ QQmlPropertyData::WriteFlags flags = {});
static bool write(QObject *, const QQmlPropertyData &, const QVariant &,
- QQmlContextData *, QQmlPropertyData::WriteFlags flags = nullptr);
+ QQmlContextData *, QQmlPropertyData::WriteFlags flags = {});
static void findAliasTarget(QObject *, QQmlPropertyIndex, QObject **, QQmlPropertyIndex *);
enum BindingFlag {
diff --git a/src/qml/qml/qqmlpropertycache.cpp b/src/qml/qml/qqmlpropertycache.cpp
index 69957ab282..6336ff28b3 100644
--- a/src/qml/qml/qqmlpropertycache.cpp
+++ b/src/qml/qml/qqmlpropertycache.cpp
@@ -1052,13 +1052,10 @@ static inline const QMetaObjectPrivate *priv(const uint* data)
static inline const QByteArray stringData(const QMetaObject *mo, int index)
{
- Q_ASSERT(priv(mo->d.data)->revision >= 7);
- const QByteArrayDataPtr data = { const_cast<QByteArrayData*>(&mo->d.stringdata[index]) };
- Q_ASSERT(data.ptr->ref.isStatic());
- Q_ASSERT(data.ptr->alloc == 0);
- Q_ASSERT(data.ptr->capacityReserved == 0);
- Q_ASSERT(data.ptr->size >= 0);
- return data;
+ uint offset = mo->d.stringdata[2*index];
+ uint length = mo->d.stringdata[2*index + 1];
+ const char *string = reinterpret_cast<const char *>(mo->d.stringdata) + offset;
+ return QByteArray::fromRawData(string, length);
}
bool QQmlPropertyCache::isDynamicMetaObject(const QMetaObject *mo)
diff --git a/src/qml/qml/qqmltype.cpp b/src/qml/qml/qqmltype.cpp
index 874bcd4bca..4a211ffa53 100644
--- a/src/qml/qml/qqmltype.cpp
+++ b/src/qml/qml/qqmltype.cpp
@@ -618,28 +618,16 @@ int QQmlType::metaObjectRevision() const
QQmlAttachedPropertiesFunc QQmlType::attachedPropertiesFunction(QQmlEnginePrivate *engine) const
{
- if (!d)
- return nullptr;
- if (d->regType == CppType)
- return d->extraData.cd->attachedPropertiesFunc;
-
- QQmlType base;
- if (d->regType == CompositeType)
- base = d->resolveCompositeBaseType(engine);
- return base.attachedPropertiesFunction(engine);
+ if (const QQmlTypePrivate *base = d->attachedPropertiesBase(engine))
+ return base->extraData.cd->attachedPropertiesFunc;
+ return nullptr;
}
const QMetaObject *QQmlType::attachedPropertiesType(QQmlEnginePrivate *engine) const
{
- if (!d)
- return nullptr;
- if (d->regType == CppType)
- return d->extraData.cd->attachedPropertiesType;
-
- QQmlType base;
- if (d->regType == CompositeType)
- base = d->resolveCompositeBaseType(engine);
- return base.attachedPropertiesType(engine);
+ if (const QQmlTypePrivate *base = d->attachedPropertiesBase(engine))
+ return base->extraData.cd->attachedPropertiesType;
+ return nullptr;
}
#if QT_DEPRECATED_SINCE(5, 14)
@@ -650,15 +638,9 @@ Qt 4.7 and QtQuick 1.0).
*/
int QQmlType::attachedPropertiesId(QQmlEnginePrivate *engine) const
{
- if (!d)
- return -1;
- if (d->regType == CppType)
- return d->extraData.cd->attachedPropertiesType ? d->index : -1;
-
- QQmlType base;
- if (d->regType == CompositeType)
- base = d->resolveCompositeBaseType(engine);
- return base.attachedPropertiesId(engine);
+ if (const QQmlTypePrivate *base = d->attachedPropertiesBase(engine))
+ return base->index;
+ return -1;
}
#endif
diff --git a/src/qml/qml/qqmltype_p.h b/src/qml/qml/qqmltype_p.h
index ec27b38a73..af134b21f1 100644
--- a/src/qml/qml/qqmltype_p.h
+++ b/src/qml/qml/qqmltype_p.h
@@ -182,6 +182,7 @@ public:
};
private:
+ friend class QQmlTypePrivate;
friend uint qHash(const QQmlType &t, uint seed);
QQmlRefPointer<const QQmlTypePrivate> d;
};
diff --git a/src/qml/qml/qqmltype_p_p.h b/src/qml/qml/qqmltype_p_p.h
index 6a2d961de8..51f776178c 100644
--- a/src/qml/qml/qqmltype_p_p.h
+++ b/src/qml/qml/qqmltype_p_p.h
@@ -82,6 +82,18 @@ public:
}
}
+ const QQmlTypePrivate *attachedPropertiesBase(QQmlEnginePrivate *engine) const
+ {
+ for (const QQmlTypePrivate *d = this; d; d = d->resolveCompositeBaseType(engine).d.data()) {
+ if (d->regType == QQmlType::CppType)
+ return d->extraData.cd->attachedPropertiesType ? d : nullptr;
+
+ if (d->regType != QQmlType::CompositeType)
+ return nullptr;
+ }
+ return nullptr;
+ }
+
bool isComposite() const
{
return regType == QQmlType::CompositeType || regType == QQmlType::CompositeSingletonType;
diff --git a/src/qml/qml/qqmltypecompiler.cpp b/src/qml/qml/qqmltypecompiler.cpp
index 7b4cf1a580..b4d56c9e49 100644
--- a/src/qml/qml/qqmltypecompiler.cpp
+++ b/src/qml/qml/qqmltypecompiler.cpp
@@ -530,12 +530,6 @@ bool QQmlEnumTypeResolver::resolveEnumBindings()
return true;
}
-struct StaticQtMetaObject : public QObject
-{
- static const QMetaObject *get()
- { return &staticQtMetaObject; }
-};
-
bool QQmlEnumTypeResolver::assignEnumToBinding(QmlIR::Binding *binding, const QStringRef &enumName, int enumValue, bool isQtObject)
{
if (enumName.length() > 0 && enumName[0].isLower() && !isQtObject) {
@@ -626,7 +620,7 @@ bool QQmlEnumTypeResolver::tryQualifiedEnumAssignment(const QmlIR::Object *obj,
value = type.enumValue(compiler->enginePrivate(), QHashedStringRef(enumValue), &ok);
} else {
QByteArray enumName = enumValue.toUtf8();
- const QMetaObject *metaObject = StaticQtMetaObject::get();
+ const QMetaObject *metaObject = &Qt::staticMetaObject;
for (int ii = metaObject->enumeratorCount() - 1; !ok && ii >= 0; --ii) {
QMetaEnum e = metaObject->enumerator(ii);
value = e.keyToValue(enumName.constData(), &ok);
@@ -655,7 +649,7 @@ int QQmlEnumTypeResolver::evaluateEnum(const QString &scope, const QStringRef &e
return type.enumValue(compiler->enginePrivate(), QHashedStringRef(enumValue.constData(), enumValue.length()), ok);
}
- const QMetaObject *mo = StaticQtMetaObject::get();
+ const QMetaObject *mo = &Qt::staticMetaObject;
int i = mo->enumeratorCount();
const QByteArray ba = enumValue.toUtf8();
while (i--) {
diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp
index b164f5873c..2de158884b 100644
--- a/src/qml/qml/qqmltypeloader.cpp
+++ b/src/qml/qml/qqmltypeloader.cpp
@@ -51,6 +51,8 @@
#include <QtQml/qqmlextensioninterface.h>
#include <QtQml/qqmlfile.h>
+#include <qtqml_tracepoints_p.h>
+
#include <QtCore/qdir.h>
#include <QtCore/qdiriterator.h>
#include <QtCore/qfile.h>
@@ -436,6 +438,7 @@ void QQmlTypeLoader::setData(QQmlDataBlob *blob, const QString &fileName)
void QQmlTypeLoader::setData(QQmlDataBlob *blob, const QQmlDataBlob::SourceCodeData &d)
{
+ Q_TRACE_SCOPE(QQmlCompiling, blob->url());
QQmlCompilingProfiler prof(profiler(), blob);
blob->m_inCallback = true;
@@ -455,6 +458,7 @@ void QQmlTypeLoader::setData(QQmlDataBlob *blob, const QQmlDataBlob::SourceCodeD
void QQmlTypeLoader::setCachedUnit(QQmlDataBlob *blob, const QV4::CompiledData::Unit *unit)
{
+ Q_TRACE_SCOPE(QQmlCompiling, blob->url());
QQmlCompilingProfiler prof(profiler(), blob);
blob->m_inCallback = true;
@@ -573,8 +577,10 @@ bool QQmlTypeLoader::Blob::addImport(QQmlTypeLoader::Blob::PendingImportPtr impo
QString qmldirFilePath;
QString qmldirUrl;
- if (m_importCache.locateQmldir(importDatabase, import->uri, import->majorVersion, import->minorVersion,
- &qmldirFilePath, &qmldirUrl)) {
+ const QQmlImports::LocalQmldirResult qmldirResult = m_importCache.locateLocalQmldir(
+ importDatabase, import->uri, import->majorVersion, import->minorVersion,
+ &qmldirFilePath, &qmldirUrl);
+ if (qmldirResult == QQmlImports::QmldirFound) {
// This is a local library import
if (!m_importCache.addLibraryImport(importDatabase, import->uri, import->qualifier, import->majorVersion,
import->minorVersion, qmldirFilePath, qmldirUrl, false, errors))
@@ -599,7 +605,9 @@ bool QQmlTypeLoader::Blob::addImport(QQmlTypeLoader::Blob::PendingImportPtr impo
} else {
// Is this a module?
if (QQmlMetaType::isAnyModule(import->uri)
- || QQmlMetaType::qmlRegisterModuleTypes(import->uri, import->majorVersion)) {
+ || (qmldirResult != QQmlImports::QmldirInterceptedToRemote
+ && QQmlMetaType::qmlRegisterModuleTypes(import->uri,
+ import->majorVersion))) {
if (!m_importCache.addLibraryImport(importDatabase, import->uri, import->qualifier, import->majorVersion,
import->minorVersion, QString(), QString(), false, errors))
return false;
@@ -710,7 +718,7 @@ bool QQmlTypeLoader::Blob::isDebugging() const
bool QQmlTypeLoader::Blob::diskCacheEnabled() const
{
- return (!disableDiskCache() || forceDiskCache()) && !isDebugging();
+ return (!disableDiskCache() && !isDebugging()) || forceDiskCache();
}
bool QQmlTypeLoader::Blob::qmldirDataAvailable(const QQmlRefPointer<QQmlQmldirData> &data, QList<QQmlError> *errors)
@@ -1129,7 +1137,8 @@ void QQmlTypeLoader::setQmldirContent(const QString &url, const QString &content
m_importQmlDirCache.insert(url, qmldir);
}
- qmldir->setContent(url, content);
+ if (!qmldir->hasContent())
+ qmldir->setContent(url, content);
}
/*!
diff --git a/src/qml/qml/qqmltypeloaderqmldircontent.cpp b/src/qml/qml/qqmltypeloaderqmldircontent.cpp
index 8e983db756..860971d296 100644
--- a/src/qml/qml/qqmltypeloaderqmldircontent.cpp
+++ b/src/qml/qml/qqmltypeloaderqmldircontent.cpp
@@ -74,6 +74,7 @@ QString QQmlTypeLoaderQmldirContent::typeNamespace() const
void QQmlTypeLoaderQmldirContent::setContent(const QString &location, const QString &content)
{
+ Q_ASSERT(!m_hasContent);
m_hasContent = true;
m_location = location;
m_parser.parse(content);
diff --git a/src/qml/qml/qqmltypemodule.cpp b/src/qml/qml/qqmltypemodule.cpp
index 9c9bf3e48f..9d6f269030 100644
--- a/src/qml/qml/qqmltypemodule.cpp
+++ b/src/qml/qml/qqmltypemodule.cpp
@@ -97,10 +97,14 @@ void QQmlTypeModule::add(QQmlTypePrivate *type)
QList<QQmlTypePrivate *> &list = d->typeHash[type->elementName];
for (int ii = 0; ii < list.count(); ++ii) {
- Q_ASSERT(list.at(ii));
- if (list.at(ii)->version_min < type->version_min) {
+ QQmlTypePrivate *in_list = list.at(ii);
+ Q_ASSERT(in_list);
+ if (in_list->version_min < type->version_min) {
list.insert(ii, type);
return;
+ } else if (in_list->version_min == type->version_min) {
+ list[ii] = type;
+ return;
}
}
list.append(type);
diff --git a/src/qml/qml/qqmlvmemetaobject.cpp b/src/qml/qml/qqmlvmemetaobject.cpp
index 9b5490b6e5..42a90e234c 100644
--- a/src/qml/qml/qqmlvmemetaobject.cpp
+++ b/src/qml/qml/qqmlvmemetaobject.cpp
@@ -62,30 +62,78 @@
QT_BEGIN_NAMESPACE
+class ResolvedList
+{
+ Q_DISABLE_COPY_MOVE(ResolvedList)
+
+public:
+ ResolvedList(QQmlListProperty<QObject> *prop) :
+ m_metaObject(static_cast<QQmlVMEMetaObject *>(QObjectPrivate::get(prop->object)->metaObject)),
+ m_id(quintptr(prop->data))
+ {
+ Q_ASSERT(m_metaObject);
+ Q_ASSERT(m_metaObject->object == prop->object);
+ Q_ASSERT(m_id <= quintptr(std::numeric_limits<int>::max() - m_metaObject->methodOffset()));
+
+ // readPropertyAsList() with checks transformed into Q_ASSERT
+ // and without allocation.
+ if (m_metaObject->propertyAndMethodStorage.isUndefined() &&
+ m_metaObject->propertyAndMethodStorage.valueRef()) {
+ return;
+ }
+
+ if (auto *md = static_cast<QV4::MemberData *>(
+ m_metaObject->propertyAndMethodStorage.asManaged())) {
+ const auto *v = (md->data() + m_id)->as<QV4::VariantObject>();
+ Q_ASSERT(v);
+ Q_ASSERT(v->d());
+ QVariant &data = v->d()->data();
+ Q_ASSERT(data.userType() == qMetaTypeId<QVector<QQmlGuard<QObject>>>());
+ m_list = static_cast<QVector<QQmlGuard<QObject>> *>(data.data());
+ Q_ASSERT(m_list);
+ }
+ }
+
+ ~ResolvedList() = default;
+
+ QQmlVMEMetaObject *metaObject() const { return m_metaObject; }
+ QVector<QQmlGuard<QObject>> *list() const { return m_list; }
+ quintptr id() const { return m_id; }
+
+ void activateSignal() const
+ {
+ m_metaObject->activate(m_metaObject->object, int(m_id + m_metaObject->methodOffset()),
+ nullptr);
+ }
+
+private:
+ QQmlVMEMetaObject *m_metaObject = nullptr;
+ QVector<QQmlGuard<QObject>> *m_list = nullptr;
+ quintptr m_id = 0;
+};
+
static void list_append(QQmlListProperty<QObject> *prop, QObject *o)
{
- QList<QObject *> *list = static_cast<QList<QObject *> *>(prop->data);
- list->append(o);
- static_cast<QQmlVMEMetaObject *>(prop->dummy1)->activate(prop->object, reinterpret_cast<quintptr>(prop->dummy2), nullptr);
+ const ResolvedList resolved(prop);
+ resolved.list()->append(o);
+ resolved.activateSignal();
}
static int list_count(QQmlListProperty<QObject> *prop)
{
- QList<QObject *> *list = static_cast<QList<QObject *> *>(prop->data);
- return list->count();
+ return ResolvedList(prop).list()->count();
}
static QObject *list_at(QQmlListProperty<QObject> *prop, int index)
{
- QList<QObject *> *list = static_cast<QList<QObject *> *>(prop->data);
- return list->at(index);
+ return ResolvedList(prop).list()->at(index);
}
static void list_clear(QQmlListProperty<QObject> *prop)
{
- QList<QObject *> *list = static_cast<QList<QObject *> *>(prop->data);
- list->clear();
- static_cast<QQmlVMEMetaObject *>(prop->dummy1)->activate(prop->object, reinterpret_cast<quintptr>(prop->dummy2), nullptr);
+ const ResolvedList resolved(prop);
+ resolved.list()->clear();
+ resolved.activateSignal();
}
QQmlVMEVariantQObjectPtr::QQmlVMEVariantQObjectPtr()
@@ -401,57 +449,20 @@ void QQmlVMEMetaObject::writeProperty(int id, double v)
void QQmlVMEMetaObject::writeProperty(int id, const QString& v)
{
QV4::MemberData *md = propertyAndMethodStorageAsMemberData();
- if (md)
- md->set(engine, id, engine->newString(v));
-}
-
-void QQmlVMEMetaObject::writeProperty(int id, const QUrl& v)
-{
- QV4::MemberData *md = propertyAndMethodStorageAsMemberData();
- if (md)
- md->set(engine, id, engine->newVariantObject(QVariant::fromValue(v)));
-}
-
-void QQmlVMEMetaObject::writeProperty(int id, const QDate& v)
-{
- QV4::MemberData *md = propertyAndMethodStorageAsMemberData();
- if (md)
- md->set(engine, id, engine->newVariantObject(QVariant::fromValue(v)));
-}
-
-void QQmlVMEMetaObject::writeProperty(int id, const QDateTime& v)
-{
- QV4::MemberData *md = propertyAndMethodStorageAsMemberData();
- if (md)
- md->set(engine, id, engine->newVariantObject(QVariant::fromValue(v)));
-}
-
-void QQmlVMEMetaObject::writeProperty(int id, const QPointF& v)
-{
- QV4::MemberData *md = propertyAndMethodStorageAsMemberData();
- if (md)
- md->set(engine, id, engine->newVariantObject(QVariant::fromValue(v)));
-}
-
-void QQmlVMEMetaObject::writeProperty(int id, const QSizeF& v)
-{
- QV4::MemberData *md = propertyAndMethodStorageAsMemberData();
- if (md)
- md->set(engine, id, engine->newVariantObject(QVariant::fromValue(v)));
-}
-
-void QQmlVMEMetaObject::writeProperty(int id, const QRectF& v)
-{
- QV4::MemberData *md = propertyAndMethodStorageAsMemberData();
- if (md)
- md->set(engine, id, engine->newVariantObject(QVariant::fromValue(v)));
+ if (md) {
+ QV4::Scope scope(engine);
+ QV4::Scoped<QV4::MemberData>(scope, md)->set(engine, id, engine->newString(v));
+ }
}
void QQmlVMEMetaObject::writeProperty(int id, QObject* v)
{
QV4::MemberData *md = propertyAndMethodStorageAsMemberData();
- if (md)
- md->set(engine, id, QV4::Value::fromReturnedValue(QV4::QObjectWrapper::wrap(engine, v)));
+ if (md) {
+ QV4::Scope scope(engine);
+ QV4::Scoped<QV4::MemberData>(scope, md)->set(engine, id, QV4::Value::fromReturnedValue(
+ QV4::QObjectWrapper::wrap(engine, v)));
+ }
QQmlVMEVariantQObjectPtr *guard = getQObjectGuardForProperty(id);
if (v && !guard) {
@@ -598,7 +609,7 @@ QObject* QQmlVMEMetaObject::readPropertyAsQObject(int id) const
return wrapper->object();
}
-QList<QObject *> *QQmlVMEMetaObject::readPropertyAsList(int id) const
+QVector<QQmlGuard<QObject>> *QQmlVMEMetaObject::readPropertyAsList(int id) const
{
QV4::MemberData *md = propertyAndMethodStorageAsMemberData();
if (!md)
@@ -606,12 +617,12 @@ QList<QObject *> *QQmlVMEMetaObject::readPropertyAsList(int id) const
QV4::Scope scope(engine);
QV4::Scoped<QV4::VariantObject> v(scope, *(md->data() + id));
- if (!v || (int)v->d()->data().userType() != qMetaTypeId<QList<QObject *> >()) {
- QVariant variant(QVariant::fromValue(QList<QObject*>()));
+ if (!v || (int)v->d()->data().userType() != qMetaTypeId<QVector<QQmlGuard<QObject>> >()) {
+ QVariant variant(QVariant::fromValue(QVector<QQmlGuard<QObject>>()));
v = engine->newVariantObject(variant);
md->set(engine, id, v);
}
- return static_cast<QList<QObject *> *>(v->d()->data().data());
+ return static_cast<QVector<QQmlGuard<QObject>> *>(v->d()->data().data());
}
QRectF QQmlVMEMetaObject::readPropertyAsRectF(int id) const
@@ -720,13 +731,11 @@ int QQmlVMEMetaObject::metaCall(QObject *o, QMetaObject::Call c, int _id, void *
break;
case QV4::CompiledData::BuiltinType::InvalidBuiltin:
if (property.isList) {
- QList<QObject *> *list = readPropertyAsList(id);
- QQmlListProperty<QObject> *p = static_cast<QQmlListProperty<QObject> *>(a[0]);
- *p = QQmlListProperty<QObject>(object, list,
- list_append, list_count, list_at,
- list_clear);
- p->dummy1 = this;
- p->dummy2 = reinterpret_cast<void *>(quintptr(methodOffset() + id));
+ readPropertyAsList(id); // Initializes if necessary
+ *static_cast<QQmlListProperty<QObject> *>(a[0])
+ = QQmlListProperty<QObject>(
+ object, reinterpret_cast<void *>(quintptr(id)),
+ list_append, list_count, list_at, list_clear);
} else {
*reinterpret_cast<QObject **>(a[0]) = readPropertyAsQObject(id);
}
@@ -877,7 +886,7 @@ int QQmlVMEMetaObject::metaCall(QObject *o, QMetaObject::Call c, int _id, void *
int rv = QMetaObject::metacall(valueType, c, valueTypePropertyIndex, a);
if (c == QMetaObject::WriteProperty)
- valueType->write(target, coreIndex, nullptr);
+ valueType->write(target, coreIndex, {});
return rv;
} else {
diff --git a/src/qml/qml/qqmlvmemetaobject_p.h b/src/qml/qml/qqmlvmemetaobject_p.h
index 5025987586..e17701a968 100644
--- a/src/qml/qml/qqmlvmemetaobject_p.h
+++ b/src/qml/qml/qqmlvmemetaobject_p.h
@@ -188,18 +188,24 @@ public:
QDateTime readPropertyAsDateTime(int id);
QRectF readPropertyAsRectF(int id) const;
QObject *readPropertyAsQObject(int id) const;
- QList<QObject *> *readPropertyAsList(int id) const;
+ QVector<QQmlGuard<QObject> > *readPropertyAsList(int id) const;
void writeProperty(int id, int v);
void writeProperty(int id, bool v);
void writeProperty(int id, double v);
void writeProperty(int id, const QString& v);
- void writeProperty(int id, const QPointF& v);
- void writeProperty(int id, const QSizeF& v);
- void writeProperty(int id, const QUrl& v);
- void writeProperty(int id, const QDate& v);
- void writeProperty(int id, const QDateTime& v);
- void writeProperty(int id, const QRectF& v);
+
+ template<typename VariantCompatible>
+ void writeProperty(int id, const VariantCompatible &v)
+ {
+ QV4::MemberData *md = propertyAndMethodStorageAsMemberData();
+ if (md) {
+ QV4::Scope scope(engine);
+ QV4::Scoped<QV4::MemberData>(scope, md)->set(engine, id, engine->newVariantObject(
+ QVariant::fromValue(v)));
+ }
+ }
+
void writeProperty(int id, QObject *v);
void ensureQObjectWrapper();
diff --git a/src/qml/qml/qqmlxmlhttprequest.cpp b/src/qml/qml/qqmlxmlhttprequest.cpp
index 4db0562c0e..2afbdb616b 100644
--- a/src/qml/qml/qqmlxmlhttprequest.cpp
+++ b/src/qml/qml/qqmlxmlhttprequest.cpp
@@ -54,6 +54,7 @@
#include <QtCore/qobject.h>
#include <QtQml/qjsvalue.h>
#include <QtQml/qjsengine.h>
+#include <QtQml/qqmlfile.h>
#include <QtNetwork/qnetworkreply.h>
#include <QtCore/qtextcodec.h>
#include <QtCore/qxmlstream.h>
@@ -77,6 +78,8 @@ using namespace QV4;
QT_BEGIN_NAMESPACE
DEFINE_BOOL_CONFIG_OPTION(xhrDump, QML_XHR_DUMP);
+DEFINE_BOOL_CONFIG_OPTION(xhrFileWrite, QML_XHR_ALLOW_FILE_WRITE);
+DEFINE_BOOL_CONFIG_OPTION(xhrFileRead, QML_XHR_ALLOW_FILE_READ);
struct QQmlXMLHttpRequestData {
QQmlXMLHttpRequestData();
@@ -1195,6 +1198,37 @@ void QQmlXMLHttpRequest::fillHeadersList()
void QQmlXMLHttpRequest::requestFromUrl(const QUrl &url)
{
QNetworkRequest request = m_request;
+
+ if (QQmlFile::isLocalFile(url)) {
+ if (m_method == QLatin1String("PUT"))
+ {
+ if (!xhrFileWrite()) {
+ if (qEnvironmentVariableIsSet("QML_XHR_ALLOW_FILE_WRITE")) {
+ qWarning("XMLHttpRequest: Tried to use PUT on a local file despite being disabled.");
+ return;
+ } else {
+ qWarning("XMLHttpRequest: Using PUT on a local file is dangerous "
+ "and will be disabled by default in a future Qt version."
+ "Set QML_XHR_ALLOW_FILE_WRITE to 1 if you wish to continue using this feature.");
+ }
+ }
+ } else if (m_method == QLatin1String("GET")) {
+ if (!xhrFileRead()) {
+ if (qEnvironmentVariableIsSet("QML_XHR_ALLOW_FILE_READ")) {
+ qWarning("XMLHttpRequest: Tried to use GET on a local file despite being disabled.");
+ return;
+ } else {
+ qWarning("XMLHttpRequest: Using GET on a local file is dangerous "
+ "and will be disabled by default in a future Qt version."
+ "Set QML_XHR_ALLOW_FILE_READ to 1 if you wish to continue using this feature.");
+ }
+ }
+ } else {
+ qWarning("XMLHttpRequest: Unsupported method used on a local file");
+ return;
+ }
+ }
+
request.setUrl(url);
if(m_method == QLatin1String("POST") ||
m_method == QLatin1String("PUT")) {
@@ -1389,13 +1423,17 @@ void QQmlXMLHttpRequest::finished()
QVariant redirect = m_network->attribute(QNetworkRequest::RedirectionTargetAttribute);
if (redirect.isValid()) {
QUrl url = m_network->url().resolved(redirect.toUrl());
- if (url.scheme() != QLatin1String("file")) {
+ if (!QQmlFile::isLocalFile(url)) {
// See http://www.ietf.org/rfc/rfc2616.txt, section 10.3.4 "303 See Other":
// Result of 303 redirection should be a new "GET" request.
const QVariant code = m_network->attribute(QNetworkRequest::HttpStatusCodeAttribute);
if (code.isValid() && code.toInt() == 303 && m_method != QLatin1String("GET"))
m_method = QStringLiteral("GET");
destroyNetwork();
+
+ // Discard redirect response body
+ m_responseEntityBody = QByteArray();
+
requestFromUrl(url);
return;
}
@@ -1647,7 +1685,7 @@ struct QQmlXMLHttpRequestCtor : public FunctionObject
Scope scope(f->engine());
const QQmlXMLHttpRequestCtor *ctor = static_cast<const QQmlXMLHttpRequestCtor *>(f);
- QQmlXMLHttpRequest *r = new QQmlXMLHttpRequest(scope.engine->qmlEngine()->networkAccessManager(), scope.engine);
+ QQmlXMLHttpRequest *r = new QQmlXMLHttpRequest(scope.engine->networkAccessManager(scope.engine), scope.engine);
Scoped<QQmlXMLHttpRequestWrapper> w(scope, scope.engine->memoryManager->allocate<QQmlXMLHttpRequestWrapper>(r));
ScopedObject proto(scope, ctor->d()->proto);
w->setPrototypeUnchecked(proto);
diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
index d634a48443..2c1956553f 100644
--- a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
+++ b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
@@ -93,12 +93,6 @@ DEFINE_OBJECT_VTABLE(QtObject);
return scope.engine->throwTypeError(QString::fromUtf8(msg)); \
} while (false)
-struct StaticQtMetaObject : public QObject
-{
- static const QMetaObject *get()
- { return &staticQtMetaObject; }
-};
-
void Heap::QtObject::init(QQmlEngine *qmlEngine)
{
Heap::Object::init();
@@ -177,7 +171,7 @@ ReturnedValue QtObject::findAndAdd(const QString *name, bool &foundProperty) con
ScopedString key(scope);
ScopedValue value(scope);
- const QMetaObject *qtMetaObject = StaticQtMetaObject::get();
+ const QMetaObject *qtMetaObject = &Qt::staticMetaObject;
for (int enumCount = qtMetaObject->enumeratorCount(); d()->enumeratorIterator < enumCount;
++d()->enumeratorIterator) {
QMetaEnum enumerator = qtMetaObject->enumerator(d()->enumeratorIterator);
@@ -1553,11 +1547,12 @@ static QString jsStack(QV4::ExecutionEngine *engine) {
return stack;
}
-static QString serializeArray(Object *array, ExecutionEngine *v4) {
+static QString serializeArray(Object *array, ExecutionEngine *v4, QSet<QV4::Heap::Object *> &alreadySeen) {
Scope scope(v4);
ScopedValue val(scope);
QString result;
+ alreadySeen.insert(array->d());
result += QLatin1Char('[');
const uint length = array->getLength();
for (uint i = 0; i < length; ++i) {
@@ -1565,12 +1560,15 @@ static QString serializeArray(Object *array, ExecutionEngine *v4) {
result += QLatin1Char(',');
val = array->get(i);
if (val->isManaged() && val->managed()->isArrayLike())
- result += serializeArray(val->objectValue(), v4);
+ if (!alreadySeen.contains(val->objectValue()->d()))
+ result += serializeArray(val->objectValue(), v4, alreadySeen);
+ else
+ result += QLatin1String("[Circular]");
else
result += val->toQStringNoThrow();
}
result += QLatin1Char(']');
-
+ alreadySeen.remove(array->d());
return result;
};
@@ -1600,8 +1598,9 @@ static ReturnedValue writeToConsole(const FunctionObject *b, const Value *, cons
if (i != start)
result.append(QLatin1Char(' '));
+ QSet<QV4::Heap::Object *> alreadySeenElements;
if (argv[i].isManaged() && argv[i].managed()->isArrayLike())
- result.append(serializeArray(argv[i].objectValue(), v4));
+ result.append(serializeArray(argv[i].objectValue(), v4, alreadySeenElements));
else
result.append(argv[i].toQStringNoThrow());
}
diff --git a/src/qml/qmldirparser/qqmldirparser.cpp b/src/qml/qmldirparser/qqmldirparser.cpp
index 6e925ba515..36b47a3302 100644
--- a/src/qml/qmldirparser/qqmldirparser.cpp
+++ b/src/qml/qmldirparser/qqmldirparser.cpp
@@ -73,6 +73,20 @@ static bool parseVersion(const QString &str, int *major, int *minor)
return false;
}
+void QQmlDirParser::clear()
+{
+ _errors.clear();
+ _typeNamespace.clear();
+ _components.clear();
+ _dependencies.clear();
+ _imports.clear();
+ _scripts.clear();
+ _plugins.clear();
+ _designerSupported = false;
+ _typeInfos.clear();
+ _className.clear();
+}
+
inline static void scanSpace(const QChar *&ch) {
while (ch->isSpace() && !ch->isNull() && *ch != QLatin1Char('\n'))
++ch;
@@ -93,13 +107,6 @@ inline static void scanWord(const QChar *&ch) {
*/
bool QQmlDirParser::parse(const QString &source)
{
- _errors.clear();
- _plugins.clear();
- _components.clear();
- _scripts.clear();
- _designerSupported = false;
- _className.clear();
-
quint16 lineNumber = 0;
bool firstLine = true;
@@ -198,7 +205,7 @@ bool QQmlDirParser::parse(const QString &source)
}
Component entry(sections[1], sections[2], -1, -1);
entry.internal = true;
- _components.insertMulti(entry.typeName, entry);
+ _components.insert(entry.typeName, entry);
} else if (sections[0] == QLatin1String("singleton")) {
if (sectionCount < 3 || sectionCount > 4) {
reportError(lineNumber, 0,
@@ -209,7 +216,7 @@ bool QQmlDirParser::parse(const QString &source)
// singleton TestSingletonType TestSingletonType.qml
Component entry(sections[1], sections[2], -1, -1);
entry.singleton = true;
- _components.insertMulti(entry.typeName, entry);
+ _components.insert(entry.typeName, entry);
} else {
// handle qmldir module listing case where singleton is defined in the following pattern:
// singleton TestSingletonType 2.0 TestSingletonType20.qml
@@ -218,7 +225,7 @@ bool QQmlDirParser::parse(const QString &source)
const QString &fileName = sections[3];
Component entry(sections[1], fileName, major, minor);
entry.singleton = true;
- _components.insertMulti(entry.typeName, entry);
+ _components.insert(entry.typeName, entry);
} else {
reportError(lineNumber, 0, QStringLiteral("invalid version %1, expected <major>.<minor>").arg(sections[2]));
}
@@ -264,7 +271,7 @@ bool QQmlDirParser::parse(const QString &source)
} else if (sectionCount == 2) {
// No version specified (should only be used for relative qmldir files)
const Component entry(sections[0], sections[1], -1, -1);
- _components.insertMulti(entry.typeName, entry);
+ _components.insert(entry.typeName, entry);
} else if (sectionCount == 3) {
int major, minor;
if (parseVersion(sections[1], &major, &minor)) {
@@ -276,7 +283,7 @@ bool QQmlDirParser::parse(const QString &source)
_scripts.append(entry);
} else {
const Component entry(sections[0], fileName, major, minor);
- _components.insertMulti(entry.typeName, entry);
+ _components.insert(entry.typeName, entry);
}
} else {
reportError(lineNumber, 0, QStringLiteral("invalid version %1, expected <major>.<minor>").arg(sections[1]));
@@ -343,7 +350,7 @@ QList<QQmlDirParser::Plugin> QQmlDirParser::plugins() const
return _plugins;
}
-QHash<QString, QQmlDirParser::Component> QQmlDirParser::components() const
+QMultiHash<QString, QQmlDirParser::Component> QQmlDirParser::components() const
{
return _components;
}
diff --git a/src/qml/qmldirparser/qqmldirparser_p.h b/src/qml/qmldirparser/qqmldirparser_p.h
index c9d77532c8..3696a1aa12 100644
--- a/src/qml/qmldirparser/qqmldirparser_p.h
+++ b/src/qml/qmldirparser/qqmldirparser_p.h
@@ -64,6 +64,7 @@ class QQmlEngine;
class Q_QMLCOMPILER_PRIVATE_EXPORT QQmlDirParser
{
public:
+ void clear();
bool parse(const QString &source);
bool hasError() const;
@@ -75,7 +76,7 @@ public:
static void checkNonRelative(const char *item, const QString &typeName, const QString &fileName)
{
- if (fileName.startsWith(QLatin1Char('/')) || fileName.contains(QLatin1Char(':'))) {
+ if (fileName.startsWith(QLatin1Char('/'))) {
qWarning() << item << typeName
<< "is specified with non-relative URL" << fileName << "in a qmldir file."
<< "URLs in qmldir files should be relative to the qmldir file's directory.";
@@ -131,7 +132,7 @@ public:
int minorVersion = 0;
};
- QHash<QString,Component> components() const;
+ QMultiHash<QString,Component> components() const;
QHash<QString,Component> dependencies() const;
QStringList imports() const;
QList<Script> scripts() const;
@@ -158,7 +159,7 @@ private:
private:
QList<QQmlJS::DiagnosticMessage> _errors;
QString _typeNamespace;
- QHash<QString,Component> _components; // multi hash
+ QMultiHash<QString,Component> _components;
QHash<QString,Component> _dependencies;
QStringList _imports;
QList<Script> _scripts;
@@ -168,7 +169,7 @@ private:
QString _className;
};
-using QQmlDirComponents = QHash<QString,QQmlDirParser::Component>;
+using QQmlDirComponents = QMultiHash<QString,QQmlDirParser::Component>;
using QQmlDirScripts = QList<QQmlDirParser::Script>;
using QQmlDirPlugins = QList<QQmlDirParser::Plugin>;
diff --git a/src/qml/qtqml.tracepoints b/src/qml/qtqml.tracepoints
index 841748f201..1043d3bae3 100644
--- a/src/qml/qtqml.tracepoints
+++ b/src/qml/qtqml.tracepoints
@@ -6,9 +6,16 @@ class CompilationUnit;
class Object;
} // CompiledData
} // QV4
+class QQmlEngine;
}
QQmlObjectCreator_createInstance_entry(const QV4::CompiledData::CompilationUnit *compilationUnit, const QV4::CompiledData::Object *object, const QUrl &url)
QQmlObjectCreator_createInstance_exit(const QString &typeName)
+QQmlCompiling_entry(const QUrl &url)
+QQmlCompiling_exit()
QQmlV4_function_call_entry(const QV4::ExecutionEngine *engine, const QString &function, const QString &fileName, int line, int column)
QQmlV4_function_call_exit()
+QQmlBinding_entry(const QQmlEngine *engine, const QString &function, const QString &fileName, int line, int column)
+QQmlBinding_exit()
+QQmlHandlingSignal_entry(const QQmlEngine *engine, const QString &function, const QString &fileName, int line, int column)
+QQmlHandlingSignal_exit()
diff --git a/src/qml/doc/images/listmodel-nested.png b/src/qmlmodels/doc/images/listmodel-nested.png
index ee7ffba67a..ee7ffba67a 100644
--- a/src/qml/doc/images/listmodel-nested.png
+++ b/src/qmlmodels/doc/images/listmodel-nested.png
Binary files differ
diff --git a/src/qml/doc/images/listmodel.png b/src/qmlmodels/doc/images/listmodel.png
index 7ab1771f15..7ab1771f15 100644
--- a/src/qml/doc/images/listmodel.png
+++ b/src/qmlmodels/doc/images/listmodel.png
Binary files differ
diff --git a/src/qml/doc/images/objectmodel.png b/src/qmlmodels/doc/images/objectmodel.png
index 5e6d1325b2..5e6d1325b2 100644
--- a/src/qml/doc/images/objectmodel.png
+++ b/src/qmlmodels/doc/images/objectmodel.png
Binary files differ
diff --git a/src/qmlmodels/doc/qtqmlmodels.qdocconf b/src/qmlmodels/doc/qtqmlmodels.qdocconf
index a4153f4a53..3364988559 100644
--- a/src/qmlmodels/doc/qtqmlmodels.qdocconf
+++ b/src/qmlmodels/doc/qtqmlmodels.qdocconf
@@ -23,15 +23,18 @@ qhp.QtQmlModels.sortPages = true
tagfile = qtqmlmodels.tags
-depends += qtcore qtqml qtdoc
+depends += qtcore qtqml qtquick qtdoc qtqmlworkerscript qtquickcontrols qtxmlpatterns
-headerdirs += ..
+headerdirs += .. \
+ ../../imports/labsmodels
sourcedirs += .. \
- ../../imports/models
+ ../../imports/models \
+ ../../imports/labsmodels
-exampledirs += ../../../examples/qml \
- ../ \
+exampledirs += .. \
snippets
+imagedirs += images
+
navigation.qmltypespage = "Qt Qml Models QML Types"
diff --git a/src/qmlmodels/qmlmodels.pro b/src/qmlmodels/qmlmodels.pro
index 78bf579903..6abc5bf186 100644
--- a/src/qmlmodels/qmlmodels.pro
+++ b/src/qmlmodels/qmlmodels.pro
@@ -12,8 +12,7 @@ HEADERS += \
$$PWD/qtqmlmodelsglobal.h
SOURCES += \
- $$PWD/qqmlchangeset.cpp \
- $$PWD/qqmlmodelsmodule.cpp
+ $$PWD/qqmlchangeset.cpp
qtConfig(qml-object-model) {
SOURCES += \
@@ -64,4 +63,10 @@ qtConfig(qml-delegate-model) {
$$PWD/qquickpackage_p.h
}
+QMLTYPES_FILENAME = plugins.qmltypes
+QMLTYPES_INSTALL_DIR = $$[QT_INSTALL_QML]/QtQml/Models.2
+QML_IMPORT_NAME = QtQml.Models
+IMPORT_VERSION = 2.15
+CONFIG += qmltypes install_qmltypes install_metatypes
+
load(qt_module)
diff --git a/src/qmlmodels/qqmladaptormodel.cpp b/src/qmlmodels/qqmladaptormodel.cpp
index 012540244f..cf0d8fbb2f 100644
--- a/src/qmlmodels/qqmladaptormodel.cpp
+++ b/src/qmlmodels/qqmladaptormodel.cpp
@@ -199,12 +199,11 @@ public:
RETURN_RESULT(scope.engine->throwTypeError(QStringLiteral("Not a valid DelegateModel object")));
const QQmlAdaptorModel *const model = static_cast<QQmlDMCachedModelData *>(o->d()->item)->type->model;
- if (o->d()->item->index >= 0 && *model) {
- const QAbstractItemModel * const aim = model->aim();
- RETURN_RESULT(QV4::Encode(aim->hasChildren(aim->index(o->d()->item->index, 0, model->rootIndex))));
- } else {
- RETURN_RESULT(QV4::Encode(false));
+ if (o->d()->item->index >= 0) {
+ if (const QAbstractItemModel *const aim = model->aim())
+ RETURN_RESULT(QV4::Encode(aim->hasChildren(aim->index(o->d()->item->index, 0, model->rootIndex))));
}
+ RETURN_RESULT(QV4::Encode(false));
}
@@ -400,23 +399,24 @@ public:
bool hasModelChildren() const
{
- if (index >= 0 && *type->model) {
- const QAbstractItemModel * const model = type->model->aim();
- return model->hasChildren(model->index(row, column, type->model->rootIndex));
- } else {
- return false;
+ if (index >= 0) {
+ if (const QAbstractItemModel *const model = type->model->aim())
+ return model->hasChildren(model->index(row, column, type->model->rootIndex));
}
+ return false;
}
QVariant value(int role) const override
{
- return type->model->aim()->index(row, column, type->model->rootIndex).data(role);
+ if (const QAbstractItemModel *aim = type->model->aim())
+ return aim->index(row, column, type->model->rootIndex).data(role);
+ return QVariant();
}
void setValue(int role, const QVariant &value) override
{
- type->model->aim()->setData(
- type->model->aim()->index(row, column, type->model->rootIndex), value, role);
+ if (QAbstractItemModel *aim = type->model->aim())
+ aim->setData(aim->index(row, column, type->model->rootIndex), value, role);
}
QV4::ReturnedValue get() override
@@ -444,12 +444,16 @@ public:
int rowCount(const QQmlAdaptorModel &model) const override
{
- return model.aim()->rowCount(model.rootIndex);
+ if (const QAbstractItemModel *aim = model.aim())
+ return aim->rowCount(model.rootIndex);
+ return 0;
}
int columnCount(const QQmlAdaptorModel &model) const override
{
- return model.aim()->columnCount(model.rootIndex);
+ if (const QAbstractItemModel *aim = model.aim())
+ return aim->columnCount(model.rootIndex);
+ return 0;
}
void cleanup(QQmlAdaptorModel &) const override
@@ -464,39 +468,46 @@ public:
dataType->initializeMetaType(model);
}
- QHash<QByteArray, int>::const_iterator it = roleNames.find(role.toUtf8());
- if (it != roleNames.end()) {
- return model.aim()->index(model.rowAt(index), model.columnAt(index), model.rootIndex).data(*it);
- } else if (role == QLatin1String("hasModelChildren")) {
- return QVariant(model.aim()->hasChildren(model.aim()->index(model.rowAt(index), model.columnAt(index), model.rootIndex)));
- } else {
- return QVariant();
+ if (const QAbstractItemModel *aim = model.aim()) {
+ QHash<QByteArray, int>::const_iterator it = roleNames.find(role.toUtf8());
+ if (it != roleNames.end()) {
+ return aim->index(model.rowAt(index), model.columnAt(index),
+ model.rootIndex).data(*it);
+ } else if (role == QLatin1String("hasModelChildren")) {
+ return QVariant(aim->hasChildren(aim->index(model.rowAt(index),
+ model.columnAt(index),
+ model.rootIndex)));
+ }
}
+ return QVariant();
}
QVariant parentModelIndex(const QQmlAdaptorModel &model) const override
{
- return model
- ? QVariant::fromValue(model.aim()->parent(model.rootIndex))
- : QVariant();
+ if (const QAbstractItemModel *aim = model.aim())
+ return QVariant::fromValue(aim->parent(model.rootIndex));
+ return QVariant();
}
QVariant modelIndex(const QQmlAdaptorModel &model, int index) const override
{
- return model
- ? QVariant::fromValue(model.aim()->index(model.rowAt(index), model.columnAt(index), model.rootIndex))
- : QVariant();
+ if (const QAbstractItemModel *aim = model.aim())
+ return QVariant::fromValue(aim->index(model.rowAt(index), model.columnAt(index),
+ model.rootIndex));
+ return QVariant();
}
bool canFetchMore(const QQmlAdaptorModel &model) const override
{
- return model && model.aim()->canFetchMore(model.rootIndex);
+ if (const QAbstractItemModel *aim = model.aim())
+ return aim->canFetchMore(model.rootIndex);
+ return false;
}
void fetchMore(QQmlAdaptorModel &model) const override
{
- if (model)
- model.aim()->fetchMore(model.rootIndex);
+ if (QAbstractItemModel *aim = model.aim())
+ aim->fetchMore(model.rootIndex);
}
QQmlDelegateModelItem *createItem(
@@ -516,7 +527,8 @@ public:
setModelDataType<QQmlDMAbstractItemModelData>(&builder, this);
const QByteArray propertyType = QByteArrayLiteral("QVariant");
- const QHash<int, QByteArray> names = model.aim()->roleNames();
+ const QAbstractItemModel *aim = model.aim();
+ const QHash<int, QByteArray> names = aim ? aim->roleNames() : QHash<int, QByteArray>();
for (QHash<int, QByteArray>::const_iterator it = names.begin(), cend = names.end(); it != cend; ++it) {
const int propertyId = propertyRoles.count();
propertyRoles.append(it.key());
diff --git a/src/qmlmodels/qqmldelegatemodel.cpp b/src/qmlmodels/qqmldelegatemodel.cpp
index e3c01d040a..7ad53eeb6c 100644
--- a/src/qmlmodels/qqmldelegatemodel.cpp
+++ b/src/qmlmodels/qqmldelegatemodel.cpp
@@ -55,6 +55,8 @@
QT_BEGIN_NAMESPACE
+Q_LOGGING_CATEGORY(lcItemViewDelegateRecycling, "qt.quick.itemview.delegaterecycling")
+
class QQmlDelegateModelItem;
namespace QV4 {
@@ -205,6 +207,9 @@ QQmlDelegateModelPrivate::~QQmlDelegateModelPrivate()
{
qDeleteAll(m_finishedIncubating);
+ // Free up all items in the pool
+ drainReusableItemsPool(0);
+
if (m_cacheMetaType)
m_cacheMetaType->release();
}
@@ -588,36 +593,47 @@ int QQmlDelegateModel::count() const
return d->m_compositor.count(d->m_compositorGroup);
}
-QQmlDelegateModel::ReleaseFlags QQmlDelegateModelPrivate::release(QObject *object)
+QQmlDelegateModel::ReleaseFlags QQmlDelegateModelPrivate::release(QObject *object, QQmlInstanceModel::ReusableFlag reusableFlag)
{
if (!object)
- return QQmlDelegateModel::ReleaseFlags(0);
+ return QQmlDelegateModel::ReleaseFlags{};
QQmlDelegateModelItem *cacheItem = QQmlDelegateModelItem::dataForObject(object);
if (!cacheItem)
- return QQmlDelegateModel::ReleaseFlags(0);
+ return QQmlDelegateModel::ReleaseFlags{};
if (!cacheItem->releaseObject())
return QQmlDelegateModel::Referenced;
+ if (reusableFlag == QQmlInstanceModel::Reusable) {
+ removeCacheItem(cacheItem);
+ m_reusableItemsPool.insertItem(cacheItem);
+ emit q_func()->itemPooled(cacheItem->index, cacheItem->object);
+ return QQmlInstanceModel::Pooled;
+ }
+
+ destroyCacheItem(cacheItem);
+ return QQmlInstanceModel::Destroyed;
+}
+
+void QQmlDelegateModelPrivate::destroyCacheItem(QQmlDelegateModelItem *cacheItem)
+{
+ emitDestroyingItem(cacheItem->object);
cacheItem->destroyObject();
- emitDestroyingItem(object);
if (cacheItem->incubationTask) {
releaseIncubator(cacheItem->incubationTask);
cacheItem->incubationTask = nullptr;
}
cacheItem->Dispose();
- return QQmlInstanceModel::Destroyed;
}
/*
Returns ReleaseStatus flags.
*/
-
-QQmlDelegateModel::ReleaseFlags QQmlDelegateModel::release(QObject *item)
+QQmlDelegateModel::ReleaseFlags QQmlDelegateModel::release(QObject *item, QQmlInstanceModel::ReusableFlag reusableFlag)
{
Q_D(QQmlDelegateModel);
- QQmlInstanceModel::ReleaseFlags stat = d->release(item);
+ QQmlInstanceModel::ReleaseFlags stat = d->release(item, reusableFlag);
return stat;
}
@@ -937,13 +953,14 @@ void PropertyUpdater::breakBinding()
void QQDMIncubationTask::initializeRequiredProperties(QQmlDelegateModelItem *modelItemToIncubate, QObject *object)
{
auto incubatorPriv = QQmlIncubatorPrivate::get(this);
- QQmlData *d = QQmlData::get(object);
- auto contextData = d ? d->context : nullptr;
- if (contextData) {
- contextData->hasExtraObject = true;
- contextData->extraObject = modelItemToIncubate;
- }
if (incubatorPriv->hadRequiredProperties()) {
+ QQmlData *d = QQmlData::get(object);
+ auto contextData = d ? d->context : nullptr;
+ if (contextData) {
+ contextData->hasExtraObject = true;
+ contextData->extraObject = modelItemToIncubate;
+ }
+
if (incubatorPriv->requiredProperties().empty())
return;
RequiredProperties &requiredProperties = incubatorPriv->requiredProperties();
@@ -954,21 +971,25 @@ void QQDMIncubationTask::initializeRequiredProperties(QQmlDelegateModelItem *mod
// column, model and more
// the most derived subclass of QQmlDelegateModelItem is QQmlDMAbstractModelData at depth 2,
// so 4 should be plenty
- QVarLengthArray<const QMetaObject *, 4> mos;
+ QVarLengthArray<QPair<const QMetaObject *, QObject *>, 4> mos;
// we first check the dynamic meta object for properties originating from the model
- mos.push_back(qmlMetaObject); // contains abstractitemmodelproperties
+ // contains abstractitemmodelproperties
+ mos.push_back(qMakePair(qmlMetaObject, modelItemToIncubate));
auto delegateModelItemSubclassMO = qmlMetaObject->superClass();
- mos.push_back(delegateModelItemSubclassMO);
+ mos.push_back(qMakePair(delegateModelItemSubclassMO, modelItemToIncubate));
- while (strcmp(delegateModelItemSubclassMO->className(), modelItemToIncubate->staticMetaObject.className())) {
+ while (strcmp(delegateModelItemSubclassMO->className(),
+ modelItemToIncubate->staticMetaObject.className())) {
delegateModelItemSubclassMO = delegateModelItemSubclassMO->superClass();
- mos.push_back(delegateModelItemSubclassMO);
+ mos.push_back(qMakePair(delegateModelItemSubclassMO, modelItemToIncubate));
}
if (proxiedObject)
- mos.push_back(proxiedObject->metaObject());
+ mos.push_back(qMakePair(proxiedObject->metaObject(), proxiedObject));
auto updater = new PropertyUpdater(object);
- for (const QMetaObject *mo : mos) {
+ for (const auto &metaObjectAndObject : mos) {
+ const QMetaObject *mo = metaObjectAndObject.first;
+ QObject *itemOrProxy = metaObjectAndObject.second;
for (int i = mo->propertyOffset(); i < mo->propertyCount() + mo->propertyOffset(); ++i) {
auto prop = mo->property(i);
if (!prop.name())
@@ -980,19 +1001,23 @@ void QQDMIncubationTask::initializeRequiredProperties(QQmlDelegateModelItem *mod
// only write to property if it was actually requested by the component
if (wasInRequired && prop.hasNotifySignal()) {
QMetaMethod changeSignal = prop.notifySignal();
- static QMetaMethod updateSlot = PropertyUpdater::staticMetaObject.method(PropertyUpdater::staticMetaObject.indexOfSlot("doUpdate()"));
- QMetaObject::Connection conn = QObject::connect(modelItemToIncubate, changeSignal, updater, updateSlot);
+ static QMetaMethod updateSlot = PropertyUpdater::staticMetaObject.method(
+ PropertyUpdater::staticMetaObject.indexOfSlot("doUpdate()"));
+ QMetaObject::Connection conn = QObject::connect(itemOrProxy, changeSignal,
+ updater, updateSlot);
auto propIdx = object->metaObject()->indexOfProperty(propName.toUtf8());
- QMetaMethod writeToPropSignal = object->metaObject()->property(propIdx).notifySignal();
+ QMetaMethod writeToPropSignal
+ = object->metaObject()->property(propIdx).notifySignal();
updater->senderToConnection[writeToPropSignal.methodIndex()] = conn;
- static QMetaMethod breakBinding = PropertyUpdater::staticMetaObject.method(PropertyUpdater::staticMetaObject.indexOfSlot("breakBinding()"));
- componentProp.write(prop.read(modelItemToIncubate));
+ static QMetaMethod breakBinding = PropertyUpdater::staticMetaObject.method(
+ PropertyUpdater::staticMetaObject.indexOfSlot("breakBinding()"));
+ componentProp.write(prop.read(itemOrProxy));
// the connection needs to established after the write,
// else the signal gets triggered by it and breakBinding will remove the connection
QObject::connect(object, writeToPropSignal, updater, breakBinding);
}
else if (wasInRequired) // we still have to write, even if there is no change signal
- componentProp.write(prop.read(modelItemToIncubate));
+ componentProp.write(prop.read(itemOrProxy));
}
}
} else {
@@ -1033,6 +1058,71 @@ void QQmlDelegateModelPrivate::releaseIncubator(QQDMIncubationTask *incubationTa
}
}
+void QQmlDelegateModelPrivate::reuseItem(QQmlDelegateModelItem *item, int newModelIndex, int newGroups)
+{
+ Q_ASSERT(item->object);
+
+ // Update/reset which groups the item belongs to
+ item->groups = newGroups;
+
+ // Update context property index (including row and column) on the delegate
+ // item, and inform the application about it. For a list, the row is the same
+ // as the index, and the column is always 0. We set alwaysEmit to true, to
+ // force all bindings to be reevaluated, even if the index didn't change.
+ const bool alwaysEmit = true;
+ item->setModelIndex(newModelIndex, newModelIndex, 0, alwaysEmit);
+
+ // Notify the application that all 'dynamic'/role-based context data has
+ // changed as well (their getter function will use the updated index).
+ auto const itemAsList = QList<QQmlDelegateModelItem *>() << item;
+ auto const updateAllRoles = QVector<int>();
+ m_adaptorModel.notify(itemAsList, newModelIndex, 1, updateAllRoles);
+
+ if (QQmlDelegateModelAttached *att = static_cast<QQmlDelegateModelAttached *>(
+ qmlAttachedPropertiesObject<QQmlDelegateModel>(item->object, false))) {
+ // Update currentIndex of the attached DelegateModel object
+ // to the index the item has in the cache.
+ att->resetCurrentIndex();
+ // emitChanges will emit both group-, and index changes to the application
+ att->emitChanges();
+ }
+
+ // Inform the view that the item is recycled. This will typically result
+ // in the view updating its own attached delegate item properties.
+ emit q_func()->itemReused(newModelIndex, item->object);
+}
+
+void QQmlDelegateModelPrivate::drainReusableItemsPool(int maxPoolTime)
+{
+ m_reusableItemsPool.drain(maxPoolTime, [=](QQmlDelegateModelItem *cacheItem){ destroyCacheItem(cacheItem); });
+}
+
+void QQmlDelegateModel::drainReusableItemsPool(int maxPoolTime)
+{
+ d_func()->drainReusableItemsPool(maxPoolTime);
+}
+
+int QQmlDelegateModel::poolSize()
+{
+ return d_func()->m_reusableItemsPool.size();
+}
+
+QQmlComponent *QQmlDelegateModelPrivate::resolveDelegate(int index)
+{
+ if (!m_delegateChooser)
+ return m_delegate;
+
+ QQmlComponent *delegate = nullptr;
+ QQmlAbstractDelegateComponent *chooser = m_delegateChooser;
+
+ do {
+ delegate = chooser->delegate(&m_adaptorModel, index);
+ chooser = qobject_cast<QQmlAbstractDelegateComponent *>(delegate);
+ } while (chooser);
+
+ return delegate;
+}
+
void QQmlDelegateModelPrivate::addCacheItem(QQmlDelegateModelItem *item, Compositor::iterator it)
{
m_cache.insert(it.cacheIndex, item);
@@ -1124,13 +1214,33 @@ QObject *QQmlDelegateModelPrivate::object(Compositor::Group group, int index, QQ
QQmlDelegateModelItem *cacheItem = it->inCache() ? m_cache.at(it.cacheIndex) : 0;
- if (!cacheItem) {
- cacheItem = m_adaptorModel.createItem(m_cacheMetaType, it.modelIndex());
- if (!cacheItem)
+ if (!cacheItem || !cacheItem->delegate) {
+ QQmlComponent *delegate = resolveDelegate(it.modelIndex());
+ if (!delegate)
return nullptr;
- cacheItem->groups = it->flags;
- addCacheItem(cacheItem, it);
+ if (!cacheItem) {
+ cacheItem = m_reusableItemsPool.takeItem(delegate, index);
+ if (cacheItem) {
+ // Move the pooled item back into the cache, update
+ // all related properties, and return the object (which
+ // has already been incubated, otherwise it wouldn't be in the pool).
+ addCacheItem(cacheItem, it);
+ reuseItem(cacheItem, index, it->flags);
+ cacheItem->referenceObject();
+ return cacheItem->object;
+ }
+
+ // Since we could't find an available item in the pool, we create a new one
+ cacheItem = m_adaptorModel.createItem(m_cacheMetaType, it.modelIndex());
+ if (!cacheItem)
+ return nullptr;
+
+ cacheItem->groups = it->flags;
+ addCacheItem(cacheItem, it);
+ }
+
+ cacheItem->delegate = delegate;
}
// Bump the reference counts temporarily so neither the content data or the delegate object
@@ -1145,18 +1255,7 @@ QObject *QQmlDelegateModelPrivate::object(Compositor::Group group, int index, QQ
cacheItem->incubationTask->forceCompletion();
}
} else if (!cacheItem->object) {
- QQmlComponent *delegate = m_delegate;
- if (m_delegateChooser) {
- QQmlAbstractDelegateComponent *chooser = m_delegateChooser;
- do {
- delegate = chooser->delegate(&m_adaptorModel, index);
- chooser = qobject_cast<QQmlAbstractDelegateComponent *>(delegate);
- } while (chooser);
- if (!delegate)
- return nullptr;
- }
-
- QQmlContext *creationContext = delegate->creationContext();
+ QQmlContext *creationContext = cacheItem->delegate->creationContext();
cacheItem->scriptRef += 1;
@@ -1185,10 +1284,10 @@ QObject *QQmlDelegateModelPrivate::object(Compositor::Group group, int index, QQ
}
}
- QQmlComponentPrivate *cp = QQmlComponentPrivate::get(delegate);
+ QQmlComponentPrivate *cp = QQmlComponentPrivate::get(cacheItem->delegate);
cp->incubateObject(
cacheItem->incubationTask,
- delegate,
+ cacheItem->delegate,
m_context->engine(),
ctxt,
QQmlContextData::get(m_context));
@@ -2234,7 +2333,7 @@ void QQmlDelegateModelItem::Dispose()
delete this;
}
-void QQmlDelegateModelItem::setModelIndex(int idx, int newRow, int newColumn)
+void QQmlDelegateModelItem::setModelIndex(int idx, int newRow, int newColumn, bool alwaysEmit)
{
const int prevIndex = index;
const int prevRow = row;
@@ -2244,11 +2343,11 @@ void QQmlDelegateModelItem::setModelIndex(int idx, int newRow, int newColumn)
row = newRow;
column = newColumn;
- if (idx != prevIndex)
+ if (idx != prevIndex || alwaysEmit)
emit modelIndexChanged();
- if (row != prevRow)
+ if (row != prevRow || alwaysEmit)
emit rowChanged();
- if (column != prevColumn)
+ if (column != prevColumn || alwaysEmit)
emit columnChanged();
}
@@ -3437,7 +3536,7 @@ QObject *QQmlPartsModel::object(int index, QQmlIncubator::IncubationMode incubat
QObject *part = package->part(m_part);
if (!part)
return nullptr;
- m_packaged.insertMulti(part, package);
+ m_packaged.insert(part, package);
return part;
}
@@ -3451,11 +3550,11 @@ QObject *QQmlPartsModel::object(int index, QQmlIncubator::IncubationMode incubat
return nullptr;
}
-QQmlInstanceModel::ReleaseFlags QQmlPartsModel::release(QObject *item)
+QQmlInstanceModel::ReleaseFlags QQmlPartsModel::release(QObject *item, ReusableFlag)
{
- QQmlInstanceModel::ReleaseFlags flags = nullptr;
+ QQmlInstanceModel::ReleaseFlags flags;
- QHash<QObject *, QQuickPackage *>::iterator it = m_packaged.find(item);
+ auto it = m_packaged.find(item);
if (it != m_packaged.end()) {
QQuickPackage *package = *it;
QQmlDelegateModelPrivate *model = QQmlDelegateModelPrivate::get(m_model);
@@ -3496,7 +3595,7 @@ QQmlIncubator::Status QQmlPartsModel::incubationStatus(int index)
int QQmlPartsModel::indexOf(QObject *item, QObject *) const
{
- QHash<QObject *, QQuickPackage *>::const_iterator it = m_packaged.find(item);
+ auto it = m_packaged.find(item);
if (it != m_packaged.end()) {
if (QQmlDelegateModelItem *cacheItem = QQmlDelegateModelItem::dataForObject(*it))
return cacheItem->groupIndex(m_compositorGroup);
@@ -3544,6 +3643,121 @@ void QQmlPartsModel::emitModelUpdated(const QQmlChangeSet &changeSet, bool reset
}
}
+void QQmlReusableDelegateModelItemsPool::insertItem(QQmlDelegateModelItem *modelItem)
+{
+ // Currently, the only way for a view to reuse items is to call release()
+ // in the model class with the second argument explicitly set to
+ // QQmlReuseableDelegateModelItemsPool::Reusable. If the released item is
+ // no longer referenced, it will be added to the pool. Reusing of items can
+ // be specified per item, in case certain items cannot be recycled. A
+ // QQmlDelegateModelItem knows which delegate its object was created from.
+ // So when we are about to create a new item, we first check if the pool
+ // contains an item based on the same delegate from before. If so, we take
+ // it out of the pool (instead of creating a new item), and update all its
+ // context properties and attached properties.
+
+ // When a view is recycling items, it should call drain() regularly. As
+ // there is currently no logic to 'hibernate' items in the pool, they are
+ // only meant to rest there for a short while, ideally only from the time
+ // e.g a row is unloaded on one side of the view, and until a new row is
+ // loaded on the opposite side. Between these times, the application will
+ // see the item as fully functional and 'alive' (just not visible on
+ // screen). Since this time is supposed to be short, we don't take any
+ // action to notify the application about it, since we don't want to
+ // trigger any bindings that can disturb performance.
+
+ // A recommended time for calling drain() is each time a view has finished
+ // loading e.g a new row or column. If there are more items in the pool
+ // after that, it means that the view most likely doesn't need them anytime
+ // soon. Those items should be destroyed to reduce resource consumption.
+
+ // Depending on if a view is a list or a table, it can sometimes be
+ // performant to keep items in the pool for a bit longer than one "row
+ // out/row in" cycle. E.g for a table, if the number of visible rows in a
+ // view is much larger than the number of visible columns. In that case, if
+ // you flick out a row, and then flick in a column, you would throw away a
+ // lot of items in the pool if completely draining it. The reason is that
+ // unloading a row places more items in the pool than what ends up being
+ // recycled when loading a new column. And then, when you next flick in a
+ // new row, you would need to load all those drained items again from
+ // scratch. For that reason, you can specify a maxPoolTime to the
+ // drainReusableItemsPool() that allows you to keep items in the pool for a
+ // bit longer, effectively keeping more items in circulation. A recommended
+ // maxPoolTime would be equal to the number of dimensions in the view,
+ // which means 1 for a list view and 2 for a table view. If you specify 0,
+ // all items will be drained.
+
+ Q_ASSERT(!modelItem->incubationTask);
+ Q_ASSERT(!modelItem->isObjectReferenced());
+ Q_ASSERT(modelItem->object);
+ Q_ASSERT(modelItem->delegate);
+
+ modelItem->poolTime = 0;
+ m_reusableItemsPool.append(modelItem);
+
+ qCDebug(lcItemViewDelegateRecycling)
+ << "item:" << modelItem
+ << "delegate:" << modelItem->delegate
+ << "index:" << modelItem->modelIndex()
+ << "row:" << modelItem->modelRow()
+ << "column:" << modelItem->modelColumn()
+ << "pool size:" << m_reusableItemsPool.size();
+}
+
+QQmlDelegateModelItem *QQmlReusableDelegateModelItemsPool::takeItem(const QQmlComponent *delegate, int newIndexHint)
+{
+ // Find the oldest item in the pool that was made from the same delegate as
+ // the given argument, remove it from the pool, and return it.
+ for (auto it = m_reusableItemsPool.begin(); it != m_reusableItemsPool.end(); ++it) {
+ if ((*it)->delegate != delegate)
+ continue;
+ auto modelItem = *it;
+ m_reusableItemsPool.erase(it);
+
+ qCDebug(lcItemViewDelegateRecycling)
+ << "item:" << modelItem
+ << "delegate:" << delegate
+ << "old index:" << modelItem->modelIndex()
+ << "old row:" << modelItem->modelRow()
+ << "old column:" << modelItem->modelColumn()
+ << "new index:" << newIndexHint
+ << "pool size:" << m_reusableItemsPool.size();
+
+ return modelItem;
+ }
+
+ qCDebug(lcItemViewDelegateRecycling)
+ << "no available item for delegate:" << delegate
+ << "new index:" << newIndexHint
+ << "pool size:" << m_reusableItemsPool.size();
+
+ return nullptr;
+}
+
+void QQmlReusableDelegateModelItemsPool::drain(int maxPoolTime, std::function<void(QQmlDelegateModelItem *cacheItem)> releaseItem)
+{
+ // Rather than releasing all pooled items upon a call to this function, each
+ // item has a poolTime. The poolTime specifies for how many loading cycles an item
+ // has been resting in the pool. And for each invocation of this function, poolTime
+ // will increase. If poolTime is equal to, or exceeds, maxPoolTime, it will be removed
+ // from the pool and released. This way, the view can tweak a bit for how long
+ // items should stay in "circulation", even if they are not recycled right away.
+ qCDebug(lcItemViewDelegateRecycling) << "pool size before drain:" << m_reusableItemsPool.size();
+
+ for (auto it = m_reusableItemsPool.begin(); it != m_reusableItemsPool.end();) {
+ auto modelItem = *it;
+ modelItem->poolTime++;
+ if (modelItem->poolTime <= maxPoolTime) {
+ ++it;
+ } else {
+ it = m_reusableItemsPool.erase(it);
+ releaseItem(modelItem);
+ }
+ }
+
+ qCDebug(lcItemViewDelegateRecycling) << "pool size after drain:" << m_reusableItemsPool.size();
+}
+
//============================================================================
struct QQmlDelegateModelGroupChange : QV4::Object
diff --git a/src/qmlmodels/qqmldelegatemodel_p.h b/src/qmlmodels/qqmldelegatemodel_p.h
index 02904a71d7..adb5f7008b 100644
--- a/src/qmlmodels/qqmldelegatemodel_p.h
+++ b/src/qmlmodels/qqmldelegatemodel_p.h
@@ -113,12 +113,15 @@ public:
int count() const override;
bool isValid() const override { return delegate() != nullptr; }
QObject *object(int index, QQmlIncubator::IncubationMode incubationMode = QQmlIncubator::AsynchronousIfNested) override;
- ReleaseFlags release(QObject *object) override;
+ ReleaseFlags release(QObject *object, ReusableFlag reusableFlag = NotReusable) override;
void cancel(int index) override;
QVariant variantValue(int index, const QString &role) override;
void setWatchedRoles(const QList<QByteArray> &roles) override;
QQmlIncubator::Status incubationStatus(int index) override;
+ void drainReusableItemsPool(int maxPoolTime) override;
+ int poolSize() override;
+
int indexOf(QObject *object, QObject *objectContext) const override;
QString filterGroup() const;
@@ -141,6 +144,8 @@ Q_SIGNALS:
void defaultGroupsChanged();
void rootIndexChanged();
void delegateChanged();
+ void itemPooled(int index, QObject *object);
+ void itemReused(int index, QObject *object);
private Q_SLOTS:
void _q_itemsChanged(int index, int count, const QVector<int> &roles);
diff --git a/src/qmlmodels/qqmldelegatemodel_p_p.h b/src/qmlmodels/qqmldelegatemodel_p_p.h
index 06365a212f..a1c4555d01 100644
--- a/src/qmlmodels/qqmldelegatemodel_p_p.h
+++ b/src/qmlmodels/qqmldelegatemodel_p_p.h
@@ -49,6 +49,8 @@
#include <private/qqmladaptormodel_p.h>
#include <private/qqmlopenmetaobject_p.h>
+#include <QtCore/qloggingcategory.h>
+
//
// W A R N I N G
// -------------
@@ -64,6 +66,8 @@ QT_REQUIRE_CONFIG(qml_delegate_model);
QT_BEGIN_NAMESPACE
+Q_DECLARE_LOGGING_CATEGORY(lcItemViewDelegateRecycling)
+
typedef QQmlListCompositor Compositor;
class QQmlDelegateModelAttachedMetaObject;
@@ -129,7 +133,7 @@ public:
int modelRow() const { return row; }
int modelColumn() const { return column; }
int modelIndex() const { return index; }
- virtual void setModelIndex(int idx, int newRow, int newColumn);
+ virtual void setModelIndex(int idx, int newRow, int newColumn, bool alwaysEmit = false);
virtual QV4::ReturnedValue get() { return QV4::QObjectWrapper::wrap(v4, this); }
@@ -190,7 +194,18 @@ void QV4::Heap::QQmlDelegateModelItemObject::init(QQmlDelegateModelItem *item)
this->item = item;
}
+class QQmlReusableDelegateModelItemsPool
+{
+public:
+ void insertItem(QQmlDelegateModelItem *modelItem);
+ QQmlDelegateModelItem *takeItem(const QQmlComponent *delegate, int newIndexHint);
+ void reuseItem(QQmlDelegateModelItem *item, int newModelIndex);
+ void drain(int maxPoolTime, std::function<void(QQmlDelegateModelItem *cacheItem)> releaseItem);
+ int size() { return m_reusableItemsPool.size(); }
+private:
+ QList<QQmlDelegateModelItem *> m_reusableItemsPool;
+};
class QQmlDelegateModelPrivate;
class QQDMIncubationTask : public QQmlIncubator
@@ -278,7 +293,7 @@ public:
void requestMoreIfNecessary();
QObject *object(Compositor::Group group, int index, QQmlIncubator::IncubationMode incubationMode);
- QQmlDelegateModel::ReleaseFlags release(QObject *object);
+ QQmlDelegateModel::ReleaseFlags release(QObject *object, QQmlInstanceModel::ReusableFlag reusable = QQmlInstanceModel::NotReusable);
QVariant variantValue(Compositor::Group group, int index, const QString &name);
void emitCreatedPackage(QQDMIncubationTask *incubationTask, QQuickPackage *package);
void emitInitPackage(QQDMIncubationTask *incubationTask, QQuickPackage *package);
@@ -290,9 +305,13 @@ public:
void emitDestroyingItem(QObject *item) { Q_EMIT q_func()->destroyingItem(item); }
void addCacheItem(QQmlDelegateModelItem *item, Compositor::iterator it);
void removeCacheItem(QQmlDelegateModelItem *cacheItem);
-
+ void destroyCacheItem(QQmlDelegateModelItem *cacheItem);
void updateFilterGroup();
+ void reuseItem(QQmlDelegateModelItem *item, int newModelIndex, int newGroups);
+ void drainReusableItemsPool(int maxPoolTime);
+ QQmlComponent *resolveDelegate(int index);
+
void addGroups(Compositor::iterator from, int count, Compositor::Group group, int groupFlags);
void removeGroups(Compositor::iterator from, int count, Compositor::Group group, int groupFlags);
void setGroups(Compositor::iterator from, int count, Compositor::Group group, int groupFlags);
@@ -337,6 +356,7 @@ public:
QQmlDelegateModelGroupEmitterList m_pendingParts;
QList<QQmlDelegateModelItem *> m_cache;
+ QQmlReusableDelegateModelItemsPool m_reusableItemsPool;
QList<QQDMIncubationTask *> m_finishedIncubating;
QList<QByteArray> m_watchedRoles;
@@ -380,7 +400,7 @@ public:
int count() const override;
bool isValid() const override;
QObject *object(int index, QQmlIncubator::IncubationMode incubationMode = QQmlIncubator::AsynchronousIfNested) override;
- ReleaseFlags release(QObject *item) override;
+ ReleaseFlags release(QObject *item, ReusableFlag reusable = NotReusable) override;
QVariant variantValue(int index, const QString &role) override;
QList<QByteArray> watchedRoles() const { return m_watchedRoles; }
void setWatchedRoles(const QList<QByteArray> &roles) override;
@@ -399,7 +419,7 @@ Q_SIGNALS:
private:
QQmlDelegateModel *m_model;
- QHash<QObject *, QQuickPackage *> m_packaged;
+ QMultiHash<QObject *, QQuickPackage *> m_packaged;
QString m_part;
QString m_filterGroup;
QList<QByteArray> m_watchedRoles;
diff --git a/src/qmlmodels/qqmllistmodel.cpp b/src/qmlmodels/qqmllistmodel.cpp
index e0a66e7170..1bbe9360bb 100644
--- a/src/qmlmodels/qqmllistmodel.cpp
+++ b/src/qmlmodels/qqmllistmodel.cpp
@@ -269,19 +269,6 @@ const ListLayout::Role *ListLayout::getExistingRole(QV4::String *key) const
return r;
}
-StringOrTranslation::StringOrTranslation(const QString &s)
-{
- d.setFlag();
- setString(s);
-}
-
-StringOrTranslation::StringOrTranslation(const QV4::CompiledData::Binding *binding)
-{
- d.setFlag();
- clear();
- d = binding;
-}
-
StringOrTranslation::~StringOrTranslation()
{
clear();
@@ -289,53 +276,48 @@ StringOrTranslation::~StringOrTranslation()
void StringOrTranslation::setString(const QString &s)
{
- d.setFlag();
clear();
- QStringData *stringData = const_cast<QString &>(s).data_ptr();
- d = stringData;
- if (stringData)
- stringData->ref.ref();
+ QString mutableString(s);
+ QString::DataPointer dataPointer = mutableString.data_ptr();
+ arrayData = dataPointer->d_ptr();
+ stringData = dataPointer->data();
+ stringSize = mutableString.length();
+ arrayData->ref();
}
void StringOrTranslation::setTranslation(const QV4::CompiledData::Binding *binding)
{
- d.setFlag();
clear();
- d = binding;
+ this->binding = binding;
}
QString StringOrTranslation::toString(const QQmlListModel *owner) const
{
- if (d.isNull())
- return QString();
- if (d.isT1()) {
- QStringDataPtr holder = { d.asT1() };
- holder.ptr->ref.ref();
- return QString(holder);
+ if (arrayData) {
+ arrayData->ref();
+ return QString(QStringPrivate(arrayData, stringData, stringSize));
}
if (!owner)
return QString();
- return owner->m_compilationUnit->bindingValueAsString(d.asT2());
+ return owner->m_compilationUnit->bindingValueAsString(binding);
}
QString StringOrTranslation::asString() const
{
- if (d.isNull())
+ if (!arrayData)
return QString();
- if (!d.isT1())
- return QString();
- QStringDataPtr holder = { d.asT1() };
- holder.ptr->ref.ref();
- return QString(holder);
+ arrayData->ref();
+ return QString(QStringPrivate(arrayData, stringData, stringSize));
}
void StringOrTranslation::clear()
{
- if (QStringData *strData = d.isT1() ? d.asT1() : nullptr) {
- if (!strData->ref.deref())
- QStringData::deallocate(strData);
- }
- d = static_cast<QStringData *>(nullptr);
+ if (arrayData && !arrayData->deref())
+ QTypedArrayData<ushort>::deallocate(arrayData);
+ arrayData = nullptr;
+ stringData = nullptr;
+ stringSize = 0;
+ binding = nullptr;
}
QObject *ListModel::getOrCreateModelObject(QQmlListModel *model, int elementIndex)
@@ -1148,7 +1130,7 @@ int ListElement::setTranslationProperty(const ListLayout::Role &role, const QV4:
void ListElement::setStringPropertyFast(const ListLayout::Role &role, const QString &s)
{
char *mem = getPropertyMemory(role);
- new (mem) StringOrTranslation(s);
+ reinterpret_cast<StringOrTranslation *>(mem)->setString(s);
}
void ListElement::setDoublePropertyFast(const ListLayout::Role &role, double d)
@@ -1905,11 +1887,11 @@ void DynamicRoleModelNodeMetaObject::propertyWritten(int index)
Here is an example that uses WorkerScript to periodically append the
current time to a list model:
- \snippet ../quick/threading/threadedlistmodel/timedisplay.qml 0
+ \snippet ../../examples/quick/threading/threadedlistmodel/timedisplay.qml 0
The included file, \tt dataloader.mjs, looks like this:
- \snippet ../quick/threading/threadedlistmodel/dataloader.mjs 0
+ \snippet ../../examples/quick/threading/threadedlistmodel/dataloader.mjs 0
The timer in the main example sends messages to the worker script by calling
\l WorkerScript::sendMessage(). When this message is received,
diff --git a/src/qmlmodels/qqmllistmodel_p_p.h b/src/qmlmodels/qqmllistmodel_p_p.h
index 2ad5158050..f17004ed3b 100644
--- a/src/qmlmodels/qqmllistmodel_p_p.h
+++ b/src/qmlmodels/qqmllistmodel_p_p.h
@@ -252,18 +252,23 @@ private:
struct StringOrTranslation
{
- explicit StringOrTranslation(const QString &s);
- explicit StringOrTranslation(const QV4::CompiledData::Binding *binding);
~StringOrTranslation();
- bool isSet() const { return d.flag(); }
- bool isTranslation() const { return d.isT2(); }
+ bool isSet() const { return binding || arrayData; }
+ bool isTranslation() const { return binding && !arrayData; }
void setString(const QString &s);
void setTranslation(const QV4::CompiledData::Binding *binding);
QString toString(const QQmlListModel *owner) const;
QString asString() const;
private:
void clear();
- QBiPointer<QStringData, const QV4::CompiledData::Binding> d;
+
+ union {
+ ushort *stringData = nullptr;
+ const QV4::CompiledData::Binding *binding;
+ };
+
+ QTypedArrayData<ushort> *arrayData = nullptr;
+ uint stringSize = 0;
};
/*!
diff --git a/src/qmlmodels/qqmlmodelsmodule.cpp b/src/qmlmodels/qqmlmodelsmodule.cpp
deleted file mode 100644
index 8bd9b179b3..0000000000
--- a/src/qmlmodels/qqmlmodelsmodule.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 Research In Motion.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQml module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qqmlmodelsmodule_p.h"
-#include <private/qtqmlmodelsglobal_p.h>
-
-#if QT_CONFIG(qml_list_model)
-#include <private/qqmllistmodel_p.h>
-#include <private/qqmllistmodelworkeragent_p.h>
-#endif
-#if QT_CONFIG(qml_delegate_model)
-#include <private/qqmlabstractdelegatecomponent_p.h>
-#include <private/qqmldelegatemodel_p.h>
-#include <private/qquickpackage_p.h>
-#include <private/qqmlcomponentattached_p.h>
-#endif
-#if QT_CONFIG(qml_object_model)
-#include <private/qqmlobjectmodel_p.h>
-#include <private/qqmlinstantiator_p.h>
-#endif
-
-QT_BEGIN_NAMESPACE
-
-void QQmlModelsModule::defineModule()
-{
- const char uri[] = "QtQml.Models";
-
-#if QT_CONFIG(qml_list_model)
- qmlRegisterTypesAndRevisions<QQmlListElement, QQmlListModel, QQmlListModelWorkerAgent>(uri, 2);
-#endif
-#if QT_CONFIG(qml_delegate_model)
- // TODO: Get rid of these. It's called DelegateModel and DelegateModelGroup these days.
- qmlRegisterType<QQmlDelegateModel>(uri, 2, 0, "VisualDataModel");
- qmlRegisterType<QQmlDelegateModelGroup>(uri, 2, 0, "VisualDataGroup");
-
- qmlRegisterTypesAndRevisions<QQmlDelegateModel, QQmlDelegateModelGroup, QQuickPackage, QQmlAbstractDelegateComponent>(uri, 2);
-#endif
-#if QT_CONFIG(qml_object_model)
- qmlRegisterTypesAndRevisions<QQmlObjectModel, QQmlInstantiator, QQmlInstanceModel>(uri, 2);
-#endif
-#if QT_CONFIG(itemmodel)
- qmlRegisterTypesAndRevisions<QItemSelectionModelForeign>(uri, 2);
-#endif
-}
-
-QT_END_NAMESPACE
diff --git a/src/qmlmodels/qqmlmodelsmodule_p.h b/src/qmlmodels/qqmlmodelsmodule_p.h
index c697b08bf7..e3e43f3922 100644
--- a/src/qmlmodels/qqmlmodelsmodule_p.h
+++ b/src/qmlmodels/qqmlmodelsmodule_p.h
@@ -61,13 +61,6 @@
QT_BEGIN_NAMESPACE
-class Q_QMLMODELS_PRIVATE_EXPORT QQmlModelsModule
-{
-public:
- static void defineModule();
- static void defineLabsModule();
-};
-
#if QT_CONFIG(itemmodel)
struct QItemSelectionModelForeign
{
diff --git a/src/qmlmodels/qqmlobjectmodel.cpp b/src/qmlmodels/qqmlobjectmodel.cpp
index 8e7b0a9b5f..85e64cc2f9 100644
--- a/src/qmlmodels/qqmlobjectmodel.cpp
+++ b/src/qmlmodels/qqmlobjectmodel.cpp
@@ -265,7 +265,7 @@ QObject *QQmlObjectModel::object(int index, QQmlIncubator::IncubationMode)
return item.item;
}
-QQmlInstanceModel::ReleaseFlags QQmlObjectModel::release(QObject *item)
+QQmlInstanceModel::ReleaseFlags QQmlObjectModel::release(QObject *item, ReusableFlag)
{
Q_D(QQmlObjectModel);
int idx = d->indexOf(item);
@@ -273,7 +273,7 @@ QQmlInstanceModel::ReleaseFlags QQmlObjectModel::release(QObject *item)
if (!d->children[idx].deref())
return QQmlInstanceModel::Referenced;
}
- return nullptr;
+ return {};
}
QVariant QQmlObjectModel::variantValue(int index, const QString &role)
diff --git a/src/qmlmodels/qqmlobjectmodel_p.h b/src/qmlmodels/qqmlobjectmodel_p.h
index 0aa818d724..6c68e55012 100644
--- a/src/qmlmodels/qqmlobjectmodel_p.h
+++ b/src/qmlmodels/qqmlobjectmodel_p.h
@@ -72,21 +72,29 @@ class Q_QMLMODELS_PRIVATE_EXPORT QQmlInstanceModel : public QObject
QML_ANONYMOUS
public:
+ enum ReusableFlag {
+ NotReusable,
+ Reusable
+ };
+
virtual ~QQmlInstanceModel() {}
- enum ReleaseFlag { Referenced = 0x01, Destroyed = 0x02 };
+ enum ReleaseFlag { Referenced = 0x01, Destroyed = 0x02, Pooled = 0x04 };
Q_DECLARE_FLAGS(ReleaseFlags, ReleaseFlag)
virtual int count() const = 0;
virtual bool isValid() const = 0;
virtual QObject *object(int index, QQmlIncubator::IncubationMode incubationMode = QQmlIncubator::AsynchronousIfNested) = 0;
- virtual ReleaseFlags release(QObject *object) = 0;
+ virtual ReleaseFlags release(QObject *object, ReusableFlag reusableFlag = NotReusable) = 0;
virtual void cancel(int) {}
QString stringValue(int index, const QString &role) { return variantValue(index, role).toString(); }
virtual QVariant variantValue(int, const QString &) = 0;
virtual void setWatchedRoles(const QList<QByteArray> &roles) = 0;
virtual QQmlIncubator::Status incubationStatus(int index) = 0;
+ virtual void drainReusableItemsPool(int maxPoolTime) { Q_UNUSED(maxPoolTime) }
+ virtual int poolSize() { return 0; }
+
virtual int indexOf(QObject *object, QObject *objectContext) const = 0;
virtual const QAbstractItemModel *abstractItemModel() const { return nullptr; }
@@ -125,7 +133,7 @@ public:
int count() const override;
bool isValid() const override;
QObject *object(int index, QQmlIncubator::IncubationMode incubationMode = QQmlIncubator::AsynchronousIfNested) override;
- ReleaseFlags release(QObject *object) override;
+ ReleaseFlags release(QObject *object, ReusableFlag reusable = NotReusable) override;
QVariant variantValue(int index, const QString &role) override;
void setWatchedRoles(const QList<QByteArray> &) override {}
QQmlIncubator::Status incubationStatus(int index) override;
diff --git a/src/qmlmodels/qqmltableinstancemodel.cpp b/src/qmlmodels/qqmltableinstancemodel.cpp
index a538ae4a1f..b4d1e61e31 100644
--- a/src/qmlmodels/qqmltableinstancemodel.cpp
+++ b/src/qmlmodels/qqmltableinstancemodel.cpp
@@ -141,7 +141,7 @@ QQmlDelegateModelItem *QQmlTableInstanceModel::resolveModelItem(int index)
return nullptr;
// Check if the pool contains an item that can be reused
- modelItem = takeFromReusableItemsPool(delegate);
+ modelItem = m_reusableItemsPool.takeItem(delegate, index);
if (modelItem) {
reuseItem(modelItem, index);
m_modelItems.insert(index, modelItem);
@@ -225,16 +225,21 @@ QQmlInstanceModel::ReleaseFlags QQmlTableInstanceModel::release(QObject *object,
m_modelItems.remove(modelItem->index);
if (reusable == Reusable) {
- insertIntoReusableItemsPool(modelItem);
- return QQmlInstanceModel::Referenced;
+ m_reusableItemsPool.insertItem(modelItem);
+ emit itemPooled(modelItem->index, modelItem->object);
+ return QQmlInstanceModel::Pooled;
}
// The item is not reused or referenced by anyone, so just delete it
- modelItem->destroyObject();
- emit destroyingItem(object);
+ destroyModelItem(modelItem);
+ return QQmlInstanceModel::Destroyed;
+}
+void QQmlTableInstanceModel::destroyModelItem(QQmlDelegateModelItem *modelItem)
+{
+ emit destroyingItem(modelItem->object);
+ modelItem->destroyObject();
delete modelItem;
- return QQmlInstanceModel::Destroyed;
}
void QQmlTableInstanceModel::cancel(int index)
@@ -257,94 +262,22 @@ void QQmlTableInstanceModel::cancel(int index)
delete modelItem;
}
-void QQmlTableInstanceModel::insertIntoReusableItemsPool(QQmlDelegateModelItem *modelItem)
-{
- // Currently, the only way for a view to reuse items is to call QQmlTableInstanceModel::release()
- // with the second argument explicitly set to QQmlTableInstanceModel::Reusable. If the released
- // item is no longer referenced, it will be added to the pool. Reusing of items can be specified
- // per item, in case certain items cannot be recycled.
- // A QQmlDelegateModelItem knows which delegate its object was created from. So when we are
- // about to create a new item, we first check if the pool contains an item based on the same
- // delegate from before. If so, we take it out of the pool (instead of creating a new item), and
- // update all its context-, and attached properties.
- // When a view is recycling items, it should call QQmlTableInstanceModel::drainReusableItemsPool()
- // regularly. As there is currently no logic to 'hibernate' items in the pool, they are only
- // meant to rest there for a short while, ideally only from the time e.g a row is unloaded
- // on one side of the view, and until a new row is loaded on the opposite side. In-between
- // this time, the application will see the item as fully functional and 'alive' (just not
- // visible on screen). Since this time is supposed to be short, we don't take any action to
- // notify the application about it, since we don't want to trigger any bindings that can
- // disturb performance.
- // A recommended time for calling drainReusableItemsPool() is each time a view has finished
- // loading e.g a new row or column. If there are more items in the pool after that, it means
- // that the view most likely doesn't need them anytime soon. Those items should be destroyed to
- // not consume resources.
- // Depending on if a view is a list or a table, it can sometimes be performant to keep
- // items in the pool for a bit longer than one "row out/row in" cycle. E.g for a table, if the
- // number of visible rows in a view is much larger than the number of visible columns.
- // In that case, if you flick out a row, and then flick in a column, you would throw away a lot
- // of items in the pool if completely draining it. The reason is that unloading a row places more
- // items in the pool than what ends up being recycled when loading a new column. And then, when you
- // next flick in a new row, you would need to load all those drained items again from scratch. For
- // that reason, you can specify a maxPoolTime to the drainReusableItemsPool() that allows you to keep
- // items in the pool for a bit longer, effectively keeping more items in circulation.
- // A recommended maxPoolTime would be equal to the number of dimenstions in the view, which
- // means 1 for a list view and 2 for a table view. If you specify 0, all items will be drained.
- Q_ASSERT(!modelItem->incubationTask);
- Q_ASSERT(!modelItem->isObjectReferenced());
- Q_ASSERT(!modelItem->isReferenced());
- Q_ASSERT(modelItem->object);
-
- modelItem->poolTime = 0;
- m_reusableItemsPool.append(modelItem);
- emit itemPooled(modelItem->index, modelItem->object);
-}
-
-QQmlDelegateModelItem *QQmlTableInstanceModel::takeFromReusableItemsPool(const QQmlComponent *delegate)
-{
- // Find the oldest item in the pool that was made from the same delegate as
- // the given argument, remove it from the pool, and return it.
- if (m_reusableItemsPool.isEmpty())
- return nullptr;
-
- for (auto it = m_reusableItemsPool.begin(); it != m_reusableItemsPool.end(); ++it) {
- if ((*it)->delegate != delegate)
- continue;
- auto modelItem = *it;
- m_reusableItemsPool.erase(it);
- return modelItem;
- }
-
- return nullptr;
-}
-
void QQmlTableInstanceModel::drainReusableItemsPool(int maxPoolTime)
{
- // Rather than releasing all pooled items upon a call to this function, each
- // item has a poolTime. The poolTime specifies for how many loading cycles an item
- // has been resting in the pool. And for each invocation of this function, poolTime
- // will increase. If poolTime is equal to, or exceeds, maxPoolTime, it will be removed
- // from the pool and released. This way, the view can tweak a bit for how long
- // items should stay in "circulation", even if they are not recycled right away.
- for (auto it = m_reusableItemsPool.begin(); it != m_reusableItemsPool.end();) {
- auto modelItem = *it;
- modelItem->poolTime++;
- if (modelItem->poolTime <= maxPoolTime) {
- ++it;
- } else {
- it = m_reusableItemsPool.erase(it);
- release(modelItem->object, NotReusable);
- }
- }
+ m_reusableItemsPool.drain(maxPoolTime, [=](QQmlDelegateModelItem *modelItem){ destroyModelItem(modelItem); });
}
void QQmlTableInstanceModel::reuseItem(QQmlDelegateModelItem *item, int newModelIndex)
{
// Update the context properties index, row and column on
// the delegate item, and inform the application about it.
+ // Note that we set alwaysEmit to true, to force all bindings
+ // to be reevaluated, even if the index didn't change (since
+ // the model can have changed size since last usage).
+ const bool alwaysEmit = true;
const int newRow = m_adaptorModel.rowAt(newModelIndex);
const int newColumn = m_adaptorModel.columnAt(newModelIndex);
- item->setModelIndex(newModelIndex, newRow, newColumn);
+ item->setModelIndex(newModelIndex, newRow, newColumn, alwaysEmit);
// Notify the application that all 'dynamic'/role-based context data has
// changed as well (their getter function will use the updated index).
diff --git a/src/qmlmodels/qqmltableinstancemodel_p.h b/src/qmlmodels/qqmltableinstancemodel_p.h
index ce5a37bc98..d924455918 100644
--- a/src/qmlmodels/qqmltableinstancemodel_p.h
+++ b/src/qmlmodels/qqmltableinstancemodel_p.h
@@ -86,12 +86,6 @@ class Q_QMLMODELS_PRIVATE_EXPORT QQmlTableInstanceModel : public QQmlInstanceMod
Q_OBJECT
public:
-
- enum ReusableFlag {
- NotReusable,
- Reusable
- };
-
QQmlTableInstanceModel(QQmlContext *qmlContext, QObject *parent = nullptr);
~QQmlTableInstanceModel() override;
@@ -103,6 +97,9 @@ public:
bool isValid() const override { return true; }
+ bool canFetchMore() const { return m_adaptorModel.canFetchMore(); }
+ void fetchMore() { m_adaptorModel.fetchMore(); }
+
QVariant model() const;
void setModel(const QVariant &model);
@@ -112,14 +109,11 @@ public:
const QAbstractItemModel *abstractItemModel() const override;
QObject *object(int index, QQmlIncubator::IncubationMode incubationMode = QQmlIncubator::AsynchronousIfNested) override;
- ReleaseFlags release(QObject *object) override { return release(object, NotReusable); }
- ReleaseFlags release(QObject *object, ReusableFlag reusable);
+ ReleaseFlags release(QObject *object, ReusableFlag reusable = NotReusable) override;
void cancel(int) override;
- void insertIntoReusableItemsPool(QQmlDelegateModelItem *modelItem);
- QQmlDelegateModelItem *takeFromReusableItemsPool(const QQmlComponent *delegate);
- void drainReusableItemsPool(int maxPoolTime);
- int poolSize() { return m_reusableItemsPool.size(); }
+ void drainReusableItemsPool(int maxPoolTime) override;
+ int poolSize() override { return m_reusableItemsPool.size(); }
void reuseItem(QQmlDelegateModelItem *item, int newModelIndex);
QQmlIncubator::Status incubationStatus(int index) override;
@@ -142,7 +136,7 @@ private:
QQmlDelegateModelItemMetaType *m_metaType;
QHash<int, QQmlDelegateModelItem *> m_modelItems;
- QList<QQmlDelegateModelItem *> m_reusableItemsPool;
+ QQmlReusableDelegateModelItemsPool m_reusableItemsPool;
QList<QQmlIncubator *> m_finishedIncubationTasks;
void incubateModelItem(QQmlDelegateModelItem *modelItem, QQmlIncubator::IncubationMode incubationMode);
@@ -150,6 +144,7 @@ private:
void deleteIncubationTaskLater(QQmlIncubator *incubationTask);
void deleteAllFinishedIncubationTasks();
QQmlDelegateModelItem *resolveModelItem(int index);
+ void destroyModelItem(QQmlDelegateModelItem *modelItem);
void dataChangedCallback(const QModelIndex &begin, const QModelIndex &end, const QVector<int> &roles);
diff --git a/src/qmltest/dependencies.json b/src/qmltest/dependencies.json
new file mode 100644
index 0000000000..b2c4125178
--- /dev/null
+++ b/src/qmltest/dependencies.json
@@ -0,0 +1 @@
+["QtQuick 2.0", "QtQuick.Window 2.0"]
diff --git a/src/qmltest/qmltest.pro b/src/qmltest/qmltest.pro
index d6e4669769..6864203ba4 100644
--- a/src/qmltest/qmltest.pro
+++ b/src/qmltest/qmltest.pro
@@ -4,7 +4,7 @@ QMAKE_DOCS = $$PWD/doc/qtqmltest.qdocconf
DEFINES += QT_NO_URL_CAST_FROM_STRING QT_NO_FOREACH
QT = core testlib-private
-QT_PRIVATE = quick quick-private qml-private gui core-private gui-private
+QT_PRIVATE = quick quick-private qml-private gui core-private
# Testlib is only a private dependency, which results in our users not
# inheriting testlibs's MODULE_CONFIG transitively. Make it explicit.
@@ -17,18 +17,16 @@ qtHaveModule(widgets) {
SOURCES += \
$$PWD/quicktest.cpp \
- $$PWD/quicktestevent.cpp \
- $$PWD/quicktestresult.cpp \
- $$PWD/quicktestutil.cpp
+ $$PWD/quicktestresult.cpp
HEADERS += \
$$PWD/quicktestglobal.h \
$$PWD/quicktest.h \
- $$PWD/quicktestevent_p.h \
$$PWD/quicktestresult_p.h \
- $$PWD/quicktestutil_p.h \
$$PWD/qtestoptions_p.h
qtConfig(qml-debug): DEFINES += QT_QML_DEBUG_NO_WARNING
load(qt_module)
+
+CONFIG += metatypes install_metatypes
diff --git a/src/qmltest/quicktestresult_p.h b/src/qmltest/quicktestresult_p.h
index 296e8e5344..81b9d78830 100644
--- a/src/qmltest/quicktestresult_p.h
+++ b/src/qmltest/quicktestresult_p.h
@@ -76,7 +76,6 @@ class Q_QUICK_TEST_EXPORT QuickTestResult : public QObject
Q_PROPERTY(int skipCount READ skipCount)
Q_PROPERTY(QStringList functionsToRun READ functionsToRun)
Q_PROPERTY(QStringList tagsToRun READ tagsToRun)
- QML_NAMED_ELEMENT(TestResult)
public:
QuickTestResult(QObject *parent = nullptr);
diff --git a/src/qmltyperegistrar/qmltyperegistrar.cpp b/src/qmltyperegistrar/qmltyperegistrar.cpp
index 8813907697..49c9fccb66 100644
--- a/src/qmltyperegistrar/qmltyperegistrar.cpp
+++ b/src/qmltyperegistrar/qmltyperegistrar.cpp
@@ -190,37 +190,44 @@ int main(int argc, char **argv)
parser.addOption(privateIncludesOption);
QCommandLineOption importNameOption(QStringLiteral("import-name"));
- importNameOption.setDescription(QStringLiteral("Name of the module to use with QML type registrations."));
- importNameOption.setValueName(QStringLiteral("QML module name"));
+ importNameOption.setDescription(QStringLiteral("Name of the module to use for type and module "
+ "registrations."));
+ importNameOption.setValueName(QStringLiteral("module name"));
parser.addOption(importNameOption);
QCommandLineOption majorVersionOption(QStringLiteral("major-version"));
- majorVersionOption.setDescription(QStringLiteral("Major version to use for type registrations."));
+ majorVersionOption.setDescription(QStringLiteral("Major version to use for type and module "
+ "registrations."));
majorVersionOption.setValueName(QStringLiteral("major version"));
parser.addOption(majorVersionOption);
QCommandLineOption minorVersionOption(QStringLiteral("minor-version"));
- minorVersionOption.setDescription(QStringLiteral("Minor version to use for module registration."));
+ minorVersionOption.setDescription(QStringLiteral("Minor version to use for module "
+ "registration."));
minorVersionOption.setValueName(QStringLiteral("minor version"));
parser.addOption(minorVersionOption);
- QCommandLineOption pluginTypesOption(QStringLiteral("generate-plugintypes"));
- pluginTypesOption.setDescription(QStringLiteral("Generate plugins.qmltypes into specified directory."));
- pluginTypesOption.setValueName(QStringLiteral("qmltypes target Directory"));
+ QCommandLineOption pluginTypesOption(QStringLiteral("generate-qmltypes"));
+ pluginTypesOption.setDescription(QStringLiteral("Generate qmltypes into specified file."));
+ pluginTypesOption.setValueName(QStringLiteral("qmltypes file"));
parser.addOption(pluginTypesOption);
QCommandLineOption foreignTypesOption(QStringLiteral("foreign-types"));
- foreignTypesOption.setDescription(QStringLiteral("Consider foreign types when generating plugins.qmltypes."));
- foreignTypesOption.setValueName(QStringLiteral("Comma separated list of other modules to consult for types."));
+ foreignTypesOption.setDescription(QStringLiteral(
+ "Comma separated list of other modules' metatypes files "
+ "to consult for foreign types when generating "
+ "qmltypes file."));
+ foreignTypesOption.setValueName(QStringLiteral("foreign types"));
parser.addOption(foreignTypesOption);
QCommandLineOption dependenciesOption(QStringLiteral("dependencies"));
- dependenciesOption.setDescription(QStringLiteral("Dependencies to be stated in plugins.qmltypes"));
- dependenciesOption.setValueName(QStringLiteral("name of JSON file with dependencies"));
+ dependenciesOption.setDescription(QStringLiteral("JSON file with dependencies to be stated in "
+ "qmltypes file."));
+ dependenciesOption.setValueName(QStringLiteral("dependencies.json"));
parser.addOption(dependenciesOption);
parser.addPositionalArgument(QStringLiteral("[MOC generated json file]"),
- QStringLiteral("MOC generated json output"));
+ QStringLiteral("MOC generated json output."));
parser.process(app);
@@ -248,7 +255,8 @@ int main(int argc, char **argv)
"** WARNING! All changes made in this file will be lost!\n"
"*****************************************************************************/\n\n");
fprintf(output,
- "#include <QtQml/qqmlengine.h>\n");
+ "#include <QtQml/qqml.h>\n"
+ "#include <QtQml/qqmlmoduleregistration.h>\n");
QStringList includes;
QVector<QJsonObject> types;
@@ -325,7 +333,10 @@ int main(int argc, char **argv)
sortTypes(types);
- fprintf(output, "\n#include <QtQml/qqmlmoduleregistration.h>");
+ std::sort(includes.begin(), includes.end());
+ const auto newEnd = std::unique(includes.begin(), includes.end());
+ includes.erase(newEnd, includes.end());
+
const bool privateIncludes = parser.isSet(privateIncludesOption);
for (const QString &include : qAsConst(includes)) {
if (privateIncludes && include.endsWith(QLatin1String("_p.h")))
diff --git a/src/qmltyperegistrar/qmltypes.prf b/src/qmltyperegistrar/qmltypes.prf
index ed11ef44cf..fbb00dbe2d 100644
--- a/src/qmltyperegistrar/qmltypes.prf
+++ b/src/qmltyperegistrar/qmltypes.prf
@@ -36,10 +36,12 @@ isEmpty(QMLTYPES_FILENAME) {
qt_module_deps = $$replace(QT, -private$, '')
qt_module_deps += $$replace(QT_PRIVATE, -private$, '')
+qt_module_deps = $$resolve_depends(qt_module_deps, "QT.", ".depends" ".run_depends")
qt_module_deps = $$replace(qt_module_deps, _private$, '')
-all_qt_module_deps = $$resolve_depends(qt_module_deps, "QT.", ".depends" ".run_depends")
+qt_module_deps = $$unique(qt_module_deps)
+
foreign_types =
-for(dep, all_qt_module_deps) {
+for(dep, qt_module_deps) {
METATYPES_FILENAME = $$lower($$eval(QT.$${dep}.module))_metatypes.json
INSTALLED_METATYPES = $$[QT_INSTALL_LIBS]/metatypes/$$METATYPES_FILENAME
isEmpty(MODULE_BASE_OUTDIR) {
@@ -52,7 +54,7 @@ for(dep, all_qt_module_deps) {
}
QML_TYPEREGISTRAR_FLAGS = \
- --generate-plugintypes=$$QMLTYPES_FILENAME \
+ --generate-qmltypes=$$QMLTYPES_FILENAME \
--import-name=$$QML_IMPORT_NAME \
--major-version=$$QML_IMPORT_MAJOR_VERSION \
--minor-version=$$QML_IMPORT_MINOR_VERSION \
@@ -87,7 +89,7 @@ install_qmltypes {
QMLTYPES_INSTALL_DIR = $$[QT_INSTALL_QML]/$$TARGETPATH
do_install_qmltypes.files = $$OUT_PWD/$$QMLTYPES_FILENAME
do_install_qmltypes.path = $$QMLTYPES_INSTALL_DIR
- do_install_qmltypes.CONFIG += no_link
+ do_install_qmltypes.CONFIG += no_check_exist
prefix_build: INSTALLS += do_install_qmltypes
else: COPIES += do_install_qmltypes
}
diff --git a/src/qmltyperegistrar/qmltypescreator.cpp b/src/qmltyperegistrar/qmltypescreator.cpp
index 7bac6a87d8..911120027e 100644
--- a/src/qmltyperegistrar/qmltypescreator.cpp
+++ b/src/qmltyperegistrar/qmltypescreator.cpp
@@ -173,9 +173,9 @@ void QmlTypesCreator::writeMethods(const QJsonArray &methods, const QString &typ
{
for (const QJsonValue &method : methods) {
const QJsonObject obj = method.toObject();
- if (obj[QLatin1String("access")].toString() != QLatin1String("public"))
- continue;
const QString name = obj[QLatin1String("name")].toString();
+ if (name.isEmpty())
+ continue;
const QJsonArray arguments = method[QLatin1String("arguments")].toArray();
const auto revision = obj.find(QLatin1String("revision"));
if (notifySignals.contains(name) && arguments.isEmpty() && revision == obj.end())
diff --git a/src/qmlworkerscript/doc/qtqmlworkerscript.qdocconf b/src/qmlworkerscript/doc/qtqmlworkerscript.qdocconf
index bb883cf39f..e56e1759b3 100644
--- a/src/qmlworkerscript/doc/qtqmlworkerscript.qdocconf
+++ b/src/qmlworkerscript/doc/qtqmlworkerscript.qdocconf
@@ -23,15 +23,13 @@ qhp.QtQmlWorkerScript.sortPages = true
tagfile = qtqmlworkerscript.tags
-depends += qtcore qtqml qtdoc
+depends += qtcore qtqml qtquick qtdoc
headerdirs += ..
sourcedirs += .. \
../../imports/workerscript
-exampledirs += ../../../examples/qml \
- ../ \
- snippets
+exampledirs += snippets
navigation.qmltypespage = "Qt Qml WorkerScript QML Types"
diff --git a/src/qml/doc/snippets/qml/workerscript/script.mjs b/src/qmlworkerscript/doc/snippets/qml/workerscript/script.mjs
index f55dee3507..f55dee3507 100644
--- a/src/qml/doc/snippets/qml/workerscript/script.mjs
+++ b/src/qmlworkerscript/doc/snippets/qml/workerscript/script.mjs
diff --git a/src/qml/doc/snippets/qml/workerscript/workerscript.qml b/src/qmlworkerscript/doc/snippets/qml/workerscript/workerscript.qml
index cc637d34cf..cc637d34cf 100644
--- a/src/qml/doc/snippets/qml/workerscript/workerscript.qml
+++ b/src/qmlworkerscript/doc/snippets/qml/workerscript/workerscript.qml
diff --git a/src/qmlworkerscript/qmlworkerscript.pro b/src/qmlworkerscript/qmlworkerscript.pro
index 9f5e0e809a..b091937796 100644
--- a/src/qmlworkerscript/qmlworkerscript.pro
+++ b/src/qmlworkerscript/qmlworkerscript.pro
@@ -6,17 +6,21 @@ QMAKE_DOCS = $$PWD/doc/qtqmlworkerscript.qdocconf
DEFINES += QT_NO_URL_CAST_FROM_STRING QT_NO_INTEGER_EVENT_COORDINATES QT_NO_FOREACH
HEADERS += \
- qqmlworkerscriptmodule_p.h \
qquickworkerscript_p.h \
qtqmlworkerscriptglobal.h \
qtqmlworkerscriptglobal_p.h \
qv4serialize_p.h
SOURCES += \
- qqmlworkerscriptmodule.cpp \
qquickworkerscript.cpp \
qv4serialize.cpp
include(../3rdparty/masm/masm-defs.pri)
+QMLTYPES_FILENAME = plugins.qmltypes
+QMLTYPES_INSTALL_DIR = $$[QT_INSTALL_QML]/QtQml/WorkerScript.2
+QML_IMPORT_NAME = QtQml.WorkerScript
+IMPORT_VERSION = 2.15
+CONFIG += qmltypes install_qmltypes install_metatypes
+
load(qt_module)
diff --git a/src/qmlworkerscript/qqmlworkerscriptmodule.cpp b/src/qmlworkerscript/qqmlworkerscriptmodule.cpp
deleted file mode 100644
index b85456a633..0000000000
--- a/src/qmlworkerscript/qqmlworkerscriptmodule.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2019 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQml module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qqmlworkerscriptmodule_p.h"
-#include "qquickworkerscript_p.h"
-
-QT_BEGIN_NAMESPACE
-
-void QQmlWorkerScriptModule::defineModule()
-{
- const char uri[] = "QtQml.WorkerScript";
- qmlRegisterTypesAndRevisions<QQuickWorkerScript>(uri, 2);
-}
-
-QT_END_NAMESPACE
diff --git a/src/qmlworkerscript/qquickworkerscript.cpp b/src/qmlworkerscript/qquickworkerscript.cpp
index 8b236697b9..72ae6d5bd4 100644
--- a/src/qmlworkerscript/qquickworkerscript.cpp
+++ b/src/qmlworkerscript/qquickworkerscript.cpp
@@ -130,6 +130,7 @@ struct WorkerScript : public QV4::ExecutionEngine {
QQuickWorkerScriptEnginePrivate *p = nullptr;
QUrl source;
QQuickWorkerScript *owner = nullptr;
+ QScopedPointer<QNetworkAccessManager> scriptLocalNAM;
int id = -1;
};
@@ -389,6 +390,16 @@ WorkerScript::WorkerScript(int id, QQuickWorkerScriptEnginePrivate *parent)
QV4::ScopedValue sendMessage(scope, QV4::FunctionObject::createBuiltinFunction(this, name, QQuickWorkerScriptEnginePrivate::method_sendMessage, 1));
api->put(QV4::ScopedString(scope, scope.engine->newString(QStringLiteral("sendMessage"))), sendMessage);
globalObject->put(QV4::ScopedString(scope, scope.engine->newString(QStringLiteral("WorkerScript"))), api);
+ networkAccessManager = [](QV4::ExecutionEngine *engine){
+ auto *workerScript = static_cast<WorkerScript *>(engine);
+ if (workerScript->scriptLocalNAM)
+ return workerScript->scriptLocalNAM.get();
+ if (auto *namFactory = workerScript->p->qmlengine->networkAccessManagerFactory())
+ workerScript->scriptLocalNAM.reset(namFactory->create(workerScript->p));
+ else
+ workerScript->scriptLocalNAM.reset(new QNetworkAccessManager(workerScript->p));
+ return workerScript->scriptLocalNAM.get();
+ };
}
int QQuickWorkerScriptEngine::registerWorkerScript(QQuickWorkerScript *owner)
@@ -533,6 +544,17 @@ void QQuickWorkerScript::setSource(const QUrl &source)
}
/*!
+ \qmlproperty url WorkerScript::ready
+
+ This holds whether the WorkerScript has been initialized and is ready
+ for receiving messages via \tt WorkerScript.sendMessage().
+*/
+bool QQuickWorkerScript::ready() const
+{
+ return m_engine != nullptr;
+}
+
+/*!
\qmlmethod WorkerScript::sendMessage(jsobject message)
Sends the given \a message to a worker script handler in another
@@ -592,6 +614,8 @@ QQuickWorkerScriptEngine *QQuickWorkerScript::engine()
if (m_source.isValid())
m_engine->executeUrl(m_scriptId, m_source);
+ emit readyChanged();
+
return m_engine;
}
return nullptr;
diff --git a/src/qmlworkerscript/qquickworkerscript_p.h b/src/qmlworkerscript/qquickworkerscript_p.h
index 9b5d3587fb..03581089e0 100644
--- a/src/qmlworkerscript/qquickworkerscript_p.h
+++ b/src/qmlworkerscript/qquickworkerscript_p.h
@@ -53,6 +53,7 @@
#include <qqml.h>
+#include <QtQmlWorkerScript/private/qtqmlworkerscriptglobal_p.h>
#include <QtQml/qqmlparserstatus.h>
#include <QtCore/qthread.h>
#include <QtQml/qjsvalue.h>
@@ -83,10 +84,12 @@ private:
};
class QQmlV4Function;
-class Q_AUTOTEST_EXPORT QQuickWorkerScript : public QObject, public QQmlParserStatus
+class Q_QMLWORKERSCRIPT_PRIVATE_EXPORT QQuickWorkerScript : public QObject, public QQmlParserStatus
{
Q_OBJECT
Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged)
+ Q_PROPERTY(bool ready READ ready NOTIFY readyChanged)
+
QML_NAMED_ELEMENT(WorkerScript);
Q_INTERFACES(QQmlParserStatus)
@@ -97,11 +100,14 @@ public:
QUrl source() const;
void setSource(const QUrl &);
+ bool ready() const;
+
public Q_SLOTS:
void sendMessage(QQmlV4Function*);
Q_SIGNALS:
void sourceChanged();
+ void readyChanged();
void message(const QJSValue &messageObject);
protected:
diff --git a/src/qmlworkerscript/qv4serialize.cpp b/src/qmlworkerscript/qv4serialize.cpp
index a5e62d3e35..f0a644a8b8 100644
--- a/src/qmlworkerscript/qv4serialize.cpp
+++ b/src/qmlworkerscript/qv4serialize.cpp
@@ -81,6 +81,7 @@ enum Type {
WorkerDate,
WorkerRegexp,
WorkerListModel,
+ WorkerUrl,
#if QT_CONFIG(qml_sequence_object)
WorkerSequence
#endif
@@ -142,10 +143,29 @@ static inline void *popPtr(const char *&data)
return rv;
}
+#define ALIGN(size) (((size) + 3) & ~3)
+static inline void serializeString(QByteArray &data, const QString &str, Type type)
+{
+ int length = str.length();
+ if (length > 0xFFFFFF) {
+ push(data, valueheader(WorkerUndefined));
+ return;
+ }
+ int utf16size = ALIGN(length * sizeof(quint16));
+
+ reserve(data, utf16size + sizeof(quint32));
+ push(data, valueheader(type, length));
+
+ int offset = data.size();
+ data.resize(data.size() + utf16size);
+ char *buffer = data.data() + offset;
+
+ memcpy(buffer, str.constData(), length*sizeof(QChar));
+}
+
// XXX TODO: Check that worker script is exception safe in the case of
// serialization/deserialization failures
-#define ALIGN(size) (((size) + 3) & ~3)
void Serialize::serialize(QByteArray &data, const QV4::Value &v, ExecutionEngine *engine)
{
QV4::Scope scope(engine);
@@ -159,22 +179,7 @@ void Serialize::serialize(QByteArray &data, const QV4::Value &v, ExecutionEngine
} else if (v.isBoolean()) {
push(data, valueheader(v.booleanValue() == true ? WorkerTrue : WorkerFalse));
} else if (v.isString()) {
- const QString &qstr = v.toQString();
- int length = qstr.length();
- if (length > 0xFFFFFF) {
- push(data, valueheader(WorkerUndefined));
- return;
- }
- int utf16size = ALIGN(length * sizeof(quint16));
-
- reserve(data, utf16size + sizeof(quint32));
- push(data, valueheader(WorkerString, length));
-
- int offset = data.size();
- data.resize(data.size() + utf16size);
- char *buffer = data.data() + offset;
-
- memcpy(buffer, qstr.constData(), length*sizeof(QChar));
+ serializeString(data, v.toQString(), WorkerString);
} else if (v.as<FunctionObject>()) {
// XXX TODO: Implement passing function objects between the main and
// worker scripts
@@ -259,6 +264,11 @@ void Serialize::serialize(QByteArray &data, const QV4::Value &v, ExecutionEngine
return;
}
#endif
+ const QVariant variant = engine->toVariant(v, QMetaType::QUrl, false);
+ if (variant.userType() == QMetaType::QUrl) {
+ serializeString(data, variant.value<QUrl>().toString(), WorkerUrl);
+ return;
+ }
// regular object
QV4::ScopedValue val(scope, v);
@@ -340,11 +350,14 @@ ReturnedValue Serialize::deserialize(const char *&data, ExecutionEngine *engine)
case WorkerFalse:
return QV4::Encode(false);
case WorkerString:
+ case WorkerUrl:
{
quint32 size = headersize(header);
QString qstr((const QChar *)data, size);
data += ALIGN(size * sizeof(quint16));
- return QV4::Encode(engine->newString(qstr));
+ return (type == WorkerUrl)
+ ? engine->fromVariant(QVariant::fromValue(QUrl(qstr)))
+ : Encode(engine->newString(qstr));
}
case WorkerFunction:
Q_ASSERT(!"Unreachable");
diff --git a/src/quick/configure.json b/src/quick/configure.json
index 0cb1e7470b..6cd3099a20 100644
--- a/src/quick/configure.json
+++ b/src/quick/configure.json
@@ -3,14 +3,15 @@
"depends": [
"core-private",
"qml-private",
+ "gui",
"gui-private",
"qmlmodels-private"
],
+ "condition": "module.gui",
"testDir": "../../config.tests",
"commandline": {
"options": {
- "d3d12": "boolean",
"quick-animatedimage": "boolean",
"quick-canvas": "boolean",
"quick-designer": "boolean",
@@ -26,24 +27,7 @@
}
},
- "tests": {
- "d3d12": {
- "label": "Direct3D 12",
- "type": "compile",
- "test": "d3d12"
- }
- },
-
"features": {
- "d3d12": {
- "label": "Direct3D 12",
- "purpose": "Provides a Direct3D 12 backend for the scenegraph.",
- "section": "Qt Quick",
- "condition": "tests.d3d12",
- "output": [
- "publicFeature"
- ]
- },
"quick-animatedimage": {
"label": "AnimatedImage item",
"purpose": "Provides the AnimatedImage item.",
@@ -200,7 +184,6 @@
{
"section": "Qt Quick",
"entries": [
- "d3d12",
"quick-animatedimage",
"quick-canvas",
"quick-designer",
diff --git a/src/quick/dependencies.json b/src/quick/dependencies.json
new file mode 100644
index 0000000000..fe51488c70
--- /dev/null
+++ b/src/quick/dependencies.json
@@ -0,0 +1 @@
+[]
diff --git a/src/quick/designer/qquickdesignercustomobjectdata.cpp b/src/quick/designer/qquickdesignercustomobjectdata.cpp
index 8989de711e..6b39f5157b 100644
--- a/src/quick/designer/qquickdesignercustomobjectdata.cpp
+++ b/src/quick/designer/qquickdesignercustomobjectdata.cpp
@@ -192,7 +192,7 @@ void QQuickDesignerCustomObjectData::doResetProperty(QQmlContext *context, const
QQmlAbstractBinding *binding = QQmlPropertyPrivate::binding(property);
if (binding && !(hasValidResetBinding(propertyName) && getResetBinding(propertyName) == binding)) {
- binding->setEnabled(false, nullptr);
+ binding->setEnabled(false, {});
}
diff --git a/src/quick/doc/qtquick.qdocconf b/src/quick/doc/qtquick.qdocconf
index 91458527dd..0d46e3408d 100644
--- a/src/quick/doc/qtquick.qdocconf
+++ b/src/quick/doc/qtquick.qdocconf
@@ -38,7 +38,7 @@ qhp.QtQuick.subprojects.examples.selectors = fake:example
tagfile = ../../../doc/qtquick/qtquick.tags
-depends += qtcore qtqml qtqmltest qtgui qtlinguist qtquickcontrols qtquickcontrols1 qtdoc qtquickdialogs qtsensors qtwidgets qmake qtmultimedia qtgraphicaleffects qtsql qtxmlpatterns
+depends += qtcore qtqml qtqmlmodels qtqmltest qtgui qtlinguist qtquickcontrols qtquickcontrols1 qtdoc qtquickdialogs qtsensors qtwidgets qmake qtmultimedia qtgraphicaleffects qtsql qtxmlpatterns
headerdirs += ..\
../../quick \
@@ -70,6 +70,9 @@ sourcedirs += ../../plugins
#exclude certain directories
excludedirs += ../../imports/models \
+ ../../imports/labsmodels \
+ ../../imports/testlib \
+ ../../imports/workerscript \
../../imports/statemachine
excludefiles += ../util/qquickpropertychanges_p.h
diff --git a/src/quick/doc/snippets/cmake-macros/examples.cmake b/src/quick/doc/snippets/cmake-macros/examples.cmake
index 8ca6180f9b..cecc59debc 100644
--- a/src/quick/doc/snippets/cmake-macros/examples.cmake
+++ b/src/quick/doc/snippets/cmake-macros/examples.cmake
@@ -3,4 +3,4 @@ find_package(Qt5 COMPONENTS Quick QmlImportScanner)
add_executable(myapp main.cpp)
target_link_libraries(myapp Qt5::Quick)
qt5_import_qml_plugins(myapp)
-#! [qt5_import_plugins]
+#! [qt5_import_qml_plugins]
diff --git a/src/quick/doc/snippets/qml/listview/ReusableDelegate.qml b/src/quick/doc/snippets/qml/listview/ReusableDelegate.qml
new file mode 100644
index 0000000000..050572d5f2
--- /dev/null
+++ b/src/quick/doc/snippets/qml/listview/ReusableDelegate.qml
@@ -0,0 +1,82 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.15
+
+//![0]
+Component {
+ id: listViewDelegate
+ Rectangle {
+ width: 100
+ height: 50
+
+ ListView.onPooled: rotationAnimation.pause()
+ ListView.onReused: rotationAnimation.resume()
+
+ Rectangle {
+ id: rect
+ anchors.centerIn: parent
+ width: 40
+ height: 5
+ color: "green"
+
+ RotationAnimation {
+ id: rotationAnimation
+ target: rect
+ duration: (Math.random() * 2000) + 200
+ from: 0
+ to: 359
+ running: true
+ loops: Animation.Infinite
+ }
+ }
+ }
+}
+//![0]
diff --git a/src/quick/doc/src/concepts/visualcanvas/adaptations.qdoc b/src/quick/doc/src/concepts/visualcanvas/adaptations.qdoc
index e83aa39734..86292921a6 100644
--- a/src/quick/doc/src/concepts/visualcanvas/adaptations.qdoc
+++ b/src/quick/doc/src/concepts/visualcanvas/adaptations.qdoc
@@ -34,11 +34,10 @@
Originally, Qt Quick always relied on OpenGL (OpenGL ES 2.0 or OpenGL 2.0) to
parse the scene graph and render the results to a render target
-From Qt 5.8 onwards, Qt Quick also supports rendering in software, with OpenVG,
-and with Direct3D 12. This is realized by having additional scene graph
-adaptations, either in form of plugins (d3d12, openvg) or built-in to the Qt
-Quick library (software). The default adaptation continues to rely directly on
-OpenGL.
+From Qt 5.8 onwards, Qt Quick also supports rendering in software, and with
+OpenVG. This is realized by having additional scene graph adaptations, either
+in form of plugins (openvg) or built-in to the Qt Quick library
+(software). The default adaptation continues to rely directly on OpenGL.
From Qt 5.14 onwards, the default adaptation gains the option of rendering via
a graphics abstraction layer, the Qt Rendering Hardware Interface (RHI),
@@ -52,10 +51,10 @@ appropriate for the various graphics APIs.
\target Switching Between the Adaptation Used by the Application
\section1 Switch Between Adaptations in Your Application
-Unlike \c software or \c d3d12, the RHI-based renderer is not an additional
+Unlike \c software, the RHI-based renderer is not an additional
adaptation, and is always built-in. As of Qt 5.14 it can be enabled by setting
the environment variable \c{QSG_RHI} to a non-zero value before starting the
-application, or via \l QQuickWindow::setScenegraphBackend() in combination with
+application, or via \l QQuickWindow::setSceneGraphBackend() in combination with
\l QSGRendererInterface::GraphicsApi. When none of this is done, OpenGL is used
directly like in previous versions.
@@ -75,8 +74,6 @@ The following backends are supported:
different than the ones listed below.
\li Software - Request with the \c{"software"} string or the QSGRendererInterface::Software
enum value.
- \li Direct3D 12 - Request with the \c{"d3d12"} string or the QSGRendererInterface::Direct3D12
- enum value.
\li OpenVG - Request with the \c{"openvg"} string or the QSGRendererInterface::OpenVG enum
value.
\endlist
@@ -111,12 +108,6 @@ The Software adaptation is an alternative renderer for \l{Qt Quick} 2 that uses
engine to render the contents of the scene graph. For more details, see
\l{qtquick-visualcanvas-adaptations-software.html}{Software Adaptation}.
-\section1 Direct3D 12 (experimental)
-
-The Direct3D 12 adaptation is an alternative renderer for \l{Qt Quick} 2 when running on Windows
-10, both for Win32 and UWP applications. For more details, see
-\l{qtquick-visualcanvas-adaptations-d3d12.html}{Direct3D 12 Adaptation}.
-
\section1 OpenVG
The OpenVG adaptation is an alternative renderer for \l{Qt Quick} 2 that renders the contents of
@@ -172,235 +163,6 @@ behavior, which is only present in the default OpenGL adaptation.
/*!
-\title Qt Quick Direct3D 12 Adaptation
-\page qtquick-visualcanvas-adaptations-d3d12.html
-
-The Direct3D 12 adaptation for Windows 10, both in Win32 (\c windows platform plugin) and in UWP
-(\c winrt platform plugin), is shipped as a dynamically loaded plugin. This adaptation doesn't work
-on earlier Windows versions. Building this plugin is enabled automatically, whenever the necessary
-D3D and DXGI develpoment files are present. In practice, this currently means Visual Studio 2015
-and newer.
-
-The adaptation is available both in normal, OpenGL-enabled Qt builds, and also when Qt is
-configured with \c{-no-opengl}. However, it's never the default, meaning that the user or the
-application has to explicitly request it by setting the \c{QT_QUICK_BACKEND} environment variable
-to \c{d3d12} or by calling QQuickWindow::setSceneGraphBackend().
-
-\section2 Motivation
-
-This experimental adaptation is the first Qt Quick backend that focuses on a modern, lower-level
-graphics API in combination with a windowing system interface that's different from the traditional
-approaches used in combination with OpenGL.
-
-This adaptation also allows better integration with Windows, as Direct3D is the primary
-vendor-supported solution. Consequently, there are fewer problems anticipated with drivers,
-operations like window resizes, and special events like graphics device loss caused by device
-resets or graphics driver updates.
-
-Performance-wise, the general expectation is a somewhat lower CPU usage compared to OpenGL, due to
-lower driver overhead, and a higher GPU utilization with less idle time wastage. The backend
-doesn't heavily utilize threads yet, which means there are opportunities for further improvements
-in the future, for example to further optimize image loading.
-
-The D3D12 backend also introduces support for pre-compiled shaders. All the backend's own shaders
-(used by the built-in materials on which the Rectangle, Image, Text, and other QML types are built
-with) are compiled to D3D shader bytecode when you compile Qt. Applications using ShaderEffect
-items can choose to ship bytecode either in regular files, via the Qt resource system, or use
-High Level Shading Language for DirectX (HLSL) source strings. Unlike OpenGL, the compilation for
-HLSL is properly threaded, meaning shader compilation won't block the application and its user
-interface.
-
-\section2 Graphics Adapters
-
-The plugin does not necessarily require hardware acceleration. You can also use WARP, the Direct3D
-software rasterizer. By default, the first adapter providing hardware acceleration is chosen. To
-override this and use another graphics adapter or to force the use of the software rasterizer, set
-the \c{QT_D3D_ADAPTER_INDEX} environment variable to the index of the adapter. The adapters
-discovered are printed at startup when \c{QSG_INFO} or the \c{qt.scenegraph.general} logging
-category is enabled.
-
-\section2 Troubleshooting
-
-If you encounter issues, always set the \c{QSG_INFO} and \c{QT_D3D_DEBUG} environment variables
-to \c 1, to get debug and warning messages printed on the debug output. \c{QT_D3D_DEBUG} enables
-the Direct3D debug layer.
-
-\note The debug layer shouldn't be enabled in production use, since it can significantly impact
-performance (CPU load) due to increased API overhead.
-
-\section2 Render Loops
-
-By default, the D3D12 adaptation uses a single-threaded render loop similar to OpenGL's \c windows
-render loop. A threaded variant is also available, that you can request by setting the
-\c{QSG_RENDER_LOOP} environment variable to \c threaded. However, due to conceptual limitations in
-DXGI, the windowing system interface, the threaded loop is prone to deadlocks when multiple
-QQuickWindow or QQuickView instances are shown. Consequently, for the time being, the default is
-the single-threaded loop. This means that with the D3D12 backend, applications are expected to move
-their work from the main (GUI) thread out to worker threads, instead of expecting Qt to keep the
-GUI thread responsive and suitable for heavy, blocking operations.
-
-For more information see \l{qtquick-visualcanvas-scenegraph.html}{Qt Quick Scene Graph} for
-details on render loops and
-\l{https://docs.microsoft.com/en-us/windows/desktop/direct3darticles/dxgi-best-practices#multithreading-and-dxgi}{Multithreading and DXGI}
-regarding the issues with multithreading.
-
-\section2 Renderer
-
-The scene graph renderer in the D3D12 adaptation currently doesn't perform any batching. This is
-less of an issue, unlike OpenGL, because state changes don't present any problems in the first
-place. The simpler renderer logic can also lead to lower CPU overhead in some cases. The trade-offs
-between the various approaches are currently under research.
-
-\section2 Shader Effects
-
-The ShaderEffect QML type is fully functional with the D3D12 adaptation as well. However, the
-interpretation of the fragmentShader and vertexShader properties is different than with OpenGL.
-
-With D3D12, these strings can either be a URL for a local file, a file in the resource system,
-or an HLSL source string. Using a URL for a local file or a file in the resource system
-indicates that the file in question contains pre-compiled D3D shader bytecode generated by the
-\c fxc tool, or, alternatively, HLSL source code. The type of file is detected automatically.
-This means that the D3D12 backend supports all options from GraphicsInfo.shaderCompilationType
-and GraphicsInfo.shaderSourceType.
-
-Unlike OpenGL, whenever you open a file, there is a QFileSelector with the extra \c hlsl selector
-used. This provides easy creation of ShaderEffect items that are functional across both backends,
-for example by placing the GLSL source code into \c{shaders/effect.frag}, the HLSL source code or
-- preferably - pre-compiled bytecode into \c{shaders/+hlsl/effect.frag}, while simply writing
-\c{fragmentShader: "qrc:shaders/effect.frag"} in QML. For more details, see ShaderEffect.
-
-\section2 Multisample Render Targets
-
-The Direct3D 12 adaptation ignores the QSurfaceFormat set on the QQuickWindow or QQuickView, or
-set via QSurfaceFormat::setDefaultFormat(), with two exceptions: QSurfaceFormat::samples() and
-QSurfaceFormat::alphaBufferSize() are still taken into account. When the sample value is greater
-than 1, multisample offscreen render targets will be created with the specified sample count at
-the maximum supported quality level. The backend automatically performs resolving into the
-non-multisample swapchain buffers after each frame.
-
-\section2 Semi-transparent Windows
-
-When the alpha channel is enabled either via QQuickWindow::setDefaultAlphaBuffer() or by setting
-alphaBufferSize to a non-zero value in the window's QSurfaceFormat or in the global format managed
-by QSurfaceFormat::setDefaultFormat(), the D3D12 backend will create a swapchain for composition
-and go through DirectComposition. This is necessary, because the mandatory flip model swapchain
-wouldn't support transparency otherwise.
-
-Therefore, it's important not to unneccessarily request an alpha channel. When the alphaBufferSize
-is 0 or the default -1, all these extra steps can be avoided and the traditional window-based
-swapchain is sufficient.
-
-On WinRT, this isn't relevant because the backend there always uses a composition swapchain which
-is associated with the ISwapChainPanel that backs QWindow on that platform.
-
-\section2 Mipmaps
-
-Mipmap generation is supported and handled transparently to the applications via a built-in compute
-shader. However, at the moment, this feature is experimental and only supports power-of-two images.
-Textures of other size will work too, but this involves a QImage-based scaling on the CPU first.
-Therefore, avoid enabling mipmapping for Non-Power-Of-Two (NPOT) images whenever possible.
-
-\section2 Image Formats
-
-When creating textures via C++ scene graph APIs like QQuickWindow::createTextureFromImage(), 32-bit
-formats won't involve any conversion, they'll map directly to the corresponding \c{R8G8B8A8_UNORM}
-or \c{B8G8R8A8_UNORM} format. Everything else will trigger a QImage-based format conversion on the
-CPU first.
-
-\section2 Unsupported Features
-
-Particles and some other OpenGL-dependent utilities, like QQuickFramebufferObject, are currently
-not supported.
-
-Like with \l{qtquick-visualcanvas-adaptations-software.html}{Software adaptation}, text is always
-rendered using the native method. Distance field-based text rendering is currently not implemented.
-
-The shader sources in the \l {Qt Graphical Effects} module have not been ported to any format other
-than the OpenGL 2.0 compatible one, meaning that the QML types provided by that module are currently
-not functional with the D3D12 backend.
-
-Texture atlases are currently not in use.
-
-The renderer may lack support for certain minor features, such as drawing points and lines with a
-width other than 1.
-
-Custom Qt Quick items using custom scene graph nodes can be problematic because materials are
-inherently tied to the graphics API. Therefore, only items that use the utility rectangle and image
-nodes are functional across all adaptations.
-
-QQuickWidget and its underlying OpenGL-based compositing architecture is not supported. If you need
-to mix with QWidget-based user interfaces, use QWidget::createWindowContainer() to embed the native
-window of the QQuickWindow or QQuickView.
-
-Finally, rendering via QSGEngine and QSGAbstractRenderer is not feasible with the D3D12 adaptation
-at the moment.
-
-\section2 Related APIs
-
-To integrate custom Direct3D 12 rendering, use QSGRenderNode in combination with
-QSGRendererInterface. This approach doesn't rely on OpenGL contexts or API specifics like
-framebuffers, and allows exposing the graphics device and command buffer from the adaptation. It's
-not necessarily suitable for easy integration of all types of content, in particular true 3D, so
-it'll likely get complemented by an alternative to QQuickFramebufferObject in future releases.
-
-To perform runtime decisions based on the adaptation, use QSGRendererInterface from C++ and
-GraphicsInfo from QML. They can also be used to check the level of shader support: shading
-language, compilation approach, and so on.
-
-When creating custom items, use the new QSGRectangleNode and QSGImageNode classes. These replace
-the now deprecated QSGSimpleRectNode and QSGSimpleTextureNode. Unlike their predecessors, these new
-classes are interfaces, and implementations are created via the QQuickWindow::createRectangleNode()
-and QQuickWindow::createImageNode() factory functions.
-
-\section2 Advanced Configuration
-
-The D3D12 adaptation can keep multiple frames in flight, similar to modern game engines. This is
-somewhat different from the traditional "render - swap - wait for vsync" model and allows for
-better GPU utilization at the expense of higher resource use. This means that the renderer will
-be a number of frames ahead of what is displayed on the screen.
-
-For a discussion of flip model swap chains and the typical configuration parameters, refer to
-\l{https://software.intel.com/en-us/articles/sample-application-for-direct3d-12-flip-model-swap-chains}
-{Sample Application for Direct3D 12 Flip Model Swap Chains}.
-
-Vertical synchronization is always enabled, meaning Present() is invoked with an interval of 1.
-
-The configuration can be changed by setting the following environment variables:
-
-\table
- \header
- \li Environment variable
- \li Description
- \row
- \li \c{QT_D3D_BUFFER_COUNT}
- \li The number of swap chain buffers in range 2 - 4. The default value is 3.
- \row
- \li \c{QT_D3D_FRAME_COUNT}
- \li The number of frames prepared without blocking in range 1 - 4. The default value is 2.
- Present() starts blocking after queuing 3 frames (regardless of
- \c{QT_D3D_BUFFER_COUNT}), unless the waitable object is in use. Every additional frame
- increases GPU resource usage since geometry and constant buffer data needs to be
- duplicated, and involves more bookkeeping on the CPU side.
- \row
- \li \c{QT_D3D_WAITABLE_SWAP_CHAIN_MAX_LATENCY}
- \li The frame latency in range 1 - 16. The default value is 0 (disabled).
- Changes the limit for Present() and triggers a wait for an available swap chain buffer
- when beginning each frame. For a detailed discussion, see the article linked above.
- \note Currently, this behavior is experimental.
- \row
- \li \c{QT_D3D_BLOCKING_PRESENT}
- \li The time the CPU should wait, a non-zero value, for the GPU to finish its work after
- each call to Present(). The default value is 0 (disabled). This behavior effectively
- kills all parallelism but makes the behavior resemble the traditional
- swap-blocks-for-vsync model, which can be useful in some special cases. However, this
- behavior is not the same as setting the frame count to 1 because that still avoids
- blocking after Present(), and may only block when starting to prepare the next frame
- (or may not block at all depending on the time gap between the frames).
-\endtable
-
-*/
-
-/*!
\title Qt Quick OpenVG Adaptation
\page qtquick-visualcanvas-adaptations-openvg.html
diff --git a/src/quick/doc/src/examples.qdoc b/src/quick/doc/src/examples.qdoc
index a913af47c1..9a1308440f 100644
--- a/src/quick/doc/src/examples.qdoc
+++ b/src/quick/doc/src/examples.qdoc
@@ -177,6 +177,7 @@ Creator.
\li \l{Scene Graph - OpenGL Under QML}{OpenGL Under QML}
\li \l{Scene Graph - Direct3D 11 Under QML}{Direct3D 11 Under QML}
\li \l{Scene Graph - Vulkan Under QML}{Vulkan Under QML}
+ \li \l{Scene Graph - Vulkan Texture Import}{Vulkan Texture Import}
\li \l{Scene Graph - Custom Rendering with QSGRenderNode}{Render Node}
\li \l{Scene Graph - Painted Item}{Painted Item}
\li \l{Scene Graph - Graph}{Graph}
diff --git a/src/quick/doc/src/guidelines/qtquick-bestpractices.qdoc b/src/quick/doc/src/guidelines/qtquick-bestpractices.qdoc
index f4a1616943..abfff7cc11 100644
--- a/src/quick/doc/src/guidelines/qtquick-bestpractices.qdoc
+++ b/src/quick/doc/src/guidelines/qtquick-bestpractices.qdoc
@@ -402,6 +402,43 @@ property MyMenu optionsMenu
For information on performance in QML and Qt Quick,
see \l {Performance Considerations And Suggestions}.
+\section1 Prefer Declarative Bindings Over Imperative Assignments
+
+In QML, it's possible to use imperative JavaScript code to perform tasks
+such as responding to input events, send data over a network, and so on.
+Imperative code has an important place in QML, but it's also important
+to be aware of when not to use it.
+
+For example, consider the following imperative assignment:
+
+\code
+Rectangle {
+ Component.onCompleted: color = "red"
+}
+\endcode
+
+This has the following disadvantages:
+
+\list
+\li It's slow. The color property will first be evaluated with a
+ default-constructed value, and then again with "red" later on.
+\li It delays errors that could be found at build time to run time, slowing
+ down the development process.
+\li It overwrites any declarative binding that was in place. In most cases this
+ is intended, but sometimes it can be unintentional.
+ See \l {Debugging overwriting of bindings} for more information.
+\li It interferes with tooling; Qt Quick Designer, for example, doesn't support
+ JavaScript.
+\endlist
+
+The code can be rewritten to be a declarative binding instead:
+
+\code
+Rectangle {
+ color: "red"
+}
+\endcode
+
\section1 Tools and Utilities
For information on useful tools and utilies that make working with QML and
diff --git a/src/quick/handlers/qquickmultipointhandler_p.h b/src/quick/handlers/qquickmultipointhandler_p.h
index 480f69035b..c0751aa5c5 100644
--- a/src/quick/handlers/qquickmultipointhandler_p.h
+++ b/src/quick/handlers/qquickmultipointhandler_p.h
@@ -81,7 +81,6 @@ public:
signals:
void minimumPointCountChanged();
void maximumPointCountChanged();
- void marginChanged();
void centroidChanged();
protected:
diff --git a/src/quick/handlers/qquickpointerhandler.cpp b/src/quick/handlers/qquickpointerhandler.cpp
index 884ebd3b86..c498c96454 100644
--- a/src/quick/handlers/qquickpointerhandler.cpp
+++ b/src/quick/handlers/qquickpointerhandler.cpp
@@ -268,8 +268,25 @@ bool QQuickPointerHandler::approveGrabTransition(QQuickEventPoint *point, QObjec
} else if ((d->grabPermissions & CanTakeOverFromItems)) {
QQuickItem * existingItemGrabber = point->grabberItem();
if (existingItemGrabber && !((existingItemGrabber->keepMouseGrab() && point->pointerEvent()->asPointerMouseEvent()) ||
- (existingItemGrabber->keepTouchGrab() && point->pointerEvent()->asPointerTouchEvent())))
+ (existingItemGrabber->keepTouchGrab() && point->pointerEvent()->asPointerTouchEvent()))) {
allowed = true;
+ // If the handler wants to steal the exclusive grab from an Item, the Item can usually veto
+ // by having its keepMouseGrab flag set. But an exception is if that Item is a parent that
+ // normally filters events (such as a Flickable): it needs to be possible for e.g. a
+ // DragHandler to operate on an Item inside a Flickable. Flickable is aggressive about
+ // grabbing on press (for fear of missing updates), but DragHandler uses a passive grab
+ // at first and then expects to be able to steal the grab later on. It cannot respect
+ // Flickable's wishes in that case, because then it would never have a chance.
+ if (existingItemGrabber->keepMouseGrab() &&
+ !(existingItemGrabber->filtersChildMouseEvents() && existingItemGrabber->isAncestorOf(parentItem()))) {
+ QQuickWindowPrivate *winPriv = QQuickWindowPrivate::get(parentItem()->window());
+ if (winPriv->isDeliveringTouchAsMouse() && point->pointId() == winPriv->touchMouseId) {
+ qCDebug(lcPointerHandlerGrab) << this << "wants to grab touchpoint" << point->pointId()
+ << "but declines to steal grab from touch-mouse grabber with keepMouseGrab=true" << existingItemGrabber;
+ allowed = false;
+ }
+ }
+ }
}
}
} else {
diff --git a/src/quick/handlers/qquicktaphandler.cpp b/src/quick/handlers/qquicktaphandler.cpp
index 272ebe6b63..f3674d6fa9 100644
--- a/src/quick/handlers/qquicktaphandler.cpp
+++ b/src/quick/handlers/qquicktaphandler.cpp
@@ -132,17 +132,16 @@ bool QQuickTapHandler::wantsEventPoint(QQuickEventPoint *point)
}
break;
case QQuickEventPoint::Stationary:
- // Never react in any way when the point hasn't moved.
- // In autotests, the point's position may not even be correct, because
- // QTest::touchEvent(window, touchDevice).stationary(1)
- // provides no opportunity to give a position, so it ends up being random.
+ // If the point hasn't moved since last time, the return value should be the same as last time.
+ // If we return false here, QQuickPointerHandler::handlePointerEvent() will call setActive(false).
+ ret = point->pointId() == this->point().id();
break;
}
// If this is the grabber, returning false from this function will cancel the grab,
// so onGrabChanged(this, CancelGrabExclusive, point) and setPressed(false) will be called.
// But when m_gesturePolicy is DragThreshold, we don't get an exclusive grab, but
// we still don't want to be pressed anymore.
- if (!ret && point->pointId() == this->point().id() && point->state() != QQuickEventPoint::Stationary)
+ if (!ret && point->pointId() == this->point().id())
setPressed(false, true, point);
return ret;
}
diff --git a/src/quick/handlers/qquickwheelhandler.cpp b/src/quick/handlers/qquickwheelhandler.cpp
index 90e4fef97e..16f38af962 100644
--- a/src/quick/handlers/qquickwheelhandler.cpp
+++ b/src/quick/handlers/qquickwheelhandler.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2019 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtQuick module of the Qt Toolkit.
@@ -49,6 +49,7 @@ Q_LOGGING_CATEGORY(lcWheelHandler, "qt.quick.handler.wheel")
/*!
\qmltype WheelHandler
\instantiates QQuickWheelHandler
+ \inherits SinglePointHandler
\inqmlmodule QtQuick
\ingroup qtquick-input-handlers
\brief Handler for the mouse wheel.
@@ -71,7 +72,7 @@ Q_LOGGING_CATEGORY(lcWheelHandler, "qt.quick.handler.wheel")
\snippet pointerHandlers/handlerFlick.qml 0
- Alternatively if \l targetProperty is not set or \l target is null,
+ Alternatively, if \l property is not set or \l target is null,
WheelHandler will not automatically manipulate anything; but the
\l rotation property can be used in a binding to manipulate another
property, or you can implement \c onWheel and handle the wheel event
@@ -79,15 +80,16 @@ Q_LOGGING_CATEGORY(lcWheelHandler, "qt.quick.handler.wheel")
WheelHandler handles only a rotating mouse wheel by default.
Optionally it can handle smooth-scrolling events from touchpad gestures,
- by setting \l acceptedDevices to \c{PointerDevice.Mouse | PointerDevice.TouchPad}.
+ by setting \l {QtQuick::PointerDeviceHandler::}{acceptedDevices} to
+ \c{PointerDevice.Mouse | PointerDevice.TouchPad}.
\note Some non-mouse hardware (such as a touch-sensitive Wacom tablet, or
a Linux laptop touchpad) generates real wheel events from gestures.
WheelHandler will respond to those events as wheel events regardless of the
- setting of the \l acceptedDevices property.
+ setting of the \l {QtQuick::PointerDeviceHandler::}{acceptedDevices}
+ property.
- \sa MouseArea
- \sa Flickable
+ \sa MouseArea, Flickable
*/
QQuickWheelHandler::QQuickWheelHandler(QQuickItem *parent)
@@ -125,13 +127,13 @@ void QQuickWheelHandler::setOrientation(Qt::Orientation orientation)
\qmlproperty bool QtQuick::WheelHandler::invertible
Whether or not to reverse the direction of property change if
- \l QQuickPointerScrollEvent::inverted is true. The default is \c true.
+ QQuickPointerScrollEvent::inverted is true. The default is \c true.
If the operating system has a "natural scrolling" setting that causes
scrolling to be in the same direction as the finger movement, then if this
property is set to \c true, and WheelHandler is directly setting a property
on \l target, the direction of movement will correspond to the system setting.
- If this property is set to \l false, it will invert the \l rotation so that
+ If this property is set to \c false, it will invert the \l rotation so that
the direction of motion is always the same as the direction of finger movement.
*/
bool QQuickWheelHandler::isInvertible() const
@@ -498,6 +500,13 @@ void QQuickWheelHandler::timerEvent(QTimerEvent *event)
}
}
+/*!
+ \qmlsignal QtQuick::WheelHandler::wheel(PointerScrollEvent event)
+
+ This signal is emitted every time this handler receives a \l QWheelEvent:
+ that is, every time the wheel is moved or the scrolling gesture is updated.
+*/
+
QQuickWheelHandlerPrivate::QQuickWheelHandlerPrivate()
: QQuickSinglePointHandlerPrivate()
{
diff --git a/src/quick/items/qquickaccessibleattached.cpp b/src/quick/items/qquickaccessibleattached.cpp
index c150e4efa2..2da01e9151 100644
--- a/src/quick/items/qquickaccessibleattached.cpp
+++ b/src/quick/items/qquickaccessibleattached.cpp
@@ -433,6 +433,19 @@ void QQuickAccessibleAttached::setRole(QAccessible::Role role)
}
}
+bool QQuickAccessibleAttached::wasNameExplicitlySet() const
+{
+ return m_nameExplicitlySet;
+}
+
+// Allows types to attach an accessible name to an item as a convenience,
+// so long as the user hasn't done so themselves.
+void QQuickAccessibleAttached::setNameImplicitly(const QString &name)
+{
+ setName(name);
+ m_nameExplicitlySet = false;
+}
+
QQuickAccessibleAttached *QQuickAccessibleAttached::qmlAttachedProperties(QObject *obj)
{
return new QQuickAccessibleAttached(obj);
diff --git a/src/quick/items/qquickaccessibleattached_p.h b/src/quick/items/qquickaccessibleattached_p.h
index 678c1361ba..b7254d6686 100644
--- a/src/quick/items/qquickaccessibleattached_p.h
+++ b/src/quick/items/qquickaccessibleattached_p.h
@@ -122,7 +122,10 @@ public:
return QString();
return m_name;
}
+
+ bool wasNameExplicitlySet() const;
void setName(const QString &name) {
+ m_nameExplicitlySet = true;
if (name != m_name) {
m_name = name;
Q_EMIT nameChanged();
@@ -130,6 +133,7 @@ public:
QAccessible::updateAccessibility(&ev);
}
}
+ void setNameImplicitly(const QString &name);
QString description() const { return m_description; }
void setDescription(const QString &description)
@@ -220,6 +224,7 @@ private:
QAccessible::State m_state;
QAccessible::State m_stateExplicitlySet;
QString m_name;
+ bool m_nameExplicitlySet = false;
QString m_description;
static QMetaMethod sigPress;
diff --git a/src/quick/items/qquickevents.cpp b/src/quick/items/qquickevents.cpp
index 89340dd992..03280e4c1f 100644
--- a/src/quick/items/qquickevents.cpp
+++ b/src/quick/items/qquickevents.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtQuick module of the Qt Toolkit.
@@ -448,7 +448,7 @@ Item {
*/
/*!
- \qmlproperty int QtQuick::WheelEvent::inverted
+ \qmlproperty bool QtQuick::WheelEvent::inverted
Returns whether the delta values delivered with the event are inverted.
@@ -1431,6 +1431,135 @@ QQuickEventPoint *QQuickSinglePointEvent::point(int i) const
return nullptr;
}
+
+/*!
+ \qmltype PointerScrollEvent
+ \instantiates QQuickPointerScrollEvent
+ \inqmlmodule QtQuick
+ \ingroup qtquick-input-events
+ \brief Provides information about a scrolling event, such as from a mouse wheel.
+
+ \sa WheelHandler
+*/
+
+/*!
+ \internal
+ \class QQuickPointerScrollEvent
+*/
+
+/*!
+ \readonly
+ \qmlproperty PointerDevice QtQuick::PointerScrollEvent::device
+
+ This property holds the device that generated the event.
+*/
+
+/*!
+ \qmlproperty int QtQuick::PointerScrollEvent::buttons
+
+ This property holds the mouse buttons pressed when the wheel event was generated.
+
+ It contains a bitwise combination of:
+ \list
+ \li \l {Qt::LeftButton} {Qt.LeftButton}
+ \li \l {Qt::RightButton} {Qt.RightButton}
+ \li \l {Qt::MiddleButton} {Qt.MiddleButton}
+ \endlist
+*/
+
+/*!
+ \readonly
+ \qmlproperty int QtQuick::PointerScrollEvent::modifiers
+
+ This property holds the \l {Qt::KeyboardModifier}{keyboard modifier} keys
+ that were pressed immediately before the event occurred.
+
+ It contains a bitwise combination of the following flags:
+ \value Qt.NoModifier
+ No modifier key is pressed.
+ \value Qt.ShiftModifier
+ A Shift key on the keyboard is pressed.
+ \value Qt.ControlModifier
+ A Ctrl key on the keyboard is pressed.
+ \value Qt.AltModifier
+ An Alt key on the keyboard is pressed.
+ \value Qt.MetaModifier
+ A Meta key on the keyboard is pressed.
+ \value Qt.KeypadModifier
+ A keypad button is pressed.
+
+ For example, to react to a Shift key + Left mouse button click:
+ \qml
+ Item {
+ TapHandler {
+ onTapped: {
+ if ((event.button == Qt.LeftButton) && (event.modifiers & Qt.ShiftModifier))
+ doSomething();
+ }
+ }
+ }
+ \endqml
+*/
+
+/*!
+ \qmlproperty point QtQuick::PointerScrollEvent::angleDelta
+
+ This property holds the distance that the wheel is rotated in wheel degrees.
+ The x and y cordinate of this property holds the delta in horizontal and
+ vertical orientation.
+
+ A positive value indicates that the wheel was rotated up/right;
+ a negative value indicates that the wheel was rotated down/left.
+
+ Most mouse types work in steps of 15 degrees, in which case the delta value is a
+ multiple of 120; i.e., 120 units * 1/8 = 15 degrees.
+*/
+
+/*!
+ \qmlproperty point QtQuick::PointerScrollEvent::pixelDelta
+
+ This property holds the delta in screen pixels and is available in platforms that
+ have high-resolution trackpads, such as \macos.
+ The x and y coordinates of this property hold the delta in horizontal and
+ vertical orientation. The value should be used directly to scroll content on screen.
+
+ For platforms without high-resolution touchpad support, pixelDelta will
+ always be (0,0), and angleDelta should be used instead.
+*/
+
+/*!
+ \qmlproperty bool QtQuick::PointerScrollEvent::hasAngleDelta
+
+ Returns whether the \l angleDelta property has a non-null value.
+*/
+
+/*!
+ \qmlproperty bool QtQuick::PointerScrollEvent::hasPixelDelta
+
+ Returns whether the \l pixelDelta property has a non-null value.
+*/
+
+/*!
+ \qmlproperty bool QtQuick::PointerScrollEvent::inverted
+
+ Returns whether the delta values delivered with the event are inverted.
+
+ Normally, a vertical wheel will produce a PointerScrollEvent with positive delta
+ values if the top of the wheel is rotating away from the hand operating it.
+ Similarly, a horizontal wheel movement will produce a PointerScrollEvent with
+ positive delta values if the top of the wheel is moved to the left.
+
+ However, on some platforms this is configurable, so that the same
+ operations described above will produce negative delta values (but with the
+ same magnitude). In a QML component (such as a tumbler or a slider) where
+ it is appropriate to synchronize the movement or rotation of an item with
+ the direction of the wheel, regardless of the system settings, the wheel
+ event handler can use the inverted property to decide whether to negate the
+ \l angleDelta or \l pixelDelta values.
+
+ \note Many platforms provide no such information. On such platforms,
+ \c inverted always returns false.
+*/
QQuickPointerEvent *QQuickPointerScrollEvent::reset(QEvent *event)
{
m_event = static_cast<QInputEvent*>(event);
diff --git a/src/quick/items/qquickevents_p_p.h b/src/quick/items/qquickevents_p_p.h
index 5acf98d471..4615ce43d2 100644
--- a/src/quick/items/qquickevents_p_p.h
+++ b/src/quick/items/qquickevents_p_p.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtQuick module of the Qt Toolkit.
@@ -90,7 +90,7 @@ class QQuickKeyEvent : public QObject
public:
QQuickKeyEvent()
- : event(QEvent::None, 0, nullptr)
+ : event(QEvent::None, 0, { })
{}
void reset(QEvent::Type type, int key, Qt::KeyboardModifiers modifiers,
@@ -144,12 +144,11 @@ public:
QQuickMouseEvent()
: _buttons(Qt::NoButton), _modifiers(Qt::NoModifier)
, _wasHeld(false), _isClick(false), _accepted(false)
- , _flags(Qt::MouseEventFlags(nullptr))
{}
void reset(qreal x, qreal y, Qt::MouseButton button, Qt::MouseButtons buttons,
Qt::KeyboardModifiers modifiers, bool isClick = false, bool wasHeld = false,
- Qt::MouseEventFlags flags = nullptr)
+ Qt::MouseEventFlags flags = { })
{
_x = x;
_y = y;
@@ -602,6 +601,10 @@ class Q_QUICK_PRIVATE_EXPORT QQuickPointerScrollEvent : public QQuickSinglePoint
Q_PROPERTY(bool hasPixelDelta READ hasPixelDelta CONSTANT)
Q_PROPERTY(bool inverted READ isInverted CONSTANT)
+ QML_NAMED_ELEMENT(PointerScrollEvent)
+ QML_UNCREATABLE("PointerScrollEvent is only available via the WheelHandler::wheel signal.")
+ QML_ADDED_IN_MINOR_VERSION(14)
+
public:
QQuickPointerScrollEvent(QObject *parent = nullptr, QQuickPointerDevice *device = nullptr)
: QQuickSinglePointEvent(parent, device) { }
diff --git a/src/quick/items/qquickflickable.cpp b/src/quick/items/qquickflickable.cpp
index d9ec7de611..8ade5b7e37 100644
--- a/src/quick/items/qquickflickable.cpp
+++ b/src/quick/items/qquickflickable.cpp
@@ -316,7 +316,7 @@ void QQuickFlickablePrivate::itemGeometryChanged(QQuickItem *item, QQuickGeometr
{
Q_Q(QQuickFlickable);
if (item == contentItem) {
- Qt::Orientations orient = nullptr;
+ Qt::Orientations orient;
if (change.xChange())
orient |= Qt::Horizontal;
if (change.yChange())
diff --git a/src/quick/items/qquickgenericshadereffect.cpp b/src/quick/items/qquickgenericshadereffect.cpp
index df61ee853d..a3d04f5dd3 100644
--- a/src/quick/items/qquickgenericshadereffect.cpp
+++ b/src/quick/items/qquickgenericshadereffect.cpp
@@ -78,7 +78,6 @@ QQuickGenericShaderEffect::QQuickGenericShaderEffect(QQuickShaderEffect *item, Q
, m_mgr(nullptr)
, m_fragNeedsUpdate(true)
, m_vertNeedsUpdate(true)
- , m_dirty(nullptr)
{
qRegisterMetaType<QSGGuiThreadShaderEffectManager::ShaderInfo::Type>("ShaderInfo::Type");
for (int i = 0; i < NShader; ++i)
@@ -311,7 +310,7 @@ QSGNode *QQuickGenericShaderEffect::handleUpdatePaintNode(QSGNode *oldNode, QQui
m_dirty &= ~QSGShaderEffectNode::DirtyShaderGeometry;
}
- m_dirty = nullptr;
+ m_dirty = {};
for (int i = 0; i < NShader; ++i) {
m_dirtyConstants[i].clear();
m_dirtyTextures[i].clear();
diff --git a/src/quick/items/qquickgraphicsinfo.cpp b/src/quick/items/qquickgraphicsinfo.cpp
index 8f6f4386fb..adf620b256 100644
--- a/src/quick/items/qquickgraphicsinfo.cpp
+++ b/src/quick/items/qquickgraphicsinfo.cpp
@@ -95,7 +95,6 @@ QQuickGraphicsInfo *QQuickGraphicsInfo::qmlAttachedProperties(QObject *object)
\li GraphicsInfo.Unknown - the default value when no active scenegraph is associated with the item
\li GraphicsInfo.Software - Qt Quick's software renderer based on QPainter with the raster paint engine
\li GraphicsInfo.OpenGL - OpenGL or OpenGL ES
- \li GraphicsInfo.Direct3D12 - Direct3D 12
\li GraphicsInfo.OpenVG - OpenVG
\li GraphicsInfo.OpenGLRhi - OpenGL on top of QRhi, a graphics abstraction layer
\li GraphicsInfo.Direct3D11Rhi - Direct3D 11 on top of QRhi, a graphics abstraction layer
diff --git a/src/quick/items/qquickgraphicsinfo_p.h b/src/quick/items/qquickgraphicsinfo_p.h
index 066a419c37..aa7d15f72d 100644
--- a/src/quick/items/qquickgraphicsinfo_p.h
+++ b/src/quick/items/qquickgraphicsinfo_p.h
@@ -85,7 +85,6 @@ public:
Unknown = QSGRendererInterface::Unknown,
Software = QSGRendererInterface::Software,
OpenGL = QSGRendererInterface::OpenGL,
- Direct3D12 = QSGRendererInterface::Direct3D12,
OpenVG = QSGRendererInterface::OpenVG,
OpenGLRhi = QSGRendererInterface::OpenGLRhi,
Direct3D11Rhi = QSGRendererInterface::Direct3D11Rhi,
diff --git a/src/quick/items/qquickgridview.cpp b/src/quick/items/qquickgridview.cpp
index e69e9cff46..5f6c194bcf 100644
--- a/src/quick/items/qquickgridview.cpp
+++ b/src/quick/items/qquickgridview.cpp
@@ -497,7 +497,7 @@ bool QQuickGridViewPrivate::addVisibleItems(qreal fillFrom, qreal fillTo, qreal
// We've jumped more than a page. Estimate which items are now
// visible and fill from there.
int count = (fillFrom - (rowPos + rowSize())) / (rowSize()) * columns;
- releaseVisibleItems();
+ releaseVisibleItems(reusableFlag);
modelIndex += count;
if (modelIndex >= model->count())
modelIndex = model->count() - 1;
@@ -576,7 +576,7 @@ void QQuickGridViewPrivate::removeItem(FxViewItem *item)
item->releaseAfterTransition = true;
releasePendingTransition.append(item);
} else {
- releaseItem(item);
+ releaseItem(item, QQmlDelegateModel::NotReusable);
}
}
diff --git a/src/quick/items/qquickimage.cpp b/src/quick/items/qquickimage.cpp
index 840cfe15da..fccacdcce8 100644
--- a/src/quick/items/qquickimage.cpp
+++ b/src/quick/items/qquickimage.cpp
@@ -76,14 +76,8 @@ QSGTexture *QQuickImageTextureProvider::texture() const {
}
QQuickImagePrivate::QQuickImagePrivate()
- : fillMode(QQuickImage::Stretch)
- , paintedWidth(0)
- , paintedHeight(0)
- , pixmapChanged(false)
+ : pixmapChanged(false)
, mipmap(false)
- , hAlign(QQuickImage::AlignHCenter)
- , vAlign(QQuickImage::AlignVCenter)
- , provider(nullptr)
{
}
diff --git a/src/quick/items/qquickimage_p_p.h b/src/quick/items/qquickimage_p_p.h
index e2c467c311..1c4ba88655 100644
--- a/src/quick/items/qquickimage_p_p.h
+++ b/src/quick/items/qquickimage_p_p.h
@@ -80,19 +80,18 @@ class Q_QUICK_PRIVATE_EXPORT QQuickImagePrivate : public QQuickImageBasePrivate
public:
QQuickImagePrivate();
-
- QQuickImage::FillMode fillMode;
- qreal paintedWidth;
- qreal paintedHeight;
void setImage(const QImage &img);
void setPixmap(const QQuickPixmap &pixmap);
bool pixmapChanged : 1;
bool mipmap : 1;
- QQuickImage::HAlignment hAlign;
- QQuickImage::VAlignment vAlign;
+ QQuickImage::HAlignment hAlign = QQuickImage::AlignHCenter;
+ QQuickImage::VAlignment vAlign = QQuickImage::AlignVCenter;
+ QQuickImage::FillMode fillMode = QQuickImage::Stretch;
- QQuickImageTextureProvider *provider;
+ qreal paintedWidth = 0;
+ qreal paintedHeight = 0;
+ QQuickImageTextureProvider *provider = nullptr;
};
QT_END_NAMESPACE
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
index 4c20b7e2e1..8454010ee9 100644
--- a/src/quick/items/qquickitem.cpp
+++ b/src/quick/items/qquickitem.cpp
@@ -2074,10 +2074,10 @@ void QQuickItemPrivate::updateSubFocusItem(QQuickItem *scope, bool focus)
in the GPU equal to \c {width x height x 4}. In memory constrained
configurations, large layers should be used with care.
- In the QPainter / QWidget world, it is some times favorable to
+ In the QPainter / QWidget world, it is sometimes favorable to
cache complex content in a pixmap, image or texture. In Qt Quick,
because of the techniques already applied by the \l {Qt Quick
- Scene Graph OpenGL Renderer} {scene graph renderer}, this will in most
+ Scene Graph Default Renderer} {scene graph renderer}, this will in most
cases not be the case. Excessive draw calls are already reduced
because of batching and a cache will in most cases end up blending
more pixels than the original content. The overhead of rendering
@@ -8812,7 +8812,7 @@ QQuickItemPrivate::ExtraData::ExtraData()
effectRefCount(0), hideRefCount(0),
recursiveEffectRefCount(0),
opacityNode(nullptr), clipNode(nullptr), rootNode(nullptr),
- acceptedMouseButtons(nullptr), origin(QQuickItem::Center),
+ origin(QQuickItem::Center),
transparentForPositioner(false)
{
}
diff --git a/src/quick/items/qquickitem_p.h b/src/quick/items/qquickitem_p.h
index 7c3325fd90..baef37a0ff 100644
--- a/src/quick/items/qquickitem_p.h
+++ b/src/quick/items/qquickitem_p.h
@@ -336,7 +336,7 @@ public:
struct ChangeListener {
using ChangeTypes = QQuickItemPrivate::ChangeTypes;
- ChangeListener(QQuickItemChangeListener *l = nullptr, ChangeTypes t = nullptr)
+ ChangeListener(QQuickItemChangeListener *l = nullptr, ChangeTypes t = { })
: listener(l)
, types(t)
, gTypes(QQuickGeometryChange::All)
@@ -533,7 +533,7 @@ public:
void refWindow(QQuickWindow *);
void derefWindow();
- QQuickItem *subFocusItem;
+ QPointer<QQuickItem> subFocusItem;
void updateSubFocusItem(QQuickItem *scope, bool focus);
QTransform windowToItemTransform() const;
@@ -937,7 +937,7 @@ private:
Qt::MouseButtons QQuickItemPrivate::acceptedMouseButtons() const
{
return ((extra.flag() ? Qt::LeftButton : Qt::MouseButton(0)) |
- (extra.isAllocated() ? extra->acceptedMouseButtons : Qt::MouseButtons(nullptr)));
+ (extra.isAllocated() ? extra->acceptedMouseButtons : Qt::MouseButtons{}));
}
QSGContext *QQuickItemPrivate::sceneGraphContext() const
diff --git a/src/quick/items/qquickitemsmodule.cpp b/src/quick/items/qquickitemsmodule.cpp
index f7943630c4..bd6b9d741e 100644
--- a/src/quick/items/qquickitemsmodule.cpp
+++ b/src/quick/items/qquickitemsmodule.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2019 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtQuick module of the Qt Toolkit.
@@ -177,9 +177,6 @@ static QQmlPrivate::AutoParentResult qquickitem_autoParent(QObject *obj, QObject
static void qt_quickitems_defineModule()
{
- const char *uri = "QtQuick";
- const int major = 2;
-
QQmlPrivate::RegisterAutoParent autoparent = { 0, &qquickitem_autoParent };
QQmlPrivate::qmlregister(QQmlPrivate::AutoParentRegistration, &autoparent);
@@ -187,205 +184,12 @@ static void qt_quickitems_defineModule()
qRegisterMetaType<QPointingDeviceUniqueId>("QPointingDeviceUniqueId");
qRegisterMetaType<QQuickHandlerPoint>();
- qmlRegisterModule(uri, major, 15);
-
- // Core QtQuick types
- qmlRegisterTypesAndRevisions<
- QPointingDeviceUniqueIdForeign,
- QQuickAnchorAnimation,
- QQuickAnchorChanges,
- QQuickAnchors,
- QQuickAnchorSet,
- QQuickBorderImage,
- QQuickEnterKeyAttached,
- QQuickEventPoint,
- QQuickEventTouchPoint,
- QQuickFlickable,
- QQuickFlickableVisibleArea,
- QQuickFocusScope,
- QQuickGradient,
- QQuickGradientStop,
- QQuickGraphicsInfo,
- QQuickImage,
- QQuickImageBase,
- QQuickItem,
- QQuickItemGrabResult,
- QQuickKeyNavigationAttached,
- QQuickKeysAttached,
- QQuickLayoutMirroringAttached,
- QQuickLoader,
- QQuickMatrix4x4,
- QQuickMouseArea,
- QQuickMultiPointTouchArea,
- QQuickPaintedItem,
- QQuickParentAnimation,
- QQuickParentChange,
- QQuickPen,
- QQuickPinch,
- QQuickPinchArea,
- QQuickPointerDevice,
- QQuickRectangle,
- QQuickRotation,
- QQuickScale,
- QQuickScaleGrid,
- QQuickTouchPoint,
- QQuickTransform,
- QQuickTranslate
- >(uri, major);
-
- // text-related types
- qmlRegisterTypesAndRevisions<
- QQuickText,
- QQuickTextDocument,
- QQuickTextEdit,
- QQuickTextInput,
- QQuickTextLine
- >(uri, major);
-
- // events
- qmlRegisterTypesAndRevisions<
- QQuickCloseEvent,
- QQuickGrabGestureEvent,
- QQuickKeyEvent,
- QQuickMouseEvent,
- QQuickPinchEvent,
- QQuickPointerEvent,
- QQuickPointerMouseEvent,
- QQuickPointerTouchEvent,
- QQuickWheelEvent
- >(uri, major);
-
- // Input Handlers are part of QtQuick, not a separate module, since 5.12
- qmlRegisterTypesAndRevisions<
- QQuickDragHandler,
- QQuickHoverHandler,
- QQuickPinchHandler,
- QQuickPointerHandler,
- QQuickPointHandler,
- QQuickTapHandler
- >(uri, major);
-
-#if QT_CONFIG(accessibility)
- qmlRegisterTypesAndRevisions<QQuickAccessibleAttached>(uri, major);
-#endif
-
-#if QT_CONFIG(opengl)
- qmlRegisterTypesAndRevisions<QQuickOpenGLInfo>(uri, major);
-#endif
-
-#if QT_CONFIG(quick_animatedimage)
- qmlRegisterTypesAndRevisions<QQuickAnimatedImage>(uri, major);
-#else
+#if !QT_CONFIG(quick_animatedimage)
qmlRegisterTypeNotAvailable(
- uri, major, 15, "AnimatedImage",
+ "QtQuick", 2, 15, "AnimatedImage",
QCoreApplication::translate("QQuickAnimatedImage",
"Qt was built without support for QMovie"));
#endif
-
-#if QT_CONFIG(quick_canvas)
- qmlRegisterTypesAndRevisions<QQuickCanvasItem>(uri, major);
-#endif
-
-#if QT_CONFIG(quick_draganddrop)
- qmlRegisterTypesAndRevisions<
- QQuickDropEvent,
- QQuickDrag,
- QQuickDropArea,
- QQuickDropAreaDrag,
- QQuickDragAttached,
- QQuickDragAxis
- >(uri, major);
-#endif
-
-#if QT_CONFIG(quick_flipable)
- qmlRegisterTypesAndRevisions<QQuickFlipable>(uri, major);
-#endif
-
-#if QT_CONFIG(quick_positioners)
- qmlRegisterTypesAndRevisions<
- QQuickBasePositioner,
- QQuickColumn,
- QQuickFlow,
- QQuickGrid,
- QQuickRow
- >(uri, major);
-#endif
-
-#if QT_CONFIG(quick_gridview)
- qmlRegisterTypesAndRevisions<QQuickGridView>(uri, major);
-#endif
-
-#if QT_CONFIG(quick_itemview)
- qmlRegisterTypesAndRevisions<QQuickItemView>(uri, major);
-#endif
-
-#if QT_CONFIG(quick_listview)
- qmlRegisterTypesAndRevisions<
- QQuickViewSection,
- QQuickListView
- >(uri, major);
-#endif
-
-#if QT_CONFIG(quick_path)
- qmlRegisterTypesAndRevisions<
- QQuickCurve,
- QQuickPath,
- QQuickPathAngleArc,
- QQuickPathAnimation,
- QQuickPathArc,
- QQuickPathAttribute,
- QQuickPathCatmullRomCurve,
- QQuickPathCubic,
- QQuickPathElement,
- QQuickPathInterpolator,
- QQuickPathLine,
- QQuickPathMove,
- QQuickPathMultiline,
- QQuickPathPercent,
- QQuickPathPolyline,
- QQuickPathQuad,
- QQuickPathSvg
- >(uri, major);
-#endif
-
-#if QT_CONFIG(quick_pathview)
- qmlRegisterTypesAndRevisions<QQuickPathView>(uri, major);
-#endif
-
-#if QT_CONFIG(quick_repeater)
- qmlRegisterTypesAndRevisions<QQuickRepeater>(uri, major);
-#endif
-
-#if QT_CONFIG(quick_shadereffect)
- qmlRegisterTypesAndRevisions<
- QQuickBorderImageMesh,
- QQuickGridMesh,
- QQuickItemLayer,
- QQuickShaderEffect,
- QQuickShaderEffectMesh,
- QQuickShaderEffectSource
- >(uri, major);
-#endif
-
-#if QT_CONFIG(quick_sprite)
- qmlRegisterTypesAndRevisions<
- QQuickAnimatedSprite,
- QQuickSprite,
- QQuickSpriteSequence
- >(uri, major);
-#endif
-
-#if QT_CONFIG(quick_tableview)
- qmlRegisterTypesAndRevisions<QQuickTableView>(uri, major);
-#endif
-
-#if QT_CONFIG(quick_viewtransitions)
- qmlRegisterTypesAndRevisions<QQuickViewTransitionAttached>(uri, major);
-#endif
-
-#if QT_CONFIG(wheelevent)
- qmlRegisterTypesAndRevisions<QQuickWheelHandler>(uri, major);
-#endif
}
static void initResources()
diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp
index 661f19509a..031ac6337a 100644
--- a/src/quick/items/qquickitemview.cpp
+++ b/src/quick/items/qquickitemview.cpp
@@ -197,6 +197,8 @@ void QQuickItemView::setModel(const QVariant &m)
disconnect(d->model, SIGNAL(initItem(int,QObject*)), this, SLOT(initItem(int,QObject*)));
disconnect(d->model, SIGNAL(createdItem(int,QObject*)), this, SLOT(createdItem(int,QObject*)));
disconnect(d->model, SIGNAL(destroyingItem(QObject*)), this, SLOT(destroyingItem(QObject*)));
+ disconnect(d->model, SIGNAL(itemPooled(int, QObject *)), this, SLOT(onItemPooled(int, QObject *)));
+ disconnect(d->model, SIGNAL(itemReused(int, QObject *)), this, SLOT(onItemReused(int, QObject *)));
}
QQmlInstanceModel *oldModel = d->model;
@@ -232,10 +234,14 @@ void QQuickItemView::setModel(const QVariant &m)
connect(d->model, SIGNAL(createdItem(int,QObject*)), this, SLOT(createdItem(int,QObject*)));
connect(d->model, SIGNAL(initItem(int,QObject*)), this, SLOT(initItem(int,QObject*)));
connect(d->model, SIGNAL(destroyingItem(QObject*)), this, SLOT(destroyingItem(QObject*)));
+ connect(d->model, SIGNAL(itemPooled(int, QObject *)), this, SLOT(onItemPooled(int, QObject *)));
+ connect(d->model, SIGNAL(itemReused(int, QObject *)), this, SLOT(onItemReused(int, QObject *)));
if (isComponentComplete()) {
d->updateSectionCriteria();
d->refill();
- d->currentIndex = -1;
+ /* Setting currentIndex to -2 ensures that we always enter the "currentIndex changed"
+ code path in setCurrentIndex, updating bindings depending on currentIndex.*/
+ d->currentIndex = -2;
setCurrentIndex(d->model->count() > 0 ? 0 : -1);
d->updateViewport();
@@ -252,6 +258,7 @@ void QQuickItemView::setModel(const QVariant &m)
emit countChanged();
}
emit modelChanged();
+ d->moveReason = QQuickItemViewPrivate::Other;
}
QQmlComponent *QQuickItemView::delegate() const
@@ -691,6 +698,28 @@ void QQuickItemView::setHighlightMoveDuration(int duration)
}
}
+bool QQuickItemView::reuseItems() const
+{
+ return bool(d_func()->reusableFlag == QQmlDelegateModel::Reusable);
+}
+
+void QQuickItemView::setReuseItems(bool reuse)
+{
+ Q_D(QQuickItemView);
+ if (reuseItems() == reuse)
+ return;
+
+ d->reusableFlag = reuse ? QQmlDelegateModel::Reusable : QQmlDelegateModel::NotReusable;
+
+ if (!reuse && d->model) {
+ // When we're told to not reuse items, we
+ // immediately, as documented, drain the pool.
+ d->model->drainReusableItemsPool(0);
+ }
+
+ emit reuseItemsChanged();
+}
+
QQuickTransition *QQuickItemView::populateTransition() const
{
Q_D(const QQuickItemView);
@@ -845,7 +874,7 @@ void QQuickItemViewPrivate::positionViewAtIndex(int index, int mode)
setPosition(qMin(itemPos, maxExtent));
// now release the reference to all the old visible items.
for (FxViewItem *item : oldVisible)
- releaseItem(item);
+ releaseItem(item, reusableFlag);
item = visibleItem(idx);
}
if (item) {
@@ -1088,8 +1117,8 @@ qreal QQuickItemViewPrivate::calculatedMaxExtent() const
void QQuickItemViewPrivate::applyDelegateChange()
{
- releaseVisibleItems();
- releaseItem(currentItem);
+ releaseVisibleItems(QQmlDelegateModel::NotReusable);
+ releaseItem(currentItem, QQmlDelegateModel::NotReusable);
currentItem = nullptr;
updateSectionCriteria();
refill();
@@ -1191,7 +1220,7 @@ void QQuickItemView::destroyRemoved()
} else {
if (hasRemoveTransition)
d->runDelayedRemoveTransition = true;
- d->releaseItem(item);
+ d->releaseItem(item, d->reusableFlag);
it = d->visibleItems.erase(it);
}
} else {
@@ -1635,7 +1664,7 @@ void QQuickItemViewPrivate::updateCurrent(int modelIndex)
if (currentItem) {
if (currentItem->attached)
currentItem->attached->setIsCurrentItem(false);
- releaseItem(currentItem);
+ releaseItem(currentItem, reusableFlag);
currentItem = nullptr;
currentIndex = modelIndex;
emit q->currentIndexChanged();
@@ -1672,7 +1701,7 @@ void QQuickItemViewPrivate::updateCurrent(int modelIndex)
if (oldCurrentItem != currentItem
&& (!oldCurrentItem || !currentItem || oldCurrentItem->item != currentItem->item))
emit q->currentItemChanged();
- releaseItem(oldCurrentItem);
+ releaseItem(oldCurrentItem, reusableFlag);
}
void QQuickItemViewPrivate::clear(bool onDestruction)
@@ -1682,17 +1711,17 @@ void QQuickItemViewPrivate::clear(bool onDestruction)
bufferedChanges.reset();
timeline.clear();
- releaseVisibleItems();
+ releaseVisibleItems(QQmlInstanceModel::NotReusable);
visibleIndex = 0;
for (FxViewItem *item : qAsConst(releasePendingTransition)) {
item->releaseAfterTransition = false;
- releaseItem(item);
+ releaseItem(item, QQmlInstanceModel::NotReusable);
}
releasePendingTransition.clear();
auto oldCurrentItem = currentItem;
- releaseItem(currentItem);
+ releaseItem(currentItem, QQmlDelegateModel::NotReusable);
currentItem = nullptr;
if (oldCurrentItem)
emit q->currentItemChanged();
@@ -1751,7 +1780,7 @@ void QQuickItemViewPrivate::refill(qreal from, qreal to)
if (currentChanges.hasPendingChanges() || bufferedChanges.hasPendingChanges()) {
currentChanges.reset();
bufferedChanges.reset();
- releaseVisibleItems();
+ releaseVisibleItems(reusableFlag);
}
int prevCount = itemCount;
@@ -1790,6 +1819,7 @@ void QQuickItemViewPrivate::refill(qreal from, qreal to)
if (prevCount != itemCount)
emit q->countChanged();
} while (currentChanges.hasPendingChanges() || bufferedChanges.hasPendingChanges());
+ storeFirstVisibleItemPosition();
}
void QQuickItemViewPrivate::regenerate(bool orientationChanged)
@@ -1876,6 +1906,7 @@ void QQuickItemViewPrivate::layout()
updateSections();
layoutVisibleItems();
+ storeFirstVisibleItemPosition();
int lastIndexInView = findLastIndexInView();
refill();
@@ -1903,21 +1934,25 @@ void QQuickItemViewPrivate::layout()
prepareVisibleItemTransitions();
- for (auto it = releasePendingTransition.begin(); it != releasePendingTransition.end(); ) {
- auto old_count = releasePendingTransition.count();
- auto success = prepareNonVisibleItemTransition(*it, viewBounds);
- // prepareNonVisibleItemTransition() may invalidate iterators while in fast flicking
- // invisible animating items are kicked in or out the viewPort
- // use old_count to test if the abrupt erasure occurs
- if (old_count > releasePendingTransition.count()) {
+ // We cannot use iterators here as erasing from a container invalidates them.
+ for (int i = 0, count = releasePendingTransition.count(); i < count;) {
+ auto success = prepareNonVisibleItemTransition(releasePendingTransition[i], viewBounds);
+ // prepareNonVisibleItemTransition() may remove items while in fast flicking.
+ // Invisible animating items are kicked in or out the viewPort.
+ // Recheck count to test if the item got removed. In that case the same index points
+ // to a different item now.
+ const int old_count = count;
+ count = releasePendingTransition.count();
+ if (old_count > count)
continue;
- }
+
if (!success) {
- releaseItem(*it);
- it = releasePendingTransition.erase(it);
- continue;
+ releaseItem(releasePendingTransition[i], reusableFlag);
+ releasePendingTransition.remove(i);
+ --count;
+ } else {
+ ++i;
}
- ++it;
}
for (int i=0; i<visibleItems.count(); i++)
@@ -1960,7 +1995,7 @@ bool QQuickItemViewPrivate::applyModelChanges(ChangeResult *totalInsertionResult
prevFirstItemInViewPos = prevFirstItemInView->position();
prevFirstItemInViewIndex = prevFirstItemInView->index;
}
- qreal prevVisibleItemsFirstPos = visibleItems.count() ? visibleItems.constFirst()->position() : 0.0;
+ qreal prevVisibleItemsFirstPos = visibleItems.count() ? firstVisibleItemPosition : 0.0;
totalInsertionResult->visiblePos = prevFirstItemInViewPos;
totalRemovalResult->visiblePos = prevFirstItemInViewPos;
@@ -2006,6 +2041,7 @@ bool QQuickItemViewPrivate::applyModelChanges(ChangeResult *totalInsertionResult
if (!insertions.isEmpty()) {
repositionFirstItem(prevVisibleItemsFirst, prevVisibleItemsFirstPos, prevFirstItemInView, &insertionResult, &removalResult);
layoutVisibleItems(removals.first().index);
+ storeFirstVisibleItemPosition();
}
}
@@ -2026,6 +2062,7 @@ bool QQuickItemViewPrivate::applyModelChanges(ChangeResult *totalInsertionResult
if (i < insertions.count() - 1) {
repositionFirstItem(prevVisibleItemsFirst, prevVisibleItemsFirstPos, prevFirstItemInView, &insertionResult, &removalResult);
layoutVisibleItems(insertions[i].index);
+ storeFirstVisibleItemPosition();
}
itemCount += insertions[i].count;
}
@@ -2056,9 +2093,9 @@ bool QQuickItemViewPrivate::applyModelChanges(ChangeResult *totalInsertionResult
// Whatever removed/moved items remain are no longer visible items.
prepareRemoveTransitions(&currentChanges.removedItems);
- for (QHash<QQmlChangeSet::MoveKey, FxViewItem *>::Iterator it = currentChanges.removedItems.begin();
+ for (auto it = currentChanges.removedItems.begin();
it != currentChanges.removedItems.end(); ++it) {
- releaseItem(it.value());
+ releaseItem(it.value(), reusableFlag);
}
currentChanges.removedItems.clear();
@@ -2067,7 +2104,7 @@ bool QQuickItemViewPrivate::applyModelChanges(ChangeResult *totalInsertionResult
if (currentItem->item && currentItem->attached)
currentItem->attached->setIsCurrentItem(false);
auto oldCurrentItem = currentItem;
- releaseItem(currentItem);
+ releaseItem(currentItem, reusableFlag);
currentItem = nullptr;
if (oldCurrentItem)
emit q->currentItemChanged();
@@ -2148,11 +2185,11 @@ void QQuickItemViewPrivate::removeItem(FxViewItem *item, const QQmlChangeSet::Ch
removeResult->sizeChangesAfterVisiblePos += item->size();
}
if (removal.isMove()) {
- currentChanges.removedItems.insert(removal.moveKey(item->index), item);
+ currentChanges.removedItems.replace(removal.moveKey(item->index), item);
item->transitionNextReposition(transitioner, QQuickItemViewTransitioner::MoveTransition, true);
} else {
// track item so it is released later
- currentChanges.removedItems.insertMulti(QQmlChangeSet::MoveKey(), item);
+ currentChanges.removedItems.insert(QQmlChangeSet::MoveKey(), item);
}
if (!removeResult->changedFirstItem && item == *visibleItems.constBegin())
removeResult->changedFirstItem = true;
@@ -2223,15 +2260,14 @@ void QQuickItemViewPrivate::prepareVisibleItemTransitions()
visibleItems[i]->prepareTransition(transitioner, viewBounds);
}
-void QQuickItemViewPrivate::prepareRemoveTransitions(QHash<QQmlChangeSet::MoveKey, FxViewItem *> *removedItems)
+void QQuickItemViewPrivate::prepareRemoveTransitions(QMultiHash<QQmlChangeSet::MoveKey, FxViewItem *> *removedItems)
{
if (!transitioner)
return;
if (transitioner->canTransition(QQuickItemViewTransitioner::RemoveTransition, true)
|| transitioner->canTransition(QQuickItemViewTransitioner::RemoveTransition, false)) {
- for (QHash<QQmlChangeSet::MoveKey, FxViewItem *>::Iterator it = removedItems->begin();
- it != removedItems->end(); ) {
+ for (auto it = removedItems->begin(); it != removedItems->end(); ) {
bool isRemove = it.key().moveId < 0;
if (isRemove) {
FxViewItem *item = *it;
@@ -2274,7 +2310,7 @@ void QQuickItemViewPrivate::viewItemTransitionFinished(QQuickItemViewTransitiona
{
for (int i=0; i<releasePendingTransition.count(); i++) {
if (releasePendingTransition.at(i)->transitionableItem == item) {
- releaseItem(releasePendingTransition.takeAt(i));
+ releaseItem(releasePendingTransition.takeAt(i), reusableFlag);
return;
}
}
@@ -2380,7 +2416,23 @@ void QQuickItemView::destroyingItem(QObject *object)
}
}
-bool QQuickItemViewPrivate::releaseItem(FxViewItem *item)
+void QQuickItemView::onItemPooled(int modelIndex, QObject *object)
+{
+ Q_UNUSED(modelIndex);
+
+ if (auto *attached = d_func()->getAttachedObject(object))
+ emit attached->pooled();
+}
+
+void QQuickItemView::onItemReused(int modelIndex, QObject *object)
+{
+ Q_UNUSED(modelIndex);
+
+ if (auto *attached = d_func()->getAttachedObject(object))
+ emit attached->reused();
+}
+
+bool QQuickItemViewPrivate::releaseItem(FxViewItem *item, QQmlInstanceModel::ReusableFlag reusableFlag)
{
Q_Q(QQuickItemView);
if (!item)
@@ -2391,13 +2443,19 @@ bool QQuickItemViewPrivate::releaseItem(FxViewItem *item)
QQmlInstanceModel::ReleaseFlags flags = {};
if (model && item->item) {
- flags = model->release(item->item);
+ flags = model->release(item->item, reusableFlag);
if (!flags) {
// item was not destroyed, and we no longer reference it.
- QQuickItemPrivate::get(item->item)->setCulled(true);
+ if (item->item->parentItem() == contentItem) {
+ // Only cull the item if its parent item is still our contentItem.
+ // One case where this can happen is moving an item out of one ObjectModel and into another.
+ QQuickItemPrivate::get(item->item)->setCulled(true);
+ }
unrequestedItems.insert(item->item, model->indexOf(item->item, q));
} else if (flags & QQmlInstanceModel::Destroyed) {
item->item->setParentItem(nullptr);
+ } else if (flags & QQmlInstanceModel::Pooled) {
+ item->setVisible(false);
}
}
delete item;
diff --git a/src/quick/items/qquickitemview_p.h b/src/quick/items/qquickitemview_p.h
index 6bc00411f0..521580d292 100644
--- a/src/quick/items/qquickitemview_p.h
+++ b/src/quick/items/qquickitemview_p.h
@@ -110,6 +110,8 @@ class Q_QUICK_PRIVATE_EXPORT QQuickItemView : public QQuickFlickable
Q_PROPERTY(qreal preferredHighlightEnd READ preferredHighlightEnd WRITE setPreferredHighlightEnd NOTIFY preferredHighlightEndChanged RESET resetPreferredHighlightEnd)
Q_PROPERTY(int highlightMoveDuration READ highlightMoveDuration WRITE setHighlightMoveDuration NOTIFY highlightMoveDurationChanged)
+ Q_PROPERTY(bool reuseItems READ reuseItems WRITE setReuseItems NOTIFY reuseItemsChanged REVISION 15)
+
QML_NAMED_ELEMENT(ItemView)
QML_UNCREATABLE("ItemView is an abstract base class.")
QML_ADDED_IN_MINOR_VERSION(1)
@@ -226,6 +228,9 @@ public:
int highlightMoveDuration() const;
virtual void setHighlightMoveDuration(int);
+ bool reuseItems() const;
+ void setReuseItems(bool reuse);
+
enum PositionMode { Beginning, Center, End, Visible, Contain, SnapPosition };
Q_ENUM(PositionMode)
@@ -281,6 +286,8 @@ Q_SIGNALS:
void preferredHighlightEndChanged();
void highlightMoveDurationChanged();
+ Q_REVISION(15) void reuseItemsChanged();
+
protected:
void updatePolish() override;
void componentComplete() override;
@@ -296,6 +303,8 @@ protected Q_SLOTS:
virtual void initItem(int index, QObject *item);
void modelUpdated(const QQmlChangeSet &changeSet, bool reset);
void destroyingItem(QObject *item);
+ void onItemPooled(int modelIndex, QObject *object);
+ void onItemReused(int modelIndex, QObject *object);
void animStopped();
void trackedPositionChanged();
@@ -399,6 +408,9 @@ Q_SIGNALS:
void prevSectionChanged();
void nextSectionChanged();
+ void pooled();
+ void reused();
+
public:
QPointer<QQuickItemView> m_view;
bool m_isCurrent : 1;
diff --git a/src/quick/items/qquickitemview_p_p.h b/src/quick/items/qquickitemview_p_p.h
index 6442fee27d..48f47a356b 100644
--- a/src/quick/items/qquickitemview_p_p.h
+++ b/src/quick/items/qquickitemview_p_p.h
@@ -92,7 +92,7 @@ public:
int itemCount;
int newCurrentIndex;
QQmlChangeSet pendingChanges;
- QHash<QQmlChangeSet::MoveKey, FxViewItem *> removedItems;
+ QMultiHash<QQmlChangeSet::MoveKey, FxViewItem *> removedItems;
bool active : 1;
bool currentChanged : 1;
@@ -174,7 +174,7 @@ public:
void mirrorChange() override;
FxViewItem *createItem(int modelIndex,QQmlIncubator::IncubationMode incubationMode = QQmlIncubator::AsynchronousIfNested);
- virtual bool releaseItem(FxViewItem *item);
+ virtual bool releaseItem(FxViewItem *item, QQmlInstanceModel::ReusableFlag reusableFlag);
QQuickItem *createHighlightItem() const;
QQuickItem *createComponentItem(QQmlComponent *component, qreal zValue, bool createDefault = false) const;
@@ -203,7 +203,7 @@ public:
void createTransitioner();
void prepareVisibleItemTransitions();
- void prepareRemoveTransitions(QHash<QQmlChangeSet::MoveKey, FxViewItem *> *removedItems);
+ void prepareRemoveTransitions(QMultiHash<QQmlChangeSet::MoveKey, FxViewItem *> *removedItems);
bool prepareNonVisibleItemTransition(FxViewItem *item, const QRectF &viewBounds);
void viewItemTransitionFinished(QQuickItemViewTransitionableItem *item) override;
@@ -238,15 +238,17 @@ public:
q->polish();
}
- void releaseVisibleItems() {
+ void releaseVisibleItems(QQmlInstanceModel::ReusableFlag reusableFlag) {
// make a copy and clear the visibleItems first to avoid destroyed
// items being accessed during the loop (QTBUG-61294)
const QList<FxViewItem *> oldVisible = visibleItems;
visibleItems.clear();
for (FxViewItem *item : oldVisible)
- releaseItem(item);
+ releaseItem(item, reusableFlag);
}
+ virtual QQuickItemViewAttached *getAttachedObject(const QObject *) const { return nullptr; }
+
QPointer<QQmlInstanceModel> model;
QVariant modelVariant;
int itemCount;
@@ -260,6 +262,12 @@ public:
MovementReason moveReason;
QList<FxViewItem *> visibleItems;
+ qreal firstVisibleItemPosition = 0;
+ void storeFirstVisibleItemPosition() {
+ if (!visibleItems.isEmpty()) {
+ firstVisibleItemPosition = visibleItems.constFirst()->position();
+ }
+ }
int visibleIndex;
int currentIndex;
FxViewItem *currentItem;
@@ -282,6 +290,11 @@ public:
QQmlComponent *footerComponent;
FxViewItem *footer;
+ // Reusing delegate items cannot be on by default for backwards compatibility.
+ // Reusing an item will e.g mean that Component.onCompleted will only be called for an
+ // item when it's created and not when it's reused, which will break legacy applications.
+ QQmlInstanceModel::ReusableFlag reusableFlag = QQmlInstanceModel::NotReusable;
+
struct MovedItem {
FxViewItem *item;
QQmlChangeSet::MoveKey moveKey;
diff --git a/src/quick/items/qquicklistview.cpp b/src/quick/items/qquicklistview.cpp
index 23925871e5..badd2efe29 100644
--- a/src/quick/items/qquicklistview.cpp
+++ b/src/quick/items/qquicklistview.cpp
@@ -92,7 +92,7 @@ public:
FxViewItem *newViewItem(int index, QQuickItem *item) override;
void initializeViewItem(FxViewItem *item) override;
- bool releaseItem(FxViewItem *item) override;
+ bool releaseItem(FxViewItem *item, QQmlInstanceModel::ReusableFlag reusableFlag) override;
void repositionItemAt(FxViewItem *item, int index, qreal sizeBuffer) override;
void repositionPackageItemAt(QQuickItem *item, int index) override;
void resetFirstItemPosition(qreal pos = 0.0) override;
@@ -139,6 +139,8 @@ public:
bool flick(QQuickItemViewPrivate::AxisData &data, qreal minExtent, qreal maxExtent, qreal vSize,
QQuickTimeLineCallback::Callback fixupCallback, qreal velocity) override;
+ QQuickItemViewAttached *getAttachedObject(const QObject *object) const override;
+
QQuickListView::Orientation orient;
qreal visiblePos;
qreal averageSize;
@@ -634,15 +636,15 @@ void QQuickListViewPrivate::initializeViewItem(FxViewItem *item)
}
}
-bool QQuickListViewPrivate::releaseItem(FxViewItem *item)
+bool QQuickListViewPrivate::releaseItem(FxViewItem *item, QQmlInstanceModel::ReusableFlag reusableFlag)
{
if (!item || !model)
- return QQuickItemViewPrivate::releaseItem(item);
+ return QQuickItemViewPrivate::releaseItem(item, reusableFlag);
QPointer<QQuickItem> it = item->item;
QQuickListViewAttached *att = static_cast<QQuickListViewAttached*>(item->attached);
- bool released = QQuickItemViewPrivate::releaseItem(item);
+ bool released = QQuickItemViewPrivate::releaseItem(item, reusableFlag);
if (released && it && att && att->m_sectionItem) {
// We hold no more references to this item
int i = 0;
@@ -682,7 +684,7 @@ bool QQuickListViewPrivate::addVisibleItems(qreal fillFrom, qreal fillTo, qreal
int newModelIdx = qBound(0, modelIndex + count, model->count());
count = newModelIdx - modelIndex;
if (count) {
- releaseVisibleItems();
+ releaseVisibleItems(reusableFlag);
modelIndex = newModelIdx;
visibleIndex = modelIndex;
visiblePos = itemEnd + count * (averageSize + spacing);
@@ -737,7 +739,7 @@ void QQuickListViewPrivate::removeItem(FxViewItem *item)
releasePendingTransition.append(item);
} else {
qCDebug(lcItemViewDelegateLifecycle) << "\treleasing stationary item" << item->index << (QObject *)(item->item);
- releaseItem(item);
+ releaseItem(item, reusableFlag);
}
}
@@ -808,6 +810,7 @@ void QQuickListViewPrivate::layoutVisibleItems(int fromModelIndex)
FxViewItem *firstItem = *visibleItems.constBegin();
bool fixedCurrent = currentItem && firstItem->item == currentItem->item;
+ firstVisibleItemPosition = firstItem->position();
qreal sum = firstItem->size();
qreal pos = firstItem->position() + firstItem->size() + spacing;
firstItem->setVisible(firstItem->endPosition() >= from && firstItem->position() <= to);
@@ -1771,6 +1774,12 @@ void QQuickListViewPrivate::setSectionHelper(QQmlContext *context, QQuickItem *s
sectionItem->setProperty("section", section);
}
+QQuickItemViewAttached *QQuickListViewPrivate::getAttachedObject(const QObject *object) const
+{
+ QObject *attachedObject = qmlAttachedPropertiesObject<QQuickListView>(object);
+ return static_cast<QQuickItemViewAttached *>(attachedObject);
+}
+
//----------------------------------------------------------------------------
/*!
@@ -1919,6 +1928,39 @@ void QQuickListViewPrivate::setSectionHelper(QQmlContext *context, QQuickItem *s
of type \l [QML] {real}, so it is possible to set fractional
values like \c 0.1.
+ \section1 Reusing items
+
+ Since 5.15, ListView can be configured to recycle items instead of instantiating
+ from the \l delegate whenever new rows are flicked into view. This approach improves
+ performance, depending on the complexity of the delegate. Reusing
+ items is off by default (for backwards compatibility reasons), but can be switched
+ on by setting the \l reuseItems property to \c true.
+
+ When an item is flicked out, it moves to the \e{reuse pool}, which is an
+ internal cache of unused items. When this happens, the \l ListView::pooled
+ signal is emitted to inform the item about it. Likewise, when the item is
+ moved back from the pool, the \l ListView::reused signal is emitted.
+
+ Any item properties that come from the model are updated when the
+ item is reused. This includes \c index and \c row, but also
+ any model roles.
+
+ \note Avoid storing any state inside a delegate. If you do, reset it
+ manually on receiving the \l ListView::reused signal.
+
+ If an item has timers or animations, consider pausing them on receiving
+ the \l ListView::pooled signal. That way you avoid using the CPU resources
+ for items that are not visible. Likewise, if an item has resources that
+ cannot be reused, they could be freed up.
+
+ \note While an item is in the pool, it might still be alive and respond
+ to connected signals and bindings.
+
+ The following example shows a delegate that animates a spinning rectangle. When
+ it is pooled, the animation is temporarily paused:
+
+ \snippet qml/listview/reusabledelegate.qml 0
+
\sa {QML Data Models}, GridView, PathView, {Qt Quick Examples - Views}
*/
QQuickListView::QQuickListView(QQuickItem *parent)
@@ -2085,6 +2127,20 @@ QQuickListView::~QQuickListView()
*/
/*!
+ \qmlproperty bool QtQuick::ListView::reuseItems
+
+ This property enables you to reuse items that are instantiated
+ from the \l delegate. If set to \c false, any currently
+ pooled items are destroyed.
+
+ This property is \c false by default.
+
+ \since 5.15
+
+ \sa {Reusing items}, ListView::pooled, ListView::reused
+*/
+
+/*!
\qmlproperty Component QtQuick::ListView::highlight
This property holds the component to use as the highlight.
@@ -2095,7 +2151,7 @@ QQuickListView::~QQuickListView()
highlight item is \c 0.
\sa highlightItem, highlightFollowsCurrentItem,
- {Qt Quick Examples - Views#Highlight}{ListView highlight example},
+ {Qt Quick Examples - Views#Using Highlight}{ListView Highlight Example},
{Stacking Order in ListView}
*/
@@ -2654,21 +2710,25 @@ void QQuickListView::setSnapMode(SnapMode mode)
This property determines the positioning of the \l{headerItem}{header item}.
- The possible values are:
- \list
- \li ListView.InlineHeader (default) - the header is positioned in the beginning
+ \value ListView.InlineHeader (default) The header is positioned at the beginning
of the content and moves together with the content like an ordinary item.
- \li ListView.OverlayHeader - the header is positioned in the beginning of the view.
- \li ListView.PullBackHeader - the header is positioned in the beginning of the view.
+
+ \value ListView.OverlayHeader The header is positioned at the beginning of the view.
+
+ \value ListView.PullBackHeader The header is positioned at the beginning of the view.
The header can be pushed away by moving the content forwards, and pulled back by
moving the content backwards.
- \endlist
\note This property has no effect on the \l {QQuickItem::z}{stacking order}
of the header. For example, if the header should be shown above the
\l delegate items when using \c ListView.OverlayHeader, its Z value
should be set to a value higher than that of the delegates. For more
information, see \l {Stacking Order in ListView}.
+
+ \note If \c headerPositioning is not set to \c ListView.InlineHeader, the
+ user cannot press and flick the list from the header. In any case, the
+ \l{headerItem}{header item} may contain items or event handlers that
+ provide custom handling of mouse or touch input.
*/
QQuickListView::HeaderPositioning QQuickListView::headerPositioning() const
{
@@ -2697,21 +2757,25 @@ void QQuickListView::setHeaderPositioning(QQuickListView::HeaderPositioning posi
This property determines the positioning of the \l{footerItem}{footer item}.
- The possible values are:
- \list
- \li ListView.InlineFooter (default) - the footer is positioned in the end
+ \value ListView.InlineFooter (default) The footer is positioned at the end
of the content and moves together with the content like an ordinary item.
- \li ListView.OverlayFooter - the footer is positioned in the end of the view.
- \li ListView.PullBackFooter - the footer is positioned in the end of the view.
+
+ \value ListView.OverlayFooter The footer is positioned at the end of the view.
+
+ \value ListView.PullBackFooter The footer is positioned at the end of the view.
The footer can be pushed away by moving the content backwards, and pulled back by
moving the content forwards.
- \endlist
\note This property has no effect on the \l {QQuickItem::z}{stacking order}
of the footer. For example, if the footer should be shown above the
\l delegate items when using \c ListView.OverlayFooter, its Z value
should be set to a value higher than that of the delegates. For more
information, see \l {Stacking Order in ListView}.
+
+ \note If \c footerPositioning is not set to \c ListView.InlineFooter, the
+ user cannot press and flick the list from the footer. In any case, the
+ \l{footerItem}{footer item} may contain items or event handlers that
+ provide custom handling of mouse or touch input.
*/
QQuickListView::FooterPositioning QQuickListView::footerPositioning() const
{
@@ -3185,6 +3249,13 @@ void QQuickListView::keyPressEvent(QKeyEvent *event)
void QQuickListView::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
{
Q_D(QQuickListView);
+
+ if (d->model) {
+ // When the view changes size, we force the pool to
+ // shrink by releasing all pooled items.
+ d->model->drainReusableItemsPool(0);
+ }
+
if (d->isRightToLeft()) {
// maintain position relative to the right edge
qreal dx = newGeometry.width() - oldGeometry.width();
@@ -3592,6 +3663,23 @@ QQuickListViewAttached *QQuickListView::qmlAttachedProperties(QObject *obj)
return new QQuickListViewAttached(obj);
}
+bool QQuickListView::contains(const QPointF &point) const
+{
+ bool ret = QQuickItemView::contains(point);
+ // QTBUG-74046: if a mouse press "falls through" a floating header or footer, don't allow dragging the list from there
+ if (ret) {
+ if (auto header = headerItem()) {
+ if (headerPositioning() != QQuickListView::InlineHeader && header->contains(mapToItem(header, point)))
+ ret = false;
+ }
+ if (auto footer = footerItem()) {
+ if (footerPositioning() != QQuickListView::InlineFooter && footer->contains(mapToItem(footer, point)))
+ ret = false;
+ }
+ }
+ return ret;
+}
+
QT_END_NAMESPACE
#include "moc_qquicklistview_p.cpp"
diff --git a/src/quick/items/qquicklistview_p.h b/src/quick/items/qquicklistview_p.h
index 1c72a10190..be21b93155 100644
--- a/src/quick/items/qquicklistview_p.h
+++ b/src/quick/items/qquicklistview_p.h
@@ -179,6 +179,8 @@ public:
static QQuickListViewAttached *qmlAttachedProperties(QObject *);
+ bool contains(const QPointF &point) const override;
+
public Q_SLOTS:
void incrementCurrentIndex();
void decrementCurrentIndex();
diff --git a/src/quick/items/qquickmousearea.cpp b/src/quick/items/qquickmousearea.cpp
index ddf34798d7..57d55172e3 100644
--- a/src/quick/items/qquickmousearea.cpp
+++ b/src/quick/items/qquickmousearea.cpp
@@ -62,7 +62,7 @@ Q_DECLARE_LOGGING_CATEGORY(DBG_HOVER_TRACE)
QQuickMouseAreaPrivate::QQuickMouseAreaPrivate()
: enabled(true), scrollGestureEnabled(true), hovered(false), longPress(false),
moved(false), stealMouse(false), doubleClick(false), preventStealing(false),
- propagateComposedEvents(false), overThreshold(false), pressed(nullptr),
+ propagateComposedEvents(false), overThreshold(false),
pressAndHoldInterval(-1)
#if QT_CONFIG(quick_draganddrop)
, drag(nullptr)
@@ -942,6 +942,12 @@ void QQuickMouseArea::mouseUngrabEvent()
ungrabMouse();
}
+void QQuickMouseArea::touchUngrabEvent()
+{
+ // allow a Pointer Handler to steal the grab from MouseArea
+ ungrabMouse();
+}
+
bool QQuickMouseArea::sendMouseEvent(QMouseEvent *event)
{
Q_D(QQuickMouseArea);
diff --git a/src/quick/items/qquickmousearea_p.h b/src/quick/items/qquickmousearea_p.h
index 3d4d113215..806cc41369 100644
--- a/src/quick/items/qquickmousearea_p.h
+++ b/src/quick/items/qquickmousearea_p.h
@@ -170,6 +170,7 @@ protected:
void mouseDoubleClickEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
void mouseUngrabEvent() override;
+ void touchUngrabEvent() override;
void hoverEnterEvent(QHoverEvent *event) override;
void hoverMoveEvent(QHoverEvent *event) override;
void hoverLeaveEvent(QHoverEvent *event) override;
diff --git a/src/quick/items/qquickmultipointtoucharea.cpp b/src/quick/items/qquickmultipointtoucharea.cpp
index b02e58fae4..9a371207ce 100644
--- a/src/quick/items/qquickmultipointtoucharea.cpp
+++ b/src/quick/items/qquickmultipointtoucharea.cpp
@@ -42,6 +42,7 @@
#include <private/qsgadaptationlayer_p.h>
#include <private/qevent_p.h>
#include <private/qquickitem_p.h>
+#include <private/qquickwindow_p.h>
#include <private/qguiapplication_p.h>
#include <QEvent>
#include <QMouseEvent>
@@ -448,6 +449,7 @@ QQuickMultiPointTouchArea::QQuickMultiPointTouchArea(QQuickItem *parent)
: QQuickItem(parent),
_minimumTouchPoints(0),
_maximumTouchPoints(INT_MAX),
+ _touchMouseDevice(nullptr),
_stealMouse(false),
_mouseEnabled(true)
{
@@ -586,10 +588,10 @@ void QQuickMultiPointTouchArea::updateTouchData(QEvent *event)
bool ended = false;
bool moved = false;
bool started = false;
- bool isMouseEvent = false;
clearTouchLists();
QList<QTouchEvent::TouchPoint> touchPoints;
+ QQuickWindowPrivate *windowPriv = QQuickWindowPrivate::get(window());
switch (event->type()) {
case QEvent::TouchBegin:
@@ -598,6 +600,9 @@ void QQuickMultiPointTouchArea::updateTouchData(QEvent *event)
touchPoints = static_cast<QTouchEvent*>(event)->touchPoints();
break;
case QEvent::MouseButtonPress:
+ _mouseQpaTouchPoint = QTouchEvent::TouchPoint(windowPriv->touchMouseId);
+ _touchMouseDevice = windowPriv->touchMouseDevice->qTouchDevice();
+ Q_FALLTHROUGH();
case QEvent::MouseMove:
case QEvent::MouseButtonRelease: {
QMouseEvent *me = static_cast<QMouseEvent*>(event);
@@ -617,7 +622,6 @@ void QQuickMultiPointTouchArea::updateTouchData(QEvent *event)
_mouseQpaTouchPoint.setState(Qt::TouchPointPressed);
}
touchPoints << _mouseQpaTouchPoint;
- isMouseEvent = true;
break;
}
default:
@@ -625,11 +629,6 @@ void QQuickMultiPointTouchArea::updateTouchData(QEvent *event)
break;
}
- if (!isMouseEvent && _mouseTouchPoint) {
- QQuickWindow *c = window();
- if (c && c->mouseGrabberItem() == this)
- touchPoints << _mouseQpaTouchPoint;
- }
int numTouchPoints = touchPoints.count();
//always remove released touches, and make sure we handle all releases before adds.
for (const QTouchEvent::TouchPoint &p : qAsConst(touchPoints)) {
@@ -756,7 +755,7 @@ void QQuickMultiPointTouchArea::addTouchPoint(const QMouseEvent *e)
dtp = new QQuickTouchPoint(false);
updateTouchPoint(dtp, e);
dtp->setPressed(true);
- _touchPoints.insert(-1, dtp);
+ _touchPoints.insert(_touchMouseDevice && _mouseQpaTouchPoint.id() > 0 ? _mouseQpaTouchPoint.id() : -1, dtp);
_pressedTouchPoints.append(dtp);
_mouseTouchPoint = dtp;
}
@@ -839,8 +838,7 @@ void QQuickMultiPointTouchArea::mousePressEvent(QMouseEvent *event)
setKeepMouseGrab(false);
event->setAccepted(true);
_mousePos = event->localPos();
-
- if (event->source() != Qt::MouseEventNotSynthesized)
+ if (event->source() != Qt::MouseEventNotSynthesized && event->source() != Qt::MouseEventSynthesizedByQt)
return;
if (_touchPoints.count() >= _minimumTouchPoints - 1 && _touchPoints.count() < _maximumTouchPoints) {
@@ -855,7 +853,7 @@ void QQuickMultiPointTouchArea::mouseMoveEvent(QMouseEvent *event)
return;
}
- if (event->source() != Qt::MouseEventNotSynthesized)
+ if (event->source() != Qt::MouseEventNotSynthesized && event->source() != Qt::MouseEventSynthesizedByQt)
return;
_movedTouchPoints.clear();
@@ -870,7 +868,7 @@ void QQuickMultiPointTouchArea::mouseReleaseEvent(QMouseEvent *event)
return;
}
- if (event->source() != Qt::MouseEventNotSynthesized)
+ if (event->source() != Qt::MouseEventNotSynthesized && event->source() != Qt::MouseEventSynthesizedByQt)
return;
if (_mouseTouchPoint) {
@@ -880,18 +878,16 @@ void QQuickMultiPointTouchArea::mouseReleaseEvent(QMouseEvent *event)
_mouseTouchPoint = nullptr;
}
- QQuickWindow *c = window();
- if (c && c->mouseGrabberItem() == this)
- ungrabMouse();
setKeepMouseGrab(false);
}
-void QQuickMultiPointTouchArea::ungrab()
+void QQuickMultiPointTouchArea::ungrab(bool normalRelease)
{
_stealMouse = false;
setKeepMouseGrab(false);
setKeepTouchGrab(false);
- ungrabTouchPoints();
+ if (!normalRelease)
+ ungrabTouchPoints();
if (_touchPoints.count()) {
for (QObject *obj : qAsConst(_touchPoints))
@@ -969,13 +965,25 @@ bool QQuickMultiPointTouchArea::childMouseEventFilter(QQuickItem *receiver, QEve
if (!isEnabled() || !isVisible())
return QQuickItem::childMouseEventFilter(receiver, event);
switch (event->type()) {
- case QEvent::MouseButtonPress:
+ case QEvent::MouseButtonPress: {
+ QQuickWindowPrivate *windowPriv = QQuickWindowPrivate::get(window());
+ // If we already got a chance to filter the touchpoint that generated this synth-mouse-press,
+ // and chose not to filter it, ignore it now, too.
+ if (static_cast<QMouseEvent *>(event)->source() == Qt::MouseEventSynthesizedByQt &&
+ _lastFilterableTouchPointIds.contains(windowPriv->touchMouseId))
+ return false;
+ } Q_FALLTHROUGH();
case QEvent::MouseMove:
case QEvent::MouseButtonRelease:
return sendMouseEvent(static_cast<QMouseEvent *>(event));
- break;
case QEvent::TouchBegin:
+ _lastFilterableTouchPointIds.clear();
+ Q_FALLTHROUGH();
case QEvent::TouchUpdate:
+ for (auto tp : static_cast<QTouchEvent*>(event)->touchPoints()) {
+ if (tp.state() == Qt::TouchPointPressed)
+ _lastFilterableTouchPointIds << tp.id();
+ }
if (!shouldFilter(event))
return false;
updateTouchData(event);
@@ -984,7 +992,7 @@ bool QQuickMultiPointTouchArea::childMouseEventFilter(QQuickItem *receiver, QEve
if (!shouldFilter(event))
return false;
updateTouchData(event);
- ungrab();
+ ungrab(true);
}
break;
default:
diff --git a/src/quick/items/qquickmultipointtoucharea_p.h b/src/quick/items/qquickmultipointtoucharea_p.h
index 7506be10a1..42b42a45c5 100644
--- a/src/quick/items/qquickmultipointtoucharea_p.h
+++ b/src/quick/items/qquickmultipointtoucharea_p.h
@@ -289,7 +289,7 @@ protected:
#endif
private:
- void ungrab();
+ void ungrab(bool normalRelease = false);
QMap<int,QQuickTouchPoint*> _touchPrototypes; //TouchPoints defined in QML
QMap<int,QObject*> _touchPoints; //All current touch points
QList<QObject*> _releasedTouchPoints;
@@ -297,8 +297,10 @@ private:
QList<QObject*> _movedTouchPoints;
int _minimumTouchPoints;
int _maximumTouchPoints;
+ QVector<int> _lastFilterableTouchPointIds;
QPointer<QQuickTouchPoint> _mouseTouchPoint; // exists when mouse button is down and _mouseEnabled is true; null otherwise
QTouchEvent::TouchPoint _mouseQpaTouchPoint; // synthetic QPA touch point to hold state and position of the mouse
+ const QTouchDevice *_touchMouseDevice;
QPointF _mousePos;
bool _stealMouse;
bool _mouseEnabled;
diff --git a/src/quick/items/qquickpainteditem.cpp b/src/quick/items/qquickpainteditem.cpp
index cee73ac2e8..df5ec0c3f2 100644
--- a/src/quick/items/qquickpainteditem.cpp
+++ b/src/quick/items/qquickpainteditem.cpp
@@ -133,7 +133,6 @@ QQuickPaintedItemPrivate::QQuickPaintedItemPrivate()
, contentsScale(1.0)
, fillColor(Qt::transparent)
, renderTarget(QQuickPaintedItem::Image)
- , performanceHints(nullptr)
, opaquePainting(false)
, antialiasing(false)
, mipmap(false)
diff --git a/src/quick/items/qquickpathview.cpp b/src/quick/items/qquickpathview.cpp
index 6976665134..7ebe174a9e 100644
--- a/src/quick/items/qquickpathview.cpp
+++ b/src/quick/items/qquickpathview.cpp
@@ -1922,9 +1922,10 @@ bool QQuickPathView::childMouseEventFilter(QQuickItem *i, QEvent *e)
void QQuickPathView::mouseUngrabEvent()
{
Q_D(QQuickPathView);
- if (d->stealMouse) {
+ if (d->stealMouse ||
+ (!d->flicking && d->snapMode != NoSnap && !qFuzzyCompare(qRound(d->offset), d->offset))) {
// if our mouse grab has been removed (probably by a Flickable),
- // fix our state
+ // or if we should snap but haven't done it, fix our state
d->stealMouse = false;
setKeepMouseGrab(false);
d->timer.invalidate();
diff --git a/src/quick/items/qquickscreen.cpp b/src/quick/items/qquickscreen.cpp
index b17e505f4f..ed2d7eda3e 100644
--- a/src/quick/items/qquickscreen.cpp
+++ b/src/quick/items/qquickscreen.cpp
@@ -424,9 +424,6 @@ QScreen *QQuickScreenInfo::wrappedScreen() const
QQuickScreenAttached::QQuickScreenAttached(QObject* attachee)
: QQuickScreenInfo(attachee)
- , m_window(nullptr)
- , m_updateMask(nullptr)
- , m_updateMaskSet(false)
{
m_attachee = qobject_cast<QQuickItem*>(attachee);
diff --git a/src/quick/items/qquickscreen_p.h b/src/quick/items/qquickscreen_p.h
index 61cbdf7387..b4266d78c7 100644
--- a/src/quick/items/qquickscreen_p.h
+++ b/src/quick/items/qquickscreen_p.h
@@ -152,10 +152,10 @@ protected Q_SLOTS:
void screenChanged(QScreen*);
private:
- QQuickWindow* m_window;
+ QQuickWindow* m_window = nullptr;
QQuickItem* m_attachee;
Qt::ScreenOrientations m_updateMask;
- bool m_updateMaskSet;
+ bool m_updateMaskSet = false;
};
class Q_QUICK_PRIVATE_EXPORT QQuickScreen : public QObject
diff --git a/src/quick/items/qquickshadereffect.cpp b/src/quick/items/qquickshadereffect.cpp
index b3c8386fd9..e71e6dc698 100644
--- a/src/quick/items/qquickshadereffect.cpp
+++ b/src/quick/items/qquickshadereffect.cpp
@@ -179,201 +179,11 @@ QT_BEGIN_NAMESPACE
is a URL with the \c file or \c qrc schema, it is treated as a file
reference and the source code is read from the specified file.
- \section1 Direct3D and HLSL
-
- Direct3D backends provide ShaderEffect support with HLSL. The Direct3D 12
- backend requires using at least Shader Model 5.0 both for vertex and pixel
- shaders. When necessary, GraphicsInfo.shaderType can be used to decide
- at runtime what kind of value to assign to \l fragmentShader or
- \l vertexShader.
-
- All concepts described above for OpenGL and GLSL apply to Direct3D and HLSL
- as well. There are however a number of notable practical differences, which
- are the following:
-
- Instead of uniforms, HLSL shaders are expected to use a single constant
- buffer, assigned to register \c b0. The special names \c qt_Matrix,
- \c qt_Opacity, and \c qt_SubRect_<name> function the same way as with GLSL.
- All other members of the buffer are expected to map to properties in the
- ShaderEffect item.
-
- \note The buffer layout must be compatible for both shaders. This means
- that application-provided shaders must make sure \c qt_Matrix and
- \c qt_Opacity are included in the buffer, starting at offset 0, when custom
- code is provided for one type of shader only, leading to ShaderEffect
- providing the other shader. This is due to ShaderEffect's built-in shader code
- declaring a constant buffer containing \c{float4x4 qt_Matrix; float qt_Opacity;}.
-
- Unlike GLSL's attributes, no names are used for vertex input elements.
- Therefore qt_Vertex and qt_MultiTexCoord0 are not relevant. Instead, the
- standard Direct3D semantics, \c POSITION and \c TEXCOORD (or \c TEXCOORD0)
- are used for identifying the correct input layout.
-
- Unlike GLSL's samplers, texture and sampler objects are separate in HLSL.
- Shaders are expected to expect 2D, non-array, non-multisample textures.
- Both the texture and sampler binding points are expected to be sequential
- and start from 0 (meaning registers \c{t0, t1, ...}, and \c{s0, s1, ...},
- respectively). Unlike with OpenGL, samplers are not mapped to Qt Quick item
- properties and therefore the name of the sampler is not relevant. Instead,
- it is the textures that map to properties referencing \l Image or
- \l ShaderEffectSource items.
-
- Unlike OpenGL, backends for modern APIs will typically prefer offline
- compilation and shipping pre-compiled bytecode with applications instead of
- inlined shader source strings. In this case the string properties for
- vertex and fragment shaders are treated as URLs referring to local files or
- files shipped via the Qt resource system.
-
- To check at runtime what is supported, use the
- GraphicsInfo.shaderSourceType and GraphicsInfo.shaderCompilationType
- properties. Note that these are bitmasks, because some backends may support
- multiple approaches.
-
- In case of Direct3D 12, all combinations are supported. If the vertexShader
- and fragmentShader properties form a valid URL with the \c file or \c qrc
- schema, the bytecode or HLSL source code is read from the specified file.
- The type of the file contents is detected automatically. Otherwise, the
- string is treated as HLSL source code and is compiled at runtime, assuming
- Shader Model 5.0 and an entry point of \c{"main"}. This allows dynamically
- constructing shader strings. However, whenever the shader source code is
- static, it is strongly recommended to pre-compile to bytecode using the
- \c fxc tool and refer to these files from QML. This will be a lot more
- efficient at runtime and allows catching syntax errors in the shaders at
- compile time.
-
- Unlike OpenGL, the Direct3D backend is able to perform runtime shader
- compilation on dedicated threads. This is managed transparently to the
- applications, and means that ShaderEffect items that contain HLSL source
- strings do not block the rendering or other parts of the application until
- the bytecode is ready.
-
- Using files with bytecode is more flexible also when it comes to the entry
- point name (it can be anything, not limited to \c main) and the shader
- model (it can be something newer than 5.0, for instance 5.1).
-
- \table 70%
- \row
- \li \qml
- import QtQuick 2.0
-
- Rectangle {
- width: 200; height: 100
- Row {
- Image { id: img;
- sourceSize { width: 100; height: 100 } source: "qt-logo.png" }
- ShaderEffect {
- width: 100; height: 100
- property variant src: img
- fragmentShader: "qrc:/effect_ps.cso"
- }
- }
- }
- \endqml
- \row
- \li where \c effect_ps.cso is the compiled bytecode for the following HLSL shader:
- \code
- cbuffer ConstantBuffer : register(b0)
- {
- float4x4 qt_Matrix;
- float qt_Opacity;
- };
- Texture2D src : register(t0);
- SamplerState srcSampler : register(s0);
- float4 ExamplePixelShader(float4 position : SV_POSITION, float2 coord : TEXCOORD0) : SV_TARGET
- {
- float4 tex = src.Sample(srcSampler, coord);
- float3 col = dot(tex.rgb, float3(0.344, 0.5, 0.156));
- return float4(col, tex.a) * qt_Opacity;
- }
- \endcode
- \endtable
-
- The above is equivalent to the OpenGL example presented earlier. The vertex
- shader is provided implicitly by ShaderEffect. Note that the output of the
- pixel shader is using premultiplied alpha and that \c qt_Matrix is present
- in the constant buffer at offset 0, even though the pixel shader does not
- use the value.
-
- If desired, the HLSL source code can be placed directly into the QML
- source, similarly to how its done with GLSL. The only difference in this
- case is the entry point name, which must be \c main when using inline
- source strings.
-
- Alternatively, we could also have referred to a file containing the source
- of the effect instead of the compiled bytecode version.
-
- Some effects will want to provide a vertex shader as well. Below is a
- similar effect with both the vertex and fragment shader provided by the
- application. This time the colorization factor is provided by the QML item
- instead of hardcoding it in the shader. This can allow, among others,
- animating the value using QML's and Qt Quick's standard facilities.
-
- \table 70%
- \row
- \li \qml
- import QtQuick 2.0
-
- Rectangle {
- width: 200; height: 100
- Row {
- Image { id: img;
- sourceSize { width: 100; height: 100 } source: "qt-logo.png" }
- ShaderEffect {
- width: 100; height: 100
- property variant src: img
- property variant color: Qt.vector3d(0.344, 0.5, 0.156)
- vertexShader: "qrc:/effect_vs.cso"
- fragmentShader: "qrc:/effect_ps.cso"
- }
- }
- }
- \endqml
- \row
- \li where \c effect_vs.cso and \c effect_ps.cso are the compiled bytecode
- for \c ExampleVertexShader and \c ExamplePixelShader. The source code is
- presented as one snippet here, the shaders can however be placed in
- separate source files as well.
- \code
- cbuffer ConstantBuffer : register(b0)
- {
- float4x4 qt_Matrix;
- float qt_Opacity;
- float3 color;
- };
- Texture2D src : register(t0);
- SamplerState srcSampler : register(s0);
- struct PSInput
- {
- float4 position : SV_POSITION;
- float2 coord : TEXCOORD0;
- };
- PSInput ExampleVertexShader(float4 position : POSITION, float2 coord : TEXCOORD0)
- {
- PSInput result;
- result.position = mul(qt_Matrix, position);
- result.coord = coord;
- return result;
- }
- float4 ExamplePixelShader(PSInput input) : SV_TARGET
- {
- float4 tex = src.Sample(srcSampler, coord);
- float3 col = dot(tex.rgb, color);
- return float4(col, tex.a) * qt_Opacity;
- }
- \endcode
- \endtable
-
- \note With OpenGL the \c y coordinate runs from bottom to top whereas with
- Direct 3D it goes top to bottom. For shader effect sources Qt Quick hides
- the difference by treating QtQuick::ShaderEffectSource::textureMirroring as
- appropriate, meaning texture coordinates in HLSL version of the shaders
- will not need any adjustments compared to the equivalent GLSL code.
-
\section1 Cross-platform, Cross-API ShaderEffect Items
- Some applications will want to be functional with multiple accelerated
- graphics backends. This has consequences for ShaderEffect items because the
- supported shading languages may vary from backend to backend.
+ Some applications will want to be functional with multiple graphics
+ APIs. This has consequences for ShaderEffect items because the supported
+ shading languages may vary from backend to backend.
There are two approaches to handle this: either write conditional property
values based on GraphicsInfo.shaderType, or use file selectors. In practice
@@ -404,20 +214,8 @@ QT_BEGIN_NAMESPACE
gl_FragColor = vec4(vec3(dot(tex.rgb,
vec3(0.344, 0.5, 0.156))),
tex.a) * qt_Opacity;"
- : GraphicsInfo.shaderType === GraphicsInfo.HLSL ?
- "cbuffer ConstantBuffer : register(b0)
- {
- float4x4 qt_Matrix;
- float qt_Opacity;
- };
- Texture2D src : register(t0);
- SamplerState srcSampler : register(s0);
- float4 ExamplePixelShader(float4 position : SV_POSITION, float2 coord : TEXCOORD0) : SV_TARGET
- {
- float4 tex = src.Sample(srcSampler, coord);
- float3 col = dot(tex.rgb, float3(0.344, 0.5, 0.156));
- return float4(col, tex.a) * qt_Opacity;
- }"
+ : GraphicsInfo.shaderType === GraphicsInfo.RhiShader ?
+ "qrc:/shader.frag.qsb"
: ""
}
}
@@ -429,15 +227,14 @@ QT_BEGIN_NAMESPACE
reported by GraphicsInfo is not up-to-date until the ShaderEffect item gets
associated with a QQuickWindow. Before that, the reported value is
GraphicsInfo.UnknownShadingLanguage. The alternative is to place the GLSL
- source code and the compiled D3D bytecode into the files
- \c{shaders/effect.frag} and \c{shaders/+hlsl/effect.frag}, include them in
- the Qt resource system, and let the ShaderEffect's internal QFileSelector
- do its job. The selector-less version is the GLSL source, while the \c hlsl
- selector is used when running on the D3D12 backend. The file under
- \c{+hlsl} can then contain either HLSL source code or compiled bytecode
- from the \c fxc tool. Additionally, when using a version 3.2 or newer core
- profile context with OpenGL, GLSL sources with a core profile compatible
- syntax can be placed under \c{+glslcore}.
+ source code and the RHI-compatible shader pack into the files
+ \c{shaders/effect.frag} and \c{shaders/+qsb/effect.frag}, include them in
+ the Qt resource system, and let the ShaderEffect's internal QFileSelector do
+ its job. The selector-less version is the GLSL source, while the \c qsb
+ selector is used when running with the Qt graphics abstraction (RHI).
+ Additionally, when using a version 3.2 or newer core profile context with
+ OpenGL, GLSL sources with a core profile compatible syntax can be placed
+ under \c{+glslcore}.
\qml
import QtQuick 2.8 // for GraphicsInfo
@@ -552,11 +349,7 @@ QQuickShaderEffect::~QQuickShaderEffect()
With GLSL the default shader expects the texture coordinate to be passed
from the vertex shader as \c{varying highp vec2 qt_TexCoord0}, and it
- samples from a sampler2D named \c source. With HLSL the texture is named
- \c source, while the vertex shader is expected to provide
- \c{float2 coord : TEXCOORD0} in its output in addition to
- \c{float4 position : SV_POSITION} (names can differ since linking is done
- based on the semantics).
+ samples from a sampler2D named \c source.
\sa vertexShader, GraphicsInfo
*/
@@ -593,9 +386,7 @@ void QQuickShaderEffect::setFragmentShader(const QByteArray &code)
filesystem or bundled with the executable via Qt's resource system.
With GLSL the default shader passes the texture coordinate along to the
- fragment shader as \c{varying highp vec2 qt_TexCoord0}. With HLSL it is
- enough to use the standard \c TEXCOORD0 semantic, for example
- \c{float2 coord : TEXCOORD0}.
+ fragment shader as \c{varying highp vec2 qt_TexCoord0}.
\sa fragmentShader, GraphicsInfo
*/
diff --git a/src/quick/items/qquickstateoperations.cpp b/src/quick/items/qquickstateoperations.cpp
index 07767d377d..ddaa1979b6 100644
--- a/src/quick/items/qquickstateoperations.cpp
+++ b/src/quick/items/qquickstateoperations.cpp
@@ -600,11 +600,6 @@ class QQuickAnchorSetPrivate : public QObjectPrivate
{
Q_DECLARE_PUBLIC(QQuickAnchorSet)
public:
- QQuickAnchorSetPrivate()
- : usedAnchors(nullptr), resetAnchors(nullptr)
- {
- }
-
QQuickAnchors::Anchors usedAnchors;
QQuickAnchors::Anchors resetAnchors;
diff --git a/src/quick/items/qquicktableview.cpp b/src/quick/items/qquicktableview.cpp
index 295c6898bc..fd511bc2ee 100644
--- a/src/quick/items/qquicktableview.cpp
+++ b/src/quick/items/qquicktableview.cpp
@@ -520,10 +520,10 @@ int QQuickTableViewPrivate::nextVisibleEdgeIndexAroundLoadedTable(Qt::Edge edge)
// visible, and should be loaded next if the content item moves.
int startIndex = -1;
switch (edge) {
- case Qt::LeftEdge: startIndex = loadedColumns.firstKey() - 1; break;
- case Qt::RightEdge: startIndex = loadedColumns.lastKey() + 1; break;
- case Qt::TopEdge: startIndex = loadedRows.firstKey() - 1; break;
- case Qt::BottomEdge: startIndex = loadedRows.lastKey() + 1; break;
+ case Qt::LeftEdge: startIndex = leftColumn() - 1; break;
+ case Qt::RightEdge: startIndex = rightColumn() + 1; break;
+ case Qt::TopEdge: startIndex = topRow() - 1; break;
+ case Qt::BottomEdge: startIndex = bottomRow() + 1; break;
}
return nextVisibleEdgeIndex(edge, startIndex);
@@ -628,6 +628,12 @@ void QQuickTableViewPrivate::updateContentWidth()
return;
}
+ if (loadedItems.isEmpty()) {
+ QBoolBlocker fixupGuard(inUpdateContentSize, true);
+ q->QQuickFlickable::setContentWidth(0);
+ return;
+ }
+
const int nextColumn = nextVisibleEdgeIndexAroundLoadedTable(Qt::RightEdge);
const int columnsRemaining = nextColumn == kEdgeIndexAtEnd ? 0 : tableSize.width() - nextColumn;
const qreal remainingColumnWidths = columnsRemaining * averageEdgeSize.width();
@@ -655,6 +661,12 @@ void QQuickTableViewPrivate::updateContentHeight()
return;
}
+ if (loadedItems.isEmpty()) {
+ QBoolBlocker fixupGuard(inUpdateContentSize, true);
+ q->QQuickFlickable::setContentHeight(0);
+ return;
+ }
+
const int nextRow = nextVisibleEdgeIndexAroundLoadedTable(Qt::BottomEdge);
const int rowsRemaining = nextRow == kEdgeIndexAtEnd ? 0 : tableSize.height() - nextRow;
const qreal remainingRowHeights = rowsRemaining * averageEdgeSize.height();
@@ -871,17 +883,13 @@ void QQuickTableViewPrivate::syncLoadedTableRectFromLoadedTable()
loadedTableInnerRect = QRectF(topLeftRect.bottomRight(), bottomRightRect.topLeft());
}
-void QQuickTableViewPrivate::forceLayout()
+QQuickTableViewPrivate::RebuildOptions QQuickTableViewPrivate::checkForVisibilityChanges()
{
- if (loadedItems.isEmpty())
- return;
-
- clearEdgeSizeCache();
- RebuildOptions rebuildOptions = RebuildOption::LayoutOnly;
-
// Go through all columns from first to last, find the columns that used
// to be hidden and not loaded, and check if they should become visible
// (and vice versa). If there is a change, we need to rebuild.
+ RebuildOptions rebuildOptions = RebuildOption::None;
+
for (int column = leftColumn(); column <= rightColumn(); ++column) {
const bool wasVisibleFromBefore = loadedColumns.contains(column);
const bool isVisibleNow = !qFuzzyIsNull(getColumnWidth(column));
@@ -916,6 +924,28 @@ void QQuickTableViewPrivate::forceLayout()
break;
}
+ return rebuildOptions;
+}
+
+void QQuickTableViewPrivate::forceLayout()
+{
+ if (loadedItems.isEmpty())
+ return;
+
+ clearEdgeSizeCache();
+ RebuildOptions rebuildOptions = RebuildOption::None;
+
+ const QSize actualTableSize = calculateTableSize();
+ if (tableSize != actualTableSize) {
+ // This can happen if the app is calling forceLayout while
+ // the model is updated, but before we're notified about it.
+ rebuildOptions = RebuildOption::All;
+ } else {
+ rebuildOptions = checkForVisibilityChanges();
+ if (!rebuildOptions)
+ rebuildOptions = RebuildOption::LayoutOnly;
+ }
+
scheduleRebuildTable(rebuildOptions);
auto rootView = rootSyncView();
@@ -1036,21 +1066,16 @@ void QQuickTableViewPrivate::releaseLoadedItems(QQmlTableInstanceModel::Reusable
void QQuickTableViewPrivate::releaseItem(FxTableItem *fxTableItem, QQmlTableInstanceModel::ReusableFlag reusableFlag)
{
Q_Q(QQuickTableView);
+ // Note that fxTableItem->item might already have been destroyed, in case
+ // the item is owned by the QML context rather than the model (e.g ObjectModel etc).
auto item = fxTableItem->item;
- Q_TABLEVIEW_ASSERT(item, fxTableItem->index);
if (fxTableItem->ownItem) {
+ Q_TABLEVIEW_ASSERT(item, fxTableItem->index);
delete item;
- } else {
- // Only QQmlTableInstanceModel supports reusing items
- auto releaseFlag = tableModel ?
- tableModel->release(item, reusableFlag) :
- model->release(item);
-
- if (releaseFlag != QQmlInstanceModel::Destroyed) {
- // When items are not destroyed, it typically means that the
- // item is reused, or that the model is an ObjectModel. If
- // so, we just hide the item instead.
+ } else if (item) {
+ auto releaseFlag = model->release(item, reusableFlag);
+ if (releaseFlag == QQmlInstanceModel::Pooled) {
fxTableItem->setVisible(false);
// If the item (or a descendant) has focus, remove it, so
@@ -1183,19 +1208,14 @@ qreal QQuickTableViewPrivate::sizeHintForRow(int row)
return rowHeight;
}
-void QQuickTableViewPrivate::calculateTableSize()
+void QQuickTableViewPrivate::updateTableSize()
{
// tableSize is the same as row and column count, and will always
// be the same as the number of rows and columns in the model.
Q_Q(QQuickTableView);
- QSize prevTableSize = tableSize;
- if (tableModel)
- tableSize = QSize(tableModel->columns(), tableModel->rows());
- else if (model)
- tableSize = QSize(1, model->count());
- else
- tableSize = QSize(0, 0);
+ const QSize prevTableSize = tableSize;
+ tableSize = calculateTableSize();
if (prevTableSize.width() != tableSize.width())
emit q->columnsChanged();
@@ -1203,6 +1223,16 @@ void QQuickTableViewPrivate::calculateTableSize()
emit q->rowsChanged();
}
+QSize QQuickTableViewPrivate::calculateTableSize()
+{
+ if (tableModel)
+ return QSize(tableModel->columns(), tableModel->rows());
+ else if (model)
+ return QSize(1, model->count());
+
+ return QSize(0, 0);
+}
+
qreal QQuickTableViewPrivate::getColumnLayoutWidth(int column)
{
// Return the column width specified by the application, or go
@@ -1229,9 +1259,9 @@ qreal QQuickTableViewPrivate::getColumnLayoutWidth(int column)
if (qIsNaN(columnWidth) || columnWidth <= 0) {
if (!layoutWarningIssued) {
layoutWarningIssued = true;
- qmlWarning(q_func()) << "the delegate's implicitHeight needs to be greater than zero";
+ qmlWarning(q_func()) << "the delegate's implicitWidth needs to be greater than zero";
}
- columnWidth = kDefaultRowHeight;
+ columnWidth = kDefaultColumnWidth;
}
return columnWidth;
@@ -1589,6 +1619,8 @@ void QQuickTableViewPrivate::processRebuildTable()
if (rebuildState == RebuildState::VerifyTable) {
if (loadedItems.isEmpty()) {
qCDebug(lcTableViewDelegateLifecycle()) << "no items loaded!";
+ updateContentWidth();
+ updateContentHeight();
rebuildState = RebuildState::Done;
} else if (!moveToNextRebuildState()) {
return;
@@ -1755,16 +1787,18 @@ void QQuickTableViewPrivate::calculateTopLeft(QPoint &topLeftCell, QPointF &topL
void QQuickTableViewPrivate::beginRebuildTable()
{
- calculateTableSize();
+ updateTableSize();
QPoint topLeft;
QPointF topLeftPos;
calculateTopLeft(topLeft, topLeftPos);
- if (rebuildOptions & RebuildOption::All)
- releaseLoadedItems(QQmlTableInstanceModel::NotReusable);
- else if (rebuildOptions & RebuildOption::ViewportOnly)
- releaseLoadedItems(reusableFlag);
+ if (!loadedItems.isEmpty()) {
+ if (rebuildOptions & RebuildOption::All)
+ releaseLoadedItems(QQmlTableInstanceModel::NotReusable);
+ else if (rebuildOptions & RebuildOption::ViewportOnly)
+ releaseLoadedItems(reusableFlag);
+ }
if (rebuildOptions & RebuildOption::All) {
origin = QPointF(0, 0);
@@ -1879,7 +1913,7 @@ void QQuickTableViewPrivate::loadEdge(Qt::Edge edge, QQmlIncubator::IncubationMo
const int edgeIndex = nextVisibleEdgeIndexAroundLoadedTable(edge);
qCDebug(lcTableViewDelegateLifecycle) << edge << edgeIndex;
- const QList<int> visibleCells = edge & (Qt::LeftEdge | Qt::RightEdge)
+ const auto visibleCells = edge & (Qt::LeftEdge | Qt::RightEdge)
? loadedRows.keys() : loadedColumns.keys();
loadRequest.begin(edge, edgeIndex, visibleCells, incubationMode);
processLoadRequest();
@@ -2016,7 +2050,8 @@ bool QQuickTableViewPrivate::updateTableRecursive()
if (!updateComplete)
return false;
- for (auto syncChild : qAsConst(syncChildren)) {
+ const auto children = syncChildren;
+ for (auto syncChild : children) {
auto syncChild_d = syncChild->d_func();
syncChild_d->scheduledRebuildOptions |= rebuildOptions;
@@ -2196,13 +2231,15 @@ void QQuickTableViewPrivate::syncRebuildOptions()
void QQuickTableViewPrivate::syncDelegate()
{
- if (tableModel && assignedDelegate == tableModel->delegate())
+ if (!tableModel) {
+ // Only the tableModel uses the delegate assigned to a
+ // TableView. DelegateModel has it's own delegate, and
+ // ObjectModel etc. doesn't use one.
return;
+ }
- if (!tableModel)
- createWrapperModel();
-
- tableModel->setDelegate(assignedDelegate);
+ if (assignedDelegate != tableModel->delegate())
+ tableModel->setDelegate(assignedDelegate);
}
void QQuickTableViewPrivate::syncModel()
@@ -2210,8 +2247,10 @@ void QQuickTableViewPrivate::syncModel()
if (modelVariant == assignedModel)
return;
- if (model)
+ if (model) {
disconnectFromModel();
+ releaseLoadedItems(QQmlTableInstanceModel::NotReusable);
+ }
modelVariant = assignedModel;
QVariant effectiveModelVariant = modelVariant;
@@ -2291,6 +2330,7 @@ void QQuickTableViewPrivate::syncSyncView()
void QQuickTableViewPrivate::connectToModel()
{
+ Q_Q(QQuickTableView);
Q_TABLEVIEW_ASSERT(model, "");
QObjectPrivate::connect(model, &QQmlInstanceModel::createdItem, this, &QQuickTableViewPrivate::itemCreatedCallback);
@@ -2300,6 +2340,8 @@ void QQuickTableViewPrivate::connectToModel()
const auto tm = tableModel.data();
QObjectPrivate::connect(tm, &QQmlTableInstanceModel::itemPooled, this, &QQuickTableViewPrivate::itemPooledCallback);
QObjectPrivate::connect(tm, &QQmlTableInstanceModel::itemReused, this, &QQuickTableViewPrivate::itemReusedCallback);
+ // Connect atYEndChanged to a function that fetches data if more is available
+ QObjectPrivate::connect(q, &QQuickTableView::atYEndChanged, this, &QQuickTableViewPrivate::fetchMoreData);
}
if (auto const aim = model->abstractItemModel()) {
@@ -2323,6 +2365,7 @@ void QQuickTableViewPrivate::connectToModel()
void QQuickTableViewPrivate::disconnectFromModel()
{
+ Q_Q(QQuickTableView);
Q_TABLEVIEW_ASSERT(model, "");
QObjectPrivate::disconnect(model, &QQmlInstanceModel::createdItem, this, &QQuickTableViewPrivate::itemCreatedCallback);
@@ -2332,6 +2375,7 @@ void QQuickTableViewPrivate::disconnectFromModel()
const auto tm = tableModel.data();
QObjectPrivate::disconnect(tm, &QQmlTableInstanceModel::itemPooled, this, &QQuickTableViewPrivate::itemPooledCallback);
QObjectPrivate::disconnect(tm, &QQmlTableInstanceModel::itemReused, this, &QQuickTableViewPrivate::itemReusedCallback);
+ QObjectPrivate::disconnect(q, &QQuickTableView::atYEndChanged, this, &QQuickTableViewPrivate::fetchMoreData);
}
if (auto const aim = model->abstractItemModel()) {
@@ -2413,6 +2457,14 @@ void QQuickTableViewPrivate::layoutChangedCallback(const QList<QPersistentModelI
scheduleRebuildTable(RebuildOption::ViewportOnly);
}
+void QQuickTableViewPrivate::fetchMoreData()
+{
+ if (tableModel && tableModel->canFetchMore()) {
+ tableModel->fetchMore();
+ scheduleRebuildTable(RebuildOption::ViewportOnly);
+ }
+}
+
void QQuickTableViewPrivate::modelResetCallback()
{
scheduleRebuildTable(RebuildOption::All);
@@ -2678,6 +2730,23 @@ void QQuickTableView::setContentHeight(qreal height)
QQuickFlickable::setContentHeight(height);
}
+/*!
+ \qmlproperty TableView QtQuick::TableView::syncView
+
+ If this property of a TableView is set to another TableView, both the
+ tables will synchronize with regard to flicking, column widths/row heights,
+ and spacing according to \l syncDirection.
+
+ If \l syncDirection contains \l Qt.Horizontal, current tableView's column
+ widths, column spacing, and horizontal flicking movement synchronizes with
+ syncView's.
+
+ If \l syncDirection contains \l Qt.Vertical, current tableView's row
+ heights, row spacing, and vertical flicking movement synchronizes with
+ syncView's.
+
+ \sa syncDirection
+*/
QQuickTableView *QQuickTableView::syncView() const
{
return d_func()->assignedSyncView;
@@ -2695,6 +2764,24 @@ void QQuickTableView::setSyncView(QQuickTableView *view)
emit syncViewChanged();
}
+/*!
+ \qmlproperty Qt::Orientations QtQuick::TableView::syncDirection
+
+ If the \l syncView is set on a TableView, this property controls
+ synchronization of flicking direction(s) for both tables. The default is \c
+ {Qt.Horizontal | Qt.Vertical}, which means that if you flick either table
+ in either direction, the other table is flicked the same amount in the
+ same direction.
+
+ This property and \l syncView can be used to make two tableViews
+ synchronize with each other smoothly in flicking regardless of the different
+ overshoot/undershoot, velocity, acceleration/deceleration or rebound
+ animation, and so on.
+
+ A typical use case is to make several headers flick along with the table.
+
+ \sa syncView, headerView
+*/
Qt::Orientations QQuickTableView::syncDirection() const
{
return d_func()->assignedSyncDirection;
diff --git a/src/quick/items/qquicktableview_p_p.h b/src/quick/items/qquicktableview_p_p.h
index b66ac66dec..7c81882d44 100644
--- a/src/quick/items/qquicktableview_p_p.h
+++ b/src/quick/items/qquicktableview_p_p.h
@@ -54,6 +54,7 @@
#include "qquicktableview_p.h"
#include <QtCore/qtimer.h>
+#include <QtCore/private/qflatmap_p.h>
#include <QtQmlModels/private/qqmltableinstancemodel_p.h>
#include <QtQml/private/qqmlincubator_p.h>
#include <QtQmlModels/private/qqmlchangeset_p.h>
@@ -119,7 +120,7 @@ public:
qCDebug(lcTableViewDelegateLifecycle()) << "begin top-left:" << toString();
}
- void begin(Qt::Edge edgeToLoad, int edgeIndex, const QList<int> visibleCellsInEdge, QQmlIncubator::IncubationMode incubationMode)
+ void begin(Qt::Edge edgeToLoad, int edgeIndex, const QVector<int> visibleCellsInEdge, QQmlIncubator::IncubationMode incubationMode)
{
Q_ASSERT(!m_active);
m_active = true;
@@ -169,7 +170,7 @@ public:
private:
Qt::Edge m_edge = Qt::Edge(0);
- QList<int> m_visibleCellsInEdge;
+ QVector<int> m_visibleCellsInEdge;
int m_edgeIndex = 0;
int m_currentIndex = 0;
bool m_active = false;
@@ -246,8 +247,8 @@ public:
// we need to fill up with more rows/columns. loadedTableInnerRect describes the pixels
// that the loaded table covers if you remove one row/column on each side of the table, and
// is used to determine rows/columns that are no longer visible and can be unloaded.
- QMap<int, int> loadedColumns;
- QMap<int, int> loadedRows;
+ QFlatMap<int, int> loadedColumns;
+ QFlatMap<int, int> loadedRows;
QRectF loadedTableOuterRect;
QRectF loadedTableInnerRect;
@@ -322,7 +323,8 @@ public:
qreal sizeHintForColumn(int column);
qreal sizeHintForRow(int row);
- void calculateTableSize();
+ QSize calculateTableSize();
+ void updateTableSize();
inline bool isColumnHidden(int column);
inline bool isRowHidden(int row);
@@ -332,10 +334,10 @@ public:
qreal getColumnWidth(int column);
qreal getRowHeight(int row);
- inline int topRow() const { return loadedRows.firstKey(); }
- inline int bottomRow() const { return loadedRows.lastKey(); }
- inline int leftColumn() const { return loadedColumns.firstKey(); }
- inline int rightColumn() const { return loadedColumns.lastKey(); }
+ inline int topRow() const { return loadedRows.cbegin().key(); }
+ inline int bottomRow() const { return (--loadedRows.cend()).key(); }
+ inline int leftColumn() const { return loadedColumns.cbegin().key(); }
+ inline int rightColumn() const { return (--loadedColumns.cend()).key(); }
QQuickTableView *rootSyncView() const;
@@ -351,6 +353,7 @@ public:
void updateContentWidth();
void updateContentHeight();
void updateAverageEdgeSize();
+ RebuildOptions checkForVisibilityChanges();
void forceLayout();
void updateExtents();
@@ -424,6 +427,8 @@ public:
void setLocalViewportY(qreal contentY);
void syncViewportPosRecursive();
+ void fetchMoreData();
+
void _q_componentFinalized();
void registerCallbackWhenBindingsAreEvaluated();
diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp
index a83b9beaa5..eda2029783 100644
--- a/src/quick/items/qquicktextinput.cpp
+++ b/src/quick/items/qquicktextinput.cpp
@@ -1140,7 +1140,10 @@ QString QQuickTextInput::inputMask() const
void QQuickTextInput::setInputMask(const QString &im)
{
Q_D(QQuickTextInput);
- if (d->inputMask() == im)
+ QString canonicalInputMask = im;
+ if (im.lastIndexOf(QLatin1Char(';')) == -1)
+ canonicalInputMask.append(QLatin1String("; "));
+ if (d->inputMask() == canonicalInputMask)
return;
d->setInputMask(im);
@@ -3954,7 +3957,7 @@ bool QQuickTextInputPrivate::isValidInput(QChar key, QChar mask) const
return true;
break;
case 'X':
- if (key.isPrint())
+ if (key.isPrint() && key != m_blank)
return true;
break;
case 'x':
diff --git a/src/quick/items/qquickview.cpp b/src/quick/items/qquickview.cpp
index 9998dc3605..84488dcaca 100644
--- a/src/quick/items/qquickview.cpp
+++ b/src/quick/items/qquickview.cpp
@@ -240,13 +240,12 @@ void QQuickView::setSource(const QUrl& url)
}
/*!
- Sets the initial properties with which the QML component gets initialized after
- calling \l QQuickView::setSource.
+ Sets the initial properties \a initialProperties with which the QML
+ component gets initialized after calling \l QQuickView::setSource().
+ \note You can only use this function to initialize top-level properties.
- Note that you can only use this function to initialize toplevel properties.
-
- \sa QQmlComponent::createWithInitialProperties
+ \sa QQmlComponent::createWithInitialProperties()
\since 5.14
*/
void QQuickView::setInitialProperties(const QVariantMap &initialProperties)
diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp
index 9b45750a3b..2eee98a738 100644
--- a/src/quick/items/qquickwindow.cpp
+++ b/src/quick/items/qquickwindow.cpp
@@ -527,7 +527,7 @@ void QQuickWindowPrivate::renderSceneGraph(const QSize &size, const QSize &surfa
renderer->setDeviceRect(rect);
renderer->setViewportRect(rect);
const bool flipY = rhi ? !rhi->isYUpInNDC() : false;
- QSGAbstractRenderer::MatrixTransformFlags matrixFlags = 0;
+ QSGAbstractRenderer::MatrixTransformFlags matrixFlags;
if (flipY)
matrixFlags |= QSGAbstractRenderer::MatrixTransformFlipY;
renderer->setProjectionMatrixToRect(QRectF(QPoint(0, 0), logicalSize), matrixFlags);
@@ -1768,6 +1768,8 @@ bool QQuickWindow::event(QEvent *e)
if (e->type() == QEvent::Type(QQuickWindowPrivate::FullUpdateRequest))
update();
+ else if (e->type() == QEvent::Type(QQuickWindowPrivate::TriggerContextCreationFailure))
+ d->windowManager->handleContextCreationFailure(this);
return QWindow::event(e);
}
@@ -3254,10 +3256,9 @@ bool QQuickWindowPrivate::isRenderable() const
void QQuickWindowPrivate::contextCreationFailureMessage(const QSurfaceFormat &format,
QString *translatedMessage,
- QString *untranslatedMessage,
- bool isEs)
+ QString *untranslatedMessage)
{
- const QString contextType = QLatin1String(isEs ? "EGL" : "OpenGL");
+ const QString contextType = QLatin1String("OpenGL");
QString formatStr;
QDebug(&formatStr) << format;
#if defined(Q_OS_WIN32)
@@ -3282,6 +3283,16 @@ void QQuickWindowPrivate::contextCreationFailureMessage(const QSurfaceFormat &fo
#endif // !Q_OS_WIN32
}
+void QQuickWindowPrivate::rhiCreationFailureMessage(const QString &backendName,
+ QString *translatedMessage,
+ QString *untranslatedMessage)
+{
+ const char msg[] = QT_TRANSLATE_NOOP("QQuickWindow",
+ "Failed to initialize graphics backend for %1.");
+ *translatedMessage = QQuickWindow::tr(msg).arg(backendName);
+ *untranslatedMessage = QString::fromLatin1(msg).arg(backendName);
+}
+
#if QT_DEPRECATED_SINCE(5, 8)
// ### Qt6: remove
@@ -4034,7 +4045,7 @@ QImage QQuickWindow::grabWindow()
Q_D(QQuickWindow);
if (!isVisible() && !d->renderControl) {
- // backends like software and d3d12 can grab regardless of the window state
+ // backends like software can grab regardless of the window state
if (d->windowManager && (d->windowManager->flags() & QSGRenderLoop::SupportsGrabWithoutExpose))
return d->windowManager->grab(this);
}
@@ -4444,7 +4455,7 @@ bool QQuickWindow::clearBeforeRendering() const
QSGTexture *QQuickWindow::createTextureFromImage(const QImage &image) const
{
- return createTextureFromImage(image, nullptr);
+ return createTextureFromImage(image, {});
}
@@ -4603,7 +4614,7 @@ QSGTexture *QQuickWindow::createTextureFromId(uint id, const QSize &size, Create
\a nativeLayout is only used for APIs like Vulkan. When applicable, it must
specify the current image layout, such as, a VkImageLayout value.
- \sa sceneGraphInitialized(), QSGTextures
+ \sa sceneGraphInitialized(), QSGTexture, QSGTexture::nativeTexture()
\since 5.14
*/
@@ -5503,9 +5514,6 @@ void QQuickWindow::setSceneGraphBackend(QSGRendererInterface::GraphicsApi api)
case QSGRendererInterface::Software:
setSceneGraphBackend(QStringLiteral("software"));
break;
- case QSGRendererInterface::Direct3D12:
- setSceneGraphBackend(QStringLiteral("d3d12"));
- break;
default:
break;
}
diff --git a/src/quick/items/qquickwindow_p.h b/src/quick/items/qquickwindow_p.h
index af7d65dac5..ef10ba3fe8 100644
--- a/src/quick/items/qquickwindow_p.h
+++ b/src/quick/items/qquickwindow_p.h
@@ -112,7 +112,8 @@ public:
Q_DECLARE_PUBLIC(QQuickWindow)
enum CustomEvents {
- FullUpdateRequest = QEvent::User + 1
+ FullUpdateRequest = QEvent::User + 1,
+ TriggerContextCreationFailure = QEvent::User + 2
};
static inline QQuickWindowPrivate *get(QQuickWindow *c) { return c->d_func(); }
@@ -206,8 +207,8 @@ public:
};
Q_DECLARE_FLAGS(FocusOptions, FocusOption)
- void setFocusInScope(QQuickItem *scope, QQuickItem *item, Qt::FocusReason reason, FocusOptions = nullptr);
- void clearFocusInScope(QQuickItem *scope, QQuickItem *item, Qt::FocusReason reason, FocusOptions = nullptr);
+ void setFocusInScope(QQuickItem *scope, QQuickItem *item, Qt::FocusReason reason, FocusOptions = { });
+ void clearFocusInScope(QQuickItem *scope, QQuickItem *item, Qt::FocusReason reason, FocusOptions = { });
static void notifyFocusChangesRecur(QQuickItem **item, int remaining);
void clearFocusObject() override;
@@ -300,8 +301,10 @@ public:
static void contextCreationFailureMessage(const QSurfaceFormat &format,
QString *translatedMessage,
- QString *untranslatedMessage,
- bool isEs);
+ QString *untranslatedMessage);
+ static void rhiCreationFailureMessage(const QString &backendName,
+ QString *translatedMessage,
+ QString *untranslatedMessage);
static void emitBeforeRenderPassRecording(void *ud);
static void emitAfterRenderPassRecording(void *ud);
diff --git a/src/quick/qtquick.tracepoints b/src/quick/qtquick.tracepoints
new file mode 100644
index 0000000000..f6518444d2
--- /dev/null
+++ b/src/quick/qtquick.tracepoints
@@ -0,0 +1,48 @@
+QSG_renderWindow_entry()
+QSG_renderWindow_exit()
+QSG_renderScene_entry()
+QSG_renderScene_exit()
+QSG_syncAndRender_entry()
+QSG_syncAndRender_exit()
+QSG_polishAndSync_entry()
+QSG_polishAndSync_exit()
+QSG_preprocess_entry()
+QSG_preprocess_exit()
+QSG_update_entry()
+QSG_update_exit()
+
+QSG_polishItems_entry()
+QSG_polishItems_exit()
+QSG_sync_entry()
+QSG_sync_exit()
+QSG_wait_entry()
+QSG_wait_exit()
+QSG_render_entry()
+QSG_render_exit()
+QSG_swap_entry()
+QSG_swap_exit()
+QSG_animations_entry()
+QSG_animations_exit()
+
+QSG_texture_prepare_entry()
+QSG_texture_prepare_exit()
+QSG_texture_bind_entry()
+QSG_texture_bind_exit()
+QSG_texture_delete_entry()
+QSG_texture_delete_exit()
+QSG_texture_upload_entry()
+QSG_texture_upload_exit()
+QSG_texture_mipmap_entry()
+QSG_texture_mipmap_exit()
+
+QSG_binding_entry()
+QSG_binding_exit()
+QSG_prepareMaterial_entry()
+QSG_prepareMaterial_exit()
+
+QSGDistanceFieldGlyphCache_update_entry(int count)
+QSGDistanceFieldGlyphCache_update_exit()
+QSGDistanceFieldGlyphCache_glyphRender_entry()
+QSGDistanceFieldGlyphCache_glyphRender_exit()
+QSGDistanceFieldGlyphCache_glyphStore_entry()
+QSGDistanceFieldGlyphCache_glyphStore_exit()
diff --git a/src/quick/qtquick2.cpp b/src/quick/qtquick2.cpp
index 527742ab8a..4ba7e896db 100644
--- a/src/quick/qtquick2.cpp
+++ b/src/quick/qtquick2.cpp
@@ -39,7 +39,6 @@
#include "qtquick2_p.h"
#include <private/qqmlengine_p.h>
-#include <private/qquickutilmodule_p.h>
#include <private/qquickvaluetypes_p.h>
#include <private/qquickitemsmodule_p.h>
#include <private/qquickaccessiblefactory_p.h>
@@ -55,6 +54,10 @@
#include <qqmlproperty.h>
#include <QtCore/QPointer>
+#if QT_CONFIG(shortcut)
+Q_DECLARE_METATYPE(QKeySequence::StandardKey)
+#endif
+
QT_BEGIN_NAMESPACE
#if !QT_CONFIG(qml_debug)
@@ -182,10 +185,12 @@ void QQmlQtQuick2Module::defineModule()
{
QQuick_initializeProviders();
- QQuickUtilModule::defineModule();
- QQuickItemsModule::defineModule();
+#if QT_CONFIG(shortcut)
+ qRegisterMetaType<QKeySequence::StandardKey>();
+#endif
QQuickValueTypes::registerValueTypes();
+ QQuickItemsModule::defineModule();
#if QT_CONFIG(accessibility)
QAccessible::installFactory(&qQuickAccessibleFactory);
diff --git a/src/quick/quick.pro b/src/quick/quick.pro
index 700f794af4..42bb4b6ec8 100644
--- a/src/quick/quick.pro
+++ b/src/quick/quick.pro
@@ -4,6 +4,9 @@ QT = core-private gui-private qml-private qmlmodels-private
qtConfig(qml-network): \
QT_PRIVATE += network
+TRACEPOINT_PROVIDER = $$PWD/qtquick.tracepoints
+CONFIG += qt_tracepoints
+
DEFINES += QT_NO_URL_CAST_FROM_STRING QT_NO_INTEGER_EVENT_COORDINATES
msvc:DEFINES *= _CRT_SECURE_NO_WARNINGS
solaris-cc*:QMAKE_CXXFLAGS_RELEASE -= -O2
@@ -47,3 +50,9 @@ SOURCES += qtquick2.cpp
INCLUDEPATH += $$PWD
load(qt_module)
+
+QMLTYPES_FILENAME = plugins.qmltypes
+QMLTYPES_INSTALL_DIR = $$[QT_INSTALL_QML]/QtQuick.2
+QML_IMPORT_NAME = QtQuick
+IMPORT_VERSION = 2.15
+CONFIG += qmltypes install_qmltypes install_metatypes
diff --git a/src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer.cpp b/src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer.cpp
index ca620965a8..49151551b1 100644
--- a/src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer.cpp
+++ b/src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer.cpp
@@ -77,6 +77,12 @@ QSGSoftwareRenderableNode *QSGAbstractSoftwareRenderer::renderableNode(QSGNode *
return m_nodes.value(node, nullptr);
}
+// Used by GammaRay
+const QVector<QSGSoftwareRenderableNode*> &QSGAbstractSoftwareRenderer::renderableNodes() const
+{
+ return m_renderableNodes;
+}
+
void QSGAbstractSoftwareRenderer::addNodeMapping(QSGNode *node, QSGSoftwareRenderableNode *renderableNode)
{
m_nodes.insert(node, renderableNode);
diff --git a/src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer_p.h b/src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer_p.h
index e1b477ab97..d4bfb5a9f7 100644
--- a/src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer_p.h
+++ b/src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer_p.h
@@ -87,6 +87,7 @@ protected:
QRect backgroundRect();
// only known after calling optimizeRenderList()
bool isOpaque() const { return m_isOpaque; }
+ const QVector<QSGSoftwareRenderableNode*> &renderableNodes() const;
private:
void nodeAdded(QSGNode *node);
diff --git a/src/quick/scenegraph/adaptations/software/qsgsoftwarecontext.cpp b/src/quick/scenegraph/adaptations/software/qsgsoftwarecontext.cpp
index 7b5ee66df6..f1d0e28fc8 100644
--- a/src/quick/scenegraph/adaptations/software/qsgsoftwarecontext.cpp
+++ b/src/quick/scenegraph/adaptations/software/qsgsoftwarecontext.cpp
@@ -206,12 +206,12 @@ QSGRendererInterface::ShaderType QSGSoftwareContext::shaderType() const
QSGRendererInterface::ShaderCompilationTypes QSGSoftwareContext::shaderCompilationType() const
{
- return nullptr;
+ return {};
}
QSGRendererInterface::ShaderSourceTypes QSGSoftwareContext::shaderSourceType() const
{
- return nullptr;
+ return {};
}
void *QSGSoftwareContext::getResource(QQuickWindow *window, Resource resource) const
diff --git a/src/quick/scenegraph/adaptations/software/qsgsoftwareinternalimagenode.cpp b/src/quick/scenegraph/adaptations/software/qsgsoftwareinternalimagenode.cpp
index da5d39db20..214f7d790b 100644
--- a/src/quick/scenegraph/adaptations/software/qsgsoftwareinternalimagenode.cpp
+++ b/src/quick/scenegraph/adaptations/software/qsgsoftwareinternalimagenode.cpp
@@ -465,7 +465,7 @@ void QSGSoftwareInternalImageNode::paint(QPainter *painter)
m_targetRect.right() - m_innerTargetRect.right(), m_targetRect.bottom() - m_innerTargetRect.bottom());
QSGSoftwareHelpers::QTileRules tilerules(getTileRule(m_subSourceRect.width()), getTileRule(m_subSourceRect.height()));
QSGSoftwareHelpers::qDrawBorderPixmap(painter, m_targetRect.toRect(), margins, pm, QRect(0, 0, pm.width(), pm.height()),
- margins, tilerules, QSGSoftwareHelpers::QDrawBorderPixmap::DrawingHints(nullptr));
+ margins, tilerules, QSGSoftwareHelpers::QDrawBorderPixmap::DrawingHints{});
return;
}
diff --git a/src/quick/scenegraph/adaptations/software/qsgsoftwarepublicnodes.cpp b/src/quick/scenegraph/adaptations/software/qsgsoftwarepublicnodes.cpp
index 141d8f3c6d..a10a94125c 100644
--- a/src/quick/scenegraph/adaptations/software/qsgsoftwarepublicnodes.cpp
+++ b/src/quick/scenegraph/adaptations/software/qsgsoftwarepublicnodes.cpp
@@ -205,7 +205,7 @@ void QSGSoftwareNinePatchNode::paint(QPainter *painter)
painter->drawPixmap(m_bounds, m_pixmap, QRectF(0, 0, m_pixmap.width(), m_pixmap.height()));
else
QSGSoftwareHelpers::qDrawBorderPixmap(painter, m_bounds.toRect(), m_margins, m_pixmap, QRect(0, 0, m_pixmap.width(), m_pixmap.height()),
- m_margins, Qt::StretchTile, QSGSoftwareHelpers::QDrawBorderPixmap::DrawingHints(nullptr));
+ m_margins, Qt::StretchTile, QSGSoftwareHelpers::QDrawBorderPixmap::DrawingHints{});
}
QRectF QSGSoftwareNinePatchNode::bounds() const
diff --git a/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderloop.cpp b/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderloop.cpp
index c97dcb9326..c010e0cae5 100644
--- a/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderloop.cpp
+++ b/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderloop.cpp
@@ -52,6 +52,8 @@
#include <QtGui/QBackingStore>
+#include <qtquick_tracepoints_p.h>
+
QT_BEGIN_NAMESPACE
QSGSoftwareRenderLoop::QSGSoftwareRenderLoop()
@@ -133,20 +135,25 @@ void QSGSoftwareRenderLoop::renderWindow(QQuickWindow *window, bool isNewExpose)
if (!m_windows.contains(window))
return;
}
+
+ Q_TRACE_SCOPE(QSG_renderWindow)
QElapsedTimer renderTimer;
qint64 renderTime = 0, syncTime = 0, polishTime = 0;
bool profileFrames = QSG_RASTER_LOG_TIME_RENDERLOOP().isDebugEnabled();
if (profileFrames)
renderTimer.start();
Q_QUICK_SG_PROFILE_START(QQuickProfiler::SceneGraphPolishFrame);
+ Q_TRACE(QSG_polishItems_entry);
cd->polishItems();
if (profileFrames)
polishTime = renderTimer.nsecsElapsed();
+ Q_TRACE(QSG_polishItems_exit);
Q_QUICK_SG_PROFILE_SWITCH(QQuickProfiler::SceneGraphPolishFrame,
QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphPolishPolish);
+ Q_TRACE(QSG_sync_entry);
emit window->afterAnimating();
@@ -155,8 +162,10 @@ void QSGSoftwareRenderLoop::renderWindow(QQuickWindow *window, bool isNewExpose)
if (profileFrames)
syncTime = renderTimer.nsecsElapsed();
+ Q_TRACE(QSG_sync_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphRenderLoopSync);
+ Q_TRACE(QSG_render_entry);
//Tell the renderer about the windows backing store
auto softwareRenderer = static_cast<QSGSoftwareRenderer*>(cd->renderer);
@@ -167,8 +176,10 @@ void QSGSoftwareRenderLoop::renderWindow(QQuickWindow *window, bool isNewExpose)
if (profileFrames)
renderTime = renderTimer.nsecsElapsed();
+ Q_TRACE(QSG_render_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphRenderLoopRender);
+ Q_TRACE(QSG_swap_entry);
if (data.grabOnly) {
grabContent = m_backingStores[window]->handle()->toImage();
@@ -187,6 +198,7 @@ void QSGSoftwareRenderLoop::renderWindow(QQuickWindow *window, bool isNewExpose)
qint64 swapTime = 0;
if (profileFrames)
swapTime = renderTimer.nsecsElapsed();
+ Q_TRACE(QSG_swap_exit);
Q_QUICK_SG_PROFILE_END(QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphRenderLoopSwap);
diff --git a/src/quick/scenegraph/adaptations/software/qsgsoftwarethreadedrenderloop.cpp b/src/quick/scenegraph/adaptations/software/qsgsoftwarethreadedrenderloop.cpp
index c6b463bb02..1de9415dd0 100644
--- a/src/quick/scenegraph/adaptations/software/qsgsoftwarethreadedrenderloop.cpp
+++ b/src/quick/scenegraph/adaptations/software/qsgsoftwarethreadedrenderloop.cpp
@@ -60,6 +60,8 @@
#include <QtGui/QBackingStore>
#include <QtQuick/QQuickWindow>
+#include <qtquick_tracepoints_p.h>
+
QT_BEGIN_NAMESPACE
// Passed from the RL to the RT when a window is removed obscured and should be
@@ -421,7 +423,7 @@ void QSGSoftwareRenderThread::sync(bool inExpose)
qCDebug(QSG_RASTER_LOG_RENDERLOOP, "RT - sync");
mutex.lock();
- Q_ASSERT_X(renderLoop->lockedForSync, "QSGD3D12RenderThread::sync()", "sync triggered with gui not locked");
+ Q_ASSERT_X(renderLoop->lockedForSync, "QSGSoftwareRenderThread::sync()", "sync triggered with gui not locked");
if (exposedWindow) {
QQuickWindowPrivate *wd = QQuickWindowPrivate::get(exposedWindow);
@@ -457,6 +459,8 @@ void QSGSoftwareRenderThread::sync(bool inExpose)
void QSGSoftwareRenderThread::syncAndRender()
{
+ Q_TRACE_SCOPE(QSG_syncAndRender);
+ Q_TRACE(QSG_sync_entry);
Q_QUICK_SG_PROFILE_START(QQuickProfiler::SceneGraphRenderLoopFrame);
QElapsedTimer waitTimer;
@@ -475,6 +479,7 @@ void QSGSoftwareRenderThread::syncAndRender()
if (syncRequested)
sync(exposeRequested);
+ Q_TRACE(QSG_sync_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphRenderLoopSync);
@@ -487,6 +492,7 @@ void QSGSoftwareRenderThread::syncAndRender()
}
qCDebug(QSG_RASTER_LOG_RENDERLOOP, "RT - rendering started");
+ Q_TRACE(QSG_render_entry);
if (rtAnim->isRunning()) {
wd->animationController->lock();
@@ -502,8 +508,10 @@ void QSGSoftwareRenderThread::syncAndRender()
softwareRenderer->setBackingStore(backingStore);
wd->renderSceneGraph(exposedWindow->size());
+ Q_TRACE(QSG_render_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphRenderLoopRender);
+ Q_TRACE(QSG_swap_entry);
if (softwareRenderer && (!wd->customRenderStage || !wd->customRenderStage->swap()))
backingStore->flush(softwareRenderer->flushRegion());
@@ -519,8 +527,10 @@ void QSGSoftwareRenderThread::syncAndRender()
wd->fireFrameSwapped();
} else {
+ Q_TRACE(QSG_render_exit);
Q_QUICK_SG_PROFILE_SKIP(QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphRenderLoopSync, 1);
+ Q_TRACE(QSG_swap_entry);
qCDebug(QSG_RASTER_LOG_RENDERLOOP, "RT - window not ready, skipping render");
}
@@ -532,6 +542,7 @@ void QSGSoftwareRenderThread::syncAndRender()
mutex.unlock();
}
+ Q_TRACE(QSG_swap_exit);
Q_QUICK_SG_PROFILE_END(QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphRenderLoopSwap);
}
@@ -947,13 +958,18 @@ void QSGSoftwareThreadedRenderLoop::polishAndSync(QSGSoftwareThreadedRenderLoop:
return;
}
+ Q_TRACE_SCOPE(QSG_polishAndSync);
+
+ Q_TRACE(QSG_polishItems_entry);
Q_QUICK_SG_PROFILE_START(QQuickProfiler::SceneGraphPolishAndSync);
QQuickWindowPrivate *wd = QQuickWindowPrivate::get(window);
wd->polishItems();
+ Q_TRACE(QSG_polishItems_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphPolishAndSync,
QQuickProfiler::SceneGraphPolishAndSyncPolish);
+ Q_TRACE(QSG_sync_entry);
w->updateDuringSync = false;
@@ -967,15 +983,19 @@ void QSGSoftwareThreadedRenderLoop::polishAndSync(QSGSoftwareThreadedRenderLoop:
qCDebug(QSG_RASTER_LOG_RENDERLOOP, "polishAndSync - wait for sync");
+ Q_TRACE(QSG_sync_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphPolishAndSync,
QQuickProfiler::SceneGraphPolishAndSyncWait);
+ Q_TRACE(QSG_wait_entry);
w->thread->waitCondition.wait(&w->thread->mutex);
lockedForSync = false;
w->thread->mutex.unlock();
qCDebug(QSG_RASTER_LOG_RENDERLOOP, "polishAndSync - unlock after sync");
+ Q_TRACE(QSG_wait_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphPolishAndSync,
QQuickProfiler::SceneGraphPolishAndSyncSync);
+ Q_TRACE(QSG_animations_entry);
if (!animationTimer && m_anim->isRunning()) {
qCDebug(QSG_RASTER_LOG_RENDERLOOP, "polishAndSync - advancing animations");
@@ -987,6 +1007,7 @@ void QSGSoftwareThreadedRenderLoop::polishAndSync(QSGSoftwareThreadedRenderLoop:
w->window->requestUpdate();
}
+ Q_TRACE(QSG_animations_exit);
Q_QUICK_SG_PROFILE_END(QQuickProfiler::SceneGraphPolishAndSync,
QQuickProfiler::SceneGraphPolishAndSyncAnimations);
}
diff --git a/src/quick/scenegraph/compressedtexture/qsgcompressedtexture.cpp b/src/quick/scenegraph/compressedtexture/qsgcompressedtexture.cpp
index 1a8bddaa6e..65abb2a1af 100644
--- a/src/quick/scenegraph/compressedtexture/qsgcompressedtexture.cpp
+++ b/src/quick/scenegraph/compressedtexture/qsgcompressedtexture.cpp
@@ -296,7 +296,7 @@ void QSGCompressedTexturePrivate::updateRhiTexture(QRhi *rhi, QRhiResourceUpdate
return;
}
- QRhiTexture::Flags texFlags = 0;
+ QRhiTexture::Flags texFlags;
if (fmt.second)
texFlags |= QRhiTexture::sRGB;
diff --git a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
index 45b00d43c4..5401401a0e 100644
--- a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
+++ b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
@@ -62,6 +62,8 @@
#include "qsgopenglvisualizer_p.h"
#include "qsgrhivisualizer_p.h"
+#include <qtquick_tracepoints_p.h>
+
#include <algorithm>
#ifndef GL_DOUBLE
@@ -270,6 +272,7 @@ ShaderManager::Shader *ShaderManager::prepareMaterial(QSGMaterial *material, boo
return nullptr;
}
+ Q_TRACE_SCOPE(QSG_prepareMaterial);
if (QSG_LOG_TIME_COMPILATION().isDebugEnabled())
qsg_renderer_timer.start();
Q_QUICK_SG_PROFILE_START(QQuickProfiler::SceneGraphContextFrame);
@@ -332,6 +335,7 @@ ShaderManager::Shader *ShaderManager::prepareMaterialNoRewrite(QSGMaterial *mate
return nullptr;
}
+ Q_TRACE_SCOPE(QSG_prepareMaterial);
if (QSG_LOG_TIME_COMPILATION().isDebugEnabled())
qsg_renderer_timer.start();
Q_QUICK_SG_PROFILE_START(QQuickProfiler::SceneGraphContextFrame);
@@ -379,6 +383,9 @@ void ShaderManager::invalidated()
qDeleteAll(srbCache);
srbCache.clear();
+
+ qDeleteAll(pipelineCache);
+ pipelineCache.clear();
}
void ShaderManager::clearCachedRendererData()
@@ -546,7 +553,7 @@ void Updater::visitNode(Node *n)
m_added = count;
m_force_update = force;
- n->dirtyState = nullptr;
+ n->dirtyState = {};
}
void Updater::visitClipNode(Node *n)
@@ -1103,13 +1110,9 @@ void Renderer::destroyGraphicsResources()
// are going to destroy.
m_shaderManager->clearCachedRendererData();
- qDeleteAll(m_pipelines);
qDeleteAll(m_samplers);
-
m_stencilClipCommon.reset();
-
delete m_dummyTexture;
-
m_visualizer->releaseResources();
}
@@ -1119,7 +1122,6 @@ void Renderer::releaseCachedResources()
destroyGraphicsResources();
- m_pipelines.clear();
m_samplers.clear();
m_dummyTexture = nullptr;
@@ -2627,7 +2629,7 @@ QRhiGraphicsPipeline *Renderer::buildStencilPipeline(const Batch *batch, bool fi
QRhiGraphicsPipeline *ps = m_rhi->newGraphicsPipeline();
ps->setFlags(QRhiGraphicsPipeline::UsesStencilRef);
QRhiGraphicsPipeline::TargetBlend blend;
- blend.colorWrite = 0;
+ blend.colorWrite = {};
ps->setTargetBlends({ blend });
ps->setSampleCount(renderTarget()->sampleCount());
ps->setStencilTest(true);
@@ -3237,15 +3239,17 @@ static inline bool needsBlendConstant(QRhiGraphicsPipeline::BlendFactor f)
bool Renderer::ensurePipelineState(Element *e, const ShaderManager::Shader *sms) // RHI only, [prepare step]
{
- // In unmerged batches the srbs in the elements are all compatible layout-wise.
+ // In unmerged batches the srbs in the elements are all compatible
+ // layout-wise. Note the key's == and qHash implementations: the rp desc and
+ // srb are tested for (layout) compatibility, not pointer equality.
const GraphicsPipelineStateKey k { m_gstate, sms, renderPassDescriptor(), e->srb };
// Note: dynamic state (viewport rect, scissor rect, stencil ref, blend
// constant) is never a part of GraphicsState/QRhiGraphicsPipeline.
// See if there is an existing, matching pipeline state object.
- auto it = m_pipelines.constFind(k);
- if (it != m_pipelines.constEnd()) {
+ auto it = m_shaderManager->pipelineCache.constFind(k);
+ if (it != m_shaderManager->pipelineCache.constEnd()) {
e->ps = *it;
return true;
}
@@ -3257,7 +3261,7 @@ bool Renderer::ensurePipelineState(Element *e, const ShaderManager::Shader *sms)
ps->setShaderResourceBindings(e->srb);
ps->setRenderPassDescriptor(renderPassDescriptor());
- QRhiGraphicsPipeline::Flags flags = 0;
+ QRhiGraphicsPipeline::Flags flags;
if (needsBlendConstant(m_gstate.srcColor) || needsBlendConstant(m_gstate.dstColor))
flags |= QRhiGraphicsPipeline::UsesBlendConstants;
if (m_gstate.usesScissor)
@@ -3302,7 +3306,7 @@ bool Renderer::ensurePipelineState(Element *e, const ShaderManager::Shader *sms)
return false;
}
- m_pipelines.insert(k, ps);
+ m_shaderManager->pipelineCache.insert(k, ps);
e->ps = ps;
return true;
}
@@ -4643,7 +4647,7 @@ bool operator==(const GraphicsPipelineStateKey &a, const GraphicsPipelineStateKe
{
return a.state == b.state
&& a.sms->programRhi.program == b.sms->programRhi.program
- && a.rpDesc == b.rpDesc
+ && a.compatibleRenderPassDescriptor->isCompatible(b.compatibleRenderPassDescriptor)
&& a.layoutCompatibleSrb->isLayoutCompatible(b.layoutCompatibleSrb);
}
@@ -4654,7 +4658,8 @@ bool operator!=(const GraphicsPipelineStateKey &a, const GraphicsPipelineStateKe
uint qHash(const GraphicsPipelineStateKey &k, uint seed) Q_DECL_NOTHROW
{
- return qHash(k.state, seed) + qHash(k.sms->programRhi.program, seed) + qHash(k.rpDesc, seed);
+ // no srb and rp included due to their special comparison semantics and lack of hash keys
+ return qHash(k.state, seed) + qHash(k.sms->programRhi.program, seed);
}
Visualizer::Visualizer(Renderer *renderer)
diff --git a/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h b/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h
index 297df2232a..878b63fc8c 100644
--- a/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h
+++ b/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h
@@ -626,27 +626,65 @@ private:
QMatrix4x4 m_identityMatrix;
};
+struct GraphicsState
+{
+ bool depthTest = false;
+ bool depthWrite = false;
+ QRhiGraphicsPipeline::CompareOp depthFunc = QRhiGraphicsPipeline::Less;
+ bool blending = false;
+ QRhiGraphicsPipeline::BlendFactor srcColor = QRhiGraphicsPipeline::One;
+ QRhiGraphicsPipeline::BlendFactor dstColor = QRhiGraphicsPipeline::OneMinusSrcAlpha;
+ QRhiGraphicsPipeline::ColorMask colorWrite = QRhiGraphicsPipeline::ColorMask(0xF);
+ QRhiGraphicsPipeline::CullMode cullMode = QRhiGraphicsPipeline::None;
+ bool usesScissor = false;
+ bool stencilTest = false;
+ int sampleCount = 1;
+ QSGGeometry::DrawingMode drawMode = QSGGeometry::DrawTriangles;
+ float lineWidth = 1.0f;
+};
+
+bool operator==(const GraphicsState &a, const GraphicsState &b) Q_DECL_NOTHROW;
+bool operator!=(const GraphicsState &a, const GraphicsState &b) Q_DECL_NOTHROW;
+uint qHash(const GraphicsState &s, uint seed = 0) Q_DECL_NOTHROW;
+
+struct ShaderManagerShader;
+
+struct GraphicsPipelineStateKey
+{
+ GraphicsState state;
+ const ShaderManagerShader *sms;
+ const QRhiRenderPassDescriptor *compatibleRenderPassDescriptor;
+ const QRhiShaderResourceBindings *layoutCompatibleSrb;
+};
+
+bool operator==(const GraphicsPipelineStateKey &a, const GraphicsPipelineStateKey &b) Q_DECL_NOTHROW;
+bool operator!=(const GraphicsPipelineStateKey &a, const GraphicsPipelineStateKey &b) Q_DECL_NOTHROW;
+uint qHash(const GraphicsPipelineStateKey &k, uint seed = 0) Q_DECL_NOTHROW;
+
+struct ShaderManagerShader
+{
+ ~ShaderManagerShader() {
+ delete programRhi.program;
+ delete programGL.program;
+ }
+ struct {
+ QSGMaterialShader *program = nullptr;
+ int pos_order;
+ } programGL;
+ struct {
+ QSGMaterialRhiShader *program = nullptr;
+ QRhiVertexInputLayout inputLayout;
+ QVarLengthArray<QRhiGraphicsShaderStage, 2> shaderStages;
+ } programRhi;
+
+ float lastOpacity;
+};
+
class ShaderManager : public QObject
{
Q_OBJECT
public:
- struct Shader {
- ~Shader() {
- delete programRhi.program;
- delete programGL.program;
- }
- struct {
- QSGMaterialShader *program = nullptr;
- int pos_order;
- } programGL;
- struct {
- QSGMaterialRhiShader *program = nullptr;
- QRhiVertexInputLayout inputLayout;
- QVarLengthArray<QRhiGraphicsShaderStage, 2> shaderStages;
- } programRhi;
-
- float lastOpacity;
- };
+ using Shader = ShaderManagerShader;
ShaderManager(QSGDefaultRenderContext *ctx) : blitProgram(nullptr), context(ctx) { }
~ShaderManager() {
@@ -657,9 +695,10 @@ public:
void clearCachedRendererData();
using ShaderResourceBindingList = QVarLengthArray<QRhiShaderResourceBinding, 8>;
-
QRhiShaderResourceBindings *srb(const ShaderResourceBindingList &bindings);
+ QHash<GraphicsPipelineStateKey, QRhiGraphicsPipeline *> pipelineCache;
+
public Q_SLOTS:
void invalidated();
@@ -677,39 +716,6 @@ private:
QHash<ShaderResourceBindingList, QRhiShaderResourceBindings *> srbCache;
};
-struct GraphicsState
-{
- bool depthTest = false;
- bool depthWrite = false;
- QRhiGraphicsPipeline::CompareOp depthFunc = QRhiGraphicsPipeline::Less;
- bool blending = false;
- QRhiGraphicsPipeline::BlendFactor srcColor = QRhiGraphicsPipeline::One;
- QRhiGraphicsPipeline::BlendFactor dstColor = QRhiGraphicsPipeline::OneMinusSrcAlpha;
- QRhiGraphicsPipeline::ColorMask colorWrite = QRhiGraphicsPipeline::ColorMask(0xF);
- QRhiGraphicsPipeline::CullMode cullMode = QRhiGraphicsPipeline::None;
- bool usesScissor = false;
- bool stencilTest = false;
- int sampleCount = 1;
- QSGGeometry::DrawingMode drawMode = QSGGeometry::DrawTriangles;
- float lineWidth = 1.0f;
-};
-
-bool operator==(const GraphicsState &a, const GraphicsState &b) Q_DECL_NOTHROW;
-bool operator!=(const GraphicsState &a, const GraphicsState &b) Q_DECL_NOTHROW;
-uint qHash(const GraphicsState &s, uint seed = 0) Q_DECL_NOTHROW;
-
-struct GraphicsPipelineStateKey
-{
- GraphicsState state;
- const ShaderManager::Shader *sms;
- const QRhiRenderPassDescriptor *rpDesc;
- const QRhiShaderResourceBindings *layoutCompatibleSrb;
-};
-
-bool operator==(const GraphicsPipelineStateKey &a, const GraphicsPipelineStateKey &b) Q_DECL_NOTHROW;
-bool operator!=(const GraphicsPipelineStateKey &a, const GraphicsPipelineStateKey &b) Q_DECL_NOTHROW;
-uint qHash(const GraphicsPipelineStateKey &k, uint seed = 0) Q_DECL_NOTHROW;
-
struct RenderPassState
{
QRhiViewport viewport;
@@ -903,7 +909,6 @@ private:
GraphicsState m_gstate;
RenderPassState m_pstate;
QStack<GraphicsState> m_gstateStack;
- QHash<GraphicsPipelineStateKey, QRhiGraphicsPipeline *> m_pipelines;
QHash<QSGSamplerDescription, QRhiSampler *> m_samplers;
QRhiTexture *m_dummyTexture = nullptr;
diff --git a/src/quick/scenegraph/coreapi/qsgmaterial.cpp b/src/quick/scenegraph/coreapi/qsgmaterial.cpp
index c8ae26311b..087c3c4cbf 100644
--- a/src/quick/scenegraph/coreapi/qsgmaterial.cpp
+++ b/src/quick/scenegraph/coreapi/qsgmaterial.cpp
@@ -153,7 +153,6 @@ static void qt_print_material_count()
*/
QSGMaterial::QSGMaterial()
- : m_flags(nullptr)
{
Q_UNUSED(m_reserved);
#ifndef QT_NO_DEBUG
diff --git a/src/quick/scenegraph/coreapi/qsgmaterialrhishader.cpp b/src/quick/scenegraph/coreapi/qsgmaterialrhishader.cpp
index 117d477f9a..c5cbd0c979 100644
--- a/src/quick/scenegraph/coreapi/qsgmaterialrhishader.cpp
+++ b/src/quick/scenegraph/coreapi/qsgmaterialrhishader.cpp
@@ -97,14 +97,14 @@ static inline QRhiShaderResourceBinding::StageFlags toSrbStage(QShader::Stage st
Q_UNREACHABLE();
break;
}
- return 0;
+ return { };
}
void QSGMaterialRhiShaderPrivate::prepare(QShader::Variant vertexShaderVariant)
{
ubufBinding = -1;
ubufSize = 0;
- ubufStages = 0;
+ ubufStages = { };
memset(combinedImageSamplerBindings, 0, sizeof(combinedImageSamplerBindings));
vertexShader = fragmentShader = nullptr;
masterUniformData.clear();
@@ -319,7 +319,7 @@ bool QSGMaterialRhiShader::updateUniformData(RenderState &state,
each variable in the material's shaders'
\l{QShaderDescription::combinedImageSamplers()}.
- When \c{*texture} is null, it must be set to a QSGTexture pointer before
+ When *\a{texture} is null, it must be set to a QSGTexture pointer before
returning. When non-null, it is up to the material to decide if a new
\c{QSGTexture *} is stored to it, or if it updates some parameters on the
already known QSGTexture. The ownership of the QSGTexture is not
diff --git a/src/quick/scenegraph/coreapi/qsgnode.cpp b/src/quick/scenegraph/coreapi/qsgnode.cpp
index 7d9b74bc2b..a35629d874 100644
--- a/src/quick/scenegraph/coreapi/qsgnode.cpp
+++ b/src/quick/scenegraph/coreapi/qsgnode.cpp
@@ -245,7 +245,6 @@ static void qt_print_node_count()
*/
QSGNode::QSGNode()
: m_nodeFlags(OwnedByParent)
- , m_dirtyState(nullptr)
{
init();
}
@@ -264,7 +263,6 @@ QSGNode::QSGNode(NodeType type)
, m_previousSibling(nullptr)
, m_subtreeRenderableCount(type == GeometryNodeType || type == RenderNodeType ? 1 : 0)
, m_nodeFlags(OwnedByParent)
- , m_dirtyState(nullptr)
{
init();
}
@@ -283,7 +281,6 @@ QSGNode::QSGNode(QSGNodePrivate &dd, NodeType type)
, m_previousSibling(nullptr)
, m_subtreeRenderableCount(type == GeometryNodeType || type == RenderNodeType ? 1 : 0)
, m_nodeFlags(OwnedByParent)
- , m_dirtyState(nullptr)
, d_ptr(&dd)
{
init();
diff --git a/src/quick/scenegraph/coreapi/qsgnode.h b/src/quick/scenegraph/coreapi/qsgnode.h
index cb677de030..5a7faed5e0 100644
--- a/src/quick/scenegraph/coreapi/qsgnode.h
+++ b/src/quick/scenegraph/coreapi/qsgnode.h
@@ -146,7 +146,7 @@ public:
QT_DEPRECATED void clearDirty() { }
void markDirty(DirtyState bits);
- QT_DEPRECATED DirtyState dirtyState() const { return nullptr; }
+ QT_DEPRECATED DirtyState dirtyState() const { return { }; }
virtual bool isSubtreeBlocked() const;
diff --git a/src/quick/scenegraph/coreapi/qsgopenglvisualizer.cpp b/src/quick/scenegraph/coreapi/qsgopenglvisualizer.cpp
index 6c2ff0b176..9282b6c308 100644
--- a/src/quick/scenegraph/coreapi/qsgopenglvisualizer.cpp
+++ b/src/quick/scenegraph/coreapi/qsgopenglvisualizer.cpp
@@ -202,7 +202,7 @@ void OpenGLVisualizer::visualizeChanges(Node *n)
// This is because many changes don't propegate their dirty state to the
// parent so the node updater will not unset these states. They are
// not used for anything so, unsetting it should have no side effects.
- n->dirtyState = nullptr;
+ n->dirtyState = {};
}
SHADOWNODE_TRAVERSE(n) {
diff --git a/src/quick/scenegraph/coreapi/qsgrenderer.cpp b/src/quick/scenegraph/coreapi/qsgrenderer.cpp
index 7af932eeb5..90090e1cc0 100644
--- a/src/quick/scenegraph/coreapi/qsgrenderer.cpp
+++ b/src/quick/scenegraph/coreapi/qsgrenderer.cpp
@@ -45,6 +45,7 @@
# include <QtGui/QOpenGLFunctions>
#endif
#include <private/qquickprofiler_p.h>
+#include <qtquick_tracepoints_p.h>
#include <QtCore/QElapsedTimer>
@@ -221,6 +222,7 @@ void QSGRenderer::renderScene(const QSGBindable &bindable)
if (!rootNode())
return;
+ Q_TRACE_SCOPE(QSG_renderScene);
m_is_rendering = true;
@@ -235,11 +237,14 @@ void QSGRenderer::renderScene(const QSGBindable &bindable)
m_bindable = &bindable;
preprocess();
+ Q_TRACE(QSG_binding_entry);
bindable.bind();
if (profileFrames)
bindTime = frameTimer.nsecsElapsed();
+ Q_TRACE(QSG_binding_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRendererFrame,
QQuickProfiler::SceneGraphRendererBinding);
+ Q_TRACE(QSG_render_entry);
#if QT_CONFIG(opengl)
// Sanity check that attribute registers are disabled
@@ -259,6 +264,7 @@ void QSGRenderer::renderScene(const QSGBindable &bindable)
render();
if (profileFrames)
renderTime = frameTimer.nsecsElapsed();
+ Q_TRACE(QSG_render_exit);
Q_QUICK_SG_PROFILE_END(QQuickProfiler::SceneGraphRendererFrame,
QQuickProfiler::SceneGraphRendererRender);
@@ -305,6 +311,8 @@ void QSGRenderer::nodeChanged(QSGNode *node, QSGNode::DirtyState state)
void QSGRenderer::preprocess()
{
+ Q_TRACE(QSG_preprocess_entry);
+
m_is_preprocessing = true;
QSGRootNode *root = rootNode();
@@ -331,13 +339,16 @@ void QSGRenderer::preprocess()
bool profileFrames = QSG_LOG_TIME_RENDERER().isDebugEnabled();
if (profileFrames)
preprocessTime = frameTimer.nsecsElapsed();
+ Q_TRACE(QSG_preprocess_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRendererFrame,
QQuickProfiler::SceneGraphRendererPreprocess);
+ Q_TRACE(QSG_update_entry);
nodeUpdater()->updateStates(root);
if (profileFrames)
updatePassTime = frameTimer.nsecsElapsed();
+ Q_TRACE(QSG_update_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRendererFrame,
QQuickProfiler::SceneGraphRendererUpdate);
diff --git a/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp b/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp
index 0fee1486cf..9b5701df5a 100644
--- a/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp
+++ b/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp
@@ -76,7 +76,6 @@ QT_BEGIN_NAMESPACE
\value Unknown An unknown graphics API is in use
\value Software The Qt Quick 2D Renderer is in use
\value OpenGL OpenGL ES 2.0 or higher
- \value Direct3D12 Direct3D 12
\value OpenVG OpenVG via EGL
\value OpenGLRhi OpenGL ES 2.0 or higher via a graphics abstraction layer. This value was introduced in Qt 5.14.
\value Direct3D11Rhi Direct3D 11 via a graphics abstraction layer. This value was introduced in Qt 5.14.
@@ -189,10 +188,10 @@ QSGRendererInterface::~QSGRendererInterface()
not supported or not available.
When successful, the returned pointer is either a direct pointer to an
- interface (and can be cast, for example, to \c{ID3D12Device *}) or a
- pointer to an opaque handle that needs to be dereferenced first (for
- example, \c{VkDevice dev = *static_cast<VkDevice *>(result)}). The latter
- is necessary since such handles may have sizes different from a pointer.
+ interface, or a pointer to an opaque handle that needs to be dereferenced
+ first (for example, \c{VkDevice dev = *static_cast<VkDevice
+ *>(result)}). The latter is necessary since such handles may have sizes
+ different from a pointer.
\note The ownership of the returned pointer is never transferred to the caller.
diff --git a/src/quick/scenegraph/coreapi/qsgrendererinterface.h b/src/quick/scenegraph/coreapi/qsgrendererinterface.h
index 7aa7d0e769..6224e08e84 100644
--- a/src/quick/scenegraph/coreapi/qsgrendererinterface.h
+++ b/src/quick/scenegraph/coreapi/qsgrendererinterface.h
@@ -53,7 +53,6 @@ public:
Unknown,
Software,
OpenGL,
- Direct3D12,
OpenVG,
OpenGLRhi,
Direct3D11Rhi,
diff --git a/src/quick/scenegraph/coreapi/qsgrendernode.cpp b/src/quick/scenegraph/coreapi/qsgrendernode.cpp
index 2892f2f966..519e3cd017 100644
--- a/src/quick/scenegraph/coreapi/qsgrendernode.cpp
+++ b/src/quick/scenegraph/coreapi/qsgrendernode.cpp
@@ -99,8 +99,8 @@ QSGRenderNodePrivate::QSGRenderNodePrivate()
With APIs other than OpenGL, the only relevant values are the ones that
correspond to dynamic state changes recorded on the command list/buffer.
- For example, RSSetViewports, RSSetScissorRects, OMSetBlendFactor,
- OMSetStencilRef in case of D3D12, or vkCmdSetViewport, vkCmdSetScissor,
+ For example, RSSetViewports, RSSetScissorRects, OMSetBlendState,
+ OMSetDepthStencilState in case of D3D11, or vkCmdSetViewport, vkCmdSetScissor,
vkCmdSetBlendConstants, vkCmdSetStencilRef in case of Vulkan, and only when
such commands were added to the scenegraph's command list queried via the
QSGRendererInterface::CommandList resource enum. States set in pipeline
@@ -131,7 +131,7 @@ QSGRenderNodePrivate::QSGRenderNodePrivate()
*/
QSGRenderNode::StateFlags QSGRenderNode::changedStates() const
{
- return nullptr;
+ return {};
}
/*!
@@ -311,7 +311,7 @@ void QSGRenderNode::releaseResources()
*/
QSGRenderNode::RenderingFlags QSGRenderNode::flags() const
{
- return nullptr;
+ return {};
}
/*!
@@ -381,11 +381,6 @@ QSGRenderNode::RenderState::~RenderState()
\return the current scissor rectangle when clipping is active. x and y are
the bottom left coordinates.
-
- \note Be aware of the differences between graphics APIs: for some the
- scissor rect is only active when scissoring is enabled (for example,
- OpenGL), while for others the scissor rect is equal to the viewport rect
- when there is no need to scissor away anything (for example, Direct3D 12).
*/
/*!
diff --git a/src/quick/scenegraph/coreapi/qsgrhivisualizer.cpp b/src/quick/scenegraph/coreapi/qsgrhivisualizer.cpp
index 38d4c4440f..a0131a3f67 100644
--- a/src/quick/scenegraph/coreapi/qsgrhivisualizer.cpp
+++ b/src/quick/scenegraph/coreapi/qsgrhivisualizer.cpp
@@ -400,7 +400,7 @@ void RhiVisualizer::ChangeVis::gather(Node *n)
// This is because many changes don't propegate their dirty state to the
// parent so the node updater will not unset these states. They are
// not used for anything so, unsetting it should have no side effects.
- n->dirtyState = nullptr;
+ n->dirtyState = { };
}
SHADOWNODE_TRAVERSE(n) {
diff --git a/src/quick/scenegraph/coreapi/qsgtexture.cpp b/src/quick/scenegraph/coreapi/qsgtexture.cpp
index edcee96bdb..715633fdba 100644
--- a/src/quick/scenegraph/coreapi/qsgtexture.cpp
+++ b/src/quick/scenegraph/coreapi/qsgtexture.cpp
@@ -317,6 +317,34 @@ static void qt_debug_remove_texture(QSGTexture* texture)
\since 5.9
*/
+/*!
+ \class QSGTexture::NativeTexture
+ \brief Contains information about the underlying native resources of a texture.
+ \since 5.15
+ */
+
+/*!
+ \variable QSGTexture::NativeTexture::object
+ \brief a pointer to the native object handle.
+
+ With OpenGL, the native handle is a GLuint value, so \c object is then a
+ pointer to a GLuint. With Vulkan, the native handle is a VkImage, so \c
+ object is a pointer to a VkImage. With Direct3D 11 and Metal \c
+ object is a pointer to a ID3D11Texture2D or MTLTexture pointer, respectively.
+
+ \note Pay attention to the fact that \a object is always a pointer
+ to the native texture handle type, even if the native type itself is a
+ pointer.
+ */
+
+/*!
+ \variable QSGTexture::NativeTexture::layout
+ \brief Specifies the current image layout for APIs like Vulkan.
+
+ For Vulkan, \c layout contains a \c VkImageLayout value.
+ */
+
+
#ifndef QT_NO_DEBUG
Q_QUICK_PRIVATE_EXPORT void qsg_set_material_failure();
#endif
@@ -395,6 +423,9 @@ QSGTexture::~QSGTexture()
Binding a texture may also include uploading the texture data from
a previously set QImage.
+ \warning This function should only be called when running with the
+ direct OpenGL rendering path.
+
\warning This function can only be called from the rendering thread.
*/
@@ -701,8 +732,8 @@ void QSGTexture::updateBindOptions(bool force) // legacy (GL-only)
data (for example, because there was no setImage() since the last call to
this function), the function does nothing.
- Materials involving textures are expected to call this function from their
- updateSampledImage() implementation, typically without any conditions.
+ Materials involving \a rhi textures are expected to call this function from
+ their updateSampledImage() implementation, typically without any conditions.
\note This function is only used when running the graphics API independent
rendering path of the scene graph.
@@ -718,6 +749,28 @@ void QSGTexture::updateRhiTexture(QRhi *rhi, QRhiResourceUpdateBatch *resourceUp
}
/*!
+ \return the platform-specific texture data for this texture.
+
+ \note This is only available when running the graphics API independent
+ rendering path of the scene graph. Use textureId() otherwise.
+
+ Returns an empty result (\c object is null) if there is no available
+ underlying native texture.
+
+ \since 5.15
+ \sa QQuickWindow::createTextureFromNativeObject()
+ */
+QSGTexture::NativeTexture QSGTexture::nativeTexture() const
+{
+ Q_D(const QSGTexture);
+ if (auto *tex = d->rhiTexture()) {
+ auto nativeTexture = tex->nativeTexture();
+ return {nativeTexture.object, nativeTexture.layout};
+ }
+ return {};
+}
+
+/*!
\internal
*/
void QSGTexture::setWorkResourceUpdateBatch(QRhiResourceUpdateBatch *resourceUpdates)
diff --git a/src/quick/scenegraph/coreapi/qsgtexture.h b/src/quick/scenegraph/coreapi/qsgtexture.h
index 2efdd8b7c3..207ef52f4e 100644
--- a/src/quick/scenegraph/coreapi/qsgtexture.h
+++ b/src/quick/scenegraph/coreapi/qsgtexture.h
@@ -80,7 +80,13 @@ public:
Anisotropy16x
};
+ struct NativeTexture {
+ const void *object;
+ int layout;
+ };
+
virtual int textureId() const = 0; // ### Qt 6: remove
+ NativeTexture nativeTexture() const;
virtual QSize textureSize() const = 0;
virtual bool hasAlphaChannel() const = 0;
virtual bool hasMipmaps() const = 0;
diff --git a/src/quick/scenegraph/qsgadaptationlayer.cpp b/src/quick/scenegraph/qsgadaptationlayer.cpp
index f7b07d724a..eab0369be7 100644
--- a/src/quick/scenegraph/qsgadaptationlayer.cpp
+++ b/src/quick/scenegraph/qsgadaptationlayer.cpp
@@ -50,6 +50,8 @@
#include <private/qquickprofiler_p.h>
#include <QElapsedTimer>
+#include <qtquick_tracepoints_p.h>
+
QT_BEGIN_NAMESPACE
static QElapsedTimer qsg_render_timer;
@@ -169,10 +171,13 @@ void QSGDistanceFieldGlyphCache::update()
if (m_pendingGlyphs.isEmpty())
return;
+ Q_TRACE_SCOPE(QSGDistanceFieldGlyphCache_update, m_pendingGlyphs.size());
+
bool profileFrames = QSG_LOG_TIME_GLYPH().isDebugEnabled();
if (profileFrames)
qsg_render_timer.start();
Q_QUICK_SG_PROFILE_START(QQuickProfiler::SceneGraphAdaptationLayerFrame);
+ Q_TRACE(QSGDistanceFieldGlyphCache_glyphRender_entry);
QList<QDistanceField> distanceFields;
const int pendingGlyphsSize = m_pendingGlyphs.size();
@@ -189,8 +194,11 @@ void QSGDistanceFieldGlyphCache::update()
int count = m_pendingGlyphs.size();
if (profileFrames)
renderTime = qsg_render_timer.nsecsElapsed();
+
+ Q_TRACE(QSGDistanceFieldGlyphCache_glyphRender_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphAdaptationLayerFrame,
QQuickProfiler::SceneGraphAdaptationLayerGlyphRender);
+ Q_TRACE(QSGDistanceFieldGlyphCache_glyphStore_entry);
m_pendingGlyphs.reset();
@@ -210,6 +218,7 @@ void QSGDistanceFieldGlyphCache::update()
int(renderTime / 1000000),
int((now - (renderTime / 1000000))));
}
+ Q_TRACE(QSGDistanceFieldGlyphCache_glyphStore_exit);
Q_QUICK_SG_PROFILE_END_WITH_PAYLOAD(QQuickProfiler::SceneGraphAdaptationLayerFrame,
QQuickProfiler::SceneGraphAdaptationLayerGlyphStore,
(qint64)count);
diff --git a/src/quick/scenegraph/qsgcontextplugin.cpp b/src/quick/scenegraph/qsgcontextplugin.cpp
index 66add51c55..7dfb8488ae 100644
--- a/src/quick/scenegraph/qsgcontextplugin.cpp
+++ b/src/quick/scenegraph/qsgcontextplugin.cpp
@@ -87,7 +87,6 @@ struct QSGAdaptationBackendData
};
QSGAdaptationBackendData::QSGAdaptationBackendData()
- : flags(nullptr)
{
// Fill in the table with the built-in adaptations.
builtIns.append(new QSGSoftwareAdaptation);
diff --git a/src/quick/scenegraph/qsgrenderloop.cpp b/src/quick/scenegraph/qsgrenderloop.cpp
index f609055677..94f15b55d4 100644
--- a/src/quick/scenegraph/qsgrenderloop.cpp
+++ b/src/quick/scenegraph/qsgrenderloop.cpp
@@ -60,6 +60,7 @@
#include <QtQuick/private/qsgcontext_p.h>
#include <QtQuick/private/qsgrenderer_p.h>
#include <private/qquickprofiler_p.h>
+#include <qtquick_tracepoints_p.h>
#include <private/qsgrhishadereffectnode_p.h>
@@ -195,8 +196,16 @@ public:
bool eventFilter(QObject *watched, QEvent *event) override;
struct WindowData {
+ WindowData()
+ : updatePending(false),
+ grabOnly(false),
+ rhiDeviceLost(false),
+ rhiDoomed(false)
+ { }
bool updatePending : 1;
bool grabOnly : 1;
+ bool rhiDeviceLost : 1;
+ bool rhiDoomed : 1;
};
QHash<QQuickWindow *, WindowData> m_windows;
@@ -316,15 +325,19 @@ void QSGRenderLoop::setInstance(QSGRenderLoop *instance)
s_instance = instance;
}
-void QSGRenderLoop::handleContextCreationFailure(QQuickWindow *window,
- bool isEs)
+void QSGRenderLoop::handleContextCreationFailure(QQuickWindow *window)
{
QString translatedMessage;
QString untranslatedMessage;
- QQuickWindowPrivate::contextCreationFailureMessage(window->requestedFormat(),
+ if (QSGRhiSupport::instance()->isRhiEnabled()) {
+ QQuickWindowPrivate::rhiCreationFailureMessage(QSGRhiSupport::instance()->rhiBackendName(),
&translatedMessage,
- &untranslatedMessage,
- isEs);
+ &untranslatedMessage);
+ } else {
+ QQuickWindowPrivate::contextCreationFailureMessage(window->requestedFormat(),
+ &translatedMessage,
+ &untranslatedMessage);
+ }
// If there is a slot connected to the error signal, emit it and leave it to
// the application to do something with the message. If nothing is connected,
// show a message on our own and terminate.
@@ -362,10 +375,7 @@ QSGGuiThreadRenderLoop::~QSGGuiThreadRenderLoop()
void QSGGuiThreadRenderLoop::show(QQuickWindow *window)
{
- WindowData data;
- data.updatePending = false;
- data.grabOnly = false;
- m_windows[window] = data;
+ m_windows[window] = WindowData();
maybeUpdate(window);
}
@@ -451,8 +461,10 @@ void QSGGuiThreadRenderLoop::handleDeviceLoss()
rc->invalidate();
- for (auto it = m_windows.constBegin(), itEnd = m_windows.constEnd(); it != itEnd; ++it)
+ for (auto it = m_windows.begin(), itEnd = m_windows.end(); it != itEnd; ++it) {
releaseSwapchain(it.key());
+ it->rhiDeviceLost = true;
+ }
delete rhi;
rhi = nullptr;
@@ -508,6 +520,13 @@ void QSGGuiThreadRenderLoop::renderWindow(QQuickWindow *window)
const bool enableRhi = rhiSupport->isRhiEnabled();
if (enableRhi && !rhi) {
+ // This block below handles both the initial QRhi initialization and
+ // also the subsequent reinitialization attempts after a device lost
+ // (reset) situation.
+
+ if (data.rhiDoomed) // no repeated attempts if the initial attempt failed
+ return;
+
if (!offscreenSurface)
offscreenSurface = rhiSupport->maybeCreateOffscreenSurface(window);
@@ -517,6 +536,8 @@ void QSGGuiThreadRenderLoop::renderWindow(QQuickWindow *window)
if (rhiSupport->isProfilingRequested())
QSGRhiProfileConnection::instance()->initialize(rhi);
+ data.rhiDeviceLost = false;
+
current = true;
rhi->makeThreadLocalNativeContextCurrent();
@@ -533,7 +554,11 @@ void QSGGuiThreadRenderLoop::renderWindow(QQuickWindow *window)
rcParams.maybeSurface = window;
cd->context->initialize(&rcParams);
} else {
- handleContextCreationFailure(window, false);
+ if (!data.rhiDeviceLost) {
+ data.rhiDoomed = true;
+ handleContextCreationFailure(window);
+ }
+ // otherwise no error, will retry on a subsequent rendering attempt
}
} else if (!enableRhi && !gl) {
gl = new QOpenGLContext();
@@ -542,10 +567,9 @@ void QSGGuiThreadRenderLoop::renderWindow(QQuickWindow *window)
if (qt_gl_global_share_context())
gl->setShareContext(qt_gl_global_share_context());
if (!gl->create()) {
- const bool isEs = gl->isOpenGLES();
delete gl;
gl = nullptr;
- handleContextCreationFailure(window, isEs);
+ handleContextCreationFailure(window);
} else {
if (!offscreenSurface) {
offscreenSurface = new QOffscreenSurface;
@@ -619,7 +643,7 @@ void QSGGuiThreadRenderLoop::renderWindow(QQuickWindow *window)
i++;
}
- // Check for context loss.
+ // Check for context loss. (legacy GL only)
if (!current && !rhi && !gl->isValid()) {
for (auto it = m_windows.constBegin() ; it != m_windows.constEnd(); it++) {
QQuickWindowPrivate *windowPrivate = QQuickWindowPrivate::get(it.key());
@@ -657,20 +681,25 @@ void QSGGuiThreadRenderLoop::renderWindow(QQuickWindow *window)
return;
}
+ Q_TRACE_SCOPE(QSG_renderWindow);
QElapsedTimer renderTimer;
qint64 renderTime = 0, syncTime = 0, polishTime = 0;
bool profileFrames = QSG_LOG_TIME_RENDERLOOP().isDebugEnabled();
if (profileFrames)
renderTimer.start();
+ Q_TRACE(QSG_polishItems_entry);
Q_QUICK_SG_PROFILE_START(QQuickProfiler::SceneGraphPolishFrame);
cd->polishItems();
if (profileFrames)
polishTime = renderTimer.nsecsElapsed();
+
+ Q_TRACE(QSG_polishItems_exit);
Q_QUICK_SG_PROFILE_SWITCH(QQuickProfiler::SceneGraphPolishFrame,
QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphPolishPolish);
+ Q_TRACE(QSG_sync_entry);
emit window->afterAnimating();
@@ -725,15 +754,20 @@ void QSGGuiThreadRenderLoop::renderWindow(QQuickWindow *window)
if (profileFrames)
syncTime = renderTimer.nsecsElapsed();
+
+ Q_TRACE(QSG_sync_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphRenderLoopSync);
+ Q_TRACE(QSG_render_entry);
cd->renderSceneGraph(window->size(), effectiveOutputSize);
if (profileFrames)
renderTime = renderTimer.nsecsElapsed();
+ Q_TRACE(QSG_render_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphRenderLoopRender);
+ Q_TRACE(QSG_swap_entry);
if (data.grabOnly) {
const bool alpha = window->format().alphaBufferSize() > 0 && window->color().alpha() != 255;
@@ -747,7 +781,7 @@ void QSGGuiThreadRenderLoop::renderWindow(QQuickWindow *window)
const bool needsPresent = alsoSwap && window->isVisible();
if (cd->swapchain) {
- QRhi::EndFrameFlags flags = 0;
+ QRhi::EndFrameFlags flags;
if (!needsPresent)
flags |= QRhi::SkipPresent;
QRhi::FrameOpResult frameResult = rhi->endFrame(cd->swapchain, flags);
@@ -767,6 +801,8 @@ void QSGGuiThreadRenderLoop::renderWindow(QQuickWindow *window)
qint64 swapTime = 0;
if (profileFrames)
swapTime = renderTimer.nsecsElapsed();
+
+ Q_TRACE(QSG_swap_exit);
Q_QUICK_SG_PROFILE_END(QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphRenderLoopSwap);
diff --git a/src/quick/scenegraph/qsgrenderloop_p.h b/src/quick/scenegraph/qsgrenderloop_p.h
index 02d0b84de1..9fd0ab02f5 100644
--- a/src/quick/scenegraph/qsgrenderloop_p.h
+++ b/src/quick/scenegraph/qsgrenderloop_p.h
@@ -112,12 +112,11 @@ public:
static void cleanup();
+ void handleContextCreationFailure(QQuickWindow *window);
+
Q_SIGNALS:
void timeToIncubate();
-protected:
- void handleContextCreationFailure(QQuickWindow *window, bool isEs);
-
private:
static QSGRenderLoop *s_instance;
diff --git a/src/quick/scenegraph/qsgrhilayer.cpp b/src/quick/scenegraph/qsgrhilayer.cpp
index 757410eded..952279a3ff 100644
--- a/src/quick/scenegraph/qsgrhilayer.cpp
+++ b/src/quick/scenegraph/qsgrhilayer.cpp
@@ -388,7 +388,7 @@ void QSGRhiLayer::grab()
m_mirrorHorizontal ? -m_rect.width() : m_rect.width(),
m_mirrorVertical ? m_rect.height() : -m_rect.height());
}
- QSGAbstractRenderer::MatrixTransformFlags matrixFlags = 0;
+ QSGAbstractRenderer::MatrixTransformFlags matrixFlags;
if (!m_rhi->isYUpInNDC())
matrixFlags |= QSGAbstractRenderer::MatrixTransformFlipY;
m_renderer->setProjectionMatrixToRect(mirrored, matrixFlags);
diff --git a/src/quick/scenegraph/qsgrhisupport.cpp b/src/quick/scenegraph/qsgrhisupport.cpp
index 12c6742342..9194d3e730 100644
--- a/src/quick/scenegraph/qsgrhisupport.cpp
+++ b/src/quick/scenegraph/qsgrhisupport.cpp
@@ -159,7 +159,7 @@ void QSGRhiSupport::applySettings()
} else {
#if defined(Q_OS_WIN)
m_rhiBackend = QRhi::D3D11;
-#elif defined(Q_OS_DARWIN)
+#elif defined(Q_OS_MACOS) || defined(Q_OS_IOS)
m_rhiBackend = QRhi::Metal;
#else
m_rhiBackend = QRhi::OpenGLES2;
@@ -185,29 +185,10 @@ void QSGRhiSupport::applySettings()
if (m_killDeviceFrameCount > 0 && m_rhiBackend == QRhi::D3D11)
qDebug("Graphics device will be reset every %d frames", m_killDeviceFrameCount);
- const char *backendName = "unknown";
- switch (m_rhiBackend) {
- case QRhi::Null:
- backendName = "Null";
- break;
- case QRhi::Vulkan:
- backendName = "Vulkan";
- break;
- case QRhi::OpenGLES2:
- backendName = "OpenGL";
- break;
- case QRhi::D3D11:
- backendName = "D3D11";
- break;
- case QRhi::Metal:
- backendName = "Metal";
- break;
- default:
- break;
- }
+ const QString backendName = rhiBackendName();
qCDebug(QSG_LOG_INFO,
"Using QRhi with backend %s\n graphics API debug/validation layers: %d\n QRhi profiling and debug markers: %d",
- backendName, m_debugLayer, m_profile);
+ qPrintable(backendName), m_debugLayer, m_profile);
if (m_preferSoftwareRenderer)
qCDebug(QSG_LOG_INFO, "Prioritizing software renderers");
}
@@ -247,6 +228,27 @@ QSGRhiSupport *QSGRhiSupport::instance()
return inst;
}
+QString QSGRhiSupport::rhiBackendName() const
+{
+ if (m_enableRhi) {
+ switch (m_rhiBackend) {
+ case QRhi::Null:
+ return QLatin1String("Null");
+ case QRhi::Vulkan:
+ return QLatin1String("Vulkan");
+ case QRhi::OpenGLES2:
+ return QLatin1String("OpenGL");
+ case QRhi::D3D11:
+ return QLatin1String("D3D11");
+ case QRhi::Metal:
+ return QLatin1String("Metal");
+ default:
+ return QLatin1String("Unknown");
+ }
+ }
+ return QLatin1String("Unknown (RHI not enabled)");
+}
+
QSGRendererInterface::GraphicsApi QSGRhiSupport::graphicsApi() const
{
if (!m_enableRhi)
@@ -350,7 +352,7 @@ static const void *qsgrhi_d3d11_rifResource(QSGRendererInterface::Resource res,
}
#endif
-#ifdef Q_OS_DARWIN
+#if defined(Q_OS_MACOS) || defined(Q_OS_IOS)
static const void *qsgrhi_mtl_rifResource(QSGRendererInterface::Resource res, const QRhiNativeHandles *nat,
const QRhiNativeHandles *cbNat)
{
@@ -408,7 +410,7 @@ const void *QSGRhiSupport::rifResource(QSGRendererInterface::Resource res, const
case QRhi::D3D11:
return qsgrhi_d3d11_rifResource(res, nat);
#endif
-#ifdef Q_OS_DARWIN
+#if defined(Q_OS_MACOS) || defined(Q_OS_IOS)
case QRhi::Metal:
{
QRhiCommandBuffer *cb = rc->currentFrameCommandBuffer();
@@ -463,9 +465,13 @@ QOffscreenSurface *QSGRhiSupport::maybeCreateOffscreenSurface(QWindow *window)
// must be called on the render thread
QRhi *QSGRhiSupport::createRhi(QWindow *window, QOffscreenSurface *offscreenSurface)
{
+#if !QT_CONFIG(opengl) && !QT_CONFIG(vulkan)
+ Q_UNUSED(window);
+#endif
+
QRhi *rhi = nullptr;
- QRhi::Flags flags = 0;
+ QRhi::Flags flags;
if (isProfilingRequested())
flags |= QRhi::EnableProfiling | QRhi::EnableDebugMarkers;
if (isSoftwareRendererRequested())
@@ -485,6 +491,8 @@ QRhi *QSGRhiSupport::createRhi(QWindow *window, QOffscreenSurface *offscreenSurf
rhiParams.window = window;
rhi = QRhi::create(backend, &rhiParams, flags);
}
+#else
+ Q_UNUSED(offscreenSurface);
#endif
#if QT_CONFIG(vulkan)
if (backend == QRhi::Vulkan) {
@@ -507,7 +515,7 @@ QRhi *QSGRhiSupport::createRhi(QWindow *window, QOffscreenSurface *offscreenSurf
rhi = QRhi::create(backend, &rhiParams, flags);
}
#endif
-#ifdef Q_OS_DARWIN
+#if defined(Q_OS_MACOS) || defined(Q_OS_IOS)
if (backend == QRhi::Metal) {
QRhiMetalInitParams rhiParams;
rhi = QRhi::create(backend, &rhiParams, flags);
diff --git a/src/quick/scenegraph/qsgrhisupport_p.h b/src/quick/scenegraph/qsgrhisupport_p.h
index d008ecd0af..0a95a09ad2 100644
--- a/src/quick/scenegraph/qsgrhisupport_p.h
+++ b/src/quick/scenegraph/qsgrhisupport_p.h
@@ -70,7 +70,7 @@
#include <QtGui/private/qrhid3d11_p.h>
#endif
-#ifdef Q_OS_DARWIN
+#if defined(Q_OS_MACOS) || defined(Q_OS_IOS)
#include <QtGui/private/qrhimetal_p.h>
#endif
@@ -109,6 +109,7 @@ public:
bool isRhiEnabled() const { return m_enableRhi; }
QRhi::Implementation rhiBackend() const { return m_rhiBackend; }
+ QString rhiBackendName() const;
QSGRendererInterface::GraphicsApi graphicsApi() const;
bool isDebugLayerRequested() const { return m_debugLayer; }
diff --git a/src/quick/scenegraph/qsgrhitextureglyphcache.cpp b/src/quick/scenegraph/qsgrhitextureglyphcache.cpp
index d0108bc56e..89c9ea4d5b 100644
--- a/src/quick/scenegraph/qsgrhitextureglyphcache.cpp
+++ b/src/quick/scenegraph/qsgrhitextureglyphcache.cpp
@@ -145,7 +145,9 @@ void QSGRhiTextureGlyphCache::prepareGlyphImage(QImage *img)
{
const int maskWidth = img->width();
const int maskHeight = img->height();
+#if Q_BYTE_ORDER != Q_BIG_ENDIAN
const bool supportsBgra = m_rhi->isTextureFormatSupported(QRhiTexture::BGRA8);
+#endif
m_bgra = false;
if (img->format() == QImage::Format_Mono) {
diff --git a/src/quick/scenegraph/qsgthreadedrenderloop.cpp b/src/quick/scenegraph/qsgthreadedrenderloop.cpp
index dc1f97de54..4777f46f0a 100644
--- a/src/quick/scenegraph/qsgthreadedrenderloop.cpp
+++ b/src/quick/scenegraph/qsgthreadedrenderloop.cpp
@@ -70,6 +70,8 @@
#include <private/qsgrhishadereffectnode_p.h>
#include <private/qsgdefaultrendercontext_p.h>
+#include <qtquick_tracepoints_p.h>
+
/*
Overall design:
@@ -368,6 +370,9 @@ public:
QSize windowSize;
float dpr = 1;
int rhiSampleCount = 1;
+ bool rhiDeviceLost = false;
+ bool rhiDoomed = false;
+ bool guiNotifiedAboutRhiFailure = false;
// Local event queue stuff...
bool stopEventProcessing;
@@ -622,13 +627,15 @@ void QSGRenderThread::sync(bool inExpose, bool inGrab)
sgrc->initialize(&rcParams);
}
}
- } else {
+ } else if (rhi) {
// With the rhi making the (OpenGL) context current serves only one
// purpose: to enable external OpenGL rendering connected to one of
// the QQuickWindow signals (beforeSynchronizing, beforeRendering,
// etc.) to function like it did on the direct OpenGL path. For our
// own rendering this call would not be necessary.
rhi->makeThreadLocalNativeContextCurrent();
+ } else {
+ current = false;
}
if (current) {
QQuickWindowPrivate *d = QQuickWindowPrivate::get(window);
@@ -669,6 +676,7 @@ void QSGRenderThread::handleDeviceLoss()
QQuickWindowPrivate::get(window)->cleanupNodesOnShutdown();
sgrc->invalidate();
wm->releaseSwapchain(window);
+ rhiDeviceLost = true;
delete rhi;
rhi = nullptr;
}
@@ -680,7 +688,9 @@ void QSGRenderThread::syncAndRender(QImage *grabImage)
sinceLastTime = threadTimer.nsecsElapsed();
threadTimer.start();
}
+ Q_TRACE_SCOPE(QSG_syncAndRender);
Q_QUICK_SG_PROFILE_START(QQuickProfiler::SceneGraphRenderLoopFrame);
+ Q_TRACE(QSG_sync_entry);
QElapsedTimer waitTimer;
waitTimer.start();
@@ -693,8 +703,9 @@ void QSGRenderThread::syncAndRender(QImage *grabImage)
const bool repaintRequested = (pendingUpdate & RepaintRequest) || d->customRenderStage || grabImage;
const bool syncRequested = (pendingUpdate & SyncRequest) || grabImage;
const bool exposeRequested = (pendingUpdate & ExposeRequest) == ExposeRequest;
- pendingUpdate = 0;
const bool grabRequested = grabImage != nullptr;
+ if (!grabRequested)
+ pendingUpdate = 0;
QQuickWindowPrivate *cd = QQuickWindowPrivate::get(window);
// Begin the frame before syncing -> sync is where we may invoke
@@ -767,33 +778,46 @@ void QSGRenderThread::syncAndRender(QImage *grabImage)
if (profileFrames)
syncTime = threadTimer.nsecsElapsed();
#endif
+ Q_TRACE(QSG_sync_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphRenderLoopSync);
- if (!syncResultedInChanges && !repaintRequested && sgrc->isValid() && !grabImage) {
- if (gl || !rhi->isRecordingFrame()) {
- qCDebug(QSG_LOG_RENDERLOOP, QSG_RT_PAD, "- no changes, render aborted");
- int waitTime = vsyncDelta - (int) waitTimer.elapsed();
- if (waitTime > 0)
- msleep(waitTime);
- return;
- }
+ if (!syncResultedInChanges
+ && !repaintRequested
+ && !(pendingUpdate & RepaintRequest) // may have been set in sync()
+ && sgrc->isValid()
+ && !grabRequested
+ && (gl || (rhi && !rhi->isRecordingFrame())))
+ {
+ qCDebug(QSG_LOG_RENDERLOOP, QSG_RT_PAD, "- no changes, render aborted");
+ int waitTime = vsyncDelta - (int) waitTimer.elapsed();
+ if (waitTime > 0)
+ msleep(waitTime);
+ return;
}
qCDebug(QSG_LOG_RENDERLOOP, QSG_RT_PAD, "- rendering started");
+ Q_TRACE(QSG_render_entry);
+
+ // RepaintRequest may have been set in pendingUpdate in an
+ // updatePaintNode() invoked from sync(). We are about to do a repaint
+ // right now, so reset the flag. (bits other than RepaintRequest cannot
+ // be set in pendingUpdate at this point)
+ if (!grabRequested)
+ pendingUpdate = 0;
- if (animatorDriver->isRunning() && !grabImage) {
+ if (animatorDriver->isRunning() && !grabRequested) {
d->animationController->lock();
animatorDriver->advance();
d->animationController->unlock();
}
bool current = true;
- if (d->renderer && windowSize.width() > 0 && windowSize.height() > 0) {
+ if (d->renderer && windowSize.width() > 0 && windowSize.height() > 0 && (gl || rhi)) {
if (gl)
current = gl->makeCurrent(window);
- else if (rhi)
+ else
rhi->makeThreadLocalNativeContextCurrent();
} else {
current = false;
@@ -811,21 +835,23 @@ void QSGRenderThread::syncAndRender(QImage *grabImage)
if (profileFrames)
renderTime = threadTimer.nsecsElapsed();
+ Q_TRACE(QSG_render_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphRenderLoopRender);
+ Q_TRACE(QSG_swap_entry);
// With the rhi grabs can only be done by adding a readback and then
// blocking in a real frame. The legacy GL path never gets here with
// grabs as it rather invokes sync/render directly without going
// through syncAndRender().
- if (grabImage) {
+ if (grabRequested) {
Q_ASSERT(rhi && !gl && cd->swapchain);
*grabImage = QSGRhiSupport::instance()->grabAndBlockInCurrentFrame(rhi, cd->swapchain);
}
if (cd->swapchain) {
- QRhi::EndFrameFlags flags = 0;
- if (grabImage)
+ QRhi::EndFrameFlags flags;
+ if (grabRequested)
flags |= QRhi::SkipPresent;
QRhi::FrameOpResult frameResult = rhi->endFrame(cd->swapchain, flags);
if (frameResult != QRhi::FrameOpSuccess) {
@@ -841,12 +867,13 @@ void QSGRenderThread::syncAndRender(QImage *grabImage)
gl->swapBuffers(window);
}
- if (!grabImage)
+ if (!grabRequested)
d->fireFrameSwapped();
-
} else {
+ Q_TRACE(QSG_render_exit);
Q_QUICK_SG_PROFILE_SKIP(QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphRenderLoopSync, 1);
+ Q_TRACE(QSG_swap_entry);
qCDebug(QSG_LOG_RENDERLOOP, QSG_RT_PAD, "- window not ready, skipping render");
}
@@ -870,7 +897,7 @@ void QSGRenderThread::syncAndRender(QImage *grabImage)
int((renderTime - syncTime) / 1000000),
int(threadTimer.elapsed() - renderTime / 1000000));
-
+ Q_TRACE(QSG_swap_exit);
Q_QUICK_SG_PROFILE_END(QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphRenderLoopSwap);
@@ -912,14 +939,21 @@ void QSGRenderThread::processEventsAndWaitForMore()
void QSGRenderThread::ensureRhi()
{
if (!rhi) {
+ if (rhiDoomed) // no repeated attempts if the initial attempt failed
+ return;
QSGRhiSupport *rhiSupport = QSGRhiSupport::instance();
rhi = rhiSupport->createRhi(window, offscreenSurface);
if (rhi) {
+ rhiDeviceLost = false;
rhiSampleCount = rhiSupport->chooseSampleCountForWindowWithRhi(window, rhi);
if (rhiSupport->isProfilingRequested())
QSGRhiProfileConnection::instance()->initialize(rhi); // ### this breaks down with multiple windows
} else {
- qWarning("Failed to create QRhi on the render thread; scenegraph is not functional");
+ if (!rhiDeviceLost) {
+ rhiDoomed = true;
+ qWarning("Failed to create QRhi on the render thread; scenegraph is not functional");
+ }
+ // otherwise no error, will retry on a subsequent rendering attempt
return;
}
}
@@ -975,9 +1009,24 @@ void QSGRenderThread::run()
if (window) {
if (enableRhi) {
+
ensureRhi();
- if (rhi)
- syncAndRender();
+
+ // We absolutely have to syncAndRender() here, even when QRhi
+ // failed to initialize otherwise the gui thread will be left
+ // in a blocked state. It is up to syncAndRender() to
+ // gracefully skip all graphics stuff when rhi is null.
+
+ syncAndRender();
+
+ // Now we can do something about rhi init failures. (reinit
+ // failure after device reset does not count)
+ if (rhiDoomed && !guiNotifiedAboutRhiFailure) {
+ guiNotifiedAboutRhiFailure = true;
+ QEvent *e = new QEvent(QEvent::Type(QQuickWindowPrivate::TriggerContextCreationFailure));
+ QCoreApplication::postEvent(window, e);
+ }
+
} else {
if (!sgrc->openglContext() && windowSize.width() > 0 && windowSize.height() > 0 && gl->makeCurrent(window)) {
QSGDefaultRenderContext::InitParams rcParams;
@@ -1282,10 +1331,9 @@ void QSGThreadedRenderLoop::handleExposure(QQuickWindow *window)
w->thread->gl->setFormat(w->window->requestedFormat());
w->thread->gl->setScreen(w->window->screen());
if (!w->thread->gl->create()) {
- const bool isEs = w->thread->gl->isOpenGLES();
delete w->thread->gl;
w->thread->gl = nullptr;
- handleContextCreationFailure(w->window, isEs);
+ handleContextCreationFailure(w->window);
return;
}
@@ -1508,7 +1556,7 @@ void QSGThreadedRenderLoop::polishAndSync(Window *w, bool inExpose)
return;
}
-
+ Q_TRACE_SCOPE(QSG_polishAndSync);
QElapsedTimer timer;
qint64 polishTime = 0;
qint64 waitTime = 0;
@@ -1517,14 +1565,17 @@ void QSGThreadedRenderLoop::polishAndSync(Window *w, bool inExpose)
if (profileFrames)
timer.start();
Q_QUICK_SG_PROFILE_START(QQuickProfiler::SceneGraphPolishAndSync);
+ Q_TRACE(QSG_polishItems_entry);
QQuickWindowPrivate *d = QQuickWindowPrivate::get(window);
d->polishItems();
if (profileFrames)
polishTime = timer.nsecsElapsed();
+ Q_TRACE(QSG_polishItems_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphPolishAndSync,
QQuickProfiler::SceneGraphPolishAndSyncPolish);
+ Q_TRACE(QSG_wait_entry);
w->updateDuringSync = false;
@@ -1539,8 +1590,11 @@ void QSGThreadedRenderLoop::polishAndSync(Window *w, bool inExpose)
qCDebug(QSG_LOG_RENDERLOOP, "- wait for sync");
if (profileFrames)
waitTime = timer.nsecsElapsed();
+ Q_TRACE(QSG_wait_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphPolishAndSync,
QQuickProfiler::SceneGraphPolishAndSyncWait);
+ Q_TRACE(QSG_sync_entry);
+
w->thread->waitCondition.wait(&w->thread->mutex);
m_lockedForSync = false;
w->thread->mutex.unlock();
@@ -1548,8 +1602,10 @@ void QSGThreadedRenderLoop::polishAndSync(Window *w, bool inExpose)
if (profileFrames)
syncTime = timer.nsecsElapsed();
+ Q_TRACE(QSG_sync_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphPolishAndSync,
QQuickProfiler::SceneGraphPolishAndSyncSync);
+ Q_TRACE(QSG_animations_entry);
if (m_animation_timer == 0 && m_animation_driver->isRunning()) {
qCDebug(QSG_LOG_RENDERLOOP, "- advancing animations");
@@ -1570,6 +1626,7 @@ void QSGThreadedRenderLoop::polishAndSync(Window *w, bool inExpose)
<< ", animations=" << (timer.nsecsElapsed() - syncTime) / 1000000
<< " - (on Gui thread) " << window;
+ Q_TRACE(QSG_animations_exit);
Q_QUICK_SG_PROFILE_END(QQuickProfiler::SceneGraphPolishAndSync,
QQuickProfiler::SceneGraphPolishAndSyncAnimations);
}
diff --git a/src/quick/scenegraph/qsgwindowsrenderloop.cpp b/src/quick/scenegraph/qsgwindowsrenderloop.cpp
index 5b48b86568..20d7c4557f 100644
--- a/src/quick/scenegraph/qsgwindowsrenderloop.cpp
+++ b/src/quick/scenegraph/qsgwindowsrenderloop.cpp
@@ -60,6 +60,8 @@
#include <private/qquickopenglshadereffectnode_p.h>
#endif
+#include <qtquick_tracepoints_p.h>
+
QT_BEGIN_NAMESPACE
// Single-threaded render loop with a custom animation driver. Like a
@@ -180,10 +182,9 @@ void QSGWindowsRenderLoop::show(QQuickWindow *window)
m_gl->setShareContext(qt_gl_global_share_context());
bool created = m_gl->create();
if (!created) {
- const bool isEs = m_gl->isOpenGLES();
delete m_gl;
m_gl = nullptr;
- handleContextCreationFailure(window, isEs);
+ handleContextCreationFailure(window);
return;
}
@@ -393,6 +394,7 @@ bool QSGWindowsRenderLoop::event(QEvent *event)
void QSGWindowsRenderLoop::render()
{
RLDEBUG("render");
+ Q_TRACE(QSG_render_entry);
bool rendered = false;
for (const WindowData &wd : qAsConst(m_windows)) {
if (wd.pendingUpdate) {
@@ -407,10 +409,13 @@ void QSGWindowsRenderLoop::render()
QThread::msleep(m_vsyncDelta);
}
+ Q_TRACE(QSG_render_exit);
+
if (m_animationDriver->isRunning()) {
RLDEBUG("advancing animations");
QSG_LOG_TIME_SAMPLE(time_start);
Q_QUICK_SG_PROFILE_START(QQuickProfiler::SceneGraphWindowsAnimations);
+ Q_TRACE(QSG_animations_entry);
m_animationDriver->advance();
RLDEBUG("animations advanced");
@@ -418,6 +423,7 @@ void QSGWindowsRenderLoop::render()
"animations ticked in %dms",
int((qsg_render_timer.nsecsElapsed() - time_start)/1000000));
+ Q_TRACE(QSG_animations_exit);
Q_QUICK_SG_PROFILE_END(QQuickProfiler::SceneGraphWindowsAnimations, 1);
// It is not given that animations triggered another maybeUpdate()
@@ -476,15 +482,20 @@ void QSGWindowsRenderLoop::renderWindow(QQuickWindow *window)
if (!windowData(window))
return;
+ Q_TRACE_SCOPE(QSG_renderWindow);
+
QSG_LOG_TIME_SAMPLE(time_start);
Q_QUICK_SG_PROFILE_START(QQuickProfiler::SceneGraphPolishFrame);
+ Q_TRACE(QSG_polishItems_entry);
RLDEBUG(" - polishing");
d->polishItems();
QSG_LOG_TIME_SAMPLE(time_polished);
+ Q_TRACE(QSG_polishItems_exit);
Q_QUICK_SG_PROFILE_SWITCH(QQuickProfiler::SceneGraphPolishFrame,
QQuickProfiler::SceneGraphRenderLoopFrame,
QQuickProfiler::SceneGraphPolishPolish);
+ Q_TRACE(QSG_sync_entry);
emit window->afterAnimating();
@@ -492,17 +503,22 @@ void QSGWindowsRenderLoop::renderWindow(QQuickWindow *window)
d->syncSceneGraph();
if (lastDirtyWindow)
m_rc->endSync();
+ Q_TRACE(QSG_sync_exit);
QSG_RENDER_TIMING_SAMPLE(QQuickProfiler::SceneGraphRenderLoopFrame, time_synced,
QQuickProfiler::SceneGraphRenderLoopSync);
+ Q_TRACE(QSG_render_entry);
RLDEBUG(" - rendering");
d->renderSceneGraph(window->size());
+ Q_TRACE(QSG_render_exit);
QSG_RENDER_TIMING_SAMPLE(QQuickProfiler::SceneGraphRenderLoopFrame, time_rendered,
QQuickProfiler::SceneGraphRenderLoopRender);
+ Q_TRACE(QSG_swap_entry);
RLDEBUG(" - swapping");
if (!d->customRenderStage || !d->customRenderStage->swap())
m_gl->swapBuffers(window);
+ Q_TRACE(QSG_swap_exit);
QSG_RENDER_TIMING_SAMPLE(QQuickProfiler::SceneGraphRenderLoopFrame, time_swapped,
QQuickProfiler::SceneGraphRenderLoopSwap);
diff --git a/src/quick/scenegraph/scenegraph.pri b/src/quick/scenegraph/scenegraph.pri
index 56d97226fb..b12f57d8ef 100644
--- a/src/quick/scenegraph/scenegraph.pri
+++ b/src/quick/scenegraph/scenegraph.pri
@@ -53,7 +53,6 @@ HEADERS += \
$$PWD/util/qsgengine.h \
$$PWD/util/qsgengine_p.h \
$$PWD/util/qsgplaintexture_p.h \
- $$PWD/util/qsgrhinativetextureimporter_p.h \
$$PWD/util/qsgsimplerectnode.h \
$$PWD/util/qsgsimpletexturenode.h \
$$PWD/util/qsgtextureprovider.h \
@@ -70,7 +69,6 @@ SOURCES += \
$$PWD/util/qsgareaallocator.cpp \
$$PWD/util/qsgengine.cpp \
$$PWD/util/qsgplaintexture.cpp \
- $$PWD/util/qsgrhinativetextureimporter.cpp \
$$PWD/util/qsgsimplerectnode.cpp \
$$PWD/util/qsgsimpletexturenode.cpp \
$$PWD/util/qsgtextureprovider.cpp \
diff --git a/src/quick/scenegraph/shaders/outlinedtext.vert b/src/quick/scenegraph/shaders/outlinedtext.vert
index ced8afd034..9df832de3c 100644
--- a/src/quick/scenegraph/shaders/outlinedtext.vert
+++ b/src/quick/scenegraph/shaders/outlinedtext.vert
@@ -1,6 +1,7 @@
uniform highp mat4 matrix;
uniform highp vec2 textureScale;
uniform highp vec2 shift;
+uniform highp float dpr;
attribute highp vec4 vCoord;
attribute highp vec2 tCoord;
@@ -18,5 +19,6 @@ void main()
sCoordDown = (tCoord - vec2(0.0, 1.0)) * textureScale;
sCoordLeft = (tCoord - vec2(-1.0, 0.0)) * textureScale;
sCoordRight = (tCoord - vec2(1.0, 0.0)) * textureScale;
- gl_Position = matrix * vCoord;
+ vec3 dprSnapPos = floor(vCoord.xyz * dpr + 0.5) / dpr;
+ gl_Position = matrix * vec4(dprSnapPos, vCoord.w);
} \ No newline at end of file
diff --git a/src/quick/scenegraph/shaders/outlinedtext_core.vert b/src/quick/scenegraph/shaders/outlinedtext_core.vert
index 4aa13101fd..a854355460 100644
--- a/src/quick/scenegraph/shaders/outlinedtext_core.vert
+++ b/src/quick/scenegraph/shaders/outlinedtext_core.vert
@@ -12,6 +12,7 @@ out vec2 sCoordRight;
uniform mat4 matrix;
uniform vec2 textureScale;
uniform vec2 shift;
+uniform float dpr;
void main()
{
@@ -20,5 +21,6 @@ void main()
sCoordDown = (tCoord - vec2(0.0, 1.0)) * textureScale;
sCoordLeft = (tCoord - vec2(-1.0, 0.0)) * textureScale;
sCoordRight = (tCoord - vec2(1.0, 0.0)) * textureScale;
- gl_Position = matrix * vCoord;
+ vec3 dprSnapPos = floor(vCoord.xyz * dpr + 0.5) / dpr;
+ gl_Position = matrix * vec4(dprSnapPos, vCoord.w);
} \ No newline at end of file
diff --git a/src/quick/scenegraph/shaders/styledtext.vert b/src/quick/scenegraph/shaders/styledtext.vert
index 7001bbc262..29c9902609 100644
--- a/src/quick/scenegraph/shaders/styledtext.vert
+++ b/src/quick/scenegraph/shaders/styledtext.vert
@@ -13,5 +13,6 @@ void main()
{
sampleCoord = tCoord * textureScale;
shiftedSampleCoord = (tCoord - shift) * textureScale;
- gl_Position = matrix * floor(vCoord * dpr + 0.5) / dpr;
+ vec3 dprSnapPos = floor(vCoord.xyz * dpr + 0.5) / dpr;
+ gl_Position = matrix * vec4(dprSnapPos, vCoord.w);
}
diff --git a/src/quick/scenegraph/shaders/styledtext_core.vert b/src/quick/scenegraph/shaders/styledtext_core.vert
index c522877bb3..04a0e88da8 100644
--- a/src/quick/scenegraph/shaders/styledtext_core.vert
+++ b/src/quick/scenegraph/shaders/styledtext_core.vert
@@ -15,5 +15,6 @@ void main()
{
sampleCoord = tCoord * textureScale;
shiftedSampleCoord = (tCoord - shift) * textureScale;
- gl_Position = matrix * round(vCoord * dpr) / dpr;
+ vec3 dprSnapPos = floor(vCoord.xyz * dpr + 0.5) / dpr;
+ gl_Position = matrix * vec4(dprSnapPos, vCoord.w);
}
diff --git a/src/quick/scenegraph/shaders/textmask.vert b/src/quick/scenegraph/shaders/textmask.vert
index 4c678270d0..1692159d2c 100644
--- a/src/quick/scenegraph/shaders/textmask.vert
+++ b/src/quick/scenegraph/shaders/textmask.vert
@@ -10,5 +10,6 @@ varying highp vec2 sampleCoord;
void main()
{
sampleCoord = tCoord * textureScale;
- gl_Position = matrix * floor(vCoord * dpr + 0.5) / dpr;
+ vec3 dprSnapPos = floor(vCoord.xyz * dpr + 0.5) / dpr;
+ gl_Position = matrix * vec4(dprSnapPos, vCoord.w);
}
diff --git a/src/quick/scenegraph/shaders/textmask_core.vert b/src/quick/scenegraph/shaders/textmask_core.vert
index f996040f70..b0efc1e731 100644
--- a/src/quick/scenegraph/shaders/textmask_core.vert
+++ b/src/quick/scenegraph/shaders/textmask_core.vert
@@ -12,5 +12,6 @@ uniform float dpr;
void main()
{
sampleCoord = tCoord * textureScale;
- gl_Position = matrix * round(vCoord * dpr) / dpr;
+ vec3 dprSnapPos = floor(vCoord.xyz * dpr + 0.5) / dpr;
+ gl_Position = matrix * vec4(dprSnapPos, vCoord.w);
}
diff --git a/src/quick/scenegraph/shaders_ng/24bittextmask.frag.qsb b/src/quick/scenegraph/shaders_ng/24bittextmask.frag.qsb
index b16da4d76a..c49cf9a6d8 100644
--- a/src/quick/scenegraph/shaders_ng/24bittextmask.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/24bittextmask.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/32bitcolortext.frag.qsb b/src/quick/scenegraph/shaders_ng/32bitcolortext.frag.qsb
index 1a12a35b49..f5b3cf91e5 100644
--- a/src/quick/scenegraph/shaders_ng/32bitcolortext.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/32bitcolortext.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/8bittextmask.frag.qsb b/src/quick/scenegraph/shaders_ng/8bittextmask.frag.qsb
index 2d0d23d813..3e0731802d 100644
--- a/src/quick/scenegraph/shaders_ng/8bittextmask.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/8bittextmask.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag.qsb b/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag.qsb
index 65d9af4736..51cfa99402 100644
--- a/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/distancefieldoutlinetext.frag.qsb b/src/quick/scenegraph/shaders_ng/distancefieldoutlinetext.frag.qsb
index 5753794649..aecf6ef18d 100644
--- a/src/quick/scenegraph/shaders_ng/distancefieldoutlinetext.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/distancefieldoutlinetext.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/distancefieldoutlinetext.vert.qsb b/src/quick/scenegraph/shaders_ng/distancefieldoutlinetext.vert.qsb
index 6026960d68..e62ec89964 100644
--- a/src/quick/scenegraph/shaders_ng/distancefieldoutlinetext.vert.qsb
+++ b/src/quick/scenegraph/shaders_ng/distancefieldoutlinetext.vert.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/distancefieldoutlinetext_a.frag.qsb b/src/quick/scenegraph/shaders_ng/distancefieldoutlinetext_a.frag.qsb
index 451ccbac5b..c6e5d2d102 100644
--- a/src/quick/scenegraph/shaders_ng/distancefieldoutlinetext_a.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/distancefieldoutlinetext_a.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/distancefieldshiftedtext.frag.qsb b/src/quick/scenegraph/shaders_ng/distancefieldshiftedtext.frag.qsb
index 41ebc12abf..bf6e902f5a 100644
--- a/src/quick/scenegraph/shaders_ng/distancefieldshiftedtext.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/distancefieldshiftedtext.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/distancefieldshiftedtext.vert.qsb b/src/quick/scenegraph/shaders_ng/distancefieldshiftedtext.vert.qsb
index 0c37ccb6ed..398b6adaa2 100644
--- a/src/quick/scenegraph/shaders_ng/distancefieldshiftedtext.vert.qsb
+++ b/src/quick/scenegraph/shaders_ng/distancefieldshiftedtext.vert.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/distancefieldshiftedtext_a.frag.qsb b/src/quick/scenegraph/shaders_ng/distancefieldshiftedtext_a.frag.qsb
index b92235eec3..e243f3300a 100644
--- a/src/quick/scenegraph/shaders_ng/distancefieldshiftedtext_a.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/distancefieldshiftedtext_a.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/distancefieldtext.frag.qsb b/src/quick/scenegraph/shaders_ng/distancefieldtext.frag.qsb
index 28ba15e3de..504d586915 100644
--- a/src/quick/scenegraph/shaders_ng/distancefieldtext.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/distancefieldtext.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/distancefieldtext.vert.qsb b/src/quick/scenegraph/shaders_ng/distancefieldtext.vert.qsb
index 2877ab92db..f020de9f8c 100644
--- a/src/quick/scenegraph/shaders_ng/distancefieldtext.vert.qsb
+++ b/src/quick/scenegraph/shaders_ng/distancefieldtext.vert.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/distancefieldtext_a.frag.qsb b/src/quick/scenegraph/shaders_ng/distancefieldtext_a.frag.qsb
index 2e6085aa39..0c80f6dbc4 100644
--- a/src/quick/scenegraph/shaders_ng/distancefieldtext_a.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/distancefieldtext_a.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/flatcolor.frag.qsb b/src/quick/scenegraph/shaders_ng/flatcolor.frag.qsb
index a528c667fd..7bc588b806 100644
--- a/src/quick/scenegraph/shaders_ng/flatcolor.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/flatcolor.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/flatcolor.vert.qsb b/src/quick/scenegraph/shaders_ng/flatcolor.vert.qsb
index e83de529e6..7ad211c5cf 100644
--- a/src/quick/scenegraph/shaders_ng/flatcolor.vert.qsb
+++ b/src/quick/scenegraph/shaders_ng/flatcolor.vert.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/hiqsubpixeldistancefieldtext.frag.qsb b/src/quick/scenegraph/shaders_ng/hiqsubpixeldistancefieldtext.frag.qsb
index 81c51321bb..3d31b99fca 100644
--- a/src/quick/scenegraph/shaders_ng/hiqsubpixeldistancefieldtext.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/hiqsubpixeldistancefieldtext.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/hiqsubpixeldistancefieldtext.vert.qsb b/src/quick/scenegraph/shaders_ng/hiqsubpixeldistancefieldtext.vert.qsb
index 6bf01658a1..82b4a63b65 100644
--- a/src/quick/scenegraph/shaders_ng/hiqsubpixeldistancefieldtext.vert.qsb
+++ b/src/quick/scenegraph/shaders_ng/hiqsubpixeldistancefieldtext.vert.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/hiqsubpixeldistancefieldtext_a.frag.qsb b/src/quick/scenegraph/shaders_ng/hiqsubpixeldistancefieldtext_a.frag.qsb
index 4a9ac900a6..ab27f73163 100644
--- a/src/quick/scenegraph/shaders_ng/hiqsubpixeldistancefieldtext_a.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/hiqsubpixeldistancefieldtext_a.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/loqsubpixeldistancefieldtext.frag.qsb b/src/quick/scenegraph/shaders_ng/loqsubpixeldistancefieldtext.frag.qsb
index 76c2459edf..9fae9961c7 100644
--- a/src/quick/scenegraph/shaders_ng/loqsubpixeldistancefieldtext.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/loqsubpixeldistancefieldtext.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/loqsubpixeldistancefieldtext.vert.qsb b/src/quick/scenegraph/shaders_ng/loqsubpixeldistancefieldtext.vert.qsb
index 7bfa7ccd4a..53c8c3ef48 100644
--- a/src/quick/scenegraph/shaders_ng/loqsubpixeldistancefieldtext.vert.qsb
+++ b/src/quick/scenegraph/shaders_ng/loqsubpixeldistancefieldtext.vert.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/loqsubpixeldistancefieldtext_a.frag.qsb b/src/quick/scenegraph/shaders_ng/loqsubpixeldistancefieldtext_a.frag.qsb
index 8f8304fb49..f7ab8301f3 100644
--- a/src/quick/scenegraph/shaders_ng/loqsubpixeldistancefieldtext_a.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/loqsubpixeldistancefieldtext_a.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/opaquetexture.frag.qsb b/src/quick/scenegraph/shaders_ng/opaquetexture.frag.qsb
index 0b4554568b..a30e7868c7 100644
--- a/src/quick/scenegraph/shaders_ng/opaquetexture.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/opaquetexture.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/opaquetexture.vert.qsb b/src/quick/scenegraph/shaders_ng/opaquetexture.vert.qsb
index 2872af0200..8a62c79ba4 100644
--- a/src/quick/scenegraph/shaders_ng/opaquetexture.vert.qsb
+++ b/src/quick/scenegraph/shaders_ng/opaquetexture.vert.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/outlinedtext.frag.qsb b/src/quick/scenegraph/shaders_ng/outlinedtext.frag.qsb
index 5ab92fecca..bec0a086af 100644
--- a/src/quick/scenegraph/shaders_ng/outlinedtext.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/outlinedtext.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/outlinedtext.vert b/src/quick/scenegraph/shaders_ng/outlinedtext.vert
index c683a4273c..023f9dfdc2 100644
--- a/src/quick/scenegraph/shaders_ng/outlinedtext.vert
+++ b/src/quick/scenegraph/shaders_ng/outlinedtext.vert
@@ -28,5 +28,6 @@ void main()
sCoordDown = (tCoord - vec2(0.0, 1.0)) * ubuf.textureScale;
sCoordLeft = (tCoord - vec2(-1.0, 0.0)) * ubuf.textureScale;
sCoordRight = (tCoord - vec2(1.0, 0.0)) * ubuf.textureScale;
- gl_Position = ubuf.matrix * vCoord;
+ vec3 dprSnapPos = floor(vCoord.xyz * ubuf.dpr + 0.5) / ubuf.dpr;
+ gl_Position = ubuf.matrix * vec4(dprSnapPos, vCoord.w);
}
diff --git a/src/quick/scenegraph/shaders_ng/outlinedtext.vert.qsb b/src/quick/scenegraph/shaders_ng/outlinedtext.vert.qsb
index 6aee048faa..3f9464dd7c 100644
--- a/src/quick/scenegraph/shaders_ng/outlinedtext.vert.qsb
+++ b/src/quick/scenegraph/shaders_ng/outlinedtext.vert.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag.qsb b/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag.qsb
index 6e6b1ab6c2..7f08bcee9e 100644
--- a/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/shadereffect.frag.qsb b/src/quick/scenegraph/shaders_ng/shadereffect.frag.qsb
index 4b08ee2ce4..dc3b174553 100644
--- a/src/quick/scenegraph/shaders_ng/shadereffect.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/shadereffect.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/shadereffect.vert.qsb b/src/quick/scenegraph/shaders_ng/shadereffect.vert.qsb
index 4a8c646a21..06e1e3704a 100644
--- a/src/quick/scenegraph/shaders_ng/shadereffect.vert.qsb
+++ b/src/quick/scenegraph/shaders_ng/shadereffect.vert.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/smoothcolor.frag.qsb b/src/quick/scenegraph/shaders_ng/smoothcolor.frag.qsb
index f99cdf1176..2ad3229e4a 100644
--- a/src/quick/scenegraph/shaders_ng/smoothcolor.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/smoothcolor.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/smoothcolor.vert.qsb b/src/quick/scenegraph/shaders_ng/smoothcolor.vert.qsb
index 59c4104a2c..7d3a742650 100644
--- a/src/quick/scenegraph/shaders_ng/smoothcolor.vert.qsb
+++ b/src/quick/scenegraph/shaders_ng/smoothcolor.vert.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/smoothtexture.frag.qsb b/src/quick/scenegraph/shaders_ng/smoothtexture.frag.qsb
index ffaecbb56c..d5b738cc38 100644
--- a/src/quick/scenegraph/shaders_ng/smoothtexture.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/smoothtexture.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/smoothtexture.vert.qsb b/src/quick/scenegraph/shaders_ng/smoothtexture.vert.qsb
index b7715d4dd5..50be6d62e0 100644
--- a/src/quick/scenegraph/shaders_ng/smoothtexture.vert.qsb
+++ b/src/quick/scenegraph/shaders_ng/smoothtexture.vert.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/sprite.frag.qsb b/src/quick/scenegraph/shaders_ng/sprite.frag.qsb
index 45d5bc14ee..f6a7913054 100644
--- a/src/quick/scenegraph/shaders_ng/sprite.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/sprite.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/sprite.vert.qsb b/src/quick/scenegraph/shaders_ng/sprite.vert.qsb
index b55f881734..c11191feef 100644
--- a/src/quick/scenegraph/shaders_ng/sprite.vert.qsb
+++ b/src/quick/scenegraph/shaders_ng/sprite.vert.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/stencilclip.frag.qsb b/src/quick/scenegraph/shaders_ng/stencilclip.frag.qsb
index 6ae7a51f7a..0fcd1d3f80 100644
--- a/src/quick/scenegraph/shaders_ng/stencilclip.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/stencilclip.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/stencilclip.vert.qsb b/src/quick/scenegraph/shaders_ng/stencilclip.vert.qsb
index ce2ed3c5b3..6381f6c8d9 100644
--- a/src/quick/scenegraph/shaders_ng/stencilclip.vert.qsb
+++ b/src/quick/scenegraph/shaders_ng/stencilclip.vert.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/styledtext.frag.qsb b/src/quick/scenegraph/shaders_ng/styledtext.frag.qsb
index 66ebc5f827..ff7eceba83 100644
--- a/src/quick/scenegraph/shaders_ng/styledtext.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/styledtext.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/styledtext.vert b/src/quick/scenegraph/shaders_ng/styledtext.vert
index 10565107c6..beadf07c79 100644
--- a/src/quick/scenegraph/shaders_ng/styledtext.vert
+++ b/src/quick/scenegraph/shaders_ng/styledtext.vert
@@ -22,5 +22,6 @@ void main()
{
sampleCoord = tCoord * ubuf.textureScale;
shiftedSampleCoord = (tCoord - ubuf.shift) * ubuf.textureScale;
- gl_Position = ubuf.matrix * floor((vCoord * ubuf.dpr) + 0.5) / ubuf.dpr;
+ vec3 dprSnapPos = floor(vCoord.xyz * ubuf.dpr + 0.5) / ubuf.dpr;
+ gl_Position = ubuf.matrix * vec4(dprSnapPos, vCoord.w);
}
diff --git a/src/quick/scenegraph/shaders_ng/styledtext.vert.qsb b/src/quick/scenegraph/shaders_ng/styledtext.vert.qsb
index 9a27ed0eb8..26f791be7f 100644
--- a/src/quick/scenegraph/shaders_ng/styledtext.vert.qsb
+++ b/src/quick/scenegraph/shaders_ng/styledtext.vert.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/styledtext_a.frag.qsb b/src/quick/scenegraph/shaders_ng/styledtext_a.frag.qsb
index 9dd4137072..5e023b086b 100644
--- a/src/quick/scenegraph/shaders_ng/styledtext_a.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/styledtext_a.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/textmask.frag.qsb b/src/quick/scenegraph/shaders_ng/textmask.frag.qsb
index b16da4d76a..4cc598c5f8 100644
--- a/src/quick/scenegraph/shaders_ng/textmask.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/textmask.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/textmask.vert b/src/quick/scenegraph/shaders_ng/textmask.vert
index d7d3bf892e..9d80d5dadb 100644
--- a/src/quick/scenegraph/shaders_ng/textmask.vert
+++ b/src/quick/scenegraph/shaders_ng/textmask.vert
@@ -17,5 +17,6 @@ out gl_PerVertex { vec4 gl_Position; };
void main()
{
sampleCoord = tCoord * ubuf.textureScale;
- gl_Position = ubuf.matrix * floor((vCoord * ubuf.dpr) + 0.5) / ubuf.dpr;
+ vec3 dprSnapPos = floor(vCoord.xyz * ubuf.dpr + 0.5) / ubuf.dpr;
+ gl_Position = ubuf.matrix * vec4(dprSnapPos, vCoord.w);
}
diff --git a/src/quick/scenegraph/shaders_ng/textmask.vert.qsb b/src/quick/scenegraph/shaders_ng/textmask.vert.qsb
index ae196ed0ad..03be2e457d 100644
--- a/src/quick/scenegraph/shaders_ng/textmask.vert.qsb
+++ b/src/quick/scenegraph/shaders_ng/textmask.vert.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/texture.frag.qsb b/src/quick/scenegraph/shaders_ng/texture.frag.qsb
index 3f4aa3713c..55e8c23335 100644
--- a/src/quick/scenegraph/shaders_ng/texture.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/texture.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/texture.vert.qsb b/src/quick/scenegraph/shaders_ng/texture.vert.qsb
index bf0bc7d9fa..7ce3600447 100644
--- a/src/quick/scenegraph/shaders_ng/texture.vert.qsb
+++ b/src/quick/scenegraph/shaders_ng/texture.vert.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/vertexcolor.frag.qsb b/src/quick/scenegraph/shaders_ng/vertexcolor.frag.qsb
index 93965a55dd..2ad3229e4a 100644
--- a/src/quick/scenegraph/shaders_ng/vertexcolor.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/vertexcolor.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/vertexcolor.vert.qsb b/src/quick/scenegraph/shaders_ng/vertexcolor.vert.qsb
index 98abe4ef6f..1bea18c036 100644
--- a/src/quick/scenegraph/shaders_ng/vertexcolor.vert.qsb
+++ b/src/quick/scenegraph/shaders_ng/vertexcolor.vert.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/visualization.frag.qsb b/src/quick/scenegraph/shaders_ng/visualization.frag.qsb
index eadad927dc..6b1a6a6c74 100644
--- a/src/quick/scenegraph/shaders_ng/visualization.frag.qsb
+++ b/src/quick/scenegraph/shaders_ng/visualization.frag.qsb
Binary files differ
diff --git a/src/quick/scenegraph/shaders_ng/visualization.vert.qsb b/src/quick/scenegraph/shaders_ng/visualization.vert.qsb
index 7ba27cb4b5..5f64c84705 100644
--- a/src/quick/scenegraph/shaders_ng/visualization.vert.qsb
+++ b/src/quick/scenegraph/shaders_ng/visualization.vert.qsb
Binary files differ
diff --git a/src/quick/scenegraph/util/qsgopenglatlastexture.cpp b/src/quick/scenegraph/util/qsgopenglatlastexture.cpp
index 75a874424a..18c72286d1 100644
--- a/src/quick/scenegraph/util/qsgopenglatlastexture.cpp
+++ b/src/quick/scenegraph/util/qsgopenglatlastexture.cpp
@@ -59,6 +59,8 @@
#include <private/qquickprofiler_p.h>
+#include <qtquick_tracepoints_p.h>
+
QT_BEGIN_NAMESPACE
#ifndef GL_BGRA
@@ -250,14 +252,17 @@ void AtlasBase::bind(QSGTexture::Filtering filtering)
if (profileFrames)
qsg_renderer_timer.start();
+ Q_TRACE_SCOPE(QSG_texture_prepare);
Q_QUICK_SG_PROFILE_START(QQuickProfiler::SceneGraphTexturePrepare);
// Skip bind, convert, swizzle; they're irrelevant
Q_QUICK_SG_PROFILE_SKIP(QQuickProfiler::SceneGraphTexturePrepare,
QQuickProfiler::SceneGraphTexturePrepareStart, 3);
+ Q_TRACE(QSG_texture_upload_entry);
uploadPendingTexture(i);
+ Q_TRACE(QSG_texture_upload_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphTexturePrepare,
QQuickProfiler::SceneGraphTexturePrepareUpload);
diff --git a/src/quick/scenegraph/util/qsgplaintexture.cpp b/src/quick/scenegraph/util/qsgplaintexture.cpp
index fdebe03494..f00918bb4e 100644
--- a/src/quick/scenegraph/util/qsgplaintexture.cpp
+++ b/src/quick/scenegraph/util/qsgplaintexture.cpp
@@ -38,7 +38,6 @@
****************************************************************************/
#include "qsgplaintexture_p.h"
-#include "qsgrhinativetextureimporter_p.h"
#include <QtQuick/private/qsgcontext_p.h>
#include <qmath.h>
#include <private/qquickprofiler_p.h>
@@ -53,6 +52,8 @@
#endif
#include <QtGui/private/qrhi_p.h>
+#include <qtquick_tracepoints_p.h>
+
#if QT_CONFIG(opengl)
static QElapsedTimer qsg_renderer_timer;
#endif
@@ -150,9 +151,11 @@ void QSGPlainTexture::setTextureId(int id) // legacy (GL-only)
void QSGPlainTexture::bind() // legacy (GL-only)
{
#if QT_CONFIG(opengl)
+ Q_TRACE_SCOPE(QSG_texture_prepare);
QOpenGLContext *context = QOpenGLContext::currentContext();
QOpenGLFunctions *funcs = context->functions();
if (!m_dirty_texture) {
+ Q_TRACE_SCOPE(QSG_texture_bind);
funcs->glBindTexture(GL_TEXTURE_2D, m_texture_id);
if (mipmapFiltering() != QSGTexture::None && !m_mipmaps_generated) {
funcs->glGenerateMipmap(GL_TEXTURE_2D);
@@ -174,6 +177,7 @@ void QSGPlainTexture::bind() // legacy (GL-only)
if (m_image.isNull()) {
if (m_texture_id && m_owns_texture) {
+ Q_TRACE_SCOPE(QSG_texture_delete);
funcs->glDeleteTextures(1, &m_texture_id);
qCDebug(QSG_LOG_TIME_TEXTURE, "plain texture deleted in %dms - %dx%d",
(int) qsg_renderer_timer.elapsed(),
@@ -189,6 +193,8 @@ void QSGPlainTexture::bind() // legacy (GL-only)
return;
}
+ Q_TRACE(QSG_texture_bind_entry);
+
if (m_texture_id == 0)
funcs->glGenTextures(1, &m_texture_id);
funcs->glBindTexture(GL_TEXTURE_2D, m_texture_id);
@@ -196,8 +202,10 @@ void QSGPlainTexture::bind() // legacy (GL-only)
qint64 bindTime = 0;
if (profileFrames)
bindTime = qsg_renderer_timer.nsecsElapsed();
+ Q_TRACE(QSG_texture_bind_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphTexturePrepare,
QQuickProfiler::SceneGraphTexturePrepareBind);
+ Q_TRACE(QSG_texture_upload_entry);
// ### TODO: check for out-of-memory situations...
@@ -232,8 +240,10 @@ void QSGPlainTexture::bind() // legacy (GL-only)
qint64 uploadTime = 0;
if (profileFrames)
uploadTime = qsg_renderer_timer.nsecsElapsed();
+ Q_TRACE(QSG_texture_upload_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphTexturePrepare,
QQuickProfiler::SceneGraphTexturePrepareUpload);
+ Q_TRACE(QSG_texture_mipmap_entry);
if (mipmapFiltering() != QSGTexture::None) {
funcs->glGenerateMipmap(GL_TEXTURE_2D);
@@ -252,6 +262,7 @@ void QSGPlainTexture::bind() // legacy (GL-only)
int((mipmapTime - uploadTime)/1000000),
m_texture_size != m_image.size() ? " (scaled to GL_MAX_TEXTURE_SIZE)" : "");
}
+ Q_TRACE(QSG_texture_mipmap_exit);
Q_QUICK_SG_PROFILE_END(QQuickProfiler::SceneGraphTexturePrepare,
QQuickProfiler::SceneGraphTexturePrepareMipmap);
@@ -281,14 +292,14 @@ void QSGPlainTexture::setTextureFromNativeObject(QRhi *rhi, QQuickWindow::Native
{
Q_UNUSED(type);
- QRhiTexture::Flags flags = 0;
+ QRhiTexture::Flags flags;
if (mipmap)
flags |= QRhiTexture::MipMapped | QRhiTexture::UsedWithGenerateMips;
QRhiTexture *t = rhi->newTexture(QRhiTexture::RGBA8, size, 1, flags);
// ownership of the native object is never taken
- QSGRhiNativeTextureImporter::buildWrapper(rhi, t, nativeObjectPtr, nativeLayout);
+ t->buildFrom({nativeObjectPtr, nativeLayout});
setTexture(t);
}
@@ -421,7 +432,7 @@ void QSGPlainTexturePrivate::updateRhiTexture(QRhi *rhi, QRhiResourceUpdateBatch
}
if (!q->m_texture) {
- QRhiTexture::Flags f = 0;
+ QRhiTexture::Flags f;
if (hasMipMaps)
f |= QRhiTexture::MipMapped | QRhiTexture::UsedWithGenerateMips;
diff --git a/src/quick/scenegraph/util/qsgrhiatlastexture.cpp b/src/quick/scenegraph/util/qsgrhiatlastexture.cpp
index 3dc1f5f526..6b5f1aec4f 100644
--- a/src/quick/scenegraph/util/qsgrhiatlastexture.cpp
+++ b/src/quick/scenegraph/util/qsgrhiatlastexture.cpp
@@ -49,6 +49,9 @@
#include <private/qquickprofiler_p.h>
#include <private/qsgdefaultrendercontext_p.h>
#include <private/qsgtexture_p.h>
+
+#include <qtquick_tracepoints_p.h>
+
#if 0
#include <private/qsgcompressedtexture_p.h>
#include <private/qsgcompressedatlastexture_p.h>
@@ -197,14 +200,17 @@ void AtlasBase::updateRhiTexture(QRhiResourceUpdateBatch *resourceUpdates)
if (profileFrames)
qsg_renderer_timer.start();
+ Q_TRACE_SCOPE(QSG_texture_prepare);
Q_QUICK_SG_PROFILE_START(QQuickProfiler::SceneGraphTexturePrepare);
// Skip bind, convert, swizzle; they're irrelevant
Q_QUICK_SG_PROFILE_SKIP(QQuickProfiler::SceneGraphTexturePrepare,
QQuickProfiler::SceneGraphTexturePrepareStart, 3);
+ Q_TRACE(QSG_texture_upload_entry);
enqueueTextureUpload(t, resourceUpdates);
+ Q_TRACE(QSG_texture_upload_exit);
Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphTexturePrepare,
QQuickProfiler::SceneGraphTexturePrepareUpload);
diff --git a/src/quick/scenegraph/util/qsgrhinativetextureimporter.cpp b/src/quick/scenegraph/util/qsgrhinativetextureimporter.cpp
deleted file mode 100644
index 7a7c19f587..0000000000
--- a/src/quick/scenegraph/util/qsgrhinativetextureimporter.cpp
+++ /dev/null
@@ -1,104 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2019 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgrhinativetextureimporter_p.h"
-#include <private/qsgrhisupport_p.h> // to get all the relevant qrhi headers
-
-QT_BEGIN_NAMESPACE
-
-void QSGRhiNativeTextureImporter::buildWrapper(QRhi *rhi, QRhiTexture *t,
- const void *nativeObjectPtr, int nativeLayout)
-{
-#if !QT_CONFIG(vulkan)
- Q_UNUSED(nativeLayout);
-#endif
-#if !QT_CONFIG(opengl) && !QT_CONFIG(vulkan) && !defined(Q_OS_WIN) && !defined(Q_OS_DARWIN)
- Q_UNUSED(nativeObjectPtr);
-#endif
-
- switch (rhi->backend()) {
- case QRhi::OpenGLES2:
- {
-#if QT_CONFIG(opengl)
- QRhiGles2TextureNativeHandles h;
- h.texture = *reinterpret_cast<const uint *>(nativeObjectPtr);
- t->buildFrom(&h);
-#endif
- }
- break;
- case QRhi::Vulkan:
- {
-#if QT_CONFIG(vulkan)
- QRhiVulkanTextureNativeHandles h;
- h.image = *reinterpret_cast<const VkImage *>(nativeObjectPtr);
- h.layout = VkImageLayout(nativeLayout);
- t->buildFrom(&h);
-#endif
- }
- break;
- case QRhi::D3D11:
- {
-#ifdef Q_OS_WIN
- QRhiD3D11TextureNativeHandles h;
- h.texture = *reinterpret_cast<void * const *>(nativeObjectPtr);
- t->buildFrom(&h);
-#endif
- }
- break;
- case QRhi::Metal:
- {
-#ifdef Q_OS_DARWIN
- QRhiMetalTextureNativeHandles h;
- h.texture = *reinterpret_cast<void * const *>(nativeObjectPtr);
- t->buildFrom(&h);
-#endif
- }
- break;
- case QRhi::Null:
- t->build();
- break;
- default:
- qWarning("QSGRhiNativeTextureImporter: encountered an unsupported QRhi backend (%d)",
- int(rhi->backend()));
- t->build();
- break;
- }
-}
-
-QT_END_NAMESPACE
diff --git a/src/quick/util/qquickbehavior.cpp b/src/quick/util/qquickbehavior.cpp
index ae5c481e2f..eee8562a2a 100644
--- a/src/quick/util/qquickbehavior.cpp
+++ b/src/quick/util/qquickbehavior.cpp
@@ -196,7 +196,7 @@ void QQuickBehavior::write(const QVariant &value)
bool bypass = !d->enabled || !d->finalized || QQmlEnginePrivate::designerMode();
if (!bypass)
qmlExecuteDeferred(this);
- if (!d->animation || bypass) {
+ if (QQmlData::wasDeleted(d->animation) || bypass) {
if (d->animationInstance)
d->animationInstance->stop();
QQmlPropertyPrivate::write(d->property, value, QQmlPropertyData::BypassInterceptor | QQmlPropertyData::DontRemoveBinding);
diff --git a/src/quick/util/qquickpath.cpp b/src/quick/util/qquickpath.cpp
index 61319c388c..24b22f00c1 100644
--- a/src/quick/util/qquickpath.cpp
+++ b/src/quick/util/qquickpath.cpp
@@ -918,7 +918,7 @@ QPointF QQuickPath::backwardsPointAt(const QPainterPath &path, const qreal &path
When curves are present, the percentage argument is mapped to the \c t
parameter of the Bezier equations.
- \sa QPainterPath::pointAt
+ \sa QPainterPath::pointAtPercent()
\since QtQuick 2.14
*/
@@ -2370,8 +2370,8 @@ void QQuickPathPercent::setValue(qreal value)
The example below creates a triangular path consisting of four vertices
on the edge of the containing Shape's bounding box.
- Through the containing shape's \l scale property, the path will be
- rescaled together with its containing shape.
+ Through the containing shape's \l {QtQuick::Path::}{scale} property,
+ the path will be rescaled together with its containing shape.
\qml
PathPolyline {
@@ -2488,7 +2488,7 @@ void QQuickPathPolyline::addToPath(QPainterPath &path, const QQuickPathData &/*d
The example below creates a high voltage symbol by adding each path
of the symbol to the list of paths.
The coordinates of the vertices are normalized, and through the containing shape's
- \l scale property, the path will be rescaled together with its containing shape.
+ \l {QtQuick::Path::}{scale} property, the path will be rescaled together with its containing shape.
\qml
PathMultiline {
diff --git a/src/quick/util/qquickpixmapcache.cpp b/src/quick/util/qquickpixmapcache.cpp
index 56ad8ebf0b..e1b30f2b2c 100644
--- a/src/quick/util/qquickpixmapcache.cpp
+++ b/src/quick/util/qquickpixmapcache.cpp
@@ -567,9 +567,10 @@ void QQuickPixmapReader::networkRequestDone(QNetworkReply *reply)
QBuffer buff(&all);
buff.open(QIODevice::ReadOnly);
int frameCount;
- if (!readImage(reply->url(), &buff, &image, &errorString, &readSize, &frameCount, job->requestSize, job->providerOptions, nullptr, job->data->frame))
+ int const frame = job->data ? job->data->frame : 0;
+ if (!readImage(reply->url(), &buff, &image, &errorString, &readSize, &frameCount, job->requestSize, job->providerOptions, nullptr, frame))
error = QQuickPixmapReply::Decoding;
- else
+ else if (job->data)
job->data->frameCount = frameCount;
}
// send completion event to the QQuickPixmapReply
@@ -882,7 +883,8 @@ void QQuickPixmapReader::processJob(QQuickPixmapReply *runningJob, const QUrl &u
return;
} else {
int frameCount;
- if (!readImage(url, &f, &image, &errorStr, &readSize, &frameCount, runningJob->requestSize, runningJob->providerOptions, nullptr, runningJob->data->frame)) {
+ int const frame = runningJob->data ? runningJob->data->frame : 0;
+ if ( !readImage(url, &f, &image, &errorStr, &readSize, &frameCount, runningJob->requestSize, runningJob->providerOptions, nullptr, frame)) {
errorCode = QQuickPixmapReply::Loading;
if (f.fileName() != localFile)
errorStr += QString::fromLatin1(" (%1)").arg(f.fileName());
diff --git a/src/quick/util/qquickstyledtext.cpp b/src/quick/util/qquickstyledtext.cpp
index 7d545cdb2f..08d06c66ab 100644
--- a/src/quick/util/qquickstyledtext.cpp
+++ b/src/quick/util/qquickstyledtext.cpp
@@ -89,8 +89,8 @@ public:
QQmlContext *context,
bool preloadImages,
bool *fontSizeModified)
- : text(t), layout(l), imgTags(&imgTags), baseFont(layout.font()), baseUrl(baseUrl), hasNewLine(true), nbImages(0), updateImagePositions(false)
- , preFormat(false), prependSpace(false), hasSpace(true), preloadImages(preloadImages), fontSizeModified(fontSizeModified), context(context)
+ : text(t), layout(l), imgTags(&imgTags), baseFont(layout.font()), baseUrl(baseUrl),
+ fontSizeModified(fontSizeModified), context(context), preloadImages(preloadImages)
{
}
@@ -122,15 +122,15 @@ public:
QFont baseFont;
QStack<List> listStack;
QUrl baseUrl;
- bool hasNewLine;
- int nbImages;
- bool updateImagePositions;
- bool preFormat;
- bool prependSpace;
- bool hasSpace;
- bool preloadImages;
bool *fontSizeModified;
QQmlContext *context;
+ int nbImages = 0;
+ bool hasNewLine = true;
+ bool updateImagePositions = false;
+ bool preFormat = false;
+ bool prependSpace = false;
+ bool hasSpace = true;
+ bool preloadImages;
static const QChar lessThan;
static const QChar greaterThan;
diff --git a/src/quick/util/qquickutilmodule.cpp b/src/quick/util/qquickutilmodule.cpp
deleted file mode 100644
index 650a8c7e81..0000000000
--- a/src/quick/util/qquickutilmodule.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qquickutilmodule_p.h"
-#include "qquickanimation_p.h"
-#include "qquickanimation_p_p.h"
-#include "qquickapplication_p.h"
-#include "qquickbehavior_p.h"
-#include "qquicksmoothedanimation_p.h"
-#include "qquickfontloader_p.h"
-#include "qquickfontmetrics_p.h"
-#include "qquickpropertychanges_p.h"
-#include "qquickspringanimation_p.h"
-#include "qquickstategroup_p.h"
-#include "qquickstatechangescript_p.h"
-#include "qquickstate_p.h"
-#include "qquickstate_p_p.h"
-#include "qquicksystempalette_p.h"
-#include "qquicktextmetrics_p.h"
-#include "qquicktransition_p.h"
-#include "qquickanimator_p.h"
-#if QT_CONFIG(shortcut)
-#include "qquickshortcut_p.h"
-#endif
-#include "qquickvalidator_p.h"
-#include "qquickforeignutils_p.h"
-#include <qqmlinfo.h>
-#include <private/qqmltypenotavailable_p.h>
-#include <private/qquickanimationcontroller_p.h>
-#include <QtCore/qcoreapplication.h>
-
-#if QT_CONFIG(shortcut)
-Q_DECLARE_METATYPE(QKeySequence::StandardKey)
-#endif
-
-void QQuickUtilModule::defineModule()
-{
-#if QT_CONFIG(shortcut)
- qRegisterMetaType<QKeySequence::StandardKey>();
-#endif
-
- qmlRegisterTypesAndRevisions<
-#if QT_CONFIG(validator)
- QValidatorForeign,
- QQuickIntValidator,
- QQuickDoubleValidator,
- QRegExpValidatorForeign,
-#if QT_CONFIG(regularexpression)
- QRegularExpressionValidatorForeign,
-#endif // QT_CONFIG(regularexpression)
-#endif // QT_CONFIG(validator)
-#if QT_CONFIG(quick_shadereffect) && QT_CONFIG(opengl)
- QQuickUniformAnimator,
-#endif
-#if QT_CONFIG(shortcut)
- QQuickShortcut,
- QKeySequenceForeign,
-#endif
-#if QT_CONFIG(im)
- QInputMethodForeign,
-#endif
- QQuickAbstractAnimation,
- QQuickBehavior,
- QQuickColorAnimation,
- QQuickSmoothedAnimation,
- QQuickFontLoader,
- QQuickNumberAnimation,
- QQuickParallelAnimation,
- QQuickPauseAnimation,
- QQuickPropertyAction,
- QQuickPropertyAnimation,
- QQuickRotationAnimation,
- QQuickScriptAction,
- QQuickSequentialAnimation,
- QQuickSpringAnimation,
- QQuickAnimationController,
- QQuickStateChangeScript,
- QQuickStateGroup,
- QQuickState,
- QQuickSystemPalette,
- QQuickTransition,
- QQuickVector3dAnimation,
- QQuickAnimator,
- QQuickXAnimator,
- QQuickYAnimator,
- QQuickScaleAnimator,
- QQuickRotationAnimator,
- QQuickOpacityAnimator,
- QQuickStateOperation,
- QQuickPropertyChanges,
- QQuickFontMetrics,
- QQuickTextMetrics,
- QQuickApplication
- >("QtQuick", 2);
-}
diff --git a/src/quick/util/qquickvaluetypes.cpp b/src/quick/util/qquickvaluetypes.cpp
index 0af29aed1c..b47e1a082d 100644
--- a/src/quick/util/qquickvaluetypes.cpp
+++ b/src/quick/util/qquickvaluetypes.cpp
@@ -50,7 +50,6 @@ namespace QQuickValueTypes {
void registerValueTypes()
{
QQmlValueTypeFactory::registerValueTypes("QtQuick", 2, 0);
- qmlRegisterValueTypeEnums<QQuickFontValueType>("QtQuick", 2, 0, "Font");
}
}
diff --git a/src/quick/util/util.pri b/src/quick/util/util.pri
index 3a1addfcd4..f61a967959 100644
--- a/src/quick/util/util.pri
+++ b/src/quick/util/util.pri
@@ -1,6 +1,5 @@
SOURCES += \
$$PWD/qquickapplication.cpp\
- $$PWD/qquickutilmodule.cpp\
$$PWD/qquickanimation.cpp \
$$PWD/qquicksystempalette.cpp \
$$PWD/qquickspringanimation.cpp \
@@ -32,7 +31,6 @@ qtConfig(qml-debug): SOURCES += $$PWD/qquickprofiler.cpp
HEADERS += \
$$PWD/qquickapplication_p.h\
- $$PWD/qquickutilmodule_p.h\
$$PWD/qquickanimation_p.h \
$$PWD/qquickanimation_p_p.h \
$$PWD/qquicksystempalette_p.h \
diff --git a/src/quickshapes/qquickshape.cpp b/src/quickshapes/qquickshape.cpp
index a7db65f16f..563303b84a 100644
--- a/src/quickshapes/qquickshape.cpp
+++ b/src/quickshapes/qquickshape.cpp
@@ -49,12 +49,12 @@
#include <QLoggingCategory>
#include <QtGui/private/qrhi_p.h>
-#if defined(QT_STATIC)
static void initResources()
{
+#if defined(QT_STATIC)
Q_INIT_RESOURCE(qtquickshapes);
-}
#endif
+}
QT_BEGIN_NAMESPACE
@@ -73,6 +73,11 @@ Q_LOGGING_CATEGORY(QQSHAPE_LOG_TIME_DIRTY_SYNC, "qt.shape.time.sync")
\endqml
*/
+void QQuickShapesModule::defineModule()
+{
+ initResources();
+}
+
QQuickShapeStrokeFillParams::QQuickShapeStrokeFillParams()
: strokeColor(Qt::white),
strokeWidth(1),
@@ -595,8 +600,6 @@ void QQuickShapePath::resetFillGradient()
\li The \c software backend is fully supported. The path is rendered via
QPainter::strokePath() and QPainter::fillPath() in this case.
- \li The Direct 3D 12 backend is not currently supported.
-
\li The OpenVG backend is not currently supported.
\endlist
@@ -667,22 +670,9 @@ void QQuickShapePrivate::setStatus(QQuickShape::Status newStatus)
}
}
-struct QQuickShapeResourceInitializer
-{
- QQuickShapeResourceInitializer()
- {
-#if defined(QT_STATIC)
- initResources();
-#endif
- }
-};
-
-Q_GLOBAL_STATIC(QQuickShapeResourceInitializer, initQQuickShapeResources)
-
QQuickShape::QQuickShape(QQuickItem *parent)
: QQuickItem(*(new QQuickShapePrivate), parent)
{
- initQQuickShapeResources();
setFlag(ItemHasContents);
}
diff --git a/src/quickshapes/qquickshape_p.h b/src/quickshapes/qquickshape_p.h
index cadc65f7cd..f86f2b03d6 100644
--- a/src/quickshapes/qquickshape_p.h
+++ b/src/quickshapes/qquickshape_p.h
@@ -63,6 +63,12 @@ QT_BEGIN_NAMESPACE
class QQuickShapePathPrivate;
class QQuickShapePrivate;
+class Q_QUICKSHAPES_PRIVATE_EXPORT QQuickShapesModule
+{
+public:
+ static void defineModule();
+};
+
class Q_QUICKSHAPES_PRIVATE_EXPORT QQuickShapeGradient : public QQuickGradient
{
Q_OBJECT
diff --git a/src/quickshapes/qquickshape_p_p.h b/src/quickshapes/qquickshape_p_p.h
index bfeb0d2f9f..e9b89d2ab3 100644
--- a/src/quickshapes/qquickshape_p_p.h
+++ b/src/quickshapes/qquickshape_p_p.h
@@ -89,7 +89,7 @@ public:
virtual void beginSync(int totalCount) = 0;
virtual void endSync(bool async) = 0;
virtual void setAsyncCallback(void (*)(void *), void *) { }
- virtual Flags flags() const { return 0; }
+ virtual Flags flags() const { return {}; }
virtual void setPath(int index, const QQuickPath *path) = 0;
virtual void setStrokeColor(int index, const QColor &color) = 0;
virtual void setStrokeWidth(int index, qreal w) = 0;
diff --git a/src/quickshapes/qquickshapegenericrenderer.cpp b/src/quickshapes/qquickshapegenericrenderer.cpp
index 06cc442fc7..e0df739987 100644
--- a/src/quickshapes/qquickshapegenericrenderer.cpp
+++ b/src/quickshapes/qquickshapegenericrenderer.cpp
@@ -470,14 +470,14 @@ void QQuickShapeGenericRenderer::triangulateStroke(const QPainterPath &path,
stroker.setInvScale(inverseScale);
if (pen.style() == Qt::SolidLine) {
- stroker.process(vp, pen, clip, nullptr);
+ stroker.process(vp, pen, clip, {});
} else {
QDashedStrokeProcessor dashStroker;
dashStroker.setInvScale(inverseScale);
- dashStroker.process(vp, pen, clip, nullptr);
+ dashStroker.process(vp, pen, clip, {});
QVectorPath dashStroke(dashStroker.points(), dashStroker.elementCount(),
dashStroker.elementTypes(), 0);
- stroker.process(dashStroke, pen, clip, nullptr);
+ stroker.process(dashStroke, pen, clip, {});
}
if (!stroker.vertexCount()) {
diff --git a/src/quickshapes/qquickshapesoftwarerenderer.cpp b/src/quickshapes/qquickshapesoftwarerenderer.cpp
index 0f5c3604b5..d6a9d85643 100644
--- a/src/quickshapes/qquickshapesoftwarerenderer.cpp
+++ b/src/quickshapes/qquickshapesoftwarerenderer.cpp
@@ -266,7 +266,7 @@ void QQuickShapeSoftwareRenderNode::render(const RenderState *state)
QSGRenderNode::StateFlags QQuickShapeSoftwareRenderNode::changedStates() const
{
- return nullptr;
+ return {};
}
QSGRenderNode::RenderingFlags QQuickShapeSoftwareRenderNode::flags() const
diff --git a/src/quickshapes/quickshapes.pro b/src/quickshapes/quickshapes.pro
index 5a59dec18e..7c71aa4f4a 100644
--- a/src/quickshapes/quickshapes.pro
+++ b/src/quickshapes/quickshapes.pro
@@ -31,3 +31,9 @@ qtConfig(opengl) {
RESOURCES += qtquickshapes.qrc
load(qt_module)
+
+QMLTYPES_FILENAME = plugins.qmltypes
+QMLTYPES_INSTALL_DIR = $$[QT_INSTALL_QML]/QtQuick/Shapes
+QML_IMPORT_NAME = QtQuick.Shapes
+IMPORT_VERSION = 1.15
+CONFIG += qmltypes install_qmltypes install_metatypes
diff --git a/src/quickshapes/shaders_ng/conicalgradient.frag.qsb b/src/quickshapes/shaders_ng/conicalgradient.frag.qsb
index 9aa59ca651..cee844fab4 100644
--- a/src/quickshapes/shaders_ng/conicalgradient.frag.qsb
+++ b/src/quickshapes/shaders_ng/conicalgradient.frag.qsb
Binary files differ
diff --git a/src/quickshapes/shaders_ng/conicalgradient.vert.qsb b/src/quickshapes/shaders_ng/conicalgradient.vert.qsb
index 7f5985ef64..50508e242a 100644
--- a/src/quickshapes/shaders_ng/conicalgradient.vert.qsb
+++ b/src/quickshapes/shaders_ng/conicalgradient.vert.qsb
Binary files differ
diff --git a/src/quickshapes/shaders_ng/lineargradient.frag.qsb b/src/quickshapes/shaders_ng/lineargradient.frag.qsb
index 470de007b5..d25d5e7a79 100644
--- a/src/quickshapes/shaders_ng/lineargradient.frag.qsb
+++ b/src/quickshapes/shaders_ng/lineargradient.frag.qsb
Binary files differ
diff --git a/src/quickshapes/shaders_ng/lineargradient.vert.qsb b/src/quickshapes/shaders_ng/lineargradient.vert.qsb
index 8d054efbb4..c48646b036 100644
--- a/src/quickshapes/shaders_ng/lineargradient.vert.qsb
+++ b/src/quickshapes/shaders_ng/lineargradient.vert.qsb
Binary files differ
diff --git a/src/quickshapes/shaders_ng/radialgradient.frag.qsb b/src/quickshapes/shaders_ng/radialgradient.frag.qsb
index 166eb2f92d..207e4d3429 100644
--- a/src/quickshapes/shaders_ng/radialgradient.frag.qsb
+++ b/src/quickshapes/shaders_ng/radialgradient.frag.qsb
Binary files differ
diff --git a/src/quickshapes/shaders_ng/radialgradient.vert.qsb b/src/quickshapes/shaders_ng/radialgradient.vert.qsb
index 293e23947a..dadbfd60d6 100644
--- a/src/quickshapes/shaders_ng/radialgradient.vert.qsb
+++ b/src/quickshapes/shaders_ng/radialgradient.vert.qsb
Binary files differ
diff --git a/src/quickwidgets/qquickwidget.cpp b/src/quickwidgets/qquickwidget.cpp
index 3854a8bd0b..655923856c 100644
--- a/src/quickwidgets/qquickwidget.cpp
+++ b/src/quickwidgets/qquickwidget.cpp
@@ -500,7 +500,7 @@ QImage QQuickWidgetPrivate::grabFramebuffer()
\section1 Support when not using OpenGL
In addition to OpenGL, the \c software backend of Qt Quick also supports
- QQuickWidget. Other backends, for example the Direct 3D 12 one, are not
+ QQuickWidget. Other backends, for example OpenVG, are not
compatible however and attempting to construct a QQuickWidget will lead to
problems.
@@ -525,7 +525,7 @@ QImage QQuickWidgetPrivate::grabFramebuffer()
*/
QQuickWidget::QQuickWidget(QWidget *parent)
-: QWidget(*(new QQuickWidgetPrivate), parent, nullptr)
+ : QWidget(*(new QQuickWidgetPrivate), parent, {})
{
setMouseTracking(true);
setFocusPolicy(Qt::StrongFocus);
@@ -553,7 +553,7 @@ QQuickWidget::QQuickWidget(const QUrl &source, QWidget *parent)
\sa Status, status(), errors()
*/
QQuickWidget::QQuickWidget(QQmlEngine* engine, QWidget *parent)
- : QWidget(*(new QQuickWidgetPrivate), parent, nullptr)
+ : QWidget(*(new QQuickWidgetPrivate), parent, {})
{
setMouseTracking(true);
setFocusPolicy(Qt::StrongFocus);
@@ -848,13 +848,13 @@ QSize QQuickWidgetPrivate::rootObjectSize() const
return rootObjectSize;
}
-void QQuickWidgetPrivate::handleContextCreationFailure(const QSurfaceFormat &format, bool isEs)
+void QQuickWidgetPrivate::handleContextCreationFailure(const QSurfaceFormat &format)
{
Q_Q(QQuickWidget);
QString translatedMessage;
QString untranslatedMessage;
- QQuickWindowPrivate::contextCreationFailureMessage(format, &translatedMessage, &untranslatedMessage, isEs);
+ QQuickWindowPrivate::contextCreationFailureMessage(format, &translatedMessage, &untranslatedMessage);
static const QMetaMethod errorSignal = QMetaMethod::fromSignal(&QQuickWidget::sceneGraphError);
const bool signalConnected = q->isSignalConnected(errorSignal);
@@ -896,10 +896,9 @@ void QQuickWidgetPrivate::createContext()
context->setScreen(shareContext->screen());
}
if (!context->create()) {
- const bool isEs = context->isOpenGLES();
delete context;
context = nullptr;
- handleContextCreationFailure(offscreenWindow->requestedFormat(), isEs);
+ handleContextCreationFailure(offscreenWindow->requestedFormat());
return;
}
diff --git a/src/quickwidgets/qquickwidget_p.h b/src/quickwidgets/qquickwidget_p.h
index f4f9db7772..881f7f9220 100644
--- a/src/quickwidgets/qquickwidget_p.h
+++ b/src/quickwidgets/qquickwidget_p.h
@@ -97,7 +97,7 @@ public:
void renderSceneGraph();
void createContext();
void destroyContext();
- void handleContextCreationFailure(const QSurfaceFormat &format, bool isEs);
+ void handleContextCreationFailure(const QSurfaceFormat &format);
#if QT_CONFIG(opengl)
GLuint textureId() const override;
diff --git a/tests/auto/bic/data/QtQml.5.14.0.linux-gcc-amd64.txt b/tests/auto/bic/data/QtQml.5.14.0.linux-gcc-amd64.txt
new file mode 100644
index 0000000000..e9240aa867
--- /dev/null
+++ b/tests/auto/bic/data/QtQml.5.14.0.linux-gcc-amd64.txt
@@ -0,0 +1,6448 @@
+Class std::__failure_type
+ size=1 align=1
+ base size=0 base align=1
+std::__failure_type (0x0x7fa84d322720) 0 empty
+
+Class std::__do_is_destructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_destructible_impl (0x0x7fa84d394ea0) 0 empty
+
+Class std::__do_is_nt_destructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_nt_destructible_impl (0x0x7fa84d3c2120) 0 empty
+
+Class std::__do_is_default_constructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_default_constructible_impl (0x0x7fa84d3c2360) 0 empty
+
+Class std::__do_is_static_castable_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_static_castable_impl (0x0x7fa84d3c25a0) 0 empty
+
+Class std::__do_is_direct_constructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_direct_constructible_impl (0x0x7fa84d3c2720) 0 empty
+
+Class std::__do_is_nary_constructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_nary_constructible_impl (0x0x7fa84d3c2ae0) 0 empty
+
+Class std::__do_is_implicitly_default_constructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_implicitly_default_constructible_impl (0x0x7fa84d3fbc00) 0 empty
+
+Class std::__do_common_type_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_common_type_impl (0x0x7fa84d07f300) 0 empty
+
+Class std::__do_member_type_wrapper
+ size=1 align=1
+ base size=0 base align=1
+std::__do_member_type_wrapper (0x0x7fa84d07f3c0) 0 empty
+
+Class std::__invoke_memfun_ref
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_memfun_ref (0x0x7fa84d07f780) 0 empty
+
+Class std::__invoke_memfun_deref
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_memfun_deref (0x0x7fa84d07f7e0) 0 empty
+
+Class std::__invoke_memobj_ref
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_memobj_ref (0x0x7fa84d07f840) 0 empty
+
+Class std::__invoke_memobj_deref
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_memobj_deref (0x0x7fa84d07f8a0) 0 empty
+
+Class std::__invoke_other
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_other (0x0x7fa84d07f900) 0 empty
+
+Class std::__result_of_memfun_ref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memfun_ref_impl (0x0x7fa84d07f9c0) 0 empty
+
+Class std::__result_of_memfun_deref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memfun_deref_impl (0x0x7fa84d07fa80) 0 empty
+
+Class std::__result_of_memobj_ref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memobj_ref_impl (0x0x7fa84d07fb40) 0 empty
+
+Class std::__result_of_memobj_deref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memobj_deref_impl (0x0x7fa84d07fc00) 0 empty
+
+Class std::__result_of_other_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_other_impl (0x0x7fa84d07ff60) 0 empty
+
+Class std::__swappable_details::__do_is_swappable_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__swappable_details::__do_is_swappable_impl (0x0x7fa84d0bb300) 0 empty
+
+Class std::__swappable_details::__do_is_nothrow_swappable_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__swappable_details::__do_is_nothrow_swappable_impl (0x0x7fa84d0bb360) 0 empty
+
+Class std::__nonesuch
+ size=1 align=1
+ base size=0 base align=1
+std::__nonesuch (0x0x7fa84d0bb900) 0 empty
+
+Class std::piecewise_construct_t
+ size=1 align=1
+ base size=0 base align=1
+std::piecewise_construct_t (0x0x7fa84d0bbf60) 0 empty
+
+Class std::__nonesuch_no_braces
+ size=1 align=1
+ base size=1 base align=1
+std::__nonesuch_no_braces (0x0x7fa84d0d73a8) 0 empty
+ std::__nonesuch (0x0x7fa84d0fd480) 0 empty
+
+Class std::__true_type
+ size=1 align=1
+ base size=0 base align=1
+std::__true_type (0x0x7fa84d14dde0) 0 empty
+
+Class std::__false_type
+ size=1 align=1
+ base size=0 base align=1
+std::__false_type (0x0x7fa84d14de40) 0 empty
+
+Class std::input_iterator_tag
+ size=1 align=1
+ base size=0 base align=1
+std::input_iterator_tag (0x0x7fa84d1adb40) 0 empty
+
+Class std::output_iterator_tag
+ size=1 align=1
+ base size=0 base align=1
+std::output_iterator_tag (0x0x7fa84d1adba0) 0 empty
+
+Class std::forward_iterator_tag
+ size=1 align=1
+ base size=1 base align=1
+std::forward_iterator_tag (0x0x7fa84d0d7888) 0 empty
+ std::input_iterator_tag (0x0x7fa84d1adc00) 0 empty
+
+Class std::bidirectional_iterator_tag
+ size=1 align=1
+ base size=1 base align=1
+std::bidirectional_iterator_tag (0x0x7fa84d0d78f0) 0 empty
+ std::forward_iterator_tag (0x0x7fa84d0d7958) 0 empty
+ std::input_iterator_tag (0x0x7fa84d1adc60) 0 empty
+
+Class std::random_access_iterator_tag
+ size=1 align=1
+ base size=1 base align=1
+std::random_access_iterator_tag (0x0x7fa84d0d79c0) 0 empty
+ std::bidirectional_iterator_tag (0x0x7fa84d0d7a28) 0 empty
+ std::forward_iterator_tag (0x0x7fa84d0d7a90) 0 empty
+ std::input_iterator_tag (0x0x7fa84d1adcc0) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_less_iter
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_less_iter (0x0x7fa84ce5d7e0) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_less_val
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_less_val (0x0x7fa84ce5d900) 0 empty
+
+Class __gnu_cxx::__ops::_Val_less_iter
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Val_less_iter (0x0x7fa84ce5dc00) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_equal_to_iter
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_equal_to_iter (0x0x7fa84ce5df00) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_equal_to_val
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_equal_to_val (0x0x7fa84ce8b060) 0 empty
+
+Class __locale_struct
+ size=232 align=8
+ base size=232 base align=8
+__locale_struct (0x0x7fa84cf1b360) 0
+
+Class timeval
+ size=16 align=8
+ base size=16 base align=8
+timeval (0x0x7fa84cf1b660) 0
+
+Class timespec
+ size=16 align=8
+ base size=16 base align=8
+timespec (0x0x7fa84cf1b6c0) 0
+
+Class __pthread_rwlock_arch_t
+ size=56 align=8
+ base size=56 base align=8
+__pthread_rwlock_arch_t (0x0x7fa84cf1b780) 0
+
+Class __pthread_internal_list
+ size=16 align=8
+ base size=16 base align=8
+__pthread_internal_list (0x0x7fa84cf1b7e0) 0
+
+Class __pthread_mutex_s
+ size=40 align=8
+ base size=40 base align=8
+__pthread_mutex_s (0x0x7fa84cf1b840) 0
+
+Class __pthread_cond_s
+ size=48 align=8
+ base size=48 base align=8
+__pthread_cond_s (0x0x7fa84cf1b8a0) 0
+
+Class pthread_attr_t
+ size=56 align=8
+ base size=56 base align=8
+pthread_attr_t (0x0x7fa84cf1bb40) 0
+
+Class random_data
+ size=48 align=8
+ base size=48 base align=8
+random_data (0x0x7fa84cf1bde0) 0
+
+Class drand48_data
+ size=24 align=8
+ base size=24 base align=8
+drand48_data (0x0x7fa84cf1be40) 0
+
+Vtable for std::exception
+std::exception::_ZTVSt9exception: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt9exception)
+16 (int (*)(...))std::exception::~exception
+24 (int (*)(...))std::exception::~exception
+32 (int (*)(...))std::exception::what
+
+Class std::exception
+ size=8 align=8
+ base size=8 base align=8
+std::exception (0x0x7fa84cf72c00) 0 nearly-empty
+ vptr=((& std::exception::_ZTVSt9exception) + 16)
+
+Vtable for std::bad_exception
+std::bad_exception::_ZTVSt13bad_exception: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt13bad_exception)
+16 (int (*)(...))std::bad_exception::~bad_exception
+24 (int (*)(...))std::bad_exception::~bad_exception
+32 (int (*)(...))std::bad_exception::what
+
+Class std::bad_exception
+ size=8 align=8
+ base size=8 base align=8
+std::bad_exception (0x0x7fa84d0d7dd0) 0 nearly-empty
+ vptr=((& std::bad_exception::_ZTVSt13bad_exception) + 16)
+ std::exception (0x0x7fa84cf72de0) 0 nearly-empty
+ primary-for std::bad_exception (0x0x7fa84d0d7dd0)
+
+Vtable for std::type_info
+std::type_info::_ZTVSt9type_info: 8 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt9type_info)
+16 (int (*)(...))std::type_info::~type_info
+24 (int (*)(...))std::type_info::~type_info
+32 (int (*)(...))std::type_info::__is_pointer_p
+40 (int (*)(...))std::type_info::__is_function_p
+48 (int (*)(...))std::type_info::__do_catch
+56 (int (*)(...))std::type_info::__do_upcast
+
+Class std::type_info
+ size=16 align=8
+ base size=16 base align=8
+std::type_info (0x0x7fa84d013000) 0
+ vptr=((& std::type_info::_ZTVSt9type_info) + 16)
+
+Vtable for std::bad_cast
+std::bad_cast::_ZTVSt8bad_cast: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt8bad_cast)
+16 (int (*)(...))std::bad_cast::~bad_cast
+24 (int (*)(...))std::bad_cast::~bad_cast
+32 (int (*)(...))std::bad_cast::what
+
+Class std::bad_cast
+ size=8 align=8
+ base size=8 base align=8
+std::bad_cast (0x0x7fa84d0d7e38) 0 nearly-empty
+ vptr=((& std::bad_cast::_ZTVSt8bad_cast) + 16)
+ std::exception (0x0x7fa84d0133c0) 0 nearly-empty
+ primary-for std::bad_cast (0x0x7fa84d0d7e38)
+
+Vtable for std::bad_typeid
+std::bad_typeid::_ZTVSt10bad_typeid: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt10bad_typeid)
+16 (int (*)(...))std::bad_typeid::~bad_typeid
+24 (int (*)(...))std::bad_typeid::~bad_typeid
+32 (int (*)(...))std::bad_typeid::what
+
+Class std::bad_typeid
+ size=8 align=8
+ base size=8 base align=8
+std::bad_typeid (0x0x7fa84d0d7ea0) 0 nearly-empty
+ vptr=((& std::bad_typeid::_ZTVSt10bad_typeid) + 16)
+ std::exception (0x0x7fa84d0135a0) 0 nearly-empty
+ primary-for std::bad_typeid (0x0x7fa84d0d7ea0)
+
+Class std::__exception_ptr::exception_ptr
+ size=8 align=8
+ base size=8 base align=8
+std::__exception_ptr::exception_ptr (0x0x7fa84d013780) 0
+
+Vtable for std::nested_exception
+std::nested_exception::_ZTVSt16nested_exception: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt16nested_exception)
+16 (int (*)(...))std::nested_exception::~nested_exception
+24 (int (*)(...))std::nested_exception::~nested_exception
+
+Class std::nested_exception
+ size=16 align=8
+ base size=16 base align=8
+std::nested_exception (0x0x7fa84d013d20) 0
+ vptr=((& std::nested_exception::_ZTVSt16nested_exception) + 16)
+
+Vtable for std::bad_alloc
+std::bad_alloc::_ZTVSt9bad_alloc: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt9bad_alloc)
+16 (int (*)(...))std::bad_alloc::~bad_alloc
+24 (int (*)(...))std::bad_alloc::~bad_alloc
+32 (int (*)(...))std::bad_alloc::what
+
+Class std::bad_alloc
+ size=8 align=8
+ base size=8 base align=8
+std::bad_alloc (0x0x7fa84d0d7f08) 0 nearly-empty
+ vptr=((& std::bad_alloc::_ZTVSt9bad_alloc) + 16)
+ std::exception (0x0x7fa84d049420) 0 nearly-empty
+ primary-for std::bad_alloc (0x0x7fa84d0d7f08)
+
+Vtable for std::bad_array_new_length
+std::bad_array_new_length::_ZTVSt20bad_array_new_length: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt20bad_array_new_length)
+16 (int (*)(...))std::bad_array_new_length::~bad_array_new_length
+24 (int (*)(...))std::bad_array_new_length::~bad_array_new_length
+32 (int (*)(...))std::bad_array_new_length::what
+
+Class std::bad_array_new_length
+ size=8 align=8
+ base size=8 base align=8
+std::bad_array_new_length (0x0x7fa84d0d7f70) 0 nearly-empty
+ vptr=((& std::bad_array_new_length::_ZTVSt20bad_array_new_length) + 16)
+ std::bad_alloc (0x0x7fa84cc5b000) 0 nearly-empty
+ primary-for std::bad_array_new_length (0x0x7fa84d0d7f70)
+ std::exception (0x0x7fa84d049600) 0 nearly-empty
+ primary-for std::bad_alloc (0x0x7fa84cc5b000)
+
+Class std::nothrow_t
+ size=1 align=1
+ base size=0 base align=1
+std::nothrow_t (0x0x7fa84d0497e0) 0 empty
+
+Class std::__allocator_traits_base
+ size=1 align=1
+ base size=0 base align=1
+std::__allocator_traits_base (0x0x7fa84d0499c0) 0 empty
+
+Class std::__numeric_limits_base
+ size=1 align=1
+ base size=0 base align=1
+std::__numeric_limits_base (0x0x7fa84ccc6ea0) 0 empty
+
+Class QSysInfo
+ size=1 align=1
+ base size=0 base align=1
+QSysInfo (0x0x7fa84c960420) 0 empty
+
+Class QMessageLogContext
+ size=32 align=8
+ base size=32 base align=8
+QMessageLogContext (0x0x7fa84c960540) 0
+
+Class QMessageLogger
+ size=32 align=8
+ base size=32 base align=8
+QMessageLogger (0x0x7fa84c960720) 0
+
+Class QFlag
+ size=4 align=4
+ base size=4 base align=4
+QFlag (0x0x7fa84c960de0) 0
+
+Class QIncompatibleFlag
+ size=4 align=4
+ base size=4 base align=4
+QIncompatibleFlag (0x0x7fa84c9da5a0) 0
+
+Class std::__atomic_flag_base
+ size=1 align=1
+ base size=1 base align=1
+std::__atomic_flag_base (0x0x7fa84c66fa80) 0
+
+Class std::atomic_flag
+ size=1 align=1
+ base size=1 base align=1
+std::atomic_flag (0x0x7fa84ca0ee38) 0
+ std::__atomic_flag_base (0x0x7fa84c66fae0) 0
+
+Class QAtomicInt
+ size=4 align=4
+ base size=4 base align=4
+QAtomicInt (0x0x7fa84c7c35b0) 0
+ QAtomicInteger<int> (0x0x7fa84c7c3618) 0
+ QBasicAtomicInteger<int> (0x0x7fa84c5a9d20) 0
+
+Class QInternal
+ size=1 align=1
+ base size=0 base align=1
+QInternal (0x0x7fa84c1fc8a0) 0 empty
+
+Class QtPrivate::QSlotObjectBase
+ size=16 align=8
+ base size=16 base align=8
+QtPrivate::QSlotObjectBase (0x0x7fa84c22be40) 0
+
+Class QGenericArgument
+ size=16 align=8
+ base size=16 base align=8
+QGenericArgument (0x0x7fa84be775a0) 0
+
+Class QGenericReturnArgument
+ size=16 align=8
+ base size=16 base align=8
+QGenericReturnArgument (0x0x7fa84be7f270) 0
+ QGenericArgument (0x0x7fa84be77840) 0
+
+Class QMetaObject::SuperData
+ size=8 align=8
+ base size=8 base align=8
+QMetaObject::SuperData (0x0x7fa84be77cc0) 0
+
+Class QMetaObject
+ size=48 align=8
+ base size=48 base align=8
+QMetaObject (0x0x7fa84be77c60) 0
+
+Class QMetaObject::Connection
+ size=8 align=8
+ base size=8 base align=8
+QMetaObject::Connection (0x0x7fa84becd5a0) 0
+
+Class QLatin1Char
+ size=1 align=1
+ base size=1 base align=1
+QLatin1Char (0x0x7fa84bf4e0c0) 0
+
+Class QChar
+ size=2 align=2
+ base size=2 base align=2
+QChar (0x0x7fa84bf4e7e0) 0
+
+Class QtPrivate::RefCount
+ size=4 align=4
+ base size=4 base align=4
+QtPrivate::RefCount (0x0x7fa84c021600) 0
+
+Class QArrayData
+ size=24 align=8
+ base size=24 base align=8
+QArrayData (0x0x7fa84c021960) 0
+
+Class QtPrivate::QContainerImplHelper
+ size=1 align=1
+ base size=0 base align=1
+QtPrivate::QContainerImplHelper (0x0x7fa84bc7ec60) 0 empty
+
+Class lconv
+ size=96 align=8
+ base size=96 base align=8
+lconv (0x0x7fa84bd754e0) 0
+
+Vtable for __cxxabiv1::__forced_unwind
+__cxxabiv1::__forced_unwind::_ZTVN10__cxxabiv115__forced_unwindE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN10__cxxabiv115__forced_unwindE)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class __cxxabiv1::__forced_unwind
+ size=8 align=8
+ base size=8 base align=8
+__cxxabiv1::__forced_unwind (0x0x7fa84bd755a0) 0 nearly-empty
+ vptr=((& __cxxabiv1::__forced_unwind::_ZTVN10__cxxabiv115__forced_unwindE) + 16)
+
+Class sched_param
+ size=4 align=4
+ base size=4 base align=4
+sched_param (0x0x7fa84be286c0) 0
+
+Class timex
+ size=208 align=8
+ base size=208 base align=8
+timex (0x0x7fa84be28780) 0
+
+Class tm
+ size=56 align=8
+ base size=56 base align=8
+tm (0x0x7fa84be287e0) 0
+
+Class itimerspec
+ size=32 align=8
+ base size=32 base align=8
+itimerspec (0x0x7fa84be28840) 0
+
+Class _pthread_cleanup_buffer
+ size=32 align=8
+ base size=32 base align=8
+_pthread_cleanup_buffer (0x0x7fa84be288a0) 0
+
+Class __pthread_cleanup_frame
+ size=24 align=8
+ base size=24 base align=8
+__pthread_cleanup_frame (0x0x7fa84be289c0) 0
+
+Class __pthread_cleanup_class
+ size=24 align=8
+ base size=24 base align=8
+__pthread_cleanup_class (0x0x7fa84be28a20) 0
+
+Class _IO_marker
+ size=24 align=8
+ base size=24 base align=8
+_IO_marker (0x0x7fa84bb689c0) 0
+
+Class _IO_FILE
+ size=216 align=8
+ base size=216 base align=8
+_IO_FILE (0x0x7fa84bb68a20) 0
+
+Class std::_Hash_impl
+ size=1 align=1
+ base size=0 base align=1
+std::_Hash_impl (0x0x7fa84b925a80) 0 empty
+
+Class std::_Fnv_hash_impl
+ size=1 align=1
+ base size=0 base align=1
+std::_Fnv_hash_impl (0x0x7fa84b925c00) 0 empty
+
+Class std::locale
+ size=8 align=8
+ base size=8 base align=8
+std::locale (0x0x7fa84b697d80) 0
+
+Vtable for std::locale::facet
+std::locale::facet::_ZTVNSt6locale5facetE: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt6locale5facetE)
+16 (int (*)(...))std::locale::facet::~facet
+24 (int (*)(...))std::locale::facet::~facet
+
+Class std::locale::facet
+ size=16 align=8
+ base size=12 base align=8
+std::locale::facet (0x0x7fa84b6e4180) 0
+ vptr=((& std::locale::facet::_ZTVNSt6locale5facetE) + 16)
+
+Class std::locale::id
+ size=8 align=8
+ base size=8 base align=8
+std::locale::id (0x0x7fa84b6e4420) 0
+
+Class std::locale::_Impl
+ size=40 align=8
+ base size=40 base align=8
+std::locale::_Impl (0x0x7fa84b6e4600) 0
+
+Class std::__cow_string
+ size=8 align=8
+ base size=8 base align=8
+std::__cow_string (0x0x7fa84b731600) 0
+
+Vtable for std::logic_error
+std::logic_error::_ZTVSt11logic_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt11logic_error)
+16 (int (*)(...))std::logic_error::~logic_error
+24 (int (*)(...))std::logic_error::~logic_error
+32 (int (*)(...))std::logic_error::what
+
+Class std::logic_error
+ size=16 align=8
+ base size=16 base align=8
+std::logic_error (0x0x7fa84b73b208) 0
+ vptr=((& std::logic_error::_ZTVSt11logic_error) + 16)
+ std::exception (0x0x7fa84b7316c0) 0 nearly-empty
+ primary-for std::logic_error (0x0x7fa84b73b208)
+
+Vtable for std::domain_error
+std::domain_error::_ZTVSt12domain_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12domain_error)
+16 (int (*)(...))std::domain_error::~domain_error
+24 (int (*)(...))std::domain_error::~domain_error
+32 (int (*)(...))std::logic_error::what
+
+Class std::domain_error
+ size=16 align=8
+ base size=16 base align=8
+std::domain_error (0x0x7fa84b73b270) 0
+ vptr=((& std::domain_error::_ZTVSt12domain_error) + 16)
+ std::logic_error (0x0x7fa84b73b2d8) 0
+ primary-for std::domain_error (0x0x7fa84b73b270)
+ std::exception (0x0x7fa84b731720) 0 nearly-empty
+ primary-for std::logic_error (0x0x7fa84b73b2d8)
+
+Vtable for std::invalid_argument
+std::invalid_argument::_ZTVSt16invalid_argument: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt16invalid_argument)
+16 (int (*)(...))std::invalid_argument::~invalid_argument
+24 (int (*)(...))std::invalid_argument::~invalid_argument
+32 (int (*)(...))std::logic_error::what
+
+Class std::invalid_argument
+ size=16 align=8
+ base size=16 base align=8
+std::invalid_argument (0x0x7fa84b73b340) 0
+ vptr=((& std::invalid_argument::_ZTVSt16invalid_argument) + 16)
+ std::logic_error (0x0x7fa84b73b3a8) 0
+ primary-for std::invalid_argument (0x0x7fa84b73b340)
+ std::exception (0x0x7fa84b731780) 0 nearly-empty
+ primary-for std::logic_error (0x0x7fa84b73b3a8)
+
+Vtable for std::length_error
+std::length_error::_ZTVSt12length_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12length_error)
+16 (int (*)(...))std::length_error::~length_error
+24 (int (*)(...))std::length_error::~length_error
+32 (int (*)(...))std::logic_error::what
+
+Class std::length_error
+ size=16 align=8
+ base size=16 base align=8
+std::length_error (0x0x7fa84b73b410) 0
+ vptr=((& std::length_error::_ZTVSt12length_error) + 16)
+ std::logic_error (0x0x7fa84b73b478) 0
+ primary-for std::length_error (0x0x7fa84b73b410)
+ std::exception (0x0x7fa84b7317e0) 0 nearly-empty
+ primary-for std::logic_error (0x0x7fa84b73b478)
+
+Vtable for std::out_of_range
+std::out_of_range::_ZTVSt12out_of_range: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12out_of_range)
+16 (int (*)(...))std::out_of_range::~out_of_range
+24 (int (*)(...))std::out_of_range::~out_of_range
+32 (int (*)(...))std::logic_error::what
+
+Class std::out_of_range
+ size=16 align=8
+ base size=16 base align=8
+std::out_of_range (0x0x7fa84b73b4e0) 0
+ vptr=((& std::out_of_range::_ZTVSt12out_of_range) + 16)
+ std::logic_error (0x0x7fa84b73b548) 0
+ primary-for std::out_of_range (0x0x7fa84b73b4e0)
+ std::exception (0x0x7fa84b731840) 0 nearly-empty
+ primary-for std::logic_error (0x0x7fa84b73b548)
+
+Vtable for std::runtime_error
+std::runtime_error::_ZTVSt13runtime_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt13runtime_error)
+16 (int (*)(...))std::runtime_error::~runtime_error
+24 (int (*)(...))std::runtime_error::~runtime_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::runtime_error
+ size=16 align=8
+ base size=16 base align=8
+std::runtime_error (0x0x7fa84b73b5b0) 0
+ vptr=((& std::runtime_error::_ZTVSt13runtime_error) + 16)
+ std::exception (0x0x7fa84b7318a0) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7fa84b73b5b0)
+
+Vtable for std::range_error
+std::range_error::_ZTVSt11range_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt11range_error)
+16 (int (*)(...))std::range_error::~range_error
+24 (int (*)(...))std::range_error::~range_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::range_error
+ size=16 align=8
+ base size=16 base align=8
+std::range_error (0x0x7fa84b73b618) 0
+ vptr=((& std::range_error::_ZTVSt11range_error) + 16)
+ std::runtime_error (0x0x7fa84b73b680) 0
+ primary-for std::range_error (0x0x7fa84b73b618)
+ std::exception (0x0x7fa84b731900) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7fa84b73b680)
+
+Vtable for std::overflow_error
+std::overflow_error::_ZTVSt14overflow_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt14overflow_error)
+16 (int (*)(...))std::overflow_error::~overflow_error
+24 (int (*)(...))std::overflow_error::~overflow_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::overflow_error
+ size=16 align=8
+ base size=16 base align=8
+std::overflow_error (0x0x7fa84b73b6e8) 0
+ vptr=((& std::overflow_error::_ZTVSt14overflow_error) + 16)
+ std::runtime_error (0x0x7fa84b73b750) 0
+ primary-for std::overflow_error (0x0x7fa84b73b6e8)
+ std::exception (0x0x7fa84b731960) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7fa84b73b750)
+
+Vtable for std::underflow_error
+std::underflow_error::_ZTVSt15underflow_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt15underflow_error)
+16 (int (*)(...))std::underflow_error::~underflow_error
+24 (int (*)(...))std::underflow_error::~underflow_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::underflow_error
+ size=16 align=8
+ base size=16 base align=8
+std::underflow_error (0x0x7fa84b73b7b8) 0
+ vptr=((& std::underflow_error::_ZTVSt15underflow_error) + 16)
+ std::runtime_error (0x0x7fa84b73b820) 0
+ primary-for std::underflow_error (0x0x7fa84b73b7b8)
+ std::exception (0x0x7fa84b7319c0) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7fa84b73b820)
+
+Vtable for std::_V2::error_category
+std::_V2::error_category::_ZTVNSt3_V214error_categoryE: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt3_V214error_categoryE)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))std::_V2::error_category::_M_message
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))std::_V2::error_category::default_error_condition
+64 (int (*)(...))std::_V2::error_category::equivalent
+72 (int (*)(...))std::_V2::error_category::equivalent
+
+Class std::_V2::error_category
+ size=8 align=8
+ base size=8 base align=8
+std::_V2::error_category (0x0x7fa84b731b40) 0 nearly-empty
+ vptr=((& std::_V2::error_category::_ZTVNSt3_V214error_categoryE) + 16)
+
+Class std::error_code
+ size=16 align=8
+ base size=16 base align=8
+std::error_code (0x0x7fa84b731ea0) 0
+
+Class std::error_condition
+ size=16 align=8
+ base size=16 base align=8
+std::error_condition (0x0x7fa84b78d720) 0
+
+Vtable for std::system_error
+std::system_error::_ZTVSt12system_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12system_error)
+16 (int (*)(...))std::system_error::~system_error
+24 (int (*)(...))std::system_error::~system_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::system_error
+ size=32 align=8
+ base size=32 base align=8
+std::system_error (0x0x7fa84b73bc30) 0
+ vptr=((& std::system_error::_ZTVSt12system_error) + 16)
+ std::runtime_error (0x0x7fa84b73bc98) 0
+ primary-for std::system_error (0x0x7fa84b73bc30)
+ std::exception (0x0x7fa84b7b5300) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7fa84b73bc98)
+
+Vtable for std::ios_base::failure
+std::ios_base::failure::_ZTVNSt8ios_base7failureB5cxx11E: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt8ios_base7failureB5cxx11E)
+16 (int (*)(...))std::ios_base::failure::~failure
+24 (int (*)(...))std::ios_base::failure::~failure
+32 (int (*)(...))std::ios_base::failure::what
+
+Class std::ios_base::failure
+ size=32 align=8
+ base size=32 base align=8
+std::ios_base::failure (0x0x7fa84b73bf08) 0
+ vptr=((& std::ios_base::failure::_ZTVNSt8ios_base7failureB5cxx11E) + 16)
+ std::system_error (0x0x7fa84b73bf70) 0
+ primary-for std::ios_base::failure (0x0x7fa84b73bf08)
+ std::runtime_error (0x0x7fa84b7fe000) 0
+ primary-for std::system_error (0x0x7fa84b73bf70)
+ std::exception (0x0x7fa84b7ea8a0) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7fa84b7fe000)
+
+Class std::ios_base::_Callback_list
+ size=24 align=8
+ base size=24 base align=8
+std::ios_base::_Callback_list (0x0x7fa84b7ea900) 0
+
+Class std::ios_base::_Words
+ size=16 align=8
+ base size=16 base align=8
+std::ios_base::_Words (0x0x7fa84b7ea960) 0
+
+Class std::ios_base::Init
+ size=1 align=1
+ base size=0 base align=1
+std::ios_base::Init (0x0x7fa84b7ea9c0) 0 empty
+
+Vtable for std::ios_base
+std::ios_base::_ZTVSt8ios_base: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt8ios_base)
+16 (int (*)(...))std::ios_base::~ios_base
+24 (int (*)(...))std::ios_base::~ios_base
+
+Class std::ios_base
+ size=216 align=8
+ base size=216 base align=8
+std::ios_base (0x0x7fa84b7ea840) 0
+ vptr=((& std::ios_base::_ZTVSt8ios_base) + 16)
+
+Class std::ctype_base
+ size=1 align=1
+ base size=0 base align=1
+std::ctype_base (0x0x7fa84b4db300) 0 empty
+
+Class std::__num_base
+ size=1 align=1
+ base size=0 base align=1
+std::__num_base (0x0x7fa84b5a54e0) 0 empty
+
+VTT for std::basic_ostream<char>
+std::basic_ostream<char>::_ZTTSo: 2 entries
+0 ((& std::basic_ostream<char>::_ZTVSo) + 24)
+8 ((& std::basic_ostream<char>::_ZTVSo) + 64)
+
+VTT for std::basic_ostream<wchar_t>
+std::basic_ostream<wchar_t>::_ZTTSt13basic_ostreamIwSt11char_traitsIwEE: 2 entries
+0 ((& std::basic_ostream<wchar_t>::_ZTVSt13basic_ostreamIwSt11char_traitsIwEE) + 24)
+8 ((& std::basic_ostream<wchar_t>::_ZTVSt13basic_ostreamIwSt11char_traitsIwEE) + 64)
+
+VTT for std::basic_istream<char>
+std::basic_istream<char>::_ZTTSi: 2 entries
+0 ((& std::basic_istream<char>::_ZTVSi) + 24)
+8 ((& std::basic_istream<char>::_ZTVSi) + 64)
+
+VTT for std::basic_istream<wchar_t>
+std::basic_istream<wchar_t>::_ZTTSt13basic_istreamIwSt11char_traitsIwEE: 2 entries
+0 ((& std::basic_istream<wchar_t>::_ZTVSt13basic_istreamIwSt11char_traitsIwEE) + 24)
+8 ((& std::basic_istream<wchar_t>::_ZTVSt13basic_istreamIwSt11char_traitsIwEE) + 64)
+
+Construction vtable for std::basic_istream<char> (0x0x7fa84b1406e8 instance) in std::basic_iostream<char>
+std::basic_iostream<char>::_ZTCSd0_Si: 10 entries
+0 24
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISi)
+24 0
+32 0
+40 18446744073709551592
+48 (int (*)(...))-24
+56 (int (*)(...))(& _ZTISi)
+64 0
+72 0
+
+Construction vtable for std::basic_ostream<char> (0x0x7fa84b1407b8 instance) in std::basic_iostream<char>
+std::basic_iostream<char>::_ZTCSd16_So: 10 entries
+0 8
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISo)
+24 0
+32 0
+40 18446744073709551608
+48 (int (*)(...))-8
+56 (int (*)(...))(& _ZTISo)
+64 0
+72 0
+
+VTT for std::basic_iostream<char>
+std::basic_iostream<char>::_ZTTSd: 7 entries
+0 ((& std::basic_iostream<char>::_ZTVSd) + 24)
+8 ((& std::basic_iostream<char>::_ZTCSd0_Si) + 24)
+16 ((& std::basic_iostream<char>::_ZTCSd0_Si) + 64)
+24 ((& std::basic_iostream<char>::_ZTCSd16_So) + 24)
+32 ((& std::basic_iostream<char>::_ZTCSd16_So) + 64)
+40 ((& std::basic_iostream<char>::_ZTVSd) + 104)
+48 ((& std::basic_iostream<char>::_ZTVSd) + 64)
+
+Construction vtable for std::basic_istream<wchar_t> (0x0x7fa84b180478 instance) in std::basic_iostream<wchar_t>
+std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E: 10 entries
+0 24
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISt13basic_istreamIwSt11char_traitsIwEE)
+24 0
+32 0
+40 18446744073709551592
+48 (int (*)(...))-24
+56 (int (*)(...))(& _ZTISt13basic_istreamIwSt11char_traitsIwEE)
+64 0
+72 0
+
+Construction vtable for std::basic_ostream<wchar_t> (0x0x7fa84b180548 instance) in std::basic_iostream<wchar_t>
+std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E: 10 entries
+0 8
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISt13basic_ostreamIwSt11char_traitsIwEE)
+24 0
+32 0
+40 18446744073709551608
+48 (int (*)(...))-8
+56 (int (*)(...))(& _ZTISt13basic_ostreamIwSt11char_traitsIwEE)
+64 0
+72 0
+
+VTT for std::basic_iostream<wchar_t>
+std::basic_iostream<wchar_t>::_ZTTSt14basic_iostreamIwSt11char_traitsIwEE: 7 entries
+0 ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 24)
+8 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E) + 24)
+16 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E) + 64)
+24 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E) + 24)
+32 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E) + 64)
+40 ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 104)
+48 ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 64)
+
+Class QByteArrayDataPtr
+ size=8 align=8
+ base size=8 base align=8
+QByteArrayDataPtr (0x0x7fa84b181e40) 0
+
+Class QByteArray
+ size=8 align=8
+ base size=8 base align=8
+QByteArray (0x0x7fa84b181ea0) 0
+
+Class QByteRef
+ size=16 align=8
+ base size=12 base align=8
+QByteRef (0x0x7fa84aedc2a0) 0
+
+Class QStringDataPtr
+ size=8 align=8
+ base size=8 base align=8
+QStringDataPtr (0x0x7fa84af79120) 0
+
+Class QStringView
+ size=16 align=8
+ base size=16 base align=8
+QStringView (0x0x7fa84af795a0) 0
+
+Class QLatin1String
+ size=16 align=8
+ base size=16 base align=8
+QLatin1String (0x0x7fa84ac63660) 0
+
+Class QString::Null
+ size=1 align=1
+ base size=0 base align=1
+QString::Null (0x0x7fa84ad14600) 0 empty
+
+Class QString
+ size=8 align=8
+ base size=8 base align=8
+QString (0x0x7fa84ad144e0) 0
+
+Class QCharRef
+ size=16 align=8
+ base size=12 base align=8
+QCharRef (0x0x7fa84abec480) 0
+
+Class QStringRef
+ size=16 align=8
+ base size=16 base align=8
+QStringRef (0x0x7fa84a94e060) 0
+
+Class QtPrivate::ArgBase
+ size=1 align=1
+ base size=1 base align=1
+QtPrivate::ArgBase (0x0x7fa84a6abe40) 0
+
+Class QtPrivate::QStringViewArg
+ size=24 align=8
+ base size=24 base align=8
+QtPrivate::QStringViewArg (0x0x7fa84a9de3a8) 0
+ QtPrivate::ArgBase (0x0x7fa84a6abea0) 0
+
+Class QtPrivate::QLatin1StringArg
+ size=24 align=8
+ base size=24 base align=8
+QtPrivate::QLatin1StringArg (0x0x7fa84a9de410) 0
+ QtPrivate::ArgBase (0x0x7fa84a6e80c0) 0
+
+Class std::__erased_type
+ size=1 align=1
+ base size=0 base align=1
+std::__erased_type (0x0x7fa84a7aa000) 0 empty
+
+Class std::allocator_arg_t
+ size=1 align=1
+ base size=0 base align=1
+std::allocator_arg_t (0x0x7fa84a7aa060) 0 empty
+
+Class std::__uses_alloc_base
+ size=1 align=1
+ base size=0 base align=1
+std::__uses_alloc_base (0x0x7fa84a7aa1e0) 0 empty
+
+Class std::__uses_alloc0::_Sink
+ size=1 align=1
+ base size=0 base align=1
+std::__uses_alloc0::_Sink (0x0x7fa84a7aa2a0) 0 empty
+
+Class std::__uses_alloc0
+ size=1 align=1
+ base size=1 base align=1
+std::__uses_alloc0 (0x0x7fa84a9de7b8) 0
+ std::__uses_alloc_base (0x0x7fa84a7aa240) 0 empty
+
+Class std::_Swallow_assign
+ size=1 align=1
+ base size=0 base align=1
+std::_Swallow_assign (0x0x7fa84a513600) 0 empty
+
+Vtable for std::bad_function_call
+std::bad_function_call::_ZTVSt17bad_function_call: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt17bad_function_call)
+16 (int (*)(...))std::bad_function_call::~bad_function_call
+24 (int (*)(...))std::bad_function_call::~bad_function_call
+32 (int (*)(...))std::bad_function_call::what
+
+Class std::bad_function_call
+ size=8 align=8
+ base size=8 base align=8
+std::bad_function_call (0x0x7fa84a516a28) 0 nearly-empty
+ vptr=((& std::bad_function_call::_ZTVSt17bad_function_call) + 16)
+ std::exception (0x0x7fa84a559f00) 0 nearly-empty
+ primary-for std::bad_function_call (0x0x7fa84a516a28)
+
+Class std::_Nocopy_types
+ size=16 align=8
+ base size=16 base align=8
+std::_Nocopy_types (0x0x7fa84a58a000) 0
+
+Class std::_Any_data
+ size=16 align=8
+ base size=16 base align=8
+std::_Any_data (0x0x7fa84a58a060) 0
+
+Class std::_Function_base
+ size=24 align=8
+ base size=24 base align=8
+std::_Function_base (0x0x7fa84a58a360) 0
+
+Class QtPrivate::QHashCombine
+ size=1 align=1
+ base size=0 base align=1
+QtPrivate::QHashCombine (0x0x7fa84a3807e0) 0 empty
+
+Class QtPrivate::QHashCombineCommutative
+ size=1 align=1
+ base size=0 base align=1
+QtPrivate::QHashCombineCommutative (0x0x7fa84a3808a0) 0 empty
+
+Class std::_Bit_reference
+ size=16 align=8
+ base size=16 base align=8
+std::_Bit_reference (0x0x7fa84a0b1000) 0
+
+Class std::_Bit_iterator_base
+ size=16 align=8
+ base size=12 base align=8
+std::_Bit_iterator_base (0x0x7fa84a3dd5b0) 0
+ std::iterator<std::random_access_iterator_tag, bool> (0x0x7fa84a0b1720) 0 empty
+
+Class std::_Bit_iterator
+ size=16 align=8
+ base size=12 base align=8
+std::_Bit_iterator (0x0x7fa84a3dd6e8) 0
+ std::_Bit_iterator_base (0x0x7fa84a3dd750) 0
+ std::iterator<std::random_access_iterator_tag, bool> (0x0x7fa84a0b1d80) 0 empty
+
+Class std::_Bit_const_iterator
+ size=16 align=8
+ base size=12 base align=8
+std::_Bit_const_iterator (0x0x7fa84a3dd7b8) 0
+ std::_Bit_iterator_base (0x0x7fa84a3dd820) 0
+ std::iterator<std::random_access_iterator_tag, bool> (0x0x7fa84a0e85a0) 0 empty
+
+Class std::__detail::_List_node_base
+ size=16 align=8
+ base size=16 base align=8
+std::__detail::_List_node_base (0x0x7fa849f31120) 0
+
+Class QListData::NotArrayCompatibleLayout
+ size=1 align=1
+ base size=0 base align=1
+QListData::NotArrayCompatibleLayout (0x0x7fa849fe2ea0) 0 empty
+
+Class QListData::NotIndirectLayout
+ size=1 align=1
+ base size=0 base align=1
+QListData::NotIndirectLayout (0x0x7fa849fe2f00) 0 empty
+
+Class QListData::ArrayCompatibleLayout
+ size=1 align=1
+ base size=1 base align=1
+QListData::ArrayCompatibleLayout (0x0x7fa849ebe340) 0 empty
+ QListData::NotIndirectLayout (0x0x7fa849fe2f60) 0 empty
+
+Class QListData::InlineWithPaddingLayout
+ size=1 align=1
+ base size=1 base align=1
+QListData::InlineWithPaddingLayout (0x0x7fa849f3d930) 0 empty
+ QListData::NotArrayCompatibleLayout (0x0x7fa849ff9000) 0 empty
+ QListData::NotIndirectLayout (0x0x7fa849ff9060) 0 empty
+
+Class QListData::IndirectLayout
+ size=1 align=1
+ base size=1 base align=1
+QListData::IndirectLayout (0x0x7fa849ebe3a8) 0 empty
+ QListData::NotArrayCompatibleLayout (0x0x7fa849ff90c0) 0 empty
+
+Class QListData::Data
+ size=24 align=8
+ base size=24 base align=8
+QListData::Data (0x0x7fa849ff9120) 0
+
+Class QListData
+ size=8 align=8
+ base size=8 base align=8
+QListData (0x0x7fa849fe2e40) 0
+
+Class QRegExp
+ size=8 align=8
+ base size=8 base align=8
+QRegExp (0x0x7fa849cf52a0) 0
+
+Class QStringMatcher::Data
+ size=272 align=8
+ base size=272 base align=8
+QStringMatcher::Data (0x0x7fa849dcf7e0) 0
+
+Class QStringMatcher
+ size=1048 align=8
+ base size=1048 base align=8
+QStringMatcher (0x0x7fa849dcf780) 0
+
+Class QStringList
+ size=8 align=8
+ base size=8 base align=8
+QStringList (0x0x7fa849dee068) 0
+ QList<QString> (0x0x7fa849dee0d0) 0
+ QListSpecialMethods<QString> (0x0x7fa849dcfa20) 0 empty
+
+Class QScopedPointerPodDeleter
+ size=1 align=1
+ base size=0 base align=1
+QScopedPointerPodDeleter (0x0x7fa849aa2960) 0 empty
+
+Class std::_Rb_tree_node_base
+ size=32 align=8
+ base size=32 base align=8
+std::_Rb_tree_node_base (0x0x7fa849b36ba0) 0
+
+Class std::_Rb_tree_header
+ size=40 align=8
+ base size=40 base align=8
+std::_Rb_tree_header (0x0x7fa849b36f00) 0
+
+Class QtPrivate::AbstractDebugStreamFunction
+ size=16 align=8
+ base size=16 base align=8
+QtPrivate::AbstractDebugStreamFunction (0x0x7fa8498d1540) 0
+
+Class QtPrivate::AbstractComparatorFunction
+ size=24 align=8
+ base size=24 base align=8
+QtPrivate::AbstractComparatorFunction (0x0x7fa8498d18a0) 0
+
+Class QtPrivate::AbstractConverterFunction
+ size=8 align=8
+ base size=8 base align=8
+QtPrivate::AbstractConverterFunction (0x0x7fa8498d1de0) 0
+
+Class QMetaType
+ size=80 align=8
+ base size=80 base align=8
+QMetaType (0x0x7fa8498f9360) 0
+
+Class QtMetaTypePrivate::VariantData
+ size=24 align=8
+ base size=20 base align=8
+QtMetaTypePrivate::VariantData (0x0x7fa849562540) 0
+
+Class QtMetaTypePrivate::VectorBoolElements
+ size=1 align=1
+ base size=0 base align=1
+QtMetaTypePrivate::VectorBoolElements (0x0x7fa849562c00) 0 empty
+
+Class QtMetaTypePrivate::QSequentialIterableImpl
+ size=104 align=8
+ base size=104 base align=8
+QtMetaTypePrivate::QSequentialIterableImpl (0x0x7fa8495b7a80) 0
+
+Class QtMetaTypePrivate::QAssociativeIterableImpl
+ size=112 align=8
+ base size=112 base align=8
+QtMetaTypePrivate::QAssociativeIterableImpl (0x0x7fa849674180) 0
+
+Class QtMetaTypePrivate::QPairVariantInterfaceImpl
+ size=40 align=8
+ base size=40 base align=8
+QtMetaTypePrivate::QPairVariantInterfaceImpl (0x0x7fa8496c96c0) 0
+
+Class std::chrono::_V2::system_clock
+ size=1 align=1
+ base size=0 base align=1
+std::chrono::_V2::system_clock (0x0x7fa84913dc60) 0 empty
+
+Class std::chrono::_V2::steady_clock
+ size=1 align=1
+ base size=0 base align=1
+std::chrono::_V2::steady_clock (0x0x7fa849272720) 0 empty
+
+Vtable for QObjectData
+QObjectData::_ZTV11QObjectData: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QObjectData)
+16 (int (*)(...))__cxa_pure_virtual
+24 (int (*)(...))__cxa_pure_virtual
+
+Class QObjectData
+ size=48 align=8
+ base size=48 base align=8
+QObjectData (0x0x7fa849272780) 0
+ vptr=((& QObjectData::_ZTV11QObjectData) + 16)
+
+Class QObject::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QObject::QPrivateSignal (0x0x7fa849272960) 0 empty
+
+Vtable for QObject
+QObject::_ZTV7QObject: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QObject)
+16 (int (*)(...))QObject::metaObject
+24 (int (*)(...))QObject::qt_metacast
+32 (int (*)(...))QObject::qt_metacall
+40 (int (*)(...))QObject::~QObject
+48 (int (*)(...))QObject::~QObject
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QObject
+ size=16 align=8
+ base size=16 base align=8
+QObject (0x0x7fa849272900) 0
+ vptr=((& QObject::_ZTV7QObject) + 16)
+
+Vtable for QObjectUserData
+QObjectUserData::_ZTV15QObjectUserData: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QObjectUserData)
+16 (int (*)(...))QObjectUserData::~QObjectUserData
+24 (int (*)(...))QObjectUserData::~QObjectUserData
+
+Class QObjectUserData
+ size=8 align=8
+ base size=8 base align=8
+QObjectUserData (0x0x7fa848f58780) 0 nearly-empty
+ vptr=((& QObjectUserData::_ZTV15QObjectUserData) + 16)
+
+Class QSignalBlocker
+ size=16 align=8
+ base size=10 base align=8
+QSignalBlocker (0x0x7fa848f58900) 0
+
+Class QAbstractAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractAnimation::QPrivateSignal (0x0x7fa848f7a1e0) 0 empty
+
+Vtable for QAbstractAnimation
+QAbstractAnimation::_ZTV18QAbstractAnimation: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QAbstractAnimation)
+16 (int (*)(...))QAbstractAnimation::metaObject
+24 (int (*)(...))QAbstractAnimation::qt_metacast
+32 (int (*)(...))QAbstractAnimation::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAbstractAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+
+Class QAbstractAnimation
+ size=16 align=8
+ base size=16 base align=8
+QAbstractAnimation (0x0x7fa848f5e208) 0
+ vptr=((& QAbstractAnimation::_ZTV18QAbstractAnimation) + 16)
+ QObject (0x0x7fa848f7a180) 0
+ primary-for QAbstractAnimation (0x0x7fa848f5e208)
+
+Class QAnimationDriver::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAnimationDriver::QPrivateSignal (0x0x7fa848f7a5a0) 0 empty
+
+Vtable for QAnimationDriver
+QAnimationDriver::_ZTV16QAnimationDriver: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QAnimationDriver)
+16 (int (*)(...))QAnimationDriver::metaObject
+24 (int (*)(...))QAnimationDriver::qt_metacast
+32 (int (*)(...))QAnimationDriver::qt_metacall
+40 (int (*)(...))QAnimationDriver::~QAnimationDriver
+48 (int (*)(...))QAnimationDriver::~QAnimationDriver
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAnimationDriver::advance
+120 (int (*)(...))QAnimationDriver::elapsed
+128 (int (*)(...))QAnimationDriver::start
+136 (int (*)(...))QAnimationDriver::stop
+
+Class QAnimationDriver
+ size=16 align=8
+ base size=16 base align=8
+QAnimationDriver (0x0x7fa848f5e270) 0
+ vptr=((& QAnimationDriver::_ZTV16QAnimationDriver) + 16)
+ QObject (0x0x7fa848f7a540) 0
+ primary-for QAnimationDriver (0x0x7fa848f5e270)
+
+Class QEventLoop::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QEventLoop::QPrivateSignal (0x0x7fa848f7a7e0) 0 empty
+
+Vtable for QEventLoop
+QEventLoop::_ZTV10QEventLoop: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QEventLoop)
+16 (int (*)(...))QEventLoop::metaObject
+24 (int (*)(...))QEventLoop::qt_metacast
+32 (int (*)(...))QEventLoop::qt_metacall
+40 (int (*)(...))QEventLoop::~QEventLoop
+48 (int (*)(...))QEventLoop::~QEventLoop
+56 (int (*)(...))QEventLoop::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QEventLoop
+ size=16 align=8
+ base size=16 base align=8
+QEventLoop (0x0x7fa848f5e2d8) 0
+ vptr=((& QEventLoop::_ZTV10QEventLoop) + 16)
+ QObject (0x0x7fa848f7a780) 0
+ primary-for QEventLoop (0x0x7fa848f5e2d8)
+
+Class QEventLoopLocker
+ size=8 align=8
+ base size=8 base align=8
+QEventLoopLocker (0x0x7fa848fd30c0) 0
+
+Class QAbstractEventDispatcher::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractEventDispatcher::QPrivateSignal (0x0x7fa848fd3180) 0 empty
+
+Class QAbstractEventDispatcher::TimerInfo
+ size=12 align=4
+ base size=12 base align=4
+QAbstractEventDispatcher::TimerInfo (0x0x7fa848fd31e0) 0
+
+Vtable for QAbstractEventDispatcher
+QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher: 28 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QAbstractEventDispatcher)
+16 (int (*)(...))QAbstractEventDispatcher::metaObject
+24 (int (*)(...))QAbstractEventDispatcher::qt_metacast
+32 (int (*)(...))QAbstractEventDispatcher::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))__cxa_pure_virtual
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))__cxa_pure_virtual
+176 (int (*)(...))__cxa_pure_virtual
+184 (int (*)(...))__cxa_pure_virtual
+192 (int (*)(...))__cxa_pure_virtual
+200 (int (*)(...))__cxa_pure_virtual
+208 (int (*)(...))QAbstractEventDispatcher::startingUp
+216 (int (*)(...))QAbstractEventDispatcher::closingDown
+
+Class QAbstractEventDispatcher
+ size=16 align=8
+ base size=16 base align=8
+QAbstractEventDispatcher (0x0x7fa848f5e410) 0
+ vptr=((& QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher) + 16)
+ QObject (0x0x7fa848fd3120) 0
+ primary-for QAbstractEventDispatcher (0x0x7fa848f5e410)
+
+Class QMapNodeBase
+ size=24 align=8
+ base size=24 base align=8
+QMapNodeBase (0x0x7fa84902c1e0) 0
+
+Class QMapDataBase
+ size=40 align=8
+ base size=40 base align=8
+QMapDataBase (0x0x7fa84902ce40) 0
+
+Class QHashData::Node
+ size=16 align=8
+ base size=16 base align=8
+QHashData::Node (0x0x7fa8491217e0) 0
+
+Class QHashData
+ size=48 align=8
+ base size=44 base align=8
+QHashData (0x0x7fa849121780) 0
+
+Class QHashDummyValue
+ size=1 align=1
+ base size=0 base align=1
+QHashDummyValue (0x0x7fa849121a80) 0 empty
+
+Class QVariant::PrivateShared
+ size=16 align=8
+ base size=12 base align=8
+QVariant::PrivateShared (0x0x7fa848e541e0) 0
+
+Class QVariant::Private::Data
+ size=8 align=8
+ base size=8 base align=8
+QVariant::Private::Data (0x0x7fa848e542a0) 0
+
+Class QVariant::Private
+ size=16 align=8
+ base size=12 base align=8
+QVariant::Private (0x0x7fa848e54240) 0
+
+Class QVariant::Handler
+ size=72 align=8
+ base size=72 base align=8
+QVariant::Handler (0x0x7fa848e54300) 0
+
+Class QVariant
+ size=16 align=8
+ base size=16 base align=8
+QVariant (0x0x7fa848e54180) 0
+
+Class QVariantComparisonHelper
+ size=8 align=8
+ base size=8 base align=8
+QVariantComparisonHelper (0x0x7fa848bb45a0) 0
+
+Class QSequentialIterable::const_iterator
+ size=112 align=8
+ base size=112 base align=8
+QSequentialIterable::const_iterator (0x0x7fa848bf5c00) 0
+
+Class QSequentialIterable
+ size=104 align=8
+ base size=104 base align=8
+QSequentialIterable (0x0x7fa848bf5ba0) 0
+
+Class QAssociativeIterable::const_iterator
+ size=120 align=8
+ base size=120 base align=8
+QAssociativeIterable::const_iterator (0x0x7fa848bf5d20) 0
+
+Class QAssociativeIterable
+ size=112 align=8
+ base size=112 base align=8
+QAssociativeIterable (0x0x7fa848bf5cc0) 0
+
+Class QModelIndex
+ size=24 align=8
+ base size=24 base align=8
+QModelIndex (0x0x7fa848cc2ea0) 0
+
+Class QPersistentModelIndex
+ size=8 align=8
+ base size=8 base align=8
+QPersistentModelIndex (0x0x7fa848d33ae0) 0
+
+Class QAbstractItemModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractItemModel::QPrivateSignal (0x0x7fa848a04900) 0 empty
+
+Vtable for QAbstractItemModel
+QAbstractItemModel::_ZTV18QAbstractItemModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QAbstractItemModel)
+16 (int (*)(...))QAbstractItemModel::metaObject
+24 (int (*)(...))QAbstractItemModel::qt_metacast
+32 (int (*)(...))QAbstractItemModel::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractItemModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAbstractItemModel::hasChildren
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QAbstractItemModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractItemModel::dropMimeData
+240 (int (*)(...))QAbstractItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QAbstractItemModel::flags
+328 (int (*)(...))QAbstractItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QAbstractItemModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractItemModel (0x0x7fa848a0e5b0) 0
+ vptr=((& QAbstractItemModel::_ZTV18QAbstractItemModel) + 16)
+ QObject (0x0x7fa848a048a0) 0
+ primary-for QAbstractItemModel (0x0x7fa848a0e5b0)
+
+Class QAbstractTableModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractTableModel::QPrivateSignal (0x0x7fa848a7ccc0) 0 empty
+
+Vtable for QAbstractTableModel
+QAbstractTableModel::_ZTV19QAbstractTableModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractTableModel)
+16 (int (*)(...))QAbstractTableModel::metaObject
+24 (int (*)(...))QAbstractTableModel::qt_metacast
+32 (int (*)(...))QAbstractTableModel::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractTableModel::index
+120 (int (*)(...))QAbstractTableModel::parent
+128 (int (*)(...))QAbstractTableModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAbstractTableModel::hasChildren
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QAbstractItemModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractTableModel::dropMimeData
+240 (int (*)(...))QAbstractItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QAbstractTableModel::flags
+328 (int (*)(...))QAbstractItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QAbstractTableModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractTableModel (0x0x7fa848a0ebc8) 0
+ vptr=((& QAbstractTableModel::_ZTV19QAbstractTableModel) + 16)
+ QAbstractItemModel (0x0x7fa848a0ec30) 0
+ primary-for QAbstractTableModel (0x0x7fa848a0ebc8)
+ QObject (0x0x7fa848a7cc60) 0
+ primary-for QAbstractItemModel (0x0x7fa848a0ec30)
+
+Class QAbstractListModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractListModel::QPrivateSignal (0x0x7fa848a7ce40) 0 empty
+
+Vtable for QAbstractListModel
+QAbstractListModel::_ZTV18QAbstractListModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QAbstractListModel)
+16 (int (*)(...))QAbstractListModel::metaObject
+24 (int (*)(...))QAbstractListModel::qt_metacast
+32 (int (*)(...))QAbstractListModel::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractListModel::index
+120 (int (*)(...))QAbstractListModel::parent
+128 (int (*)(...))QAbstractListModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))QAbstractListModel::columnCount
+152 (int (*)(...))QAbstractListModel::hasChildren
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QAbstractItemModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractListModel::dropMimeData
+240 (int (*)(...))QAbstractItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QAbstractListModel::flags
+328 (int (*)(...))QAbstractItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QAbstractListModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractListModel (0x0x7fa848a0ec98) 0
+ vptr=((& QAbstractListModel::_ZTV18QAbstractListModel) + 16)
+ QAbstractItemModel (0x0x7fa848a0ed00) 0
+ primary-for QAbstractListModel (0x0x7fa848a0ec98)
+ QObject (0x0x7fa848a7cde0) 0
+ primary-for QAbstractItemModel (0x0x7fa848a0ed00)
+
+Vtable for QAbstractNativeEventFilter
+QAbstractNativeEventFilter::_ZTV26QAbstractNativeEventFilter: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAbstractNativeEventFilter)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractNativeEventFilter
+ size=16 align=8
+ base size=16 base align=8
+QAbstractNativeEventFilter (0x0x7fa848b055a0) 0
+ vptr=((& QAbstractNativeEventFilter::_ZTV26QAbstractNativeEventFilter) + 16)
+
+Class QAbstractProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractProxyModel::QPrivateSignal (0x0x7fa848b05660) 0 empty
+
+Vtable for QAbstractProxyModel
+QAbstractProxyModel::_ZTV19QAbstractProxyModel: 53 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractProxyModel)
+16 (int (*)(...))QAbstractProxyModel::metaObject
+24 (int (*)(...))QAbstractProxyModel::qt_metacast
+32 (int (*)(...))QAbstractProxyModel::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractProxyModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAbstractProxyModel::hasChildren
+160 (int (*)(...))QAbstractProxyModel::data
+168 (int (*)(...))QAbstractProxyModel::setData
+176 (int (*)(...))QAbstractProxyModel::headerData
+184 (int (*)(...))QAbstractProxyModel::setHeaderData
+192 (int (*)(...))QAbstractProxyModel::itemData
+200 (int (*)(...))QAbstractProxyModel::setItemData
+208 (int (*)(...))QAbstractProxyModel::mimeTypes
+216 (int (*)(...))QAbstractProxyModel::mimeData
+224 (int (*)(...))QAbstractProxyModel::canDropMimeData
+232 (int (*)(...))QAbstractProxyModel::dropMimeData
+240 (int (*)(...))QAbstractProxyModel::supportedDropActions
+248 (int (*)(...))QAbstractProxyModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractProxyModel::fetchMore
+312 (int (*)(...))QAbstractProxyModel::canFetchMore
+320 (int (*)(...))QAbstractProxyModel::flags
+328 (int (*)(...))QAbstractProxyModel::sort
+336 (int (*)(...))QAbstractProxyModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractProxyModel::submit
+376 (int (*)(...))QAbstractProxyModel::revert
+384 (int (*)(...))QAbstractProxyModel::setSourceModel
+392 (int (*)(...))__cxa_pure_virtual
+400 (int (*)(...))__cxa_pure_virtual
+408 (int (*)(...))QAbstractProxyModel::mapSelectionToSource
+416 (int (*)(...))QAbstractProxyModel::mapSelectionFromSource
+
+Class QAbstractProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractProxyModel (0x0x7fa848a0edd0) 0
+ vptr=((& QAbstractProxyModel::_ZTV19QAbstractProxyModel) + 16)
+ QAbstractItemModel (0x0x7fa848a0ee38) 0
+ primary-for QAbstractProxyModel (0x0x7fa848a0edd0)
+ QObject (0x0x7fa848b05600) 0
+ primary-for QAbstractItemModel (0x0x7fa848a0ee38)
+
+Class QAbstractState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractState::QPrivateSignal (0x0x7fa848b058a0) 0 empty
+
+Vtable for QAbstractState
+QAbstractState::_ZTV14QAbstractState: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QAbstractState)
+16 (int (*)(...))QAbstractState::metaObject
+24 (int (*)(...))QAbstractState::qt_metacast
+32 (int (*)(...))QAbstractState::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAbstractState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractState
+ size=16 align=8
+ base size=16 base align=8
+QAbstractState (0x0x7fa848a0eea0) 0
+ vptr=((& QAbstractState::_ZTV14QAbstractState) + 16)
+ QObject (0x0x7fa848b05840) 0
+ primary-for QAbstractState (0x0x7fa848a0eea0)
+
+Class QAbstractTransition::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractTransition::QPrivateSignal (0x0x7fa848b05ae0) 0 empty
+
+Vtable for QAbstractTransition
+QAbstractTransition::_ZTV19QAbstractTransition: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractTransition)
+16 (int (*)(...))QAbstractTransition::metaObject
+24 (int (*)(...))QAbstractTransition::qt_metacast
+32 (int (*)(...))QAbstractTransition::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAbstractTransition::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractTransition
+ size=16 align=8
+ base size=16 base align=8
+QAbstractTransition (0x0x7fa848a0ef08) 0
+ vptr=((& QAbstractTransition::_ZTV19QAbstractTransition) + 16)
+ QObject (0x0x7fa848b05a80) 0
+ primary-for QAbstractTransition (0x0x7fa848a0ef08)
+
+Class QAnimationGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAnimationGroup::QPrivateSignal (0x0x7fa848b05de0) 0 empty
+
+Vtable for QAnimationGroup
+QAnimationGroup::_ZTV15QAnimationGroup: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QAnimationGroup)
+16 (int (*)(...))QAnimationGroup::metaObject
+24 (int (*)(...))QAnimationGroup::qt_metacast
+32 (int (*)(...))QAnimationGroup::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAnimationGroup::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+
+Class QAnimationGroup
+ size=16 align=8
+ base size=16 base align=8
+QAnimationGroup (0x0x7fa848a0ef70) 0
+ vptr=((& QAnimationGroup::_ZTV15QAnimationGroup) + 16)
+ QAbstractAnimation (0x0x7fa848783000) 0
+ primary-for QAnimationGroup (0x0x7fa848a0ef70)
+ QObject (0x0x7fa848b05d80) 0
+ primary-for QAbstractAnimation (0x0x7fa848783000)
+
+Class QBasicTimer
+ size=4 align=4
+ base size=4 base align=4
+QBasicTimer (0x0x7fa8487d7120) 0
+
+Class QBitArray
+ size=8 align=8
+ base size=8 base align=8
+QBitArray (0x0x7fa848858a80) 0
+
+Class QBitRef
+ size=16 align=8
+ base size=12 base align=8
+QBitRef (0x0x7fa8488a6f00) 0
+
+Class QIODevice::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QIODevice::QPrivateSignal (0x0x7fa84891e1e0) 0 empty
+
+Vtable for QIODevice
+QIODevice::_ZTV9QIODevice: 30 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QIODevice)
+16 (int (*)(...))QIODevice::metaObject
+24 (int (*)(...))QIODevice::qt_metacast
+32 (int (*)(...))QIODevice::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QIODevice::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QIODevice::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QIODevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))__cxa_pure_virtual
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))__cxa_pure_virtual
+
+Class QIODevice
+ size=16 align=8
+ base size=16 base align=8
+QIODevice (0x0x7fa8489145b0) 0
+ vptr=((& QIODevice::_ZTV9QIODevice) + 16)
+ QObject (0x0x7fa84891e180) 0
+ primary-for QIODevice (0x0x7fa8489145b0)
+
+Class QBuffer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QBuffer::QPrivateSignal (0x0x7fa84891eb40) 0 empty
+
+Vtable for QBuffer
+QBuffer::_ZTV7QBuffer: 30 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QBuffer)
+16 (int (*)(...))QBuffer::metaObject
+24 (int (*)(...))QBuffer::qt_metacast
+32 (int (*)(...))QBuffer::qt_metacall
+40 (int (*)(...))QBuffer::~QBuffer
+48 (int (*)(...))QBuffer::~QBuffer
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QBuffer::connectNotify
+104 (int (*)(...))QBuffer::disconnectNotify
+112 (int (*)(...))QIODevice::isSequential
+120 (int (*)(...))QBuffer::open
+128 (int (*)(...))QBuffer::close
+136 (int (*)(...))QBuffer::pos
+144 (int (*)(...))QBuffer::size
+152 (int (*)(...))QBuffer::seek
+160 (int (*)(...))QBuffer::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QBuffer::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QBuffer::readData
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))QBuffer::writeData
+
+Class QBuffer
+ size=16 align=8
+ base size=16 base align=8
+QBuffer (0x0x7fa8489146e8) 0
+ vptr=((& QBuffer::_ZTV7QBuffer) + 16)
+ QIODevice (0x0x7fa848914750) 0
+ primary-for QBuffer (0x0x7fa8489146e8)
+ QObject (0x0x7fa84891eae0) 0
+ primary-for QIODevice (0x0x7fa848914750)
+
+Class QByteArrayMatcher::Data
+ size=272 align=8
+ base size=272 base align=8
+QByteArrayMatcher::Data (0x0x7fa84891ede0) 0
+
+Class QByteArrayMatcher
+ size=1040 align=8
+ base size=1040 base align=8
+QByteArrayMatcher (0x0x7fa84891ed80) 0
+
+Class QStaticByteArrayMatcherBase::Skiptable
+ size=256 align=1
+ base size=256 base align=1
+QStaticByteArrayMatcherBase::Skiptable (0x0x7fa84891ef60) 0
+
+Class QStaticByteArrayMatcherBase
+ size=256 align=16
+ base size=256 base align=16
+QStaticByteArrayMatcherBase (0x0x7fa84891ef00) 0
+
+Class QSharedData
+ size=4 align=4
+ base size=4 base align=4
+QSharedData (0x0x7fa848584e40) 0
+
+Class QLocale
+ size=8 align=8
+ base size=8 base align=8
+QLocale (0x0x7fa8485e0d20) 0
+
+Class QCalendar::YearMonthDay
+ size=12 align=4
+ base size=12 base align=4
+QCalendar::YearMonthDay (0x0x7fa848369240) 0
+
+Class QCalendar
+ size=8 align=8
+ base size=8 base align=8
+QCalendar (0x0x7fa8483691e0) 0
+
+Class QDate
+ size=8 align=8
+ base size=8 base align=8
+QDate (0x0x7fa848369a20) 0
+
+Class QTime
+ size=4 align=4
+ base size=4 base align=4
+QTime (0x0x7fa8483ee300) 0
+
+Class QDateTime::ShortData
+ size=8 align=8
+ base size=8 base align=8
+QDateTime::ShortData (0x0x7fa84843df60) 0
+
+Class QDateTime::Data
+ size=8 align=8
+ base size=8 base align=8
+QDateTime::Data (0x0x7fa848459000) 0
+
+Class QDateTime
+ size=8 align=8
+ base size=8 base align=8
+QDateTime (0x0x7fa84843df00) 0
+
+Vtable for QTextStream
+QTextStream::_ZTV11QTextStream: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTextStream)
+16 (int (*)(...))QTextStream::~QTextStream
+24 (int (*)(...))QTextStream::~QTextStream
+
+Class QTextStream
+ size=16 align=8
+ base size=16 base align=8
+QTextStream (0x0x7fa84852f6c0) 0
+ vptr=((& QTextStream::_ZTV11QTextStream) + 16)
+
+Class QTextStreamManipulator
+ size=40 align=8
+ base size=38 base align=8
+QTextStreamManipulator (0x0x7fa84852ff60) 0
+
+Class QContiguousCacheData
+ size=24 align=4
+ base size=24 base align=4
+QContiguousCacheData (0x0x7fa848201c00) 0
+
+Vtable for __gnu_cxx::__concurrence_lock_error
+__gnu_cxx::__concurrence_lock_error::_ZTVN9__gnu_cxx24__concurrence_lock_errorE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx24__concurrence_lock_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error
+24 (int (*)(...))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error
+32 (int (*)(...))__gnu_cxx::__concurrence_lock_error::what
+
+Class __gnu_cxx::__concurrence_lock_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_lock_error (0x0x7fa848531750) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_lock_error::_ZTVN9__gnu_cxx24__concurrence_lock_errorE) + 16)
+ std::exception (0x0x7fa84824ca80) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_lock_error (0x0x7fa848531750)
+
+Vtable for __gnu_cxx::__concurrence_unlock_error
+__gnu_cxx::__concurrence_unlock_error::_ZTVN9__gnu_cxx26__concurrence_unlock_errorE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx26__concurrence_unlock_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error
+24 (int (*)(...))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error
+32 (int (*)(...))__gnu_cxx::__concurrence_unlock_error::what
+
+Class __gnu_cxx::__concurrence_unlock_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_unlock_error (0x0x7fa8485317b8) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_unlock_error::_ZTVN9__gnu_cxx26__concurrence_unlock_errorE) + 16)
+ std::exception (0x0x7fa84824cba0) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_unlock_error (0x0x7fa8485317b8)
+
+Vtable for __gnu_cxx::__concurrence_broadcast_error
+__gnu_cxx::__concurrence_broadcast_error::_ZTVN9__gnu_cxx29__concurrence_broadcast_errorE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx29__concurrence_broadcast_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::~__concurrence_broadcast_error
+24 (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::~__concurrence_broadcast_error
+32 (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::what
+
+Class __gnu_cxx::__concurrence_broadcast_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_broadcast_error (0x0x7fa848531820) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_broadcast_error::_ZTVN9__gnu_cxx29__concurrence_broadcast_errorE) + 16)
+ std::exception (0x0x7fa84824ccc0) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_broadcast_error (0x0x7fa848531820)
+
+Vtable for __gnu_cxx::__concurrence_wait_error
+__gnu_cxx::__concurrence_wait_error::_ZTVN9__gnu_cxx24__concurrence_wait_errorE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx24__concurrence_wait_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_wait_error::~__concurrence_wait_error
+24 (int (*)(...))__gnu_cxx::__concurrence_wait_error::~__concurrence_wait_error
+32 (int (*)(...))__gnu_cxx::__concurrence_wait_error::what
+
+Class __gnu_cxx::__concurrence_wait_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_wait_error (0x0x7fa8485318f0) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_wait_error::_ZTVN9__gnu_cxx24__concurrence_wait_errorE) + 16)
+ std::exception (0x0x7fa84824cde0) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_wait_error (0x0x7fa8485318f0)
+
+Class __gnu_cxx::__mutex
+ size=40 align=8
+ base size=40 base align=8
+__gnu_cxx::__mutex (0x0x7fa848276e40) 0
+
+Class __gnu_cxx::__recursive_mutex
+ size=40 align=8
+ base size=40 base align=8
+__gnu_cxx::__recursive_mutex (0x0x7fa84829d180) 0
+
+Class __gnu_cxx::__scoped_lock
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__scoped_lock (0x0x7fa84829d480) 0
+
+Class __gnu_cxx::__cond
+ size=48 align=8
+ base size=48 base align=8
+__gnu_cxx::__cond (0x0x7fa84829d7e0) 0
+
+Vtable for std::bad_weak_ptr
+std::bad_weak_ptr::_ZTVSt12bad_weak_ptr: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12bad_weak_ptr)
+16 (int (*)(...))std::bad_weak_ptr::~bad_weak_ptr
+24 (int (*)(...))std::bad_weak_ptr::~bad_weak_ptr
+32 (int (*)(...))std::bad_weak_ptr::what
+
+Class std::bad_weak_ptr
+ size=8 align=8
+ base size=8 base align=8
+std::bad_weak_ptr (0x0x7fa848531958) 0 nearly-empty
+ vptr=((& std::bad_weak_ptr::_ZTVSt12bad_weak_ptr) + 16)
+ std::exception (0x0x7fa8483119c0) 0 nearly-empty
+ primary-for std::bad_weak_ptr (0x0x7fa848531958)
+
+Class std::_Sp_make_shared_tag
+ size=1 align=1
+ base size=0 base align=1
+std::_Sp_make_shared_tag (0x0x7fa847f80960) 0 empty
+
+Class std::__sp_array_delete
+ size=1 align=1
+ base size=0 base align=1
+std::__sp_array_delete (0x0x7fa847f80d80) 0 empty
+
+Class std::_Sp_locker
+ size=2 align=1
+ base size=2 base align=1
+std::_Sp_locker (0x0x7fa8480b5c00) 0
+
+Class QtSharedPointer::NormalDeleter
+ size=1 align=1
+ base size=0 base align=1
+QtSharedPointer::NormalDeleter (0x0x7fa848116120) 0 empty
+
+Class QtSharedPointer::ExternalRefCountData
+ size=16 align=8
+ base size=16 base align=8
+QtSharedPointer::ExternalRefCountData (0x0x7fa8481162a0) 0
+
+Class QtPrivate::EnableInternalData
+ size=1 align=1
+ base size=0 base align=1
+QtPrivate::EnableInternalData (0x0x7fa847cf3ba0) 0 empty
+
+Class QDebug::Stream
+ size=80 align=8
+ base size=76 base align=8
+QDebug::Stream (0x0x7fa847d4d2a0) 0
+
+Class QDebug
+ size=8 align=8
+ base size=8 base align=8
+QDebug (0x0x7fa847d4d240) 0
+
+Class QDebugStateSaver
+ size=8 align=8
+ base size=8 base align=8
+QDebugStateSaver (0x0x7fa847abeba0) 0
+
+Class QNoDebug
+ size=1 align=1
+ base size=0 base align=1
+QNoDebug (0x0x7fa847abec60) 0 empty
+
+Class QCborError
+ size=4 align=4
+ base size=4 base align=4
+QCborError (0x0x7fa847b3eea0) 0
+
+Class QRegularExpression
+ size=8 align=8
+ base size=8 base align=8
+QRegularExpression (0x0x7fa847b6f660) 0
+
+Class QRegularExpressionMatch
+ size=8 align=8
+ base size=8 base align=8
+QRegularExpressionMatch (0x0x7fa847c1d540) 0
+
+Class QRegularExpressionMatchIterator
+ size=8 align=8
+ base size=8 base align=8
+QRegularExpressionMatchIterator (0x0x7fa847c86300) 0
+
+Class QUrl
+ size=8 align=8
+ base size=8 base align=8
+QUrl (0x0x7fa8478dcd20) 0
+
+Class QUuid
+ size=16 align=4
+ base size=16 base align=4
+QUuid (0x0x7fa847a21cc0) 0
+
+Class QCborParserError
+ size=16 align=8
+ base size=12 base align=8
+QCborParserError (0x0x7fa847ab2840) 0
+
+Class QCborValue
+ size=24 align=8
+ base size=20 base align=8
+QCborValue (0x0x7fa847ab2900) 0
+
+Class QCborValueRef
+ size=16 align=8
+ base size=16 base align=8
+QCborValueRef (0x0x7fa8475324e0) 0
+
+Class QCborArray::Iterator
+ size=16 align=8
+ base size=16 base align=8
+QCborArray::Iterator (0x0x7fa8475a4f00) 0
+
+Class QCborArray::ConstIterator
+ size=16 align=8
+ base size=16 base align=8
+QCborArray::ConstIterator (0x0x7fa8475a4f60) 0
+
+Class QCborArray
+ size=8 align=8
+ base size=8 base align=8
+QCborArray (0x0x7fa8475a4ea0) 0
+
+Class QCborMap::Iterator
+ size=16 align=8
+ base size=16 base align=8
+QCborMap::Iterator (0x0x7fa84732ab40) 0
+
+Class QCborMap::ConstIterator
+ size=16 align=8
+ base size=16 base align=8
+QCborMap::ConstIterator (0x0x7fa84732aba0) 0
+
+Class QCborMap
+ size=8 align=8
+ base size=8 base align=8
+QCborMap (0x0x7fa84732aae0) 0
+
+Class qfloat16::Wrap
+ size=2 align=2
+ base size=2 base align=2
+qfloat16::Wrap (0x0x7fa847143360) 0
+
+Class qfloat16
+ size=2 align=2
+ base size=2 base align=2
+qfloat16 (0x0x7fa847143300) 0
+
+Class QCborStreamWriter
+ size=8 align=8
+ base size=8 base align=8
+QCborStreamWriter (0x0x7fa847236000) 0
+
+Class QCborStreamReader
+ size=24 align=8
+ base size=20 base align=8
+QCborStreamReader (0x0x7fa847236d20) 0
+
+Class QCollatorSortKey
+ size=8 align=8
+ base size=8 base align=8
+QCollatorSortKey (0x0x7fa846ec8e40) 0
+
+Class QCollator
+ size=8 align=8
+ base size=8 base align=8
+QCollator (0x0x7fa846ef4060) 0
+
+Class QCommandLineOption
+ size=8 align=8
+ base size=8 base align=8
+QCommandLineOption (0x0x7fa846fe3660) 0
+
+Vtable for QEvent
+QEvent::_ZTV6QEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QEvent)
+16 (int (*)(...))QEvent::~QEvent
+24 (int (*)(...))QEvent::~QEvent
+
+Class QEvent
+ size=24 align=8
+ base size=20 base align=8
+QEvent (0x0x7fa8470a6ba0) 0
+ vptr=((& QEvent::_ZTV6QEvent) + 16)
+
+Vtable for QTimerEvent
+QTimerEvent::_ZTV11QTimerEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTimerEvent)
+16 (int (*)(...))QTimerEvent::~QTimerEvent
+24 (int (*)(...))QTimerEvent::~QTimerEvent
+
+Class QTimerEvent
+ size=24 align=8
+ base size=24 base align=8
+QTimerEvent (0x0x7fa8470ab3a8) 0
+ vptr=((& QTimerEvent::_ZTV11QTimerEvent) + 16)
+ QEvent (0x0x7fa8470a6f60) 0
+ primary-for QTimerEvent (0x0x7fa8470ab3a8)
+
+Vtable for QChildEvent
+QChildEvent::_ZTV11QChildEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QChildEvent)
+16 (int (*)(...))QChildEvent::~QChildEvent
+24 (int (*)(...))QChildEvent::~QChildEvent
+
+Class QChildEvent
+ size=32 align=8
+ base size=32 base align=8
+QChildEvent (0x0x7fa8470ab410) 0
+ vptr=((& QChildEvent::_ZTV11QChildEvent) + 16)
+ QEvent (0x0x7fa846ceb060) 0
+ primary-for QChildEvent (0x0x7fa8470ab410)
+
+Vtable for QDynamicPropertyChangeEvent
+QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QDynamicPropertyChangeEvent)
+16 (int (*)(...))QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent
+24 (int (*)(...))QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent
+
+Class QDynamicPropertyChangeEvent
+ size=32 align=8
+ base size=32 base align=8
+QDynamicPropertyChangeEvent (0x0x7fa8470ab958) 0
+ vptr=((& QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent) + 16)
+ QEvent (0x0x7fa846ceb6c0) 0
+ primary-for QDynamicPropertyChangeEvent (0x0x7fa8470ab958)
+
+Vtable for QDeferredDeleteEvent
+QDeferredDeleteEvent::_ZTV20QDeferredDeleteEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QDeferredDeleteEvent)
+16 (int (*)(...))QDeferredDeleteEvent::~QDeferredDeleteEvent
+24 (int (*)(...))QDeferredDeleteEvent::~QDeferredDeleteEvent
+
+Class QDeferredDeleteEvent
+ size=24 align=8
+ base size=24 base align=8
+QDeferredDeleteEvent (0x0x7fa8470ab9c0) 0
+ vptr=((& QDeferredDeleteEvent::_ZTV20QDeferredDeleteEvent) + 16)
+ QEvent (0x0x7fa846ceb780) 0
+ primary-for QDeferredDeleteEvent (0x0x7fa8470ab9c0)
+
+Class QCoreApplication::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QCoreApplication::QPrivateSignal (0x0x7fa846ceb8a0) 0 empty
+
+Vtable for QCoreApplication
+QCoreApplication::_ZTV16QCoreApplication: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QCoreApplication)
+16 (int (*)(...))QCoreApplication::metaObject
+24 (int (*)(...))QCoreApplication::qt_metacast
+32 (int (*)(...))QCoreApplication::qt_metacall
+40 (int (*)(...))QCoreApplication::~QCoreApplication
+48 (int (*)(...))QCoreApplication::~QCoreApplication
+56 (int (*)(...))QCoreApplication::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QCoreApplication::notify
+120 (int (*)(...))QCoreApplication::compressEvent
+
+Class QCoreApplication
+ size=16 align=8
+ base size=16 base align=8
+QCoreApplication (0x0x7fa8470aba28) 0
+ vptr=((& QCoreApplication::_ZTV16QCoreApplication) + 16)
+ QObject (0x0x7fa846ceb840) 0
+ primary-for QCoreApplication (0x0x7fa8470aba28)
+
+Class QCommandLineParser
+ size=8 align=8
+ base size=8 base align=8
+QCommandLineParser (0x0x7fa846cebae0) 0
+
+Class QConcatenateTablesProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QConcatenateTablesProxyModel::QPrivateSignal (0x0x7fa846cebc60) 0 empty
+
+Vtable for QConcatenateTablesProxyModel
+QConcatenateTablesProxyModel::_ZTV28QConcatenateTablesProxyModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI28QConcatenateTablesProxyModel)
+16 (int (*)(...))QConcatenateTablesProxyModel::metaObject
+24 (int (*)(...))QConcatenateTablesProxyModel::qt_metacast
+32 (int (*)(...))QConcatenateTablesProxyModel::qt_metacall
+40 (int (*)(...))QConcatenateTablesProxyModel::~QConcatenateTablesProxyModel
+48 (int (*)(...))QConcatenateTablesProxyModel::~QConcatenateTablesProxyModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QConcatenateTablesProxyModel::index
+120 (int (*)(...))QConcatenateTablesProxyModel::parent
+128 (int (*)(...))QAbstractItemModel::sibling
+136 (int (*)(...))QConcatenateTablesProxyModel::rowCount
+144 (int (*)(...))QConcatenateTablesProxyModel::columnCount
+152 (int (*)(...))QAbstractItemModel::hasChildren
+160 (int (*)(...))QConcatenateTablesProxyModel::data
+168 (int (*)(...))QConcatenateTablesProxyModel::setData
+176 (int (*)(...))QConcatenateTablesProxyModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QConcatenateTablesProxyModel::itemData
+200 (int (*)(...))QConcatenateTablesProxyModel::setItemData
+208 (int (*)(...))QConcatenateTablesProxyModel::mimeTypes
+216 (int (*)(...))QConcatenateTablesProxyModel::mimeData
+224 (int (*)(...))QConcatenateTablesProxyModel::canDropMimeData
+232 (int (*)(...))QConcatenateTablesProxyModel::dropMimeData
+240 (int (*)(...))QAbstractItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QConcatenateTablesProxyModel::flags
+328 (int (*)(...))QAbstractItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QConcatenateTablesProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QConcatenateTablesProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QConcatenateTablesProxyModel (0x0x7fa8470aba90) 0
+ vptr=((& QConcatenateTablesProxyModel::_ZTV28QConcatenateTablesProxyModel) + 16)
+ QAbstractItemModel (0x0x7fa8470abaf8) 0
+ primary-for QConcatenateTablesProxyModel (0x0x7fa8470aba90)
+ QObject (0x0x7fa846cebc00) 0
+ primary-for QAbstractItemModel (0x0x7fa8470abaf8)
+
+Class QCryptographicHash
+ size=8 align=8
+ base size=8 base align=8
+QCryptographicHash (0x0x7fa846cebe40) 0
+
+Class QDataStream
+ size=32 align=8
+ base size=32 base align=8
+QDataStream (0x0x7fa846cebf60) 0
+
+Class QtPrivate::StreamStateSaver
+ size=16 align=8
+ base size=12 base align=8
+QtPrivate::StreamStateSaver (0x0x7fa846d73120) 0
+
+Class QElapsedTimer
+ size=16 align=8
+ base size=16 base align=8
+QElapsedTimer (0x0x7fa846db4840) 0
+
+Class QDeadlineTimer
+ size=16 align=8
+ base size=16 base align=8
+QDeadlineTimer (0x0x7fa846db4f60) 0
+
+Class QFileDevice::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFileDevice::QPrivateSignal (0x0x7fa846b03c60) 0 empty
+
+Vtable for QFileDevice
+QFileDevice::_ZTV11QFileDevice: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFileDevice)
+16 (int (*)(...))QFileDevice::metaObject
+24 (int (*)(...))QFileDevice::qt_metacast
+32 (int (*)(...))QFileDevice::qt_metacall
+40 (int (*)(...))QFileDevice::~QFileDevice
+48 (int (*)(...))QFileDevice::~QFileDevice
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QFileDevice::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFileDevice::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QFileDevice::writeData
+240 (int (*)(...))QFileDevice::fileName
+248 (int (*)(...))QFileDevice::resize
+256 (int (*)(...))QFileDevice::permissions
+264 (int (*)(...))QFileDevice::setPermissions
+
+Class QFileDevice
+ size=16 align=8
+ base size=16 base align=8
+QFileDevice (0x0x7fa846afad00) 0
+ vptr=((& QFileDevice::_ZTV11QFileDevice) + 16)
+ QIODevice (0x0x7fa846afad68) 0
+ primary-for QFileDevice (0x0x7fa846afad00)
+ QObject (0x0x7fa846b03c00) 0
+ primary-for QIODevice (0x0x7fa846afad68)
+
+Class QFile::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFile::QPrivateSignal (0x0x7fa846b4a5a0) 0 empty
+
+Vtable for QFile
+QFile::_ZTV5QFile: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI5QFile)
+16 (int (*)(...))QFile::metaObject
+24 (int (*)(...))QFile::qt_metacast
+32 (int (*)(...))QFile::qt_metacall
+40 (int (*)(...))QFile::~QFile
+48 (int (*)(...))QFile::~QFile
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QFile::open
+128 (int (*)(...))QFileDevice::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFile::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QFileDevice::writeData
+240 (int (*)(...))QFile::fileName
+248 (int (*)(...))QFile::resize
+256 (int (*)(...))QFile::permissions
+264 (int (*)(...))QFile::setPermissions
+
+Class QFile
+ size=16 align=8
+ base size=16 base align=8
+QFile (0x0x7fa846afaea0) 0
+ vptr=((& QFile::_ZTV5QFile) + 16)
+ QFileDevice (0x0x7fa846afaf08) 0
+ primary-for QFile (0x0x7fa846afaea0)
+ QIODevice (0x0x7fa846afaf70) 0
+ primary-for QFileDevice (0x0x7fa846afaf08)
+ QObject (0x0x7fa846b4a540) 0
+ primary-for QIODevice (0x0x7fa846afaf70)
+
+Class QFileInfo
+ size=8 align=8
+ base size=8 base align=8
+QFileInfo (0x0x7fa846b4ac00) 0
+
+Class QDir
+ size=8 align=8
+ base size=8 base align=8
+QDir (0x0x7fa846c43ae0) 0
+
+Class QDirIterator
+ size=8 align=8
+ base size=8 base align=8
+QDirIterator (0x0x7fa84695eae0) 0
+
+Class QEasingCurve
+ size=8 align=8
+ base size=8 base align=8
+QEasingCurve (0x0x7fa8469b72a0) 0
+
+Class QEventTransition::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QEventTransition::QPrivateSignal (0x0x7fa8466b83c0) 0 empty
+
+Vtable for QEventTransition
+QEventTransition::_ZTV16QEventTransition: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QEventTransition)
+16 (int (*)(...))QEventTransition::metaObject
+24 (int (*)(...))QEventTransition::qt_metacast
+32 (int (*)(...))QEventTransition::qt_metacall
+40 (int (*)(...))QEventTransition::~QEventTransition
+48 (int (*)(...))QEventTransition::~QEventTransition
+56 (int (*)(...))QEventTransition::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QEventTransition::eventTest
+120 (int (*)(...))QEventTransition::onTransition
+
+Class QEventTransition
+ size=16 align=8
+ base size=16 base align=8
+QEventTransition (0x0x7fa846a67c30) 0
+ vptr=((& QEventTransition::_ZTV16QEventTransition) + 16)
+ QAbstractTransition (0x0x7fa846a67c98) 0
+ primary-for QEventTransition (0x0x7fa846a67c30)
+ QObject (0x0x7fa8466b8360) 0
+ primary-for QAbstractTransition (0x0x7fa846a67c98)
+
+Vtable for QException
+QException::_ZTV10QException: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QException)
+16 (int (*)(...))QException::~QException
+24 (int (*)(...))QException::~QException
+32 (int (*)(...))std::exception::what
+40 (int (*)(...))QException::raise
+48 (int (*)(...))QException::clone
+
+Class QException
+ size=8 align=8
+ base size=8 base align=8
+QException (0x0x7fa846a67d00) 0 nearly-empty
+ vptr=((& QException::_ZTV10QException) + 16)
+ std::exception (0x0x7fa8466b85a0) 0 nearly-empty
+ primary-for QException (0x0x7fa846a67d00)
+
+Vtable for QUnhandledException
+QUnhandledException::_ZTV19QUnhandledException: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QUnhandledException)
+16 (int (*)(...))QUnhandledException::~QUnhandledException
+24 (int (*)(...))QUnhandledException::~QUnhandledException
+32 (int (*)(...))std::exception::what
+40 (int (*)(...))QUnhandledException::raise
+48 (int (*)(...))QUnhandledException::clone
+
+Class QUnhandledException
+ size=8 align=8
+ base size=8 base align=8
+QUnhandledException (0x0x7fa846a67d68) 0 nearly-empty
+ vptr=((& QUnhandledException::_ZTV19QUnhandledException) + 16)
+ QException (0x0x7fa846a67dd0) 0 nearly-empty
+ primary-for QUnhandledException (0x0x7fa846a67d68)
+ std::exception (0x0x7fa8466b8600) 0 nearly-empty
+ primary-for QException (0x0x7fa846a67dd0)
+
+Class QtPrivate::ExceptionHolder
+ size=8 align=8
+ base size=8 base align=8
+QtPrivate::ExceptionHolder (0x0x7fa8466b8660) 0
+
+Class QtPrivate::ExceptionStore
+ size=8 align=8
+ base size=8 base align=8
+QtPrivate::ExceptionStore (0x0x7fa8466b8720) 0
+
+Vtable for QFactoryInterface
+QFactoryInterface::_ZTV17QFactoryInterface: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QFactoryInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QFactoryInterface
+ size=8 align=8
+ base size=8 base align=8
+QFactoryInterface (0x0x7fa8466b8780) 0 nearly-empty
+ vptr=((& QFactoryInterface::_ZTV17QFactoryInterface) + 16)
+
+Class QFileSelector::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFileSelector::QPrivateSignal (0x0x7fa8466b89c0) 0 empty
+
+Vtable for QFileSelector
+QFileSelector::_ZTV13QFileSelector: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QFileSelector)
+16 (int (*)(...))QFileSelector::metaObject
+24 (int (*)(...))QFileSelector::qt_metacast
+32 (int (*)(...))QFileSelector::qt_metacall
+40 (int (*)(...))QFileSelector::~QFileSelector
+48 (int (*)(...))QFileSelector::~QFileSelector
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QFileSelector
+ size=16 align=8
+ base size=16 base align=8
+QFileSelector (0x0x7fa846a67e38) 0
+ vptr=((& QFileSelector::_ZTV13QFileSelector) + 16)
+ QObject (0x0x7fa8466b8960) 0
+ primary-for QFileSelector (0x0x7fa846a67e38)
+
+Class QFileSystemWatcher::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFileSystemWatcher::QPrivateSignal (0x0x7fa8466b8c00) 0 empty
+
+Vtable for QFileSystemWatcher
+QFileSystemWatcher::_ZTV18QFileSystemWatcher: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QFileSystemWatcher)
+16 (int (*)(...))QFileSystemWatcher::metaObject
+24 (int (*)(...))QFileSystemWatcher::qt_metacast
+32 (int (*)(...))QFileSystemWatcher::qt_metacall
+40 (int (*)(...))QFileSystemWatcher::~QFileSystemWatcher
+48 (int (*)(...))QFileSystemWatcher::~QFileSystemWatcher
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QFileSystemWatcher
+ size=16 align=8
+ base size=16 base align=8
+QFileSystemWatcher (0x0x7fa846a67ea0) 0
+ vptr=((& QFileSystemWatcher::_ZTV18QFileSystemWatcher) + 16)
+ QObject (0x0x7fa8466b8ba0) 0
+ primary-for QFileSystemWatcher (0x0x7fa846a67ea0)
+
+Class QFinalState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFinalState::QPrivateSignal (0x0x7fa8466b8e40) 0 empty
+
+Vtable for QFinalState
+QFinalState::_ZTV11QFinalState: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFinalState)
+16 (int (*)(...))QFinalState::metaObject
+24 (int (*)(...))QFinalState::qt_metacast
+32 (int (*)(...))QFinalState::qt_metacall
+40 (int (*)(...))QFinalState::~QFinalState
+48 (int (*)(...))QFinalState::~QFinalState
+56 (int (*)(...))QFinalState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFinalState::onEntry
+120 (int (*)(...))QFinalState::onExit
+
+Class QFinalState
+ size=16 align=8
+ base size=16 base align=8
+QFinalState (0x0x7fa846a67f08) 0
+ vptr=((& QFinalState::_ZTV11QFinalState) + 16)
+ QAbstractState (0x0x7fa846a67f70) 0
+ primary-for QFinalState (0x0x7fa846a67f08)
+ QObject (0x0x7fa8466b8de0) 0
+ primary-for QAbstractState (0x0x7fa846a67f70)
+
+Vtable for QRunnable
+QRunnable::_ZTV9QRunnable: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QRunnable)
+16 (int (*)(...))__cxa_pure_virtual
+24 0
+32 0
+
+Class QRunnable
+ size=16 align=8
+ base size=12 base align=8
+QRunnable (0x0x7fa846714060) 0
+ vptr=((& QRunnable::_ZTV9QRunnable) + 16)
+
+Class QBasicMutex
+ size=8 align=8
+ base size=8 base align=8
+QBasicMutex (0x0x7fa846714300) 0
+
+Class QMutex
+ size=8 align=8
+ base size=8 base align=8
+QMutex (0x0x7fa846752068) 0
+ QBasicMutex (0x0x7fa846714f60) 0
+
+Class QRecursiveMutex
+ size=8 align=8
+ base size=8 base align=8
+QRecursiveMutex (0x0x7fa8467520d0) 0
+ QMutex (0x0x7fa846752138) 0
+ QBasicMutex (0x0x7fa84679d1e0) 0
+
+Class QMutexLocker
+ size=8 align=8
+ base size=8 base align=8
+QMutexLocker (0x0x7fa84679d240) 0
+
+Class QtPrivate::ResultItem
+ size=16 align=8
+ base size=16 base align=8
+QtPrivate::ResultItem (0x0x7fa84679d840) 0
+
+Class QtPrivate::ResultIteratorBase
+ size=16 align=8
+ base size=12 base align=8
+QtPrivate::ResultIteratorBase (0x0x7fa84679de40) 0
+
+Vtable for QtPrivate::ResultStoreBase
+QtPrivate::ResultStoreBase::_ZTVN9QtPrivate15ResultStoreBaseE: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9QtPrivate15ResultStoreBaseE)
+16 (int (*)(...))QtPrivate::ResultStoreBase::~ResultStoreBase
+24 (int (*)(...))QtPrivate::ResultStoreBase::~ResultStoreBase
+
+Class QtPrivate::ResultStoreBase
+ size=48 align=8
+ base size=44 base align=8
+QtPrivate::ResultStoreBase (0x0x7fa8467f0060) 0
+ vptr=((& QtPrivate::ResultStoreBase::_ZTVN9QtPrivate15ResultStoreBaseE) + 16)
+
+Class std::__mutex_base
+ size=40 align=8
+ base size=40 base align=8
+std::__mutex_base (0x0x7fa84683b840) 0
+
+Class std::mutex
+ size=40 align=8
+ base size=40 base align=8
+std::mutex (0x0x7fa846830a28) 0
+ std::__mutex_base (0x0x7fa84683b8a0) 0
+
+Class std::defer_lock_t
+ size=1 align=1
+ base size=0 base align=1
+std::defer_lock_t (0x0x7fa84683ba80) 0 empty
+
+Class std::try_to_lock_t
+ size=1 align=1
+ base size=0 base align=1
+std::try_to_lock_t (0x0x7fa84683bae0) 0 empty
+
+Class std::adopt_lock_t
+ size=1 align=1
+ base size=0 base align=1
+std::adopt_lock_t (0x0x7fa84683bb40) 0 empty
+
+Class std::__recursive_mutex_base
+ size=40 align=8
+ base size=40 base align=8
+std::__recursive_mutex_base (0x0x7fa84686c5a0) 0
+
+Class std::recursive_mutex
+ size=40 align=8
+ base size=40 base align=8
+std::recursive_mutex (0x0x7fa846830a90) 0
+ std::__recursive_mutex_base (0x0x7fa84686c600) 0
+
+Class std::timed_mutex
+ size=40 align=8
+ base size=40 base align=8
+std::timed_mutex (0x0x7fa846844b60) 0
+ std::__mutex_base (0x0x7fa84686c9c0) 0
+ std::__timed_mutex_impl<std::timed_mutex> (0x0x7fa84686ca20) 0 empty
+
+Class std::recursive_timed_mutex
+ size=40 align=8
+ base size=40 base align=8
+std::recursive_timed_mutex (0x0x7fa846844ee0) 0
+ std::__recursive_mutex_base (0x0x7fa84686cd80) 0
+ std::__timed_mutex_impl<std::recursive_timed_mutex> (0x0x7fa84686cde0) 0 empty
+
+Class std::once_flag
+ size=4 align=4
+ base size=4 base align=4
+std::once_flag (0x0x7fa8468ac540) 0
+
+Vtable for QFutureInterfaceBase
+QFutureInterfaceBase::_ZTV20QFutureInterfaceBase: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QFutureInterfaceBase)
+16 (int (*)(...))QFutureInterfaceBase::~QFutureInterfaceBase
+24 (int (*)(...))QFutureInterfaceBase::~QFutureInterfaceBase
+
+Class QFutureInterfaceBase
+ size=16 align=8
+ base size=16 base align=8
+QFutureInterfaceBase (0x0x7fa8468ac780) 0
+ vptr=((& QFutureInterfaceBase::_ZTV20QFutureInterfaceBase) + 16)
+
+Class QFutureWatcherBase::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFutureWatcherBase::QPrivateSignal (0x0x7fa84651aae0) 0 empty
+
+Vtable for QFutureWatcherBase
+QFutureWatcherBase::_ZTV18QFutureWatcherBase: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QFutureWatcherBase)
+16 (int (*)(...))QFutureWatcherBase::metaObject
+24 (int (*)(...))QFutureWatcherBase::qt_metacast
+32 (int (*)(...))QFutureWatcherBase::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QFutureWatcherBase::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QFutureWatcherBase::connectNotify
+104 (int (*)(...))QFutureWatcherBase::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QFutureWatcherBase
+ size=16 align=8
+ base size=16 base align=8
+QFutureWatcherBase (0x0x7fa8464b6888) 0
+ vptr=((& QFutureWatcherBase::_ZTV18QFutureWatcherBase) + 16)
+ QObject (0x0x7fa84651aa80) 0
+ primary-for QFutureWatcherBase (0x0x7fa8464b6888)
+
+Class QHistoryState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QHistoryState::QPrivateSignal (0x0x7fa846547e40) 0 empty
+
+Vtable for QHistoryState
+QHistoryState::_ZTV13QHistoryState: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QHistoryState)
+16 (int (*)(...))QHistoryState::metaObject
+24 (int (*)(...))QHistoryState::qt_metacast
+32 (int (*)(...))QHistoryState::qt_metacall
+40 (int (*)(...))QHistoryState::~QHistoryState
+48 (int (*)(...))QHistoryState::~QHistoryState
+56 (int (*)(...))QHistoryState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QHistoryState::onEntry
+120 (int (*)(...))QHistoryState::onExit
+
+Class QHistoryState
+ size=16 align=8
+ base size=16 base align=8
+QHistoryState (0x0x7fa8465630d0) 0
+ vptr=((& QHistoryState::_ZTV13QHistoryState) + 16)
+ QAbstractState (0x0x7fa846563138) 0
+ primary-for QHistoryState (0x0x7fa8465630d0)
+ QObject (0x0x7fa846547de0) 0
+ primary-for QAbstractState (0x0x7fa846563138)
+
+Class QIdentityProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QIdentityProxyModel::QPrivateSignal (0x0x7fa846577180) 0 empty
+
+Vtable for QIdentityProxyModel
+QIdentityProxyModel::_ZTV19QIdentityProxyModel: 53 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QIdentityProxyModel)
+16 (int (*)(...))QIdentityProxyModel::metaObject
+24 (int (*)(...))QIdentityProxyModel::qt_metacast
+32 (int (*)(...))QIdentityProxyModel::qt_metacall
+40 (int (*)(...))QIdentityProxyModel::~QIdentityProxyModel
+48 (int (*)(...))QIdentityProxyModel::~QIdentityProxyModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QIdentityProxyModel::index
+120 (int (*)(...))QIdentityProxyModel::parent
+128 (int (*)(...))QIdentityProxyModel::sibling
+136 (int (*)(...))QIdentityProxyModel::rowCount
+144 (int (*)(...))QIdentityProxyModel::columnCount
+152 (int (*)(...))QAbstractProxyModel::hasChildren
+160 (int (*)(...))QAbstractProxyModel::data
+168 (int (*)(...))QAbstractProxyModel::setData
+176 (int (*)(...))QIdentityProxyModel::headerData
+184 (int (*)(...))QAbstractProxyModel::setHeaderData
+192 (int (*)(...))QAbstractProxyModel::itemData
+200 (int (*)(...))QAbstractProxyModel::setItemData
+208 (int (*)(...))QAbstractProxyModel::mimeTypes
+216 (int (*)(...))QAbstractProxyModel::mimeData
+224 (int (*)(...))QAbstractProxyModel::canDropMimeData
+232 (int (*)(...))QIdentityProxyModel::dropMimeData
+240 (int (*)(...))QAbstractProxyModel::supportedDropActions
+248 (int (*)(...))QAbstractProxyModel::supportedDragActions
+256 (int (*)(...))QIdentityProxyModel::insertRows
+264 (int (*)(...))QIdentityProxyModel::insertColumns
+272 (int (*)(...))QIdentityProxyModel::removeRows
+280 (int (*)(...))QIdentityProxyModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractProxyModel::fetchMore
+312 (int (*)(...))QAbstractProxyModel::canFetchMore
+320 (int (*)(...))QAbstractProxyModel::flags
+328 (int (*)(...))QAbstractProxyModel::sort
+336 (int (*)(...))QAbstractProxyModel::buddy
+344 (int (*)(...))QIdentityProxyModel::match
+352 (int (*)(...))QAbstractProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractProxyModel::submit
+376 (int (*)(...))QAbstractProxyModel::revert
+384 (int (*)(...))QIdentityProxyModel::setSourceModel
+392 (int (*)(...))QIdentityProxyModel::mapToSource
+400 (int (*)(...))QIdentityProxyModel::mapFromSource
+408 (int (*)(...))QIdentityProxyModel::mapSelectionToSource
+416 (int (*)(...))QIdentityProxyModel::mapSelectionFromSource
+
+Class QIdentityProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QIdentityProxyModel (0x0x7fa8465631a0) 0
+ vptr=((& QIdentityProxyModel::_ZTV19QIdentityProxyModel) + 16)
+ QAbstractProxyModel (0x0x7fa846563208) 0
+ primary-for QIdentityProxyModel (0x0x7fa8465631a0)
+ QAbstractItemModel (0x0x7fa846563270) 0
+ primary-for QAbstractProxyModel (0x0x7fa846563208)
+ QObject (0x0x7fa846577120) 0
+ primary-for QAbstractItemModel (0x0x7fa846563270)
+
+Class QItemSelectionRange
+ size=16 align=8
+ base size=16 base align=8
+QItemSelectionRange (0x0x7fa846577360) 0
+
+Class QItemSelectionModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QItemSelectionModel::QPrivateSignal (0x0x7fa846630c60) 0 empty
+
+Vtable for QItemSelectionModel
+QItemSelectionModel::_ZTV19QItemSelectionModel: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QItemSelectionModel)
+16 (int (*)(...))QItemSelectionModel::metaObject
+24 (int (*)(...))QItemSelectionModel::qt_metacast
+32 (int (*)(...))QItemSelectionModel::qt_metacall
+40 (int (*)(...))QItemSelectionModel::~QItemSelectionModel
+48 (int (*)(...))QItemSelectionModel::~QItemSelectionModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QItemSelectionModel::setCurrentIndex
+120 (int (*)(...))QItemSelectionModel::select
+128 (int (*)(...))QItemSelectionModel::select
+136 (int (*)(...))QItemSelectionModel::clear
+144 (int (*)(...))QItemSelectionModel::reset
+152 (int (*)(...))QItemSelectionModel::clearCurrentIndex
+
+Class QItemSelectionModel
+ size=16 align=8
+ base size=16 base align=8
+QItemSelectionModel (0x0x7fa846635bc8) 0
+ vptr=((& QItemSelectionModel::_ZTV19QItemSelectionModel) + 16)
+ QObject (0x0x7fa846630c00) 0
+ primary-for QItemSelectionModel (0x0x7fa846635bc8)
+
+Class QItemSelection
+ size=8 align=8
+ base size=8 base align=8
+QItemSelection (0x0x7fa846635d68) 0
+ QList<QItemSelectionRange> (0x0x7fa846635dd0) 0
+ QListSpecialMethods<QItemSelectionRange> (0x0x7fa846672780) 0 empty
+
+Class QJsonValue
+ size=24 align=8
+ base size=20 base align=8
+QJsonValue (0x0x7fa8463050c0) 0
+
+Class QJsonValueRef
+ size=16 align=8
+ base size=12 base align=8
+QJsonValueRef (0x0x7fa84642fd20) 0
+
+Class QJsonValuePtr
+ size=24 align=8
+ base size=24 base align=8
+QJsonValuePtr (0x0x7fa846470cc0) 0
+
+Class QJsonValueRefPtr
+ size=16 align=8
+ base size=16 base align=8
+QJsonValueRefPtr (0x0x7fa846470f60) 0
+
+Class QJsonArray::iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonArray::iterator (0x0x7fa8460eb300) 0
+
+Class QJsonArray::const_iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonArray::const_iterator (0x0x7fa8460eb360) 0
+
+Class QJsonArray
+ size=16 align=8
+ base size=16 base align=8
+QJsonArray (0x0x7fa8460eb2a0) 0
+
+Class QJsonParseError
+ size=8 align=4
+ base size=8 base align=4
+QJsonParseError (0x0x7fa84621a240) 0
+
+Class QJsonDocument
+ size=8 align=8
+ base size=8 base align=8
+QJsonDocument (0x0x7fa84621a2a0) 0
+
+Class QJsonObject::iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonObject::iterator (0x0x7fa84626ca80) 0
+
+Class QJsonObject::const_iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonObject::const_iterator (0x0x7fa84626cae0) 0
+
+Class QJsonObject
+ size=16 align=8
+ base size=16 base align=8
+QJsonObject (0x0x7fa84626ca20) 0
+
+Class QLibrary::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLibrary::QPrivateSignal (0x0x7fa845f88f00) 0 empty
+
+Vtable for QLibrary
+QLibrary::_ZTV8QLibrary: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QLibrary)
+16 (int (*)(...))QLibrary::metaObject
+24 (int (*)(...))QLibrary::qt_metacast
+32 (int (*)(...))QLibrary::qt_metacall
+40 (int (*)(...))QLibrary::~QLibrary
+48 (int (*)(...))QLibrary::~QLibrary
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QLibrary
+ size=32 align=8
+ base size=25 base align=8
+QLibrary (0x0x7fa845f90a28) 0
+ vptr=((& QLibrary::_ZTV8QLibrary) + 16)
+ QObject (0x0x7fa845f88ea0) 0
+ primary-for QLibrary (0x0x7fa845f90a28)
+
+Class QVersionNumber::SegmentStorage
+ size=8 align=8
+ base size=8 base align=8
+QVersionNumber::SegmentStorage (0x0x7fa845fb9d80) 0
+
+Class QVersionNumber
+ size=8 align=8
+ base size=8 base align=8
+QVersionNumber (0x0x7fa845fb98a0) 0
+
+Class QLibraryInfo
+ size=1 align=1
+ base size=0 base align=1
+QLibraryInfo (0x0x7fa845c86540) 0 empty
+
+Class QPoint
+ size=8 align=4
+ base size=8 base align=4
+QPoint (0x0x7fa845c865a0) 0
+
+Class QPointF
+ size=16 align=8
+ base size=16 base align=8
+QPointF (0x0x7fa845d01420) 0
+
+Class QLine
+ size=16 align=4
+ base size=16 base align=4
+QLine (0x0x7fa845d71600) 0
+
+Class QLineF
+ size=32 align=8
+ base size=32 base align=8
+QLineF (0x0x7fa845ddf9c0) 0
+
+Class QLinkedListData
+ size=32 align=8
+ base size=25 base align=8
+QLinkedListData (0x0x7fa845e5bc60) 0
+
+Class QLockFile
+ size=8 align=8
+ base size=8 base align=8
+QLockFile (0x0x7fa845b1f1e0) 0
+
+Class QLoggingCategory::AtomicBools
+ size=4 align=1
+ base size=4 base align=1
+QLoggingCategory::AtomicBools (0x0x7fa845b1f420) 0
+
+Class QLoggingCategory
+ size=24 align=8
+ base size=24 base align=8
+QLoggingCategory (0x0x7fa845b1f3c0) 0
+
+Class QMargins
+ size=16 align=4
+ base size=16 base align=4
+QMargins (0x0x7fa845b1f840) 0
+
+Class QMarginsF
+ size=32 align=8
+ base size=32 base align=8
+QMarginsF (0x0x7fa845be1780) 0
+
+Class QMessageAuthenticationCode
+ size=8 align=8
+ base size=8 base align=8
+QMessageAuthenticationCode (0x0x7fa845a26f60) 0
+
+Class QMetaMethod
+ size=16 align=8
+ base size=12 base align=8
+QMetaMethod (0x0x7fa845a51000) 0
+
+Class QMetaEnum
+ size=16 align=8
+ base size=12 base align=8
+QMetaEnum (0x0x7fa8455ae840) 0
+
+Class QMetaProperty
+ size=32 align=8
+ base size=32 base align=8
+QMetaProperty (0x0x7fa8455f3a20) 0
+
+Class QMetaClassInfo
+ size=16 align=8
+ base size=12 base align=8
+QMetaClassInfo (0x0x7fa8455f3b40) 0
+
+Class QMimeData::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMimeData::QPrivateSignal (0x0x7fa84564e120) 0 empty
+
+Vtable for QMimeData
+QMimeData::_ZTV9QMimeData: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QMimeData)
+16 (int (*)(...))QMimeData::metaObject
+24 (int (*)(...))QMimeData::qt_metacast
+32 (int (*)(...))QMimeData::qt_metacall
+40 (int (*)(...))QMimeData::~QMimeData
+48 (int (*)(...))QMimeData::~QMimeData
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QMimeData::hasFormat
+120 (int (*)(...))QMimeData::formats
+128 (int (*)(...))QMimeData::retrieveData
+
+Class QMimeData
+ size=16 align=8
+ base size=16 base align=8
+QMimeData (0x0x7fa845646680) 0
+ vptr=((& QMimeData::_ZTV9QMimeData) + 16)
+ QObject (0x0x7fa84564e0c0) 0
+ primary-for QMimeData (0x0x7fa845646680)
+
+Class QMimeType
+ size=8 align=8
+ base size=8 base align=8
+QMimeType (0x0x7fa84564e300) 0
+
+Class QMimeDatabase
+ size=8 align=8
+ base size=8 base align=8
+QMimeDatabase (0x0x7fa845720240) 0
+
+Class QObjectCleanupHandler::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QObjectCleanupHandler::QPrivateSignal (0x0x7fa845720300) 0 empty
+
+Vtable for QObjectCleanupHandler
+QObjectCleanupHandler::_ZTV21QObjectCleanupHandler: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QObjectCleanupHandler)
+16 (int (*)(...))QObjectCleanupHandler::metaObject
+24 (int (*)(...))QObjectCleanupHandler::qt_metacast
+32 (int (*)(...))QObjectCleanupHandler::qt_metacall
+40 (int (*)(...))QObjectCleanupHandler::~QObjectCleanupHandler
+48 (int (*)(...))QObjectCleanupHandler::~QObjectCleanupHandler
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QObjectCleanupHandler
+ size=24 align=8
+ base size=24 base align=8
+QObjectCleanupHandler (0x0x7fa84571c208) 0
+ vptr=((& QObjectCleanupHandler::_ZTV21QObjectCleanupHandler) + 16)
+ QObject (0x0x7fa8457202a0) 0
+ primary-for QObjectCleanupHandler (0x0x7fa84571c208)
+
+Class QOperatingSystemVersion
+ size=16 align=4
+ base size=16 base align=4
+QOperatingSystemVersion (0x0x7fa845720420) 0
+
+Class QParallelAnimationGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QParallelAnimationGroup::QPrivateSignal (0x0x7fa84538eba0) 0 empty
+
+Vtable for QParallelAnimationGroup
+QParallelAnimationGroup::_ZTV23QParallelAnimationGroup: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QParallelAnimationGroup)
+16 (int (*)(...))QParallelAnimationGroup::metaObject
+24 (int (*)(...))QParallelAnimationGroup::qt_metacast
+32 (int (*)(...))QParallelAnimationGroup::qt_metacall
+40 (int (*)(...))QParallelAnimationGroup::~QParallelAnimationGroup
+48 (int (*)(...))QParallelAnimationGroup::~QParallelAnimationGroup
+56 (int (*)(...))QParallelAnimationGroup::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QParallelAnimationGroup::duration
+120 (int (*)(...))QParallelAnimationGroup::updateCurrentTime
+128 (int (*)(...))QParallelAnimationGroup::updateState
+136 (int (*)(...))QParallelAnimationGroup::updateDirection
+
+Class QParallelAnimationGroup
+ size=16 align=8
+ base size=16 base align=8
+QParallelAnimationGroup (0x0x7fa845396a90) 0
+ vptr=((& QParallelAnimationGroup::_ZTV23QParallelAnimationGroup) + 16)
+ QAnimationGroup (0x0x7fa845396af8) 0
+ primary-for QParallelAnimationGroup (0x0x7fa845396a90)
+ QAbstractAnimation (0x0x7fa845396b60) 0
+ primary-for QAnimationGroup (0x0x7fa845396af8)
+ QObject (0x0x7fa84538eb40) 0
+ primary-for QAbstractAnimation (0x0x7fa845396b60)
+
+Class QPauseAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPauseAnimation::QPrivateSignal (0x0x7fa84538ede0) 0 empty
+
+Vtable for QPauseAnimation
+QPauseAnimation::_ZTV15QPauseAnimation: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QPauseAnimation)
+16 (int (*)(...))QPauseAnimation::metaObject
+24 (int (*)(...))QPauseAnimation::qt_metacast
+32 (int (*)(...))QPauseAnimation::qt_metacall
+40 (int (*)(...))QPauseAnimation::~QPauseAnimation
+48 (int (*)(...))QPauseAnimation::~QPauseAnimation
+56 (int (*)(...))QPauseAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QPauseAnimation::duration
+120 (int (*)(...))QPauseAnimation::updateCurrentTime
+128 (int (*)(...))QAbstractAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+
+Class QPauseAnimation
+ size=16 align=8
+ base size=16 base align=8
+QPauseAnimation (0x0x7fa845396bc8) 0
+ vptr=((& QPauseAnimation::_ZTV15QPauseAnimation) + 16)
+ QAbstractAnimation (0x0x7fa845396c30) 0
+ primary-for QPauseAnimation (0x0x7fa845396bc8)
+ QObject (0x0x7fa84538ed80) 0
+ primary-for QAbstractAnimation (0x0x7fa845396c30)
+
+Class QStaticPlugin
+ size=16 align=8
+ base size=16 base align=8
+QStaticPlugin (0x0x7fa8453be960) 0
+
+Class QPluginLoader::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPluginLoader::QPrivateSignal (0x0x7fa845409ae0) 0 empty
+
+Vtable for QPluginLoader
+QPluginLoader::_ZTV13QPluginLoader: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QPluginLoader)
+16 (int (*)(...))QPluginLoader::metaObject
+24 (int (*)(...))QPluginLoader::qt_metacast
+32 (int (*)(...))QPluginLoader::qt_metacall
+40 (int (*)(...))QPluginLoader::~QPluginLoader
+48 (int (*)(...))QPluginLoader::~QPluginLoader
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QPluginLoader
+ size=32 align=8
+ base size=25 base align=8
+QPluginLoader (0x0x7fa845401f70) 0
+ vptr=((& QPluginLoader::_ZTV13QPluginLoader) + 16)
+ QObject (0x0x7fa845409a80) 0
+ primary-for QPluginLoader (0x0x7fa845401f70)
+
+Class QProcessEnvironment
+ size=8 align=8
+ base size=8 base align=8
+QProcessEnvironment (0x0x7fa845409c00) 0
+
+Class QProcess::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QProcess::QPrivateSignal (0x0x7fa8454ee0c0) 0 empty
+
+Vtable for QProcess
+QProcess::_ZTV8QProcess: 31 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QProcess)
+16 (int (*)(...))QProcess::metaObject
+24 (int (*)(...))QProcess::qt_metacast
+32 (int (*)(...))QProcess::qt_metacall
+40 (int (*)(...))QProcess::~QProcess
+48 (int (*)(...))QProcess::~QProcess
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QProcess::isSequential
+120 (int (*)(...))QProcess::open
+128 (int (*)(...))QProcess::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QProcess::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QProcess::bytesAvailable
+184 (int (*)(...))QProcess::bytesToWrite
+192 (int (*)(...))QProcess::canReadLine
+200 (int (*)(...))QProcess::waitForReadyRead
+208 (int (*)(...))QProcess::waitForBytesWritten
+216 (int (*)(...))QProcess::readData
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))QProcess::writeData
+240 (int (*)(...))QProcess::setupChildProcess
+
+Class QProcess
+ size=16 align=8
+ base size=16 base align=8
+QProcess (0x0x7fa8454e8410) 0
+ vptr=((& QProcess::_ZTV8QProcess) + 16)
+ QIODevice (0x0x7fa8454e8478) 0
+ primary-for QProcess (0x0x7fa8454e8410)
+ QObject (0x0x7fa8454ee060) 0
+ primary-for QIODevice (0x0x7fa8454e8478)
+
+Class QVariantAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QVariantAnimation::QPrivateSignal (0x0x7fa8454ee780) 0 empty
+
+Vtable for QVariantAnimation
+QVariantAnimation::_ZTV17QVariantAnimation: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QVariantAnimation)
+16 (int (*)(...))QVariantAnimation::metaObject
+24 (int (*)(...))QVariantAnimation::qt_metacast
+32 (int (*)(...))QVariantAnimation::qt_metacall
+40 (int (*)(...))QVariantAnimation::~QVariantAnimation
+48 (int (*)(...))QVariantAnimation::~QVariantAnimation
+56 (int (*)(...))QVariantAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QVariantAnimation::duration
+120 (int (*)(...))QVariantAnimation::updateCurrentTime
+128 (int (*)(...))QVariantAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+144 (int (*)(...))QVariantAnimation::updateCurrentValue
+152 (int (*)(...))QVariantAnimation::interpolated
+
+Class QVariantAnimation
+ size=16 align=8
+ base size=16 base align=8
+QVariantAnimation (0x0x7fa8454e84e0) 0
+ vptr=((& QVariantAnimation::_ZTV17QVariantAnimation) + 16)
+ QAbstractAnimation (0x0x7fa8454e8548) 0
+ primary-for QVariantAnimation (0x0x7fa8454e84e0)
+ QObject (0x0x7fa8454ee720) 0
+ primary-for QAbstractAnimation (0x0x7fa8454e8548)
+
+Class QPropertyAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPropertyAnimation::QPrivateSignal (0x0x7fa8454eea20) 0 empty
+
+Vtable for QPropertyAnimation
+QPropertyAnimation::_ZTV18QPropertyAnimation: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QPropertyAnimation)
+16 (int (*)(...))QPropertyAnimation::metaObject
+24 (int (*)(...))QPropertyAnimation::qt_metacast
+32 (int (*)(...))QPropertyAnimation::qt_metacall
+40 (int (*)(...))QPropertyAnimation::~QPropertyAnimation
+48 (int (*)(...))QPropertyAnimation::~QPropertyAnimation
+56 (int (*)(...))QPropertyAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QVariantAnimation::duration
+120 (int (*)(...))QVariantAnimation::updateCurrentTime
+128 (int (*)(...))QPropertyAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+144 (int (*)(...))QPropertyAnimation::updateCurrentValue
+152 (int (*)(...))QVariantAnimation::interpolated
+
+Class QPropertyAnimation
+ size=16 align=8
+ base size=16 base align=8
+QPropertyAnimation (0x0x7fa8454e8618) 0
+ vptr=((& QPropertyAnimation::_ZTV18QPropertyAnimation) + 16)
+ QVariantAnimation (0x0x7fa8454e8680) 0
+ primary-for QPropertyAnimation (0x0x7fa8454e8618)
+ QAbstractAnimation (0x0x7fa8454e86e8) 0
+ primary-for QVariantAnimation (0x0x7fa8454e8680)
+ QObject (0x0x7fa8454ee9c0) 0
+ primary-for QAbstractAnimation (0x0x7fa8454e86e8)
+
+Class std::random_device
+ size=5000 align=8
+ base size=5000 base align=8
+std::random_device (0x0x7fa8451bc180) 0
+
+Class std::bernoulli_distribution::param_type
+ size=8 align=8
+ base size=8 base align=8
+std::bernoulli_distribution::param_type (0x0x7fa84529aea0) 0
+
+Class std::bernoulli_distribution
+ size=8 align=8
+ base size=8 base align=8
+std::bernoulli_distribution (0x0x7fa84529ae40) 0
+
+Class std::seed_seq
+ size=24 align=8
+ base size=24 base align=8
+std::seed_seq (0x0x7fa845085c00) 0
+
+Class QRandomGenerator::Storage
+ size=2504 align=8
+ base size=2504 base align=8
+QRandomGenerator::Storage (0x0x7fa844ec68a0) 0
+
+Class QRandomGenerator
+ size=2512 align=8
+ base size=2512 base align=8
+QRandomGenerator (0x0x7fa844ec6840) 0
+
+Class QRandomGenerator64
+ size=2512 align=8
+ base size=2512 base align=8
+QRandomGenerator64 (0x0x7fa844f5a3a8) 0
+ QRandomGenerator (0x0x7fa844f6d3c0) 0
+
+Class QReadWriteLock
+ size=8 align=8
+ base size=8 base align=8
+QReadWriteLock (0x0x7fa844f6df60) 0
+
+Class QReadLocker
+ size=8 align=8
+ base size=8 base align=8
+QReadLocker (0x0x7fa844b90240) 0
+
+Class QWriteLocker
+ size=8 align=8
+ base size=8 base align=8
+QWriteLocker (0x0x7fa844b90720) 0
+
+Class QSize
+ size=8 align=4
+ base size=8 base align=4
+QSize (0x0x7fa844b90c00) 0
+
+Class QSizeF
+ size=16 align=8
+ base size=16 base align=8
+QSizeF (0x0x7fa844c63ae0) 0
+
+Class QRect
+ size=16 align=4
+ base size=16 base align=4
+QRect (0x0x7fa844cdfb40) 0
+
+Class QRectF
+ size=32 align=8
+ base size=32 base align=8
+QRectF (0x0x7fa84498dba0) 0
+
+Class QResource
+ size=8 align=8
+ base size=8 base align=8
+QResource (0x0x7fa844a50cc0) 0
+
+Class QSaveFile::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSaveFile::QPrivateSignal (0x0x7fa844a50f60) 0 empty
+
+Vtable for QSaveFile
+QSaveFile::_ZTV9QSaveFile: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QSaveFile)
+16 (int (*)(...))QSaveFile::metaObject
+24 (int (*)(...))QSaveFile::qt_metacast
+32 (int (*)(...))QSaveFile::qt_metacall
+40 (int (*)(...))QSaveFile::~QSaveFile
+48 (int (*)(...))QSaveFile::~QSaveFile
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QSaveFile::open
+128 (int (*)(...))QSaveFile::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFileDevice::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QSaveFile::writeData
+240 (int (*)(...))QSaveFile::fileName
+248 (int (*)(...))QFileDevice::resize
+256 (int (*)(...))QFileDevice::permissions
+264 (int (*)(...))QFileDevice::setPermissions
+
+Class QSaveFile
+ size=16 align=8
+ base size=16 base align=8
+QSaveFile (0x0x7fa844a0fd68) 0
+ vptr=((& QSaveFile::_ZTV9QSaveFile) + 16)
+ QFileDevice (0x0x7fa844a0fdd0) 0
+ primary-for QSaveFile (0x0x7fa844a0fd68)
+ QIODevice (0x0x7fa844a0fe38) 0
+ primary-for QFileDevice (0x0x7fa844a0fdd0)
+ QObject (0x0x7fa844a50f00) 0
+ primary-for QIODevice (0x0x7fa844a0fe38)
+
+Class QSemaphore
+ size=8 align=8
+ base size=8 base align=8
+QSemaphore (0x0x7fa844aa85a0) 0
+
+Class QSemaphoreReleaser
+ size=16 align=8
+ base size=12 base align=8
+QSemaphoreReleaser (0x0x7fa844aa8720) 0
+
+Class QSequentialAnimationGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSequentialAnimationGroup::QPrivateSignal (0x0x7fa84477a360) 0 empty
+
+Vtable for QSequentialAnimationGroup
+QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QSequentialAnimationGroup)
+16 (int (*)(...))QSequentialAnimationGroup::metaObject
+24 (int (*)(...))QSequentialAnimationGroup::qt_metacast
+32 (int (*)(...))QSequentialAnimationGroup::qt_metacall
+40 (int (*)(...))QSequentialAnimationGroup::~QSequentialAnimationGroup
+48 (int (*)(...))QSequentialAnimationGroup::~QSequentialAnimationGroup
+56 (int (*)(...))QSequentialAnimationGroup::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QSequentialAnimationGroup::duration
+120 (int (*)(...))QSequentialAnimationGroup::updateCurrentTime
+128 (int (*)(...))QSequentialAnimationGroup::updateState
+136 (int (*)(...))QSequentialAnimationGroup::updateDirection
+
+Class QSequentialAnimationGroup
+ size=16 align=8
+ base size=16 base align=8
+QSequentialAnimationGroup (0x0x7fa84477c618) 0
+ vptr=((& QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup) + 16)
+ QAnimationGroup (0x0x7fa84477c680) 0
+ primary-for QSequentialAnimationGroup (0x0x7fa84477c618)
+ QAbstractAnimation (0x0x7fa84477c6e8) 0
+ primary-for QAnimationGroup (0x0x7fa84477c680)
+ QObject (0x0x7fa84477a300) 0
+ primary-for QAbstractAnimation (0x0x7fa84477c6e8)
+
+Class QSettings::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSettings::QPrivateSignal (0x0x7fa84477a5a0) 0 empty
+
+Vtable for QSettings
+QSettings::_ZTV9QSettings: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QSettings)
+16 (int (*)(...))QSettings::metaObject
+24 (int (*)(...))QSettings::qt_metacast
+32 (int (*)(...))QSettings::qt_metacall
+40 (int (*)(...))QSettings::~QSettings
+48 (int (*)(...))QSettings::~QSettings
+56 (int (*)(...))QSettings::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSettings
+ size=16 align=8
+ base size=16 base align=8
+QSettings (0x0x7fa84477c750) 0
+ vptr=((& QSettings::_ZTV9QSettings) + 16)
+ QObject (0x0x7fa84477a540) 0
+ primary-for QSettings (0x0x7fa84477c750)
+
+Class QSharedMemory::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSharedMemory::QPrivateSignal (0x0x7fa84477aa20) 0 empty
+
+Vtable for QSharedMemory
+QSharedMemory::_ZTV13QSharedMemory: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSharedMemory)
+16 (int (*)(...))QSharedMemory::metaObject
+24 (int (*)(...))QSharedMemory::qt_metacast
+32 (int (*)(...))QSharedMemory::qt_metacall
+40 (int (*)(...))QSharedMemory::~QSharedMemory
+48 (int (*)(...))QSharedMemory::~QSharedMemory
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSharedMemory
+ size=16 align=8
+ base size=16 base align=8
+QSharedMemory (0x0x7fa84477c7b8) 0
+ vptr=((& QSharedMemory::_ZTV13QSharedMemory) + 16)
+ QObject (0x0x7fa84477a9c0) 0
+ primary-for QSharedMemory (0x0x7fa84477c7b8)
+
+Class QSignalMapper::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSignalMapper::QPrivateSignal (0x0x7fa84477ac60) 0 empty
+
+Vtable for QSignalMapper
+QSignalMapper::_ZTV13QSignalMapper: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSignalMapper)
+16 (int (*)(...))QSignalMapper::metaObject
+24 (int (*)(...))QSignalMapper::qt_metacast
+32 (int (*)(...))QSignalMapper::qt_metacall
+40 (int (*)(...))QSignalMapper::~QSignalMapper
+48 (int (*)(...))QSignalMapper::~QSignalMapper
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSignalMapper
+ size=16 align=8
+ base size=16 base align=8
+QSignalMapper (0x0x7fa84477c820) 0
+ vptr=((& QSignalMapper::_ZTV13QSignalMapper) + 16)
+ QObject (0x0x7fa84477ac00) 0
+ primary-for QSignalMapper (0x0x7fa84477c820)
+
+Class QSignalTransition::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSignalTransition::QPrivateSignal (0x0x7fa84477aea0) 0 empty
+
+Vtable for QSignalTransition
+QSignalTransition::_ZTV17QSignalTransition: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QSignalTransition)
+16 (int (*)(...))QSignalTransition::metaObject
+24 (int (*)(...))QSignalTransition::qt_metacast
+32 (int (*)(...))QSignalTransition::qt_metacall
+40 (int (*)(...))QSignalTransition::~QSignalTransition
+48 (int (*)(...))QSignalTransition::~QSignalTransition
+56 (int (*)(...))QSignalTransition::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QSignalTransition::eventTest
+120 (int (*)(...))QSignalTransition::onTransition
+
+Class QSignalTransition
+ size=16 align=8
+ base size=16 base align=8
+QSignalTransition (0x0x7fa84477c888) 0
+ vptr=((& QSignalTransition::_ZTV17QSignalTransition) + 16)
+ QAbstractTransition (0x0x7fa84477c8f0) 0
+ primary-for QSignalTransition (0x0x7fa84477c888)
+ QObject (0x0x7fa84477ae40) 0
+ primary-for QAbstractTransition (0x0x7fa84477c8f0)
+
+Class QSocketNotifier::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSocketNotifier::QPrivateSignal (0x0x7fa8447e4180) 0 empty
+
+Vtable for QSocketNotifier
+QSocketNotifier::_ZTV15QSocketNotifier: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QSocketNotifier)
+16 (int (*)(...))QSocketNotifier::metaObject
+24 (int (*)(...))QSocketNotifier::qt_metacast
+32 (int (*)(...))QSocketNotifier::qt_metacall
+40 (int (*)(...))QSocketNotifier::~QSocketNotifier
+48 (int (*)(...))QSocketNotifier::~QSocketNotifier
+56 (int (*)(...))QSocketNotifier::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSocketNotifier
+ size=16 align=8
+ base size=16 base align=8
+QSocketNotifier (0x0x7fa84477c958) 0
+ vptr=((& QSocketNotifier::_ZTV15QSocketNotifier) + 16)
+ QObject (0x0x7fa8447e4120) 0
+ primary-for QSocketNotifier (0x0x7fa84477c958)
+
+Class QSortFilterProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSortFilterProxyModel::QPrivateSignal (0x0x7fa8447e43c0) 0 empty
+
+Vtable for QSortFilterProxyModel
+QSortFilterProxyModel::_ZTV21QSortFilterProxyModel: 56 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QSortFilterProxyModel)
+16 (int (*)(...))QSortFilterProxyModel::metaObject
+24 (int (*)(...))QSortFilterProxyModel::qt_metacast
+32 (int (*)(...))QSortFilterProxyModel::qt_metacall
+40 (int (*)(...))QSortFilterProxyModel::~QSortFilterProxyModel
+48 (int (*)(...))QSortFilterProxyModel::~QSortFilterProxyModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QSortFilterProxyModel::index
+120 (int (*)(...))QSortFilterProxyModel::parent
+128 (int (*)(...))QSortFilterProxyModel::sibling
+136 (int (*)(...))QSortFilterProxyModel::rowCount
+144 (int (*)(...))QSortFilterProxyModel::columnCount
+152 (int (*)(...))QSortFilterProxyModel::hasChildren
+160 (int (*)(...))QSortFilterProxyModel::data
+168 (int (*)(...))QSortFilterProxyModel::setData
+176 (int (*)(...))QSortFilterProxyModel::headerData
+184 (int (*)(...))QSortFilterProxyModel::setHeaderData
+192 (int (*)(...))QAbstractProxyModel::itemData
+200 (int (*)(...))QAbstractProxyModel::setItemData
+208 (int (*)(...))QSortFilterProxyModel::mimeTypes
+216 (int (*)(...))QSortFilterProxyModel::mimeData
+224 (int (*)(...))QAbstractProxyModel::canDropMimeData
+232 (int (*)(...))QSortFilterProxyModel::dropMimeData
+240 (int (*)(...))QSortFilterProxyModel::supportedDropActions
+248 (int (*)(...))QAbstractProxyModel::supportedDragActions
+256 (int (*)(...))QSortFilterProxyModel::insertRows
+264 (int (*)(...))QSortFilterProxyModel::insertColumns
+272 (int (*)(...))QSortFilterProxyModel::removeRows
+280 (int (*)(...))QSortFilterProxyModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QSortFilterProxyModel::fetchMore
+312 (int (*)(...))QSortFilterProxyModel::canFetchMore
+320 (int (*)(...))QSortFilterProxyModel::flags
+328 (int (*)(...))QSortFilterProxyModel::sort
+336 (int (*)(...))QSortFilterProxyModel::buddy
+344 (int (*)(...))QSortFilterProxyModel::match
+352 (int (*)(...))QSortFilterProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractProxyModel::submit
+376 (int (*)(...))QAbstractProxyModel::revert
+384 (int (*)(...))QSortFilterProxyModel::setSourceModel
+392 (int (*)(...))QSortFilterProxyModel::mapToSource
+400 (int (*)(...))QSortFilterProxyModel::mapFromSource
+408 (int (*)(...))QSortFilterProxyModel::mapSelectionToSource
+416 (int (*)(...))QSortFilterProxyModel::mapSelectionFromSource
+424 (int (*)(...))QSortFilterProxyModel::filterAcceptsRow
+432 (int (*)(...))QSortFilterProxyModel::filterAcceptsColumn
+440 (int (*)(...))QSortFilterProxyModel::lessThan
+
+Class QSortFilterProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QSortFilterProxyModel (0x0x7fa84477c9c0) 0
+ vptr=((& QSortFilterProxyModel::_ZTV21QSortFilterProxyModel) + 16)
+ QAbstractProxyModel (0x0x7fa84477ca28) 0
+ primary-for QSortFilterProxyModel (0x0x7fa84477c9c0)
+ QAbstractItemModel (0x0x7fa84477ca90) 0
+ primary-for QAbstractProxyModel (0x0x7fa84477ca28)
+ QObject (0x0x7fa8447e4360) 0
+ primary-for QAbstractItemModel (0x0x7fa84477ca90)
+
+Class QStandardPaths
+ size=1 align=1
+ base size=0 base align=1
+QStandardPaths (0x0x7fa8447e47e0) 0 empty
+
+Class QState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QState::QPrivateSignal (0x0x7fa84484f120) 0 empty
+
+Vtable for QState
+QState::_ZTV6QState: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QState)
+16 (int (*)(...))QState::metaObject
+24 (int (*)(...))QState::qt_metacast
+32 (int (*)(...))QState::qt_metacall
+40 (int (*)(...))QState::~QState
+48 (int (*)(...))QState::~QState
+56 (int (*)(...))QState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QState::onEntry
+120 (int (*)(...))QState::onExit
+
+Class QState
+ size=16 align=8
+ base size=16 base align=8
+QState (0x0x7fa84477cc30) 0
+ vptr=((& QState::_ZTV6QState) + 16)
+ QAbstractState (0x0x7fa84477cc98) 0
+ primary-for QState (0x0x7fa84477cc30)
+ QObject (0x0x7fa84484f0c0) 0
+ primary-for QAbstractState (0x0x7fa84477cc98)
+
+Class QStateMachine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStateMachine::QPrivateSignal (0x0x7fa84484f5a0) 0 empty
+
+Vtable for QStateMachine::SignalEvent
+QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN13QStateMachine11SignalEventE)
+16 (int (*)(...))QStateMachine::SignalEvent::~SignalEvent
+24 (int (*)(...))QStateMachine::SignalEvent::~SignalEvent
+
+Class QStateMachine::SignalEvent
+ size=48 align=8
+ base size=48 base align=8
+QStateMachine::SignalEvent (0x0x7fa84477ce38) 0
+ vptr=((& QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE) + 16)
+ QEvent (0x0x7fa84484f600) 0
+ primary-for QStateMachine::SignalEvent (0x0x7fa84477ce38)
+
+Vtable for QStateMachine::WrappedEvent
+QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN13QStateMachine12WrappedEventE)
+16 (int (*)(...))QStateMachine::WrappedEvent::~WrappedEvent
+24 (int (*)(...))QStateMachine::WrappedEvent::~WrappedEvent
+
+Class QStateMachine::WrappedEvent
+ size=40 align=8
+ base size=40 base align=8
+QStateMachine::WrappedEvent (0x0x7fa84477cea0) 0
+ vptr=((& QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE) + 16)
+ QEvent (0x0x7fa84484f660) 0
+ primary-for QStateMachine::WrappedEvent (0x0x7fa84477cea0)
+
+Vtable for QStateMachine
+QStateMachine::_ZTV13QStateMachine: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QStateMachine)
+16 (int (*)(...))QStateMachine::metaObject
+24 (int (*)(...))QStateMachine::qt_metacast
+32 (int (*)(...))QStateMachine::qt_metacall
+40 (int (*)(...))QStateMachine::~QStateMachine
+48 (int (*)(...))QStateMachine::~QStateMachine
+56 (int (*)(...))QStateMachine::event
+64 (int (*)(...))QStateMachine::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QStateMachine::onEntry
+120 (int (*)(...))QStateMachine::onExit
+128 (int (*)(...))QStateMachine::beginSelectTransitions
+136 (int (*)(...))QStateMachine::endSelectTransitions
+144 (int (*)(...))QStateMachine::beginMicrostep
+152 (int (*)(...))QStateMachine::endMicrostep
+
+Class QStateMachine
+ size=16 align=8
+ base size=16 base align=8
+QStateMachine (0x0x7fa84477cd00) 0
+ vptr=((& QStateMachine::_ZTV13QStateMachine) + 16)
+ QState (0x0x7fa84477cd68) 0
+ primary-for QStateMachine (0x0x7fa84477cd00)
+ QAbstractState (0x0x7fa84477cdd0) 0
+ primary-for QState (0x0x7fa84477cd68)
+ QObject (0x0x7fa84484f540) 0
+ primary-for QAbstractState (0x0x7fa84477cdd0)
+
+Class QStorageInfo
+ size=8 align=8
+ base size=8 base align=8
+QStorageInfo (0x0x7fa84484fa20) 0
+
+Class QAbstractConcatenable
+ size=1 align=1
+ base size=0 base align=1
+QAbstractConcatenable (0x0x7fa84496e7e0) 0 empty
+
+Class QStringListModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStringListModel::QPrivateSignal (0x0x7fa8445f8b40) 0 empty
+
+Vtable for QStringListModel
+QStringListModel::_ZTV16QStringListModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QStringListModel)
+16 (int (*)(...))QStringListModel::metaObject
+24 (int (*)(...))QStringListModel::qt_metacast
+32 (int (*)(...))QStringListModel::qt_metacall
+40 (int (*)(...))QStringListModel::~QStringListModel
+48 (int (*)(...))QStringListModel::~QStringListModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractListModel::index
+120 (int (*)(...))QAbstractListModel::parent
+128 (int (*)(...))QStringListModel::sibling
+136 (int (*)(...))QStringListModel::rowCount
+144 (int (*)(...))QAbstractListModel::columnCount
+152 (int (*)(...))QAbstractListModel::hasChildren
+160 (int (*)(...))QStringListModel::data
+168 (int (*)(...))QStringListModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QStringListModel::itemData
+200 (int (*)(...))QStringListModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractListModel::dropMimeData
+240 (int (*)(...))QStringListModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QStringListModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QStringListModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QStringListModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QStringListModel::flags
+328 (int (*)(...))QStringListModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QStringListModel
+ size=24 align=8
+ base size=24 base align=8
+QStringListModel (0x0x7fa8445f37b8) 0
+ vptr=((& QStringListModel::_ZTV16QStringListModel) + 16)
+ QAbstractListModel (0x0x7fa8445f3820) 0
+ primary-for QStringListModel (0x0x7fa8445f37b8)
+ QAbstractItemModel (0x0x7fa8445f3888) 0
+ primary-for QAbstractListModel (0x0x7fa8445f3820)
+ QObject (0x0x7fa8445f8ae0) 0
+ primary-for QAbstractItemModel (0x0x7fa8445f3888)
+
+Class QSystemSemaphore
+ size=8 align=8
+ base size=8 base align=8
+QSystemSemaphore (0x0x7fa8445f8c60) 0
+
+Class QTemporaryDir
+ size=8 align=8
+ base size=8 base align=8
+QTemporaryDir (0x0x7fa8445f8d20) 0
+
+Class QTemporaryFile::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTemporaryFile::QPrivateSignal (0x0x7fa8445f8e40) 0 empty
+
+Vtable for QTemporaryFile
+QTemporaryFile::_ZTV14QTemporaryFile: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QTemporaryFile)
+16 (int (*)(...))QTemporaryFile::metaObject
+24 (int (*)(...))QTemporaryFile::qt_metacast
+32 (int (*)(...))QTemporaryFile::qt_metacall
+40 (int (*)(...))QTemporaryFile::~QTemporaryFile
+48 (int (*)(...))QTemporaryFile::~QTemporaryFile
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QTemporaryFile::open
+128 (int (*)(...))QFileDevice::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFile::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QFileDevice::writeData
+240 (int (*)(...))QTemporaryFile::fileName
+248 (int (*)(...))QFile::resize
+256 (int (*)(...))QFile::permissions
+264 (int (*)(...))QFile::setPermissions
+
+Class QTemporaryFile
+ size=16 align=8
+ base size=16 base align=8
+QTemporaryFile (0x0x7fa8445f38f0) 0
+ vptr=((& QTemporaryFile::_ZTV14QTemporaryFile) + 16)
+ QFile (0x0x7fa8445f3958) 0
+ primary-for QTemporaryFile (0x0x7fa8445f38f0)
+ QFileDevice (0x0x7fa8445f39c0) 0
+ primary-for QFile (0x0x7fa8445f3958)
+ QIODevice (0x0x7fa8445f3a28) 0
+ primary-for QFileDevice (0x0x7fa8445f39c0)
+ QObject (0x0x7fa8445f8de0) 0
+ primary-for QIODevice (0x0x7fa8445f3a28)
+
+Class QTextBoundaryFinder
+ size=48 align=8
+ base size=48 base align=8
+QTextBoundaryFinder (0x0x7fa8446571e0) 0
+
+Class QTextCodec::ConverterState
+ size=32 align=8
+ base size=32 base align=8
+QTextCodec::ConverterState (0x0x7fa844657a20) 0
+
+Vtable for QTextCodec
+QTextCodec::_ZTV10QTextCodec: 9 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTextCodec)
+16 (int (*)(...))__cxa_pure_virtual
+24 (int (*)(...))QTextCodec::aliases
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 0
+64 0
+
+Class QTextCodec
+ size=8 align=8
+ base size=8 base align=8
+QTextCodec (0x0x7fa8446579c0) 0 nearly-empty
+ vptr=((& QTextCodec::_ZTV10QTextCodec) + 16)
+
+Class QTextEncoder
+ size=40 align=8
+ base size=40 base align=8
+QTextEncoder (0x0x7fa8446ba420) 0
+
+Class QTextDecoder
+ size=40 align=8
+ base size=40 base align=8
+QTextDecoder (0x0x7fa8446ba600) 0
+
+Vtable for std::thread::_State
+std::thread::_State::_ZTVNSt6thread6_StateE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt6thread6_StateE)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class std::thread::_State
+ size=8 align=8
+ base size=8 base align=8
+std::thread::_State (0x0x7fa8446ba840) 0 nearly-empty
+ vptr=((& std::thread::_State::_ZTVNSt6thread6_StateE) + 16)
+
+Class std::thread::id
+ size=8 align=8
+ base size=8 base align=8
+std::thread::id (0x0x7fa8446ba8a0) 0
+
+Class std::thread
+ size=8 align=8
+ base size=8 base align=8
+std::thread (0x0x7fa8446ba7e0) 0
+
+Class std::condition_variable
+ size=48 align=8
+ base size=48 base align=8
+std::condition_variable (0x0x7fa844560c60) 0
+
+Class std::__at_thread_exit_elt
+ size=16 align=8
+ base size=16 base align=8
+std::__at_thread_exit_elt (0x0x7fa8441ab060) 0
+
+Class std::_V2::condition_variable_any
+ size=64 align=8
+ base size=64 base align=8
+std::_V2::condition_variable_any (0x0x7fa8441ab0c0) 0
+
+Class std::__atomic_futex_unsigned_base
+ size=1 align=1
+ base size=0 base align=1
+std::__atomic_futex_unsigned_base (0x0x7fa8443133c0) 0 empty
+
+Vtable for std::future_error
+std::future_error::_ZTVSt12future_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12future_error)
+16 (int (*)(...))std::future_error::~future_error
+24 (int (*)(...))std::future_error::~future_error
+32 (int (*)(...))std::future_error::what
+
+Class std::future_error
+ size=32 align=8
+ base size=32 base align=8
+std::future_error (0x0x7fa8442fedd0) 0
+ vptr=((& std::future_error::_ZTVSt12future_error) + 16)
+ std::logic_error (0x0x7fa8442fee38) 0
+ primary-for std::future_error (0x0x7fa8442fedd0)
+ std::exception (0x0x7fa844313ae0) 0 nearly-empty
+ primary-for std::logic_error (0x0x7fa8442fee38)
+
+Class std::__future_base::_Result_base::_Deleter
+ size=1 align=1
+ base size=0 base align=1
+std::__future_base::_Result_base::_Deleter (0x0x7fa844343240) 0 empty
+
+Vtable for std::__future_base::_Result_base
+std::__future_base::_Result_base::_ZTVNSt13__future_base12_Result_baseE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt13__future_base12_Result_baseE)
+16 (int (*)(...))__cxa_pure_virtual
+24 0
+32 0
+
+Class std::__future_base::_Result_base
+ size=16 align=8
+ base size=16 base align=8
+std::__future_base::_Result_base (0x0x7fa8443431e0) 0
+ vptr=((& std::__future_base::_Result_base::_ZTVNSt13__future_base12_Result_baseE) + 16)
+
+Class std::__future_base::_State_baseV2::__exception_ptr_tag
+ size=1 align=1
+ base size=0 base align=1
+std::__future_base::_State_baseV2::__exception_ptr_tag (0x0x7fa844123960) 0 empty
+
+Class std::__future_base::_State_baseV2::_Make_ready
+ size=32 align=8
+ base size=32 base align=8
+std::__future_base::_State_baseV2::_Make_ready (0x0x7fa844124680) 0
+ std::__at_thread_exit_elt (0x0x7fa844123a20) 0
+
+Vtable for std::__future_base::_State_baseV2
+std::__future_base::_State_baseV2::_ZTVNSt13__future_base13_State_baseV2E: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt13__future_base13_State_baseV2E)
+16 (int (*)(...))std::__future_base::_State_baseV2::~_State_baseV2
+24 (int (*)(...))std::__future_base::_State_baseV2::~_State_baseV2
+32 (int (*)(...))std::__future_base::_State_baseV2::_M_complete_async
+40 (int (*)(...))std::__future_base::_State_baseV2::_M_is_deferred_future
+
+Class std::__future_base::_State_baseV2
+ size=32 align=8
+ base size=28 base align=8
+std::__future_base::_State_baseV2 (0x0x7fa8443433c0) 0
+ vptr=((& std::__future_base::_State_baseV2::_ZTVNSt13__future_base13_State_baseV2E) + 16)
+
+Class std::__future_base
+ size=1 align=1
+ base size=0 base align=1
+std::__future_base (0x0x7fa844343180) 0 empty
+
+Vtable for std::__future_base::_Async_state_commonV2
+std::__future_base::_Async_state_commonV2::_ZTVNSt13__future_base21_Async_state_commonV2E: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt13__future_base21_Async_state_commonV2E)
+16 (int (*)(...))std::__future_base::_Async_state_commonV2::~_Async_state_commonV2
+24 (int (*)(...))std::__future_base::_Async_state_commonV2::~_Async_state_commonV2
+32 (int (*)(...))std::__future_base::_Async_state_commonV2::_M_complete_async
+40 (int (*)(...))std::__future_base::_State_baseV2::_M_is_deferred_future
+
+Class std::__future_base::_Async_state_commonV2
+ size=48 align=8
+ base size=44 base align=8
+std::__future_base::_Async_state_commonV2 (0x0x7fa8438a73a8) 0
+ vptr=((& std::__future_base::_Async_state_commonV2::_ZTVNSt13__future_base21_Async_state_commonV2E) + 16)
+ std::__future_base::_State_baseV2 (0x0x7fa8438c9a20) 0
+ primary-for std::__future_base::_Async_state_commonV2 (0x0x7fa8438a73a8)
+
+Class QThread::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QThread::QPrivateSignal (0x0x7fa8438fd300) 0 empty
+
+Vtable for QThread
+QThread::_ZTV7QThread: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QThread)
+16 (int (*)(...))QThread::metaObject
+24 (int (*)(...))QThread::qt_metacast
+32 (int (*)(...))QThread::qt_metacall
+40 (int (*)(...))QThread::~QThread
+48 (int (*)(...))QThread::~QThread
+56 (int (*)(...))QThread::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QThread::run
+
+Class QThread
+ size=16 align=8
+ base size=16 base align=8
+QThread (0x0x7fa8438a76e8) 0
+ vptr=((& QThread::_ZTV7QThread) + 16)
+ QObject (0x0x7fa8438fd2a0) 0
+ primary-for QThread (0x0x7fa8438a76e8)
+
+Class QThreadPool::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QThreadPool::QPrivateSignal (0x0x7fa8438fd6c0) 0 empty
+
+Vtable for QThreadPool
+QThreadPool::_ZTV11QThreadPool: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QThreadPool)
+16 (int (*)(...))QThreadPool::metaObject
+24 (int (*)(...))QThreadPool::qt_metacast
+32 (int (*)(...))QThreadPool::qt_metacall
+40 (int (*)(...))QThreadPool::~QThreadPool
+48 (int (*)(...))QThreadPool::~QThreadPool
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QThreadPool
+ size=16 align=8
+ base size=16 base align=8
+QThreadPool (0x0x7fa8438a7750) 0
+ vptr=((& QThreadPool::_ZTV11QThreadPool) + 16)
+ QObject (0x0x7fa8438fd660) 0
+ primary-for QThreadPool (0x0x7fa8438a7750)
+
+Class QThreadStorageData
+ size=4 align=4
+ base size=4 base align=4
+QThreadStorageData (0x0x7fa8438fd8a0) 0
+
+Class QTimeLine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTimeLine::QPrivateSignal (0x0x7fa8438fdf60) 0 empty
+
+Vtable for QTimeLine
+QTimeLine::_ZTV9QTimeLine: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QTimeLine)
+16 (int (*)(...))QTimeLine::metaObject
+24 (int (*)(...))QTimeLine::qt_metacast
+32 (int (*)(...))QTimeLine::qt_metacall
+40 (int (*)(...))QTimeLine::~QTimeLine
+48 (int (*)(...))QTimeLine::~QTimeLine
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QTimeLine::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTimeLine::valueForTime
+
+Class QTimeLine
+ size=16 align=8
+ base size=16 base align=8
+QTimeLine (0x0x7fa8438a77b8) 0
+ vptr=((& QTimeLine::_ZTV9QTimeLine) + 16)
+ QObject (0x0x7fa8438fdf00) 0
+ primary-for QTimeLine (0x0x7fa8438a77b8)
+
+Class QTimer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTimer::QPrivateSignal (0x0x7fa8439521e0) 0 empty
+
+Vtable for QTimer
+QTimer::_ZTV6QTimer: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QTimer)
+16 (int (*)(...))QTimer::metaObject
+24 (int (*)(...))QTimer::qt_metacast
+32 (int (*)(...))QTimer::qt_metacall
+40 (int (*)(...))QTimer::~QTimer
+48 (int (*)(...))QTimer::~QTimer
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QTimer::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTimer
+ size=32 align=8
+ base size=29 base align=8
+QTimer (0x0x7fa8438a7820) 0
+ vptr=((& QTimer::_ZTV6QTimer) + 16)
+ QObject (0x0x7fa843952180) 0
+ primary-for QTimer (0x0x7fa8438a7820)
+
+Class QTimeZone::OffsetData
+ size=32 align=8
+ base size=28 base align=8
+QTimeZone::OffsetData (0x0x7fa843589b40) 0
+
+Class QTimeZone
+ size=8 align=8
+ base size=8 base align=8
+QTimeZone (0x0x7fa843589ae0) 0
+
+Class QTranslator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTranslator::QPrivateSignal (0x0x7fa843625c00) 0 empty
+
+Vtable for QTranslator
+QTranslator::_ZTV11QTranslator: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTranslator)
+16 (int (*)(...))QTranslator::metaObject
+24 (int (*)(...))QTranslator::qt_metacast
+32 (int (*)(...))QTranslator::qt_metacall
+40 (int (*)(...))QTranslator::~QTranslator
+48 (int (*)(...))QTranslator::~QTranslator
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTranslator::translate
+120 (int (*)(...))QTranslator::isEmpty
+
+Class QTranslator
+ size=16 align=8
+ base size=16 base align=8
+QTranslator (0x0x7fa843623f08) 0
+ vptr=((& QTranslator::_ZTV11QTranslator) + 16)
+ QObject (0x0x7fa843625ba0) 0
+ primary-for QTranslator (0x0x7fa843623f08)
+
+Class QTransposeProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTransposeProxyModel::QPrivateSignal (0x0x7fa843625e40) 0 empty
+
+Vtable for QTransposeProxyModel
+QTransposeProxyModel::_ZTV20QTransposeProxyModel: 53 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QTransposeProxyModel)
+16 (int (*)(...))QTransposeProxyModel::metaObject
+24 (int (*)(...))QTransposeProxyModel::qt_metacast
+32 (int (*)(...))QTransposeProxyModel::qt_metacall
+40 (int (*)(...))QTransposeProxyModel::~QTransposeProxyModel
+48 (int (*)(...))QTransposeProxyModel::~QTransposeProxyModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTransposeProxyModel::index
+120 (int (*)(...))QTransposeProxyModel::parent
+128 (int (*)(...))QAbstractProxyModel::sibling
+136 (int (*)(...))QTransposeProxyModel::rowCount
+144 (int (*)(...))QTransposeProxyModel::columnCount
+152 (int (*)(...))QAbstractProxyModel::hasChildren
+160 (int (*)(...))QAbstractProxyModel::data
+168 (int (*)(...))QAbstractProxyModel::setData
+176 (int (*)(...))QTransposeProxyModel::headerData
+184 (int (*)(...))QTransposeProxyModel::setHeaderData
+192 (int (*)(...))QTransposeProxyModel::itemData
+200 (int (*)(...))QTransposeProxyModel::setItemData
+208 (int (*)(...))QAbstractProxyModel::mimeTypes
+216 (int (*)(...))QAbstractProxyModel::mimeData
+224 (int (*)(...))QAbstractProxyModel::canDropMimeData
+232 (int (*)(...))QAbstractProxyModel::dropMimeData
+240 (int (*)(...))QAbstractProxyModel::supportedDropActions
+248 (int (*)(...))QAbstractProxyModel::supportedDragActions
+256 (int (*)(...))QTransposeProxyModel::insertRows
+264 (int (*)(...))QTransposeProxyModel::insertColumns
+272 (int (*)(...))QTransposeProxyModel::removeRows
+280 (int (*)(...))QTransposeProxyModel::removeColumns
+288 (int (*)(...))QTransposeProxyModel::moveRows
+296 (int (*)(...))QTransposeProxyModel::moveColumns
+304 (int (*)(...))QAbstractProxyModel::fetchMore
+312 (int (*)(...))QAbstractProxyModel::canFetchMore
+320 (int (*)(...))QAbstractProxyModel::flags
+328 (int (*)(...))QTransposeProxyModel::sort
+336 (int (*)(...))QAbstractProxyModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QTransposeProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractProxyModel::submit
+376 (int (*)(...))QAbstractProxyModel::revert
+384 (int (*)(...))QTransposeProxyModel::setSourceModel
+392 (int (*)(...))QTransposeProxyModel::mapToSource
+400 (int (*)(...))QTransposeProxyModel::mapFromSource
+408 (int (*)(...))QAbstractProxyModel::mapSelectionToSource
+416 (int (*)(...))QAbstractProxyModel::mapSelectionFromSource
+
+Class QTransposeProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QTransposeProxyModel (0x0x7fa843623f70) 0
+ vptr=((& QTransposeProxyModel::_ZTV20QTransposeProxyModel) + 16)
+ QAbstractProxyModel (0x0x7fa84364f000) 0
+ primary-for QTransposeProxyModel (0x0x7fa843623f70)
+ QAbstractItemModel (0x0x7fa84364f068) 0
+ primary-for QAbstractProxyModel (0x0x7fa84364f000)
+ QObject (0x0x7fa843625de0) 0
+ primary-for QAbstractItemModel (0x0x7fa84364f068)
+
+Class QUrlQuery
+ size=8 align=8
+ base size=8 base align=8
+QUrlQuery (0x0x7fa843668060) 0
+
+Class QWaitCondition
+ size=8 align=8
+ base size=8 base align=8
+QWaitCondition (0x0x7fa843744540) 0
+
+Class QXmlStreamStringRef
+ size=16 align=8
+ base size=16 base align=8
+QXmlStreamStringRef (0x0x7fa843744660) 0
+
+Class QXmlStreamAttribute
+ size=80 align=8
+ base size=73 base align=8
+QXmlStreamAttribute (0x0x7fa8432d4a20) 0
+
+Class QXmlStreamAttributes
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamAttributes (0x0x7fa84334b340) 0
+ QVector<QXmlStreamAttribute> (0x0x7fa84334d180) 0
+
+Class QXmlStreamNamespaceDeclaration
+ size=40 align=8
+ base size=40 base align=8
+QXmlStreamNamespaceDeclaration (0x0x7fa84334d480) 0
+
+Class QXmlStreamNotationDeclaration
+ size=56 align=8
+ base size=56 base align=8
+QXmlStreamNotationDeclaration (0x0x7fa8433d6420) 0
+
+Class QXmlStreamEntityDeclaration
+ size=88 align=8
+ base size=88 base align=8
+QXmlStreamEntityDeclaration (0x0x7fa843435420) 0
+
+Vtable for QXmlStreamEntityResolver
+QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QXmlStreamEntityResolver)
+16 (int (*)(...))QXmlStreamEntityResolver::~QXmlStreamEntityResolver
+24 (int (*)(...))QXmlStreamEntityResolver::~QXmlStreamEntityResolver
+32 (int (*)(...))QXmlStreamEntityResolver::resolveEntity
+40 (int (*)(...))QXmlStreamEntityResolver::resolveUndeclaredEntity
+
+Class QXmlStreamEntityResolver
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamEntityResolver (0x0x7fa8430a14e0) 0 nearly-empty
+ vptr=((& QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver) + 16)
+
+Class QXmlStreamReader
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamReader (0x0x7fa8430a1540) 0
+
+Class QXmlStreamWriter
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamWriter (0x0x7fa8430fb420) 0
+
+Class QNetworkRequest
+ size=8 align=8
+ base size=8 base align=8
+QNetworkRequest (0x0x7fa8430fb600) 0
+
+Class QNetworkCacheMetaData
+ size=8 align=8
+ base size=8 base align=8
+QNetworkCacheMetaData (0x0x7fa8431dea80) 0
+
+Class QAbstractNetworkCache::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractNetworkCache::QPrivateSignal (0x0x7fa842eaaf60) 0 empty
+
+Vtable for QAbstractNetworkCache
+QAbstractNetworkCache::_ZTV21QAbstractNetworkCache: 22 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QAbstractNetworkCache)
+16 (int (*)(...))QAbstractNetworkCache::metaObject
+24 (int (*)(...))QAbstractNetworkCache::qt_metacast
+32 (int (*)(...))QAbstractNetworkCache::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))__cxa_pure_virtual
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractNetworkCache
+ size=16 align=8
+ base size=16 base align=8
+QAbstractNetworkCache (0x0x7fa842eabc30) 0
+ vptr=((& QAbstractNetworkCache::_ZTV21QAbstractNetworkCache) + 16)
+ QObject (0x0x7fa842eaaf00) 0
+ primary-for QAbstractNetworkCache (0x0x7fa842eabc30)
+
+Class QAbstractSocket::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractSocket::QPrivateSignal (0x0x7fa842ed01e0) 0 empty
+
+Vtable for QAbstractSocket
+QAbstractSocket::_ZTV15QAbstractSocket: 41 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QAbstractSocket)
+16 (int (*)(...))QAbstractSocket::metaObject
+24 (int (*)(...))QAbstractSocket::qt_metacast
+32 (int (*)(...))QAbstractSocket::qt_metacall
+40 (int (*)(...))QAbstractSocket::~QAbstractSocket
+48 (int (*)(...))QAbstractSocket::~QAbstractSocket
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractSocket::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QAbstractSocket::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QAbstractSocket::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QAbstractSocket::bytesAvailable
+184 (int (*)(...))QAbstractSocket::bytesToWrite
+192 (int (*)(...))QAbstractSocket::canReadLine
+200 (int (*)(...))QAbstractSocket::waitForReadyRead
+208 (int (*)(...))QAbstractSocket::waitForBytesWritten
+216 (int (*)(...))QAbstractSocket::readData
+224 (int (*)(...))QAbstractSocket::readLineData
+232 (int (*)(...))QAbstractSocket::writeData
+240 (int (*)(...))QAbstractSocket::resume
+248 (int (*)(...))QAbstractSocket::connectToHost
+256 (int (*)(...))QAbstractSocket::connectToHost
+264 (int (*)(...))QAbstractSocket::disconnectFromHost
+272 (int (*)(...))QAbstractSocket::setReadBufferSize
+280 (int (*)(...))QAbstractSocket::socketDescriptor
+288 (int (*)(...))QAbstractSocket::setSocketDescriptor
+296 (int (*)(...))QAbstractSocket::setSocketOption
+304 (int (*)(...))QAbstractSocket::socketOption
+312 (int (*)(...))QAbstractSocket::waitForConnected
+320 (int (*)(...))QAbstractSocket::waitForDisconnected
+
+Class QAbstractSocket
+ size=16 align=8
+ base size=16 base align=8
+QAbstractSocket (0x0x7fa842eabc98) 0
+ vptr=((& QAbstractSocket::_ZTV15QAbstractSocket) + 16)
+ QIODevice (0x0x7fa842eabd00) 0
+ primary-for QAbstractSocket (0x0x7fa842eabc98)
+ QObject (0x0x7fa842ed0180) 0
+ primary-for QIODevice (0x0x7fa842eabd00)
+
+Class QAuthenticator
+ size=8 align=8
+ base size=8 base align=8
+QAuthenticator (0x0x7fa842f48900) 0
+
+Class QDnsDomainNameRecord
+ size=8 align=8
+ base size=8 base align=8
+QDnsDomainNameRecord (0x0x7fa842f489c0) 0
+
+Class QDnsHostAddressRecord
+ size=8 align=8
+ base size=8 base align=8
+QDnsHostAddressRecord (0x0x7fa843020a80) 0
+
+Class QDnsMailExchangeRecord
+ size=8 align=8
+ base size=8 base align=8
+QDnsMailExchangeRecord (0x0x7fa842cdab40) 0
+
+Class QDnsServiceRecord
+ size=8 align=8
+ base size=8 base align=8
+QDnsServiceRecord (0x0x7fa842d95b40) 0
+
+Class QDnsTextRecord
+ size=8 align=8
+ base size=8 base align=8
+QDnsTextRecord (0x0x7fa842e52a20) 0
+
+Class QDnsLookup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDnsLookup::QPrivateSignal (0x0x7fa842b0ea80) 0 empty
+
+Vtable for QDnsLookup
+QDnsLookup::_ZTV10QDnsLookup: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QDnsLookup)
+16 (int (*)(...))QDnsLookup::metaObject
+24 (int (*)(...))QDnsLookup::qt_metacast
+32 (int (*)(...))QDnsLookup::qt_metacall
+40 (int (*)(...))QDnsLookup::~QDnsLookup
+48 (int (*)(...))QDnsLookup::~QDnsLookup
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QDnsLookup
+ size=16 align=8
+ base size=16 base align=8
+QDnsLookup (0x0x7fa842b08bc8) 0
+ vptr=((& QDnsLookup::_ZTV10QDnsLookup) + 16)
+ QObject (0x0x7fa842b0ea20) 0
+ primary-for QDnsLookup (0x0x7fa842b08bc8)
+
+Class QTcpSocket::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTcpSocket::QPrivateSignal (0x0x7fa842b0ee40) 0 empty
+
+Vtable for QTcpSocket
+QTcpSocket::_ZTV10QTcpSocket: 41 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTcpSocket)
+16 (int (*)(...))QTcpSocket::metaObject
+24 (int (*)(...))QTcpSocket::qt_metacast
+32 (int (*)(...))QTcpSocket::qt_metacall
+40 (int (*)(...))QTcpSocket::~QTcpSocket
+48 (int (*)(...))QTcpSocket::~QTcpSocket
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractSocket::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QAbstractSocket::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QAbstractSocket::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QAbstractSocket::bytesAvailable
+184 (int (*)(...))QAbstractSocket::bytesToWrite
+192 (int (*)(...))QAbstractSocket::canReadLine
+200 (int (*)(...))QAbstractSocket::waitForReadyRead
+208 (int (*)(...))QAbstractSocket::waitForBytesWritten
+216 (int (*)(...))QAbstractSocket::readData
+224 (int (*)(...))QAbstractSocket::readLineData
+232 (int (*)(...))QAbstractSocket::writeData
+240 (int (*)(...))QAbstractSocket::resume
+248 (int (*)(...))QAbstractSocket::connectToHost
+256 (int (*)(...))QAbstractSocket::connectToHost
+264 (int (*)(...))QAbstractSocket::disconnectFromHost
+272 (int (*)(...))QAbstractSocket::setReadBufferSize
+280 (int (*)(...))QAbstractSocket::socketDescriptor
+288 (int (*)(...))QAbstractSocket::setSocketDescriptor
+296 (int (*)(...))QAbstractSocket::setSocketOption
+304 (int (*)(...))QAbstractSocket::socketOption
+312 (int (*)(...))QAbstractSocket::waitForConnected
+320 (int (*)(...))QAbstractSocket::waitForDisconnected
+
+Class QTcpSocket
+ size=16 align=8
+ base size=16 base align=8
+QTcpSocket (0x0x7fa842b08c30) 0
+ vptr=((& QTcpSocket::_ZTV10QTcpSocket) + 16)
+ QAbstractSocket (0x0x7fa842b08c98) 0
+ primary-for QTcpSocket (0x0x7fa842b08c30)
+ QIODevice (0x0x7fa842b08d00) 0
+ primary-for QAbstractSocket (0x0x7fa842b08c98)
+ QObject (0x0x7fa842b0ede0) 0
+ primary-for QIODevice (0x0x7fa842b08d00)
+
+Class QSslCertificate
+ size=8 align=8
+ base size=8 base align=8
+QSslCertificate (0x0x7fa842b46720) 0
+
+Class QSslError
+ size=8 align=8
+ base size=8 base align=8
+QSslError (0x0x7fa842c2cf60) 0
+
+Class QSslSocket::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSslSocket::QPrivateSignal (0x0x7fa842914240) 0 empty
+
+Vtable for QSslSocket
+QSslSocket::_ZTV10QSslSocket: 41 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QSslSocket)
+16 (int (*)(...))QSslSocket::metaObject
+24 (int (*)(...))QSslSocket::qt_metacast
+32 (int (*)(...))QSslSocket::qt_metacall
+40 (int (*)(...))QSslSocket::~QSslSocket
+48 (int (*)(...))QSslSocket::~QSslSocket
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractSocket::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QSslSocket::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QSslSocket::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QSslSocket::bytesAvailable
+184 (int (*)(...))QSslSocket::bytesToWrite
+192 (int (*)(...))QSslSocket::canReadLine
+200 (int (*)(...))QSslSocket::waitForReadyRead
+208 (int (*)(...))QSslSocket::waitForBytesWritten
+216 (int (*)(...))QSslSocket::readData
+224 (int (*)(...))QAbstractSocket::readLineData
+232 (int (*)(...))QSslSocket::writeData
+240 (int (*)(...))QSslSocket::resume
+248 (int (*)(...))QSslSocket::connectToHost
+256 (int (*)(...))QAbstractSocket::connectToHost
+264 (int (*)(...))QSslSocket::disconnectFromHost
+272 (int (*)(...))QSslSocket::setReadBufferSize
+280 (int (*)(...))QAbstractSocket::socketDescriptor
+288 (int (*)(...))QSslSocket::setSocketDescriptor
+296 (int (*)(...))QSslSocket::setSocketOption
+304 (int (*)(...))QSslSocket::socketOption
+312 (int (*)(...))QSslSocket::waitForConnected
+320 (int (*)(...))QSslSocket::waitForDisconnected
+
+Class QSslSocket
+ size=16 align=8
+ base size=16 base align=8
+QSslSocket (0x0x7fa8429039c0) 0
+ vptr=((& QSslSocket::_ZTV10QSslSocket) + 16)
+ QTcpSocket (0x0x7fa842903a28) 0
+ primary-for QSslSocket (0x0x7fa8429039c0)
+ QAbstractSocket (0x0x7fa842903a90) 0
+ primary-for QTcpSocket (0x0x7fa842903a28)
+ QIODevice (0x0x7fa842903af8) 0
+ primary-for QAbstractSocket (0x0x7fa842903a90)
+ QObject (0x0x7fa8429141e0) 0
+ primary-for QIODevice (0x0x7fa842903af8)
+
+Class QDtlsClientVerifier::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDtlsClientVerifier::QPrivateSignal (0x0x7fa842914480) 0 empty
+
+Class QDtlsClientVerifier::GeneratorParameters
+ size=16 align=8
+ base size=16 base align=8
+QDtlsClientVerifier::GeneratorParameters (0x0x7fa8429144e0) 0
+
+Vtable for QDtlsClientVerifier
+QDtlsClientVerifier::_ZTV19QDtlsClientVerifier: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QDtlsClientVerifier)
+16 (int (*)(...))QDtlsClientVerifier::metaObject
+24 (int (*)(...))QDtlsClientVerifier::qt_metacast
+32 (int (*)(...))QDtlsClientVerifier::qt_metacall
+40 (int (*)(...))QDtlsClientVerifier::~QDtlsClientVerifier
+48 (int (*)(...))QDtlsClientVerifier::~QDtlsClientVerifier
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QDtlsClientVerifier
+ size=16 align=8
+ base size=16 base align=8
+QDtlsClientVerifier (0x0x7fa842903b60) 0
+ vptr=((& QDtlsClientVerifier::_ZTV19QDtlsClientVerifier) + 16)
+ QObject (0x0x7fa842914420) 0
+ primary-for QDtlsClientVerifier (0x0x7fa842903b60)
+
+Class QDtls::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDtls::QPrivateSignal (0x0x7fa842914720) 0 empty
+
+Vtable for QDtls
+QDtls::_ZTV5QDtls: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI5QDtls)
+16 (int (*)(...))QDtls::metaObject
+24 (int (*)(...))QDtls::qt_metacast
+32 (int (*)(...))QDtls::qt_metacall
+40 (int (*)(...))QDtls::~QDtls
+48 (int (*)(...))QDtls::~QDtls
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QDtls
+ size=16 align=8
+ base size=16 base align=8
+QDtls (0x0x7fa842903bc8) 0
+ vptr=((& QDtls::_ZTV5QDtls) + 16)
+ QObject (0x0x7fa8429146c0) 0
+ primary-for QDtls (0x0x7fa842903bc8)
+
+Class QIPv6Address
+ size=16 align=1
+ base size=16 base align=1
+QIPv6Address (0x0x7fa842914960) 0
+
+Class QHostAddress
+ size=8 align=8
+ base size=8 base align=8
+QHostAddress (0x0x7fa842914a80) 0
+
+Class QHostInfo
+ size=8 align=8
+ base size=8 base align=8
+QHostInfo (0x0x7fa842a1a840) 0
+
+Class QHstsPolicy
+ size=8 align=8
+ base size=8 base align=8
+QHstsPolicy (0x0x7fa8426ddf00) 0
+
+Class QHttp2Configuration
+ size=8 align=8
+ base size=8 base align=8
+QHttp2Configuration (0x0x7fa8427e0660) 0
+
+Class QHttpPart
+ size=8 align=8
+ base size=8 base align=8
+QHttpPart (0x0x7fa842835ba0) 0
+
+Class QHttpMultiPart::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QHttpMultiPart::QPrivateSignal (0x0x7fa8424ff840) 0 empty
+
+Vtable for QHttpMultiPart
+QHttpMultiPart::_ZTV14QHttpMultiPart: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QHttpMultiPart)
+16 (int (*)(...))QHttpMultiPart::metaObject
+24 (int (*)(...))QHttpMultiPart::qt_metacast
+32 (int (*)(...))QHttpMultiPart::qt_metacall
+40 (int (*)(...))QHttpMultiPart::~QHttpMultiPart
+48 (int (*)(...))QHttpMultiPart::~QHttpMultiPart
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QHttpMultiPart
+ size=16 align=8
+ base size=16 base align=8
+QHttpMultiPart (0x0x7fa842506340) 0
+ vptr=((& QHttpMultiPart::_ZTV14QHttpMultiPart) + 16)
+ QObject (0x0x7fa8424ff7e0) 0
+ primary-for QHttpMultiPart (0x0x7fa842506340)
+
+Class QLocalServer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLocalServer::QPrivateSignal (0x0x7fa8424ffa80) 0 empty
+
+Vtable for QLocalServer
+QLocalServer::_ZTV12QLocalServer: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QLocalServer)
+16 (int (*)(...))QLocalServer::metaObject
+24 (int (*)(...))QLocalServer::qt_metacast
+32 (int (*)(...))QLocalServer::qt_metacall
+40 (int (*)(...))QLocalServer::~QLocalServer
+48 (int (*)(...))QLocalServer::~QLocalServer
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QLocalServer::hasPendingConnections
+120 (int (*)(...))QLocalServer::nextPendingConnection
+128 (int (*)(...))QLocalServer::incomingConnection
+
+Class QLocalServer
+ size=16 align=8
+ base size=16 base align=8
+QLocalServer (0x0x7fa8425063a8) 0
+ vptr=((& QLocalServer::_ZTV12QLocalServer) + 16)
+ QObject (0x0x7fa8424ffa20) 0
+ primary-for QLocalServer (0x0x7fa8425063a8)
+
+Class QLocalSocket::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLocalSocket::QPrivateSignal (0x0x7fa84254e540) 0 empty
+
+Vtable for QLocalSocket
+QLocalSocket::_ZTV12QLocalSocket: 30 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QLocalSocket)
+16 (int (*)(...))QLocalSocket::metaObject
+24 (int (*)(...))QLocalSocket::qt_metacast
+32 (int (*)(...))QLocalSocket::qt_metacall
+40 (int (*)(...))QLocalSocket::~QLocalSocket
+48 (int (*)(...))QLocalSocket::~QLocalSocket
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QLocalSocket::isSequential
+120 (int (*)(...))QLocalSocket::open
+128 (int (*)(...))QLocalSocket::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QIODevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QLocalSocket::bytesAvailable
+184 (int (*)(...))QLocalSocket::bytesToWrite
+192 (int (*)(...))QLocalSocket::canReadLine
+200 (int (*)(...))QLocalSocket::waitForReadyRead
+208 (int (*)(...))QLocalSocket::waitForBytesWritten
+216 (int (*)(...))QLocalSocket::readData
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))QLocalSocket::writeData
+
+Class QLocalSocket
+ size=16 align=8
+ base size=16 base align=8
+QLocalSocket (0x0x7fa842506548) 0
+ vptr=((& QLocalSocket::_ZTV12QLocalSocket) + 16)
+ QIODevice (0x0x7fa8425065b0) 0
+ primary-for QLocalSocket (0x0x7fa842506548)
+ QObject (0x0x7fa84254e4e0) 0
+ primary-for QIODevice (0x0x7fa8425065b0)
+
+Class QSslConfiguration
+ size=8 align=8
+ base size=8 base align=8
+QSslConfiguration (0x0x7fa84254e720) 0
+
+Class QSslPreSharedKeyAuthenticator
+ size=8 align=8
+ base size=8 base align=8
+QSslPreSharedKeyAuthenticator (0x0x7fa842656c00) 0
+
+Class QNetworkAccessManager::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QNetworkAccessManager::QPrivateSignal (0x0x7fa8423432a0) 0 empty
+
+Vtable for QNetworkAccessManager
+QNetworkAccessManager::_ZTV21QNetworkAccessManager: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QNetworkAccessManager)
+16 (int (*)(...))QNetworkAccessManager::metaObject
+24 (int (*)(...))QNetworkAccessManager::qt_metacast
+32 (int (*)(...))QNetworkAccessManager::qt_metacall
+40 (int (*)(...))QNetworkAccessManager::~QNetworkAccessManager
+48 (int (*)(...))QNetworkAccessManager::~QNetworkAccessManager
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QNetworkAccessManager::createRequest
+
+Class QNetworkAccessManager
+ size=16 align=8
+ base size=16 base align=8
+QNetworkAccessManager (0x0x7fa84232da90) 0
+ vptr=((& QNetworkAccessManager::_ZTV21QNetworkAccessManager) + 16)
+ QObject (0x0x7fa842343240) 0
+ primary-for QNetworkAccessManager (0x0x7fa84232da90)
+
+Class QNetworkConfiguration
+ size=8 align=8
+ base size=8 base align=8
+QNetworkConfiguration (0x0x7fa842343540) 0
+
+Class QNetworkConfigurationManager::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QNetworkConfigurationManager::QPrivateSignal (0x0x7fa84242b900) 0 empty
+
+Vtable for QNetworkConfigurationManager
+QNetworkConfigurationManager::_ZTV28QNetworkConfigurationManager: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI28QNetworkConfigurationManager)
+16 (int (*)(...))QNetworkConfigurationManager::metaObject
+24 (int (*)(...))QNetworkConfigurationManager::qt_metacast
+32 (int (*)(...))QNetworkConfigurationManager::qt_metacall
+40 (int (*)(...))QNetworkConfigurationManager::~QNetworkConfigurationManager
+48 (int (*)(...))QNetworkConfigurationManager::~QNetworkConfigurationManager
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QNetworkConfigurationManager
+ size=16 align=8
+ base size=16 base align=8
+QNetworkConfigurationManager (0x0x7fa84241bd68) 0
+ vptr=((& QNetworkConfigurationManager::_ZTV28QNetworkConfigurationManager) + 16)
+ QObject (0x0x7fa84242b8a0) 0
+ primary-for QNetworkConfigurationManager (0x0x7fa84241bd68)
+
+Class QNetworkCookie
+ size=8 align=8
+ base size=8 base align=8
+QNetworkCookie (0x0x7fa84207d480) 0
+
+Class QNetworkCookieJar::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QNetworkCookieJar::QPrivateSignal (0x0x7fa84214ea80) 0 empty
+
+Vtable for QNetworkCookieJar
+QNetworkCookieJar::_ZTV17QNetworkCookieJar: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QNetworkCookieJar)
+16 (int (*)(...))QNetworkCookieJar::metaObject
+24 (int (*)(...))QNetworkCookieJar::qt_metacast
+32 (int (*)(...))QNetworkCookieJar::qt_metacall
+40 (int (*)(...))QNetworkCookieJar::~QNetworkCookieJar
+48 (int (*)(...))QNetworkCookieJar::~QNetworkCookieJar
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QNetworkCookieJar::cookiesForUrl
+120 (int (*)(...))QNetworkCookieJar::setCookiesFromUrl
+128 (int (*)(...))QNetworkCookieJar::insertCookie
+136 (int (*)(...))QNetworkCookieJar::updateCookie
+144 (int (*)(...))QNetworkCookieJar::deleteCookie
+152 (int (*)(...))QNetworkCookieJar::validateCookie
+
+Class QNetworkCookieJar
+ size=16 align=8
+ base size=16 base align=8
+QNetworkCookieJar (0x0x7fa842162000) 0
+ vptr=((& QNetworkCookieJar::_ZTV17QNetworkCookieJar) + 16)
+ QObject (0x0x7fa84214ea20) 0
+ primary-for QNetworkCookieJar (0x0x7fa842162000)
+
+Class QNetworkDatagram
+ size=8 align=8
+ base size=8 base align=8
+QNetworkDatagram (0x0x7fa84214ec60) 0
+
+Class QNetworkDiskCache::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QNetworkDiskCache::QPrivateSignal (0x0x7fa8422277e0) 0 empty
+
+Vtable for QNetworkDiskCache
+QNetworkDiskCache::_ZTV17QNetworkDiskCache: 23 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QNetworkDiskCache)
+16 (int (*)(...))QNetworkDiskCache::metaObject
+24 (int (*)(...))QNetworkDiskCache::qt_metacast
+32 (int (*)(...))QNetworkDiskCache::qt_metacall
+40 (int (*)(...))QNetworkDiskCache::~QNetworkDiskCache
+48 (int (*)(...))QNetworkDiskCache::~QNetworkDiskCache
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QNetworkDiskCache::metaData
+120 (int (*)(...))QNetworkDiskCache::updateMetaData
+128 (int (*)(...))QNetworkDiskCache::data
+136 (int (*)(...))QNetworkDiskCache::remove
+144 (int (*)(...))QNetworkDiskCache::cacheSize
+152 (int (*)(...))QNetworkDiskCache::prepare
+160 (int (*)(...))QNetworkDiskCache::insert
+168 (int (*)(...))QNetworkDiskCache::clear
+176 (int (*)(...))QNetworkDiskCache::expire
+
+Class QNetworkDiskCache
+ size=16 align=8
+ base size=16 base align=8
+QNetworkDiskCache (0x0x7fa842219ea0) 0
+ vptr=((& QNetworkDiskCache::_ZTV17QNetworkDiskCache) + 16)
+ QAbstractNetworkCache (0x0x7fa842219f08) 0
+ primary-for QNetworkDiskCache (0x0x7fa842219ea0)
+ QObject (0x0x7fa842227780) 0
+ primary-for QAbstractNetworkCache (0x0x7fa842219f08)
+
+Class QNetworkAddressEntry
+ size=8 align=8
+ base size=8 base align=8
+QNetworkAddressEntry (0x0x7fa8422279c0) 0
+
+Class QNetworkInterface
+ size=8 align=8
+ base size=8 base align=8
+QNetworkInterface (0x0x7fa841f00960) 0
+
+Class QNetworkProxyQuery
+ size=8 align=8
+ base size=8 base align=8
+QNetworkProxyQuery (0x0x7fa841fff480) 0
+
+Class QNetworkProxy
+ size=8 align=8
+ base size=8 base align=8
+QNetworkProxy (0x0x7fa841cdd780) 0
+
+Vtable for QNetworkProxyFactory
+QNetworkProxyFactory::_ZTV20QNetworkProxyFactory: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QNetworkProxyFactory)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QNetworkProxyFactory
+ size=8 align=8
+ base size=8 base align=8
+QNetworkProxyFactory (0x0x7fa841de3000) 0 nearly-empty
+ vptr=((& QNetworkProxyFactory::_ZTV20QNetworkProxyFactory) + 16)
+
+Class QNetworkReply::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QNetworkReply::QPrivateSignal (0x0x7fa841de32a0) 0 empty
+
+Vtable for QNetworkReply
+QNetworkReply::_ZTV13QNetworkReply: 36 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QNetworkReply)
+16 (int (*)(...))QNetworkReply::metaObject
+24 (int (*)(...))QNetworkReply::qt_metacast
+32 (int (*)(...))QNetworkReply::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QNetworkReply::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QNetworkReply::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QIODevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))__cxa_pure_virtual
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))QNetworkReply::writeData
+240 (int (*)(...))QNetworkReply::setReadBufferSize
+248 (int (*)(...))__cxa_pure_virtual
+256 (int (*)(...))QNetworkReply::ignoreSslErrors
+264 (int (*)(...))QNetworkReply::sslConfigurationImplementation
+272 (int (*)(...))QNetworkReply::setSslConfigurationImplementation
+280 (int (*)(...))QNetworkReply::ignoreSslErrorsImplementation
+
+Class QNetworkReply
+ size=16 align=8
+ base size=16 base align=8
+QNetworkReply (0x0x7fa841db5340) 0
+ vptr=((& QNetworkReply::_ZTV13QNetworkReply) + 16)
+ QIODevice (0x0x7fa841db53a8) 0
+ primary-for QNetworkReply (0x0x7fa841db5340)
+ QObject (0x0x7fa841de3240) 0
+ primary-for QIODevice (0x0x7fa841db53a8)
+
+Class QNetworkSession::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QNetworkSession::QPrivateSignal (0x0x7fa841de3780) 0 empty
+
+Vtable for QNetworkSession
+QNetworkSession::_ZTV15QNetworkSession: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QNetworkSession)
+16 (int (*)(...))QNetworkSession::metaObject
+24 (int (*)(...))QNetworkSession::qt_metacast
+32 (int (*)(...))QNetworkSession::qt_metacall
+40 (int (*)(...))QNetworkSession::~QNetworkSession
+48 (int (*)(...))QNetworkSession::~QNetworkSession
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QNetworkSession::connectNotify
+104 (int (*)(...))QNetworkSession::disconnectNotify
+
+Class QNetworkSession
+ size=24 align=8
+ base size=24 base align=8
+QNetworkSession (0x0x7fa841db5410) 0
+ vptr=((& QNetworkSession::_ZTV15QNetworkSession) + 16)
+ QObject (0x0x7fa841de3720) 0
+ primary-for QNetworkSession (0x0x7fa841db5410)
+
+Class QOcspResponse
+ size=8 align=8
+ base size=8 base align=8
+QOcspResponse (0x0x7fa841e4f000) 0
+
+Class QTcpServer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTcpServer::QPrivateSignal (0x0x7fa841aa0840) 0 empty
+
+Vtable for QTcpServer
+QTcpServer::_ZTV10QTcpServer: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTcpServer)
+16 (int (*)(...))QTcpServer::metaObject
+24 (int (*)(...))QTcpServer::qt_metacast
+32 (int (*)(...))QTcpServer::qt_metacall
+40 (int (*)(...))QTcpServer::~QTcpServer
+48 (int (*)(...))QTcpServer::~QTcpServer
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTcpServer::hasPendingConnections
+120 (int (*)(...))QTcpServer::nextPendingConnection
+128 (int (*)(...))QTcpServer::incomingConnection
+
+Class QTcpServer
+ size=16 align=8
+ base size=16 base align=8
+QTcpServer (0x0x7fa841a90c98) 0
+ vptr=((& QTcpServer::_ZTV10QTcpServer) + 16)
+ QObject (0x0x7fa841aa07e0) 0
+ primary-for QTcpServer (0x0x7fa841a90c98)
+
+Class QSslCertificateExtension
+ size=8 align=8
+ base size=8 base align=8
+QSslCertificateExtension (0x0x7fa841aa0a20) 0
+
+Class QSslCipher
+ size=8 align=8
+ base size=8 base align=8
+QSslCipher (0x0x7fa841b719c0) 0
+
+Class QSslDiffieHellmanParameters
+ size=8 align=8
+ base size=8 base align=8
+QSslDiffieHellmanParameters (0x0x7fa841c34a80) 0
+
+Class QSslEllipticCurve
+ size=4 align=4
+ base size=4 base align=4
+QSslEllipticCurve (0x0x7fa8418f97e0) 0
+
+Class QSslKey
+ size=8 align=8
+ base size=8 base align=8
+QSslKey (0x0x7fa841962180) 0
+
+Class QUdpSocket::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QUdpSocket::QPrivateSignal (0x0x7fa841a2c060) 0 empty
+
+Vtable for QUdpSocket
+QUdpSocket::_ZTV10QUdpSocket: 41 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QUdpSocket)
+16 (int (*)(...))QUdpSocket::metaObject
+24 (int (*)(...))QUdpSocket::qt_metacast
+32 (int (*)(...))QUdpSocket::qt_metacall
+40 (int (*)(...))QUdpSocket::~QUdpSocket
+48 (int (*)(...))QUdpSocket::~QUdpSocket
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractSocket::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QAbstractSocket::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QAbstractSocket::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QAbstractSocket::bytesAvailable
+184 (int (*)(...))QAbstractSocket::bytesToWrite
+192 (int (*)(...))QAbstractSocket::canReadLine
+200 (int (*)(...))QAbstractSocket::waitForReadyRead
+208 (int (*)(...))QAbstractSocket::waitForBytesWritten
+216 (int (*)(...))QAbstractSocket::readData
+224 (int (*)(...))QAbstractSocket::readLineData
+232 (int (*)(...))QAbstractSocket::writeData
+240 (int (*)(...))QAbstractSocket::resume
+248 (int (*)(...))QAbstractSocket::connectToHost
+256 (int (*)(...))QAbstractSocket::connectToHost
+264 (int (*)(...))QAbstractSocket::disconnectFromHost
+272 (int (*)(...))QAbstractSocket::setReadBufferSize
+280 (int (*)(...))QAbstractSocket::socketDescriptor
+288 (int (*)(...))QAbstractSocket::setSocketDescriptor
+296 (int (*)(...))QAbstractSocket::setSocketOption
+304 (int (*)(...))QAbstractSocket::socketOption
+312 (int (*)(...))QAbstractSocket::waitForConnected
+320 (int (*)(...))QAbstractSocket::waitForDisconnected
+
+Class QUdpSocket
+ size=16 align=8
+ base size=16 base align=8
+QUdpSocket (0x0x7fa841a28270) 0
+ vptr=((& QUdpSocket::_ZTV10QUdpSocket) + 16)
+ QAbstractSocket (0x0x7fa841a282d8) 0
+ primary-for QUdpSocket (0x0x7fa841a28270)
+ QIODevice (0x0x7fa841a28340) 0
+ primary-for QAbstractSocket (0x0x7fa841a282d8)
+ QObject (0x0x7fa841a2c000) 0
+ primary-for QIODevice (0x0x7fa841a28340)
+
+Class QJSValue
+ size=8 align=8
+ base size=8 base align=8
+QJSValue (0x0x7fa841a2c2a0) 0
+
+Class QQmlDebuggingEnabler
+ size=1 align=1
+ base size=0 base align=1
+QQmlDebuggingEnabler (0x0x7fa841a2c7e0) 0 empty
+
+Class QJSEngine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QJSEngine::QPrivateSignal (0x0x7fa841a2c8a0) 0 empty
+
+Vtable for QJSEngine
+QJSEngine::_ZTV9QJSEngine: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QJSEngine)
+16 (int (*)(...))QJSEngine::metaObject
+24 (int (*)(...))QJSEngine::qt_metacast
+32 (int (*)(...))QJSEngine::qt_metacall
+40 (int (*)(...))QJSEngine::~QJSEngine
+48 (int (*)(...))QJSEngine::~QJSEngine
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QJSEngine
+ size=24 align=8
+ base size=24 base align=8
+QJSEngine (0x0x7fa841a28410) 0
+ vptr=((& QJSEngine::_ZTV9QJSEngine) + 16)
+ QObject (0x0x7fa841a2c840) 0
+ primary-for QJSEngine (0x0x7fa841a28410)
+
+Class QJSValueIterator
+ size=8 align=8
+ base size=8 base align=8
+QJSValueIterator (0x0x7fa8416ca420) 0
+
+Class QQmlPrivate::RegisterType
+ size=128 align=8
+ base size=124 base align=8
+QQmlPrivate::RegisterType (0x0x7fa8416fe000) 0
+
+Class QQmlPrivate::RegisterInterface
+ size=24 align=8
+ base size=24 base align=8
+QQmlPrivate::RegisterInterface (0x0x7fa8416fe060) 0
+
+Class QQmlPrivate::RegisterAutoParent
+ size=16 align=8
+ base size=16 base align=8
+QQmlPrivate::RegisterAutoParent (0x0x7fa8416fe0c0) 0
+
+Class QQmlPrivate::RegisterSingletonType
+ size=96 align=8
+ base size=96 base align=8
+QQmlPrivate::RegisterSingletonType (0x0x7fa8416fe120) 0
+
+Class QQmlPrivate::RegisterCompositeType
+ size=32 align=8
+ base size=32 base align=8
+QQmlPrivate::RegisterCompositeType (0x0x7fa8416fe300) 0
+
+Class QQmlPrivate::RegisterCompositeSingletonType
+ size=32 align=8
+ base size=32 base align=8
+QQmlPrivate::RegisterCompositeSingletonType (0x0x7fa8416fe360) 0
+
+Class QQmlPrivate::CachedQmlUnit
+ size=24 align=8
+ base size=24 base align=8
+QQmlPrivate::CachedQmlUnit (0x0x7fa8416fe3c0) 0
+
+Class QQmlPrivate::RegisterQmlUnitCacheHook
+ size=16 align=8
+ base size=16 base align=8
+QQmlPrivate::RegisterQmlUnitCacheHook (0x0x7fa8416fe420) 0
+
+Class QQmlPrivate::RegisterSingletonFunctor
+ size=24 align=8
+ base size=17 base align=8
+QQmlPrivate::RegisterSingletonFunctor (0x0x7fa8416fe480) 0
+
+Vtable for QQmlParserStatus
+QQmlParserStatus::_ZTV16QQmlParserStatus: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QQmlParserStatus)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlParserStatus
+ size=16 align=8
+ base size=16 base align=8
+QQmlParserStatus (0x0x7fa8416fe840) 0
+ vptr=((& QQmlParserStatus::_ZTV16QQmlParserStatus) + 16)
+
+Vtable for QQmlPropertyValueSource
+QQmlPropertyValueSource::_ZTV23QQmlPropertyValueSource: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QQmlPropertyValueSource)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlPropertyValueSource
+ size=8 align=8
+ base size=8 base align=8
+QQmlPropertyValueSource (0x0x7fa8416fea20) 0 nearly-empty
+ vptr=((& QQmlPropertyValueSource::_ZTV23QQmlPropertyValueSource) + 16)
+
+Class QQmlListReference
+ size=8 align=8
+ base size=8 base align=8
+QQmlListReference (0x0x7fa841764000) 0
+
+Vtable for QQmlAbstractUrlInterceptor
+QQmlAbstractUrlInterceptor::_ZTV26QQmlAbstractUrlInterceptor: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QQmlAbstractUrlInterceptor)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlAbstractUrlInterceptor
+ size=8 align=8
+ base size=8 base align=8
+QQmlAbstractUrlInterceptor (0x0x7fa84181d7e0) 0 nearly-empty
+ vptr=((& QQmlAbstractUrlInterceptor::_ZTV26QQmlAbstractUrlInterceptor) + 16)
+
+Class QQmlError
+ size=8 align=8
+ base size=8 base align=8
+QQmlError (0x0x7fa84181d840) 0
+
+Vtable for QQmlImageProviderBase
+QQmlImageProviderBase::_ZTV21QQmlImageProviderBase: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QQmlImageProviderBase)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlImageProviderBase
+ size=8 align=8
+ base size=8 base align=8
+QQmlImageProviderBase (0x0x7fa84147b780) 0 nearly-empty
+ vptr=((& QQmlImageProviderBase::_ZTV21QQmlImageProviderBase) + 16)
+
+Class QQmlEngine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlEngine::QPrivateSignal (0x0x7fa84147bf00) 0 empty
+
+Vtable for QQmlEngine
+QQmlEngine::_ZTV10QQmlEngine: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QQmlEngine)
+16 (int (*)(...))QQmlEngine::metaObject
+24 (int (*)(...))QQmlEngine::qt_metacast
+32 (int (*)(...))QQmlEngine::qt_metacall
+40 (int (*)(...))QQmlEngine::~QQmlEngine
+48 (int (*)(...))QQmlEngine::~QQmlEngine
+56 (int (*)(...))QQmlEngine::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QQmlEngine
+ size=24 align=8
+ base size=24 base align=8
+QQmlEngine (0x0x7fa841471e38) 0
+ vptr=((& QQmlEngine::_ZTV10QQmlEngine) + 16)
+ QJSEngine (0x0x7fa841471ea0) 0
+ primary-for QQmlEngine (0x0x7fa841471e38)
+ QObject (0x0x7fa84147bea0) 0
+ primary-for QJSEngine (0x0x7fa841471ea0)
+
+Class QQmlApplicationEngine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlApplicationEngine::QPrivateSignal (0x0x7fa8414ca1e0) 0 empty
+
+Vtable for QQmlApplicationEngine
+QQmlApplicationEngine::_ZTV21QQmlApplicationEngine: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QQmlApplicationEngine)
+16 (int (*)(...))QQmlApplicationEngine::metaObject
+24 (int (*)(...))QQmlApplicationEngine::qt_metacast
+32 (int (*)(...))QQmlApplicationEngine::qt_metacall
+40 (int (*)(...))QQmlApplicationEngine::~QQmlApplicationEngine
+48 (int (*)(...))QQmlApplicationEngine::~QQmlApplicationEngine
+56 (int (*)(...))QQmlEngine::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QQmlApplicationEngine
+ size=24 align=8
+ base size=24 base align=8
+QQmlApplicationEngine (0x0x7fa841471f08) 0
+ vptr=((& QQmlApplicationEngine::_ZTV21QQmlApplicationEngine) + 16)
+ QQmlEngine (0x0x7fa841471f70) 0
+ primary-for QQmlApplicationEngine (0x0x7fa841471f08)
+ QJSEngine (0x0x7fa8414cf000) 0
+ primary-for QQmlEngine (0x0x7fa841471f70)
+ QObject (0x0x7fa8414ca180) 0
+ primary-for QJSEngine (0x0x7fa8414cf000)
+
+Class QQmlComponent::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlComponent::QPrivateSignal (0x0x7fa8414ca420) 0 empty
+
+Vtable for QQmlComponent
+QQmlComponent::_ZTV13QQmlComponent: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QQmlComponent)
+16 (int (*)(...))QQmlComponent::metaObject
+24 (int (*)(...))QQmlComponent::qt_metacast
+32 (int (*)(...))QQmlComponent::qt_metacall
+40 (int (*)(...))QQmlComponent::~QQmlComponent
+48 (int (*)(...))QQmlComponent::~QQmlComponent
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QQmlComponent::create
+120 (int (*)(...))QQmlComponent::beginCreate
+128 (int (*)(...))QQmlComponent::completeCreate
+
+Class QQmlComponent
+ size=16 align=8
+ base size=16 base align=8
+QQmlComponent (0x0x7fa8414cf068) 0
+ vptr=((& QQmlComponent::_ZTV13QQmlComponent) + 16)
+ QObject (0x0x7fa8414ca3c0) 0
+ primary-for QQmlComponent (0x0x7fa8414cf068)
+
+Class QQmlContext::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlContext::QPrivateSignal (0x0x7fa841520120) 0 empty
+
+Class QQmlContext::PropertyPair
+ size=24 align=8
+ base size=24 base align=8
+QQmlContext::PropertyPair (0x0x7fa841520180) 0
+
+Vtable for QQmlContext
+QQmlContext::_ZTV11QQmlContext: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QQmlContext)
+16 (int (*)(...))QQmlContext::metaObject
+24 (int (*)(...))QQmlContext::qt_metacast
+32 (int (*)(...))QQmlContext::qt_metacall
+40 (int (*)(...))QQmlContext::~QQmlContext
+48 (int (*)(...))QQmlContext::~QQmlContext
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QQmlContext
+ size=16 align=8
+ base size=16 base align=8
+QQmlContext (0x0x7fa8414cf5b0) 0
+ vptr=((& QQmlContext::_ZTV11QQmlContext) + 16)
+ QObject (0x0x7fa8415200c0) 0
+ primary-for QQmlContext (0x0x7fa8414cf5b0)
+
+Class QQmlScriptString
+ size=8 align=8
+ base size=8 base align=8
+QQmlScriptString (0x0x7fa841520540) 0
+
+Class QQmlExpression::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlExpression::QPrivateSignal (0x0x7fa841520840) 0 empty
+
+Vtable for QQmlExpression
+QQmlExpression::_ZTV14QQmlExpression: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QQmlExpression)
+16 (int (*)(...))QQmlExpression::metaObject
+24 (int (*)(...))QQmlExpression::qt_metacast
+32 (int (*)(...))QQmlExpression::qt_metacall
+40 (int (*)(...))QQmlExpression::~QQmlExpression
+48 (int (*)(...))QQmlExpression::~QQmlExpression
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QQmlExpression
+ size=16 align=8
+ base size=16 base align=8
+QQmlExpression (0x0x7fa8414cf618) 0
+ vptr=((& QQmlExpression::_ZTV14QQmlExpression) + 16)
+ QObject (0x0x7fa8415207e0) 0
+ primary-for QQmlExpression (0x0x7fa8414cf618)
+
+Vtable for QQmlTypesExtensionInterface
+QQmlTypesExtensionInterface::_ZTV27QQmlTypesExtensionInterface: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QQmlTypesExtensionInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlTypesExtensionInterface
+ size=8 align=8
+ base size=8 base align=8
+QQmlTypesExtensionInterface (0x0x7fa841520a20) 0 nearly-empty
+ vptr=((& QQmlTypesExtensionInterface::_ZTV27QQmlTypesExtensionInterface) + 16)
+
+Vtable for QQmlExtensionInterface
+QQmlExtensionInterface::_ZTV22QQmlExtensionInterface: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QQmlExtensionInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlExtensionInterface
+ size=8 align=8
+ base size=8 base align=8
+QQmlExtensionInterface (0x0x7fa8414cf680) 0 nearly-empty
+ vptr=((& QQmlExtensionInterface::_ZTV22QQmlExtensionInterface) + 16)
+ QQmlTypesExtensionInterface (0x0x7fa841520a80) 0 nearly-empty
+ primary-for QQmlExtensionInterface (0x0x7fa8414cf680)
+
+Class QQmlExtensionPlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlExtensionPlugin::QPrivateSignal (0x0x7fa841520ea0) 0 empty
+
+Vtable for QQmlExtensionPlugin
+QQmlExtensionPlugin::_ZTV19QQmlExtensionPlugin: 22 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QQmlExtensionPlugin)
+16 (int (*)(...))QQmlExtensionPlugin::metaObject
+24 (int (*)(...))QQmlExtensionPlugin::qt_metacast
+32 (int (*)(...))QQmlExtensionPlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))QQmlExtensionPlugin::initializeEngine
+128 (int (*)(...))-16
+136 (int (*)(...))(& _ZTI19QQmlExtensionPlugin)
+144 0
+152 0
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QQmlExtensionPlugin::_ZThn16_N19QQmlExtensionPlugin16initializeEngineEP10QQmlEnginePKc
+
+Class QQmlExtensionPlugin
+ size=24 align=8
+ base size=24 base align=8
+QQmlExtensionPlugin (0x0x7fa84156c0e0) 0
+ vptr=((& QQmlExtensionPlugin::_ZTV19QQmlExtensionPlugin) + 16)
+ QObject (0x0x7fa841520de0) 0
+ primary-for QQmlExtensionPlugin (0x0x7fa84156c0e0)
+ QQmlExtensionInterface (0x0x7fa8414cf6e8) 16 nearly-empty
+ vptr=((& QQmlExtensionPlugin::_ZTV19QQmlExtensionPlugin) + 144)
+ QQmlTypesExtensionInterface (0x0x7fa841520e40) 16 nearly-empty
+ primary-for QQmlExtensionInterface (0x0x7fa8414cf6e8)
+
+Class QQmlFile
+ size=8 align=8
+ base size=8 base align=8
+QQmlFile (0x0x7fa84157e0c0) 0
+
+Class QQmlFileSelector::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlFileSelector::QPrivateSignal (0x0x7fa84157e180) 0 empty
+
+Vtable for QQmlFileSelector
+QQmlFileSelector::_ZTV16QQmlFileSelector: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QQmlFileSelector)
+16 (int (*)(...))QQmlFileSelector::metaObject
+24 (int (*)(...))QQmlFileSelector::qt_metacast
+32 (int (*)(...))QQmlFileSelector::qt_metacall
+40 (int (*)(...))QQmlFileSelector::~QQmlFileSelector
+48 (int (*)(...))QQmlFileSelector::~QQmlFileSelector
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QQmlFileSelector
+ size=16 align=8
+ base size=16 base align=8
+QQmlFileSelector (0x0x7fa8414cf7b8) 0
+ vptr=((& QQmlFileSelector::_ZTV16QQmlFileSelector) + 16)
+ QObject (0x0x7fa84157e120) 0
+ primary-for QQmlFileSelector (0x0x7fa8414cf7b8)
+
+Vtable for QQmlIncubator
+QQmlIncubator::_ZTV13QQmlIncubator: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QQmlIncubator)
+16 (int (*)(...))QQmlIncubator::~QQmlIncubator
+24 (int (*)(...))QQmlIncubator::~QQmlIncubator
+32 (int (*)(...))QQmlIncubator::statusChanged
+40 (int (*)(...))QQmlIncubator::setInitialState
+
+Class QQmlIncubator
+ size=16 align=8
+ base size=16 base align=8
+QQmlIncubator (0x0x7fa84157e360) 0
+ vptr=((& QQmlIncubator::_ZTV13QQmlIncubator) + 16)
+
+Vtable for QQmlIncubationController
+QQmlIncubationController::_ZTV24QQmlIncubationController: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QQmlIncubationController)
+16 (int (*)(...))QQmlIncubationController::~QQmlIncubationController
+24 (int (*)(...))QQmlIncubationController::~QQmlIncubationController
+32 (int (*)(...))QQmlIncubationController::incubatingObjectCountChanged
+
+Class QQmlIncubationController
+ size=16 align=8
+ base size=16 base align=8
+QQmlIncubationController (0x0x7fa84157e3c0) 0
+ vptr=((& QQmlIncubationController::_ZTV24QQmlIncubationController) + 16)
+
+Class QQmlInfo
+ size=16 align=8
+ base size=16 base align=8
+QQmlInfo (0x0x7fa8414cf820) 0
+ QDebug (0x0x7fa84157e420) 0
+
+Vtable for QQmlNetworkAccessManagerFactory
+QQmlNetworkAccessManagerFactory::_ZTV31QQmlNetworkAccessManagerFactory: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI31QQmlNetworkAccessManagerFactory)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlNetworkAccessManagerFactory
+ size=8 align=8
+ base size=8 base align=8
+QQmlNetworkAccessManagerFactory (0x0x7fa8415dd420) 0 nearly-empty
+ vptr=((& QQmlNetworkAccessManagerFactory::_ZTV31QQmlNetworkAccessManagerFactory) + 16)
+
+Class QQmlProperty
+ size=8 align=8
+ base size=8 base align=8
+QQmlProperty (0x0x7fa8415dd480) 0
+
+Class QQmlPropertyMap::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlPropertyMap::QPrivateSignal (0x0x7fa84162dcc0) 0 empty
+
+Vtable for QQmlPropertyMap
+QQmlPropertyMap::_ZTV15QQmlPropertyMap: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QQmlPropertyMap)
+16 (int (*)(...))QQmlPropertyMap::metaObject
+24 (int (*)(...))QQmlPropertyMap::qt_metacast
+32 (int (*)(...))QQmlPropertyMap::qt_metacall
+40 (int (*)(...))QQmlPropertyMap::~QQmlPropertyMap
+48 (int (*)(...))QQmlPropertyMap::~QQmlPropertyMap
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QQmlPropertyMap::updateValue
+
+Class QQmlPropertyMap
+ size=16 align=8
+ base size=16 base align=8
+QQmlPropertyMap (0x0x7fa84162ce38) 0
+ vptr=((& QQmlPropertyMap::_ZTV15QQmlPropertyMap) + 16)
+ QObject (0x0x7fa84162dc60) 0
+ primary-for QQmlPropertyMap (0x0x7fa84162ce38)
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fa8412881e0) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fa841288540) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fa841288720) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fa841288a80) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fa841288c60) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fa8412c3000) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fa8412c31e0) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fa8412c3540) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fa8412c3720) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fa8412c3a80) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7fa8412c3c60) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7fa8412fc000) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7fa8412fc1e0) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7fa8412fc540) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7fa8412fc720) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7fa8412fca80) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fa841330f60) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fa841360300) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fa841360480) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fa8413607e0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fa841360960) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fa841360cc0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fa841360e40) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fa84138d1e0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fa84138d360) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fa84138d6c0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7fa84138d840) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7fa84138dba0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7fa84138dd20) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7fa8413bd0c0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7fa8413bd240) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7fa8413bd5a0) 0 empty
+
diff --git a/tests/auto/bic/data/QtQuick.5.14.0.linux-gcc-amd64.txt b/tests/auto/bic/data/QtQuick.5.14.0.linux-gcc-amd64.txt
new file mode 100644
index 0000000000..f672790843
--- /dev/null
+++ b/tests/auto/bic/data/QtQuick.5.14.0.linux-gcc-amd64.txt
@@ -0,0 +1,11598 @@
+Class std::__failure_type
+ size=1 align=1
+ base size=0 base align=1
+std::__failure_type (0x0x7f61c54a3000) 0 empty
+
+Class std::__do_is_destructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_destructible_impl (0x0x7f61c54ed780) 0 empty
+
+Class std::__do_is_nt_destructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_nt_destructible_impl (0x0x7f61c54ed9c0) 0 empty
+
+Class std::__do_is_default_constructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_default_constructible_impl (0x0x7f61c54edc00) 0 empty
+
+Class std::__do_is_static_castable_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_static_castable_impl (0x0x7f61c54ede40) 0 empty
+
+Class std::__do_is_direct_constructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_direct_constructible_impl (0x0x7f61c5519000) 0 empty
+
+Class std::__do_is_nary_constructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_nary_constructible_impl (0x0x7f61c55193c0) 0 empty
+
+Class std::__do_is_implicitly_default_constructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_implicitly_default_constructible_impl (0x0x7f61c55574e0) 0 empty
+
+Class std::__do_common_type_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_common_type_impl (0x0x7f61c51acba0) 0 empty
+
+Class std::__do_member_type_wrapper
+ size=1 align=1
+ base size=0 base align=1
+std::__do_member_type_wrapper (0x0x7f61c51acc60) 0 empty
+
+Class std::__invoke_memfun_ref
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_memfun_ref (0x0x7f61c51dd060) 0 empty
+
+Class std::__invoke_memfun_deref
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_memfun_deref (0x0x7f61c51dd0c0) 0 empty
+
+Class std::__invoke_memobj_ref
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_memobj_ref (0x0x7f61c51dd120) 0 empty
+
+Class std::__invoke_memobj_deref
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_memobj_deref (0x0x7f61c51dd180) 0 empty
+
+Class std::__invoke_other
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_other (0x0x7f61c51dd1e0) 0 empty
+
+Class std::__result_of_memfun_ref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memfun_ref_impl (0x0x7f61c51dd2a0) 0 empty
+
+Class std::__result_of_memfun_deref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memfun_deref_impl (0x0x7f61c51dd360) 0 empty
+
+Class std::__result_of_memobj_ref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memobj_ref_impl (0x0x7f61c51dd420) 0 empty
+
+Class std::__result_of_memobj_deref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memobj_deref_impl (0x0x7f61c51dd4e0) 0 empty
+
+Class std::__result_of_other_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_other_impl (0x0x7f61c51dd840) 0 empty
+
+Class std::__swappable_details::__do_is_swappable_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__swappable_details::__do_is_swappable_impl (0x0x7f61c51ddba0) 0 empty
+
+Class std::__swappable_details::__do_is_nothrow_swappable_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__swappable_details::__do_is_nothrow_swappable_impl (0x0x7f61c51ddc00) 0 empty
+
+Class std::__nonesuch
+ size=1 align=1
+ base size=0 base align=1
+std::__nonesuch (0x0x7f61c52241e0) 0 empty
+
+Class std::piecewise_construct_t
+ size=1 align=1
+ base size=0 base align=1
+std::piecewise_construct_t (0x0x7f61c5224840) 0 empty
+
+Class std::__nonesuch_no_braces
+ size=1 align=1
+ base size=1 base align=1
+std::__nonesuch_no_braces (0x0x7f61c521d270) 0 empty
+ std::__nonesuch (0x0x7f61c5224d20) 0 empty
+
+Class std::__true_type
+ size=1 align=1
+ base size=0 base align=1
+std::__true_type (0x0x7f61c52a86c0) 0 empty
+
+Class std::__false_type
+ size=1 align=1
+ base size=0 base align=1
+std::__false_type (0x0x7f61c52a8720) 0 empty
+
+Class std::input_iterator_tag
+ size=1 align=1
+ base size=0 base align=1
+std::input_iterator_tag (0x0x7f61c5300420) 0 empty
+
+Class std::output_iterator_tag
+ size=1 align=1
+ base size=0 base align=1
+std::output_iterator_tag (0x0x7f61c5300480) 0 empty
+
+Class std::forward_iterator_tag
+ size=1 align=1
+ base size=1 base align=1
+std::forward_iterator_tag (0x0x7f61c521d750) 0 empty
+ std::input_iterator_tag (0x0x7f61c53004e0) 0 empty
+
+Class std::bidirectional_iterator_tag
+ size=1 align=1
+ base size=1 base align=1
+std::bidirectional_iterator_tag (0x0x7f61c521d7b8) 0 empty
+ std::forward_iterator_tag (0x0x7f61c521d820) 0 empty
+ std::input_iterator_tag (0x0x7f61c5300540) 0 empty
+
+Class std::random_access_iterator_tag
+ size=1 align=1
+ base size=1 base align=1
+std::random_access_iterator_tag (0x0x7f61c521d888) 0 empty
+ std::bidirectional_iterator_tag (0x0x7f61c521d8f0) 0 empty
+ std::forward_iterator_tag (0x0x7f61c521d958) 0 empty
+ std::input_iterator_tag (0x0x7f61c53005a0) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_less_iter
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_less_iter (0x0x7f61c4fb60c0) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_less_val
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_less_val (0x0x7f61c4fb61e0) 0 empty
+
+Class __gnu_cxx::__ops::_Val_less_iter
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Val_less_iter (0x0x7f61c4fb64e0) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_equal_to_iter
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_equal_to_iter (0x0x7f61c4fb67e0) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_equal_to_val
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_equal_to_val (0x0x7f61c4fb6900) 0 empty
+
+Class __locale_struct
+ size=232 align=8
+ base size=232 base align=8
+__locale_struct (0x0x7f61c5041c00) 0
+
+Class timeval
+ size=16 align=8
+ base size=16 base align=8
+timeval (0x0x7f61c5041f00) 0
+
+Class timespec
+ size=16 align=8
+ base size=16 base align=8
+timespec (0x0x7f61c5041f60) 0
+
+Class __pthread_rwlock_arch_t
+ size=56 align=8
+ base size=56 base align=8
+__pthread_rwlock_arch_t (0x0x7f61c5088060) 0
+
+Class __pthread_internal_list
+ size=16 align=8
+ base size=16 base align=8
+__pthread_internal_list (0x0x7f61c50880c0) 0
+
+Class __pthread_mutex_s
+ size=40 align=8
+ base size=40 base align=8
+__pthread_mutex_s (0x0x7f61c5088120) 0
+
+Class __pthread_cond_s
+ size=48 align=8
+ base size=48 base align=8
+__pthread_cond_s (0x0x7f61c5088180) 0
+
+Class pthread_attr_t
+ size=56 align=8
+ base size=56 base align=8
+pthread_attr_t (0x0x7f61c5088420) 0
+
+Class random_data
+ size=48 align=8
+ base size=48 base align=8
+random_data (0x0x7f61c50886c0) 0
+
+Class drand48_data
+ size=24 align=8
+ base size=24 base align=8
+drand48_data (0x0x7f61c5088720) 0
+
+Vtable for std::exception
+std::exception::_ZTVSt9exception: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt9exception)
+16 (int (*)(...))std::exception::~exception
+24 (int (*)(...))std::exception::~exception
+32 (int (*)(...))std::exception::what
+
+Class std::exception
+ size=8 align=8
+ base size=8 base align=8
+std::exception (0x0x7f61c513f4e0) 0 nearly-empty
+ vptr=((& std::exception::_ZTVSt9exception) + 16)
+
+Vtable for std::bad_exception
+std::bad_exception::_ZTVSt13bad_exception: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt13bad_exception)
+16 (int (*)(...))std::bad_exception::~bad_exception
+24 (int (*)(...))std::bad_exception::~bad_exception
+32 (int (*)(...))std::bad_exception::what
+
+Class std::bad_exception
+ size=8 align=8
+ base size=8 base align=8
+std::bad_exception (0x0x7f61c521dc98) 0 nearly-empty
+ vptr=((& std::bad_exception::_ZTVSt13bad_exception) + 16)
+ std::exception (0x0x7f61c513f6c0) 0 nearly-empty
+ primary-for std::bad_exception (0x0x7f61c521dc98)
+
+Vtable for std::type_info
+std::type_info::_ZTVSt9type_info: 8 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt9type_info)
+16 (int (*)(...))std::type_info::~type_info
+24 (int (*)(...))std::type_info::~type_info
+32 (int (*)(...))std::type_info::__is_pointer_p
+40 (int (*)(...))std::type_info::__is_function_p
+48 (int (*)(...))std::type_info::__do_catch
+56 (int (*)(...))std::type_info::__do_upcast
+
+Class std::type_info
+ size=16 align=8
+ base size=16 base align=8
+std::type_info (0x0x7f61c513f8a0) 0
+ vptr=((& std::type_info::_ZTVSt9type_info) + 16)
+
+Vtable for std::bad_cast
+std::bad_cast::_ZTVSt8bad_cast: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt8bad_cast)
+16 (int (*)(...))std::bad_cast::~bad_cast
+24 (int (*)(...))std::bad_cast::~bad_cast
+32 (int (*)(...))std::bad_cast::what
+
+Class std::bad_cast
+ size=8 align=8
+ base size=8 base align=8
+std::bad_cast (0x0x7f61c521dd00) 0 nearly-empty
+ vptr=((& std::bad_cast::_ZTVSt8bad_cast) + 16)
+ std::exception (0x0x7f61c513fc60) 0 nearly-empty
+ primary-for std::bad_cast (0x0x7f61c521dd00)
+
+Vtable for std::bad_typeid
+std::bad_typeid::_ZTVSt10bad_typeid: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt10bad_typeid)
+16 (int (*)(...))std::bad_typeid::~bad_typeid
+24 (int (*)(...))std::bad_typeid::~bad_typeid
+32 (int (*)(...))std::bad_typeid::what
+
+Class std::bad_typeid
+ size=8 align=8
+ base size=8 base align=8
+std::bad_typeid (0x0x7f61c521dd68) 0 nearly-empty
+ vptr=((& std::bad_typeid::_ZTVSt10bad_typeid) + 16)
+ std::exception (0x0x7f61c513fe40) 0 nearly-empty
+ primary-for std::bad_typeid (0x0x7f61c521dd68)
+
+Class std::__exception_ptr::exception_ptr
+ size=8 align=8
+ base size=8 base align=8
+std::__exception_ptr::exception_ptr (0x0x7f61c5170060) 0
+
+Vtable for std::nested_exception
+std::nested_exception::_ZTVSt16nested_exception: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt16nested_exception)
+16 (int (*)(...))std::nested_exception::~nested_exception
+24 (int (*)(...))std::nested_exception::~nested_exception
+
+Class std::nested_exception
+ size=16 align=8
+ base size=16 base align=8
+std::nested_exception (0x0x7f61c5170600) 0
+ vptr=((& std::nested_exception::_ZTVSt16nested_exception) + 16)
+
+Vtable for std::bad_alloc
+std::bad_alloc::_ZTVSt9bad_alloc: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt9bad_alloc)
+16 (int (*)(...))std::bad_alloc::~bad_alloc
+24 (int (*)(...))std::bad_alloc::~bad_alloc
+32 (int (*)(...))std::bad_alloc::what
+
+Class std::bad_alloc
+ size=8 align=8
+ base size=8 base align=8
+std::bad_alloc (0x0x7f61c521ddd0) 0 nearly-empty
+ vptr=((& std::bad_alloc::_ZTVSt9bad_alloc) + 16)
+ std::exception (0x0x7f61c5170cc0) 0 nearly-empty
+ primary-for std::bad_alloc (0x0x7f61c521ddd0)
+
+Vtable for std::bad_array_new_length
+std::bad_array_new_length::_ZTVSt20bad_array_new_length: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt20bad_array_new_length)
+16 (int (*)(...))std::bad_array_new_length::~bad_array_new_length
+24 (int (*)(...))std::bad_array_new_length::~bad_array_new_length
+32 (int (*)(...))std::bad_array_new_length::what
+
+Class std::bad_array_new_length
+ size=8 align=8
+ base size=8 base align=8
+std::bad_array_new_length (0x0x7f61c521de38) 0 nearly-empty
+ vptr=((& std::bad_array_new_length::_ZTVSt20bad_array_new_length) + 16)
+ std::bad_alloc (0x0x7f61c521dea0) 0 nearly-empty
+ primary-for std::bad_array_new_length (0x0x7f61c521de38)
+ std::exception (0x0x7f61c5170ea0) 0 nearly-empty
+ primary-for std::bad_alloc (0x0x7f61c521dea0)
+
+Class std::nothrow_t
+ size=1 align=1
+ base size=0 base align=1
+std::nothrow_t (0x0x7f61c4da80c0) 0 empty
+
+Class std::__allocator_traits_base
+ size=1 align=1
+ base size=0 base align=1
+std::__allocator_traits_base (0x0x7f61c4da82a0) 0 empty
+
+Class std::__numeric_limits_base
+ size=1 align=1
+ base size=0 base align=1
+std::__numeric_limits_base (0x0x7f61c4e1b780) 0 empty
+
+Class QSysInfo
+ size=1 align=1
+ base size=0 base align=1
+QSysInfo (0x0x7f61c4a95cc0) 0 empty
+
+Class QMessageLogContext
+ size=32 align=8
+ base size=32 base align=8
+QMessageLogContext (0x0x7f61c4a95de0) 0
+
+Class QMessageLogger
+ size=32 align=8
+ base size=32 base align=8
+QMessageLogger (0x0x7f61c4ac8000) 0
+
+Class QFlag
+ size=4 align=4
+ base size=4 base align=4
+QFlag (0x0x7f61c4ac86c0) 0
+
+Class QIncompatibleFlag
+ size=4 align=4
+ base size=4 base align=4
+QIncompatibleFlag (0x0x7f61c4b10e40) 0
+
+Class std::__atomic_flag_base
+ size=1 align=1
+ base size=1 base align=1
+std::__atomic_flag_base (0x0x7f61c47c1360) 0
+
+Class std::atomic_flag
+ size=1 align=1
+ base size=1 base align=1
+std::atomic_flag (0x0x7f61c4b57d00) 0
+ std::__atomic_flag_base (0x0x7f61c47c13c0) 0
+
+Class QAtomicInt
+ size=4 align=4
+ base size=4 base align=4
+QAtomicInt (0x0x7f61c4961478) 0
+ QAtomicInteger<int> (0x0x7f61c49614e0) 0
+ QBasicAtomicInteger<int> (0x0x7f61c46f5600) 0
+
+Class QInternal
+ size=1 align=1
+ base size=0 base align=1
+QInternal (0x0x7f61c434f180) 0 empty
+
+Class QtPrivate::QSlotObjectBase
+ size=16 align=8
+ base size=16 base align=8
+QtPrivate::QSlotObjectBase (0x0x7f61c3f92720) 0
+
+Class QGenericArgument
+ size=16 align=8
+ base size=16 base align=8
+QGenericArgument (0x0x7f61c3f92e40) 0
+
+Class QGenericReturnArgument
+ size=16 align=8
+ base size=16 base align=8
+QGenericReturnArgument (0x0x7f61c3fc9138) 0
+ QGenericArgument (0x0x7f61c3fd1120) 0
+
+Class QMetaObject::SuperData
+ size=8 align=8
+ base size=8 base align=8
+QMetaObject::SuperData (0x0x7f61c3fd15a0) 0
+
+Class QMetaObject
+ size=48 align=8
+ base size=48 base align=8
+QMetaObject (0x0x7f61c3fd1540) 0
+
+Class QMetaObject::Connection
+ size=8 align=8
+ base size=8 base align=8
+QMetaObject::Connection (0x0x7f61c3fd1e40) 0
+
+Class QLatin1Char
+ size=1 align=1
+ base size=1 base align=1
+QLatin1Char (0x0x7f61c4084960) 0
+
+Class QChar
+ size=2 align=2
+ base size=2 base align=2
+QChar (0x0x7f61c40a70c0) 0
+
+Class QtPrivate::RefCount
+ size=4 align=4
+ base size=4 base align=4
+QtPrivate::RefCount (0x0x7f61c4154ea0) 0
+
+Class QArrayData
+ size=24 align=8
+ base size=24 base align=8
+QArrayData (0x0x7f61c4177240) 0
+
+Class QtPrivate::QContainerImplHelper
+ size=1 align=1
+ base size=0 base align=1
+QtPrivate::QContainerImplHelper (0x0x7f61c3ddb540) 0 empty
+
+Class lconv
+ size=96 align=8
+ base size=96 base align=8
+lconv (0x0x7f61c3e8bd80) 0
+
+Vtable for __cxxabiv1::__forced_unwind
+__cxxabiv1::__forced_unwind::_ZTVN10__cxxabiv115__forced_unwindE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN10__cxxabiv115__forced_unwindE)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class __cxxabiv1::__forced_unwind
+ size=8 align=8
+ base size=8 base align=8
+__cxxabiv1::__forced_unwind (0x0x7f61c3e8be40) 0 nearly-empty
+ vptr=((& __cxxabiv1::__forced_unwind::_ZTVN10__cxxabiv115__forced_unwindE) + 16)
+
+Class sched_param
+ size=4 align=4
+ base size=4 base align=4
+sched_param (0x0x7f61c3f52f60) 0
+
+Class timex
+ size=208 align=8
+ base size=208 base align=8
+timex (0x0x7f61c3b83060) 0
+
+Class tm
+ size=56 align=8
+ base size=56 base align=8
+tm (0x0x7f61c3b830c0) 0
+
+Class itimerspec
+ size=32 align=8
+ base size=32 base align=8
+itimerspec (0x0x7f61c3b83120) 0
+
+Class _pthread_cleanup_buffer
+ size=32 align=8
+ base size=32 base align=8
+_pthread_cleanup_buffer (0x0x7f61c3b83180) 0
+
+Class __pthread_cleanup_frame
+ size=24 align=8
+ base size=24 base align=8
+__pthread_cleanup_frame (0x0x7f61c3b832a0) 0
+
+Class __pthread_cleanup_class
+ size=24 align=8
+ base size=24 base align=8
+__pthread_cleanup_class (0x0x7f61c3b83300) 0
+
+Class _IO_marker
+ size=24 align=8
+ base size=24 base align=8
+_IO_marker (0x0x7f61c3cc72a0) 0
+
+Class _IO_FILE
+ size=216 align=8
+ base size=216 base align=8
+_IO_FILE (0x0x7f61c3cc7300) 0
+
+Class std::_Hash_impl
+ size=1 align=1
+ base size=0 base align=1
+std::_Hash_impl (0x0x7f61c3a78360) 0 empty
+
+Class std::_Fnv_hash_impl
+ size=1 align=1
+ base size=0 base align=1
+std::_Fnv_hash_impl (0x0x7f61c3a784e0) 0 empty
+
+Class std::locale
+ size=8 align=8
+ base size=8 base align=8
+std::locale (0x0x7f61c37f3660) 0
+
+Vtable for std::locale::facet
+std::locale::facet::_ZTVNSt6locale5facetE: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt6locale5facetE)
+16 (int (*)(...))std::locale::facet::~facet
+24 (int (*)(...))std::locale::facet::~facet
+
+Class std::locale::facet
+ size=16 align=8
+ base size=12 base align=8
+std::locale::facet (0x0x7f61c37f3a20) 0
+ vptr=((& std::locale::facet::_ZTVNSt6locale5facetE) + 16)
+
+Class std::locale::id
+ size=8 align=8
+ base size=8 base align=8
+std::locale::id (0x0x7f61c37f3cc0) 0
+
+Class std::locale::_Impl
+ size=40 align=8
+ base size=40 base align=8
+std::locale::_Impl (0x0x7f61c37f3ea0) 0
+
+Class std::__cow_string
+ size=8 align=8
+ base size=8 base align=8
+std::__cow_string (0x0x7f61c384dea0) 0
+
+Vtable for std::logic_error
+std::logic_error::_ZTVSt11logic_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt11logic_error)
+16 (int (*)(...))std::logic_error::~logic_error
+24 (int (*)(...))std::logic_error::~logic_error
+32 (int (*)(...))std::logic_error::what
+
+Class std::logic_error
+ size=16 align=8
+ base size=16 base align=8
+std::logic_error (0x0x7f61c38880d0) 0
+ vptr=((& std::logic_error::_ZTVSt11logic_error) + 16)
+ std::exception (0x0x7f61c384df60) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f61c38880d0)
+
+Vtable for std::domain_error
+std::domain_error::_ZTVSt12domain_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12domain_error)
+16 (int (*)(...))std::domain_error::~domain_error
+24 (int (*)(...))std::domain_error::~domain_error
+32 (int (*)(...))std::logic_error::what
+
+Class std::domain_error
+ size=16 align=8
+ base size=16 base align=8
+std::domain_error (0x0x7f61c3888138) 0
+ vptr=((& std::domain_error::_ZTVSt12domain_error) + 16)
+ std::logic_error (0x0x7f61c38881a0) 0
+ primary-for std::domain_error (0x0x7f61c3888138)
+ std::exception (0x0x7f61c389e000) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f61c38881a0)
+
+Vtable for std::invalid_argument
+std::invalid_argument::_ZTVSt16invalid_argument: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt16invalid_argument)
+16 (int (*)(...))std::invalid_argument::~invalid_argument
+24 (int (*)(...))std::invalid_argument::~invalid_argument
+32 (int (*)(...))std::logic_error::what
+
+Class std::invalid_argument
+ size=16 align=8
+ base size=16 base align=8
+std::invalid_argument (0x0x7f61c3888208) 0
+ vptr=((& std::invalid_argument::_ZTVSt16invalid_argument) + 16)
+ std::logic_error (0x0x7f61c3888270) 0
+ primary-for std::invalid_argument (0x0x7f61c3888208)
+ std::exception (0x0x7f61c389e060) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f61c3888270)
+
+Vtable for std::length_error
+std::length_error::_ZTVSt12length_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12length_error)
+16 (int (*)(...))std::length_error::~length_error
+24 (int (*)(...))std::length_error::~length_error
+32 (int (*)(...))std::logic_error::what
+
+Class std::length_error
+ size=16 align=8
+ base size=16 base align=8
+std::length_error (0x0x7f61c38882d8) 0
+ vptr=((& std::length_error::_ZTVSt12length_error) + 16)
+ std::logic_error (0x0x7f61c3888340) 0
+ primary-for std::length_error (0x0x7f61c38882d8)
+ std::exception (0x0x7f61c389e0c0) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f61c3888340)
+
+Vtable for std::out_of_range
+std::out_of_range::_ZTVSt12out_of_range: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12out_of_range)
+16 (int (*)(...))std::out_of_range::~out_of_range
+24 (int (*)(...))std::out_of_range::~out_of_range
+32 (int (*)(...))std::logic_error::what
+
+Class std::out_of_range
+ size=16 align=8
+ base size=16 base align=8
+std::out_of_range (0x0x7f61c38883a8) 0
+ vptr=((& std::out_of_range::_ZTVSt12out_of_range) + 16)
+ std::logic_error (0x0x7f61c3888410) 0
+ primary-for std::out_of_range (0x0x7f61c38883a8)
+ std::exception (0x0x7f61c389e120) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f61c3888410)
+
+Vtable for std::runtime_error
+std::runtime_error::_ZTVSt13runtime_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt13runtime_error)
+16 (int (*)(...))std::runtime_error::~runtime_error
+24 (int (*)(...))std::runtime_error::~runtime_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::runtime_error
+ size=16 align=8
+ base size=16 base align=8
+std::runtime_error (0x0x7f61c3888478) 0
+ vptr=((& std::runtime_error::_ZTVSt13runtime_error) + 16)
+ std::exception (0x0x7f61c389e180) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f61c3888478)
+
+Vtable for std::range_error
+std::range_error::_ZTVSt11range_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt11range_error)
+16 (int (*)(...))std::range_error::~range_error
+24 (int (*)(...))std::range_error::~range_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::range_error
+ size=16 align=8
+ base size=16 base align=8
+std::range_error (0x0x7f61c38884e0) 0
+ vptr=((& std::range_error::_ZTVSt11range_error) + 16)
+ std::runtime_error (0x0x7f61c3888548) 0
+ primary-for std::range_error (0x0x7f61c38884e0)
+ std::exception (0x0x7f61c389e1e0) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f61c3888548)
+
+Vtable for std::overflow_error
+std::overflow_error::_ZTVSt14overflow_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt14overflow_error)
+16 (int (*)(...))std::overflow_error::~overflow_error
+24 (int (*)(...))std::overflow_error::~overflow_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::overflow_error
+ size=16 align=8
+ base size=16 base align=8
+std::overflow_error (0x0x7f61c38885b0) 0
+ vptr=((& std::overflow_error::_ZTVSt14overflow_error) + 16)
+ std::runtime_error (0x0x7f61c3888618) 0
+ primary-for std::overflow_error (0x0x7f61c38885b0)
+ std::exception (0x0x7f61c389e240) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f61c3888618)
+
+Vtable for std::underflow_error
+std::underflow_error::_ZTVSt15underflow_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt15underflow_error)
+16 (int (*)(...))std::underflow_error::~underflow_error
+24 (int (*)(...))std::underflow_error::~underflow_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::underflow_error
+ size=16 align=8
+ base size=16 base align=8
+std::underflow_error (0x0x7f61c3888680) 0
+ vptr=((& std::underflow_error::_ZTVSt15underflow_error) + 16)
+ std::runtime_error (0x0x7f61c38886e8) 0
+ primary-for std::underflow_error (0x0x7f61c3888680)
+ std::exception (0x0x7f61c389e2a0) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f61c38886e8)
+
+Vtable for std::_V2::error_category
+std::_V2::error_category::_ZTVNSt3_V214error_categoryE: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt3_V214error_categoryE)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))std::_V2::error_category::_M_message
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))std::_V2::error_category::default_error_condition
+64 (int (*)(...))std::_V2::error_category::equivalent
+72 (int (*)(...))std::_V2::error_category::equivalent
+
+Class std::_V2::error_category
+ size=8 align=8
+ base size=8 base align=8
+std::_V2::error_category (0x0x7f61c389e420) 0 nearly-empty
+ vptr=((& std::_V2::error_category::_ZTVNSt3_V214error_categoryE) + 16)
+
+Class std::error_code
+ size=16 align=8
+ base size=16 base align=8
+std::error_code (0x0x7f61c389e780) 0
+
+Class std::error_condition
+ size=16 align=8
+ base size=16 base align=8
+std::error_condition (0x0x7f61c38e2000) 0
+
+Vtable for std::system_error
+std::system_error::_ZTVSt12system_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12system_error)
+16 (int (*)(...))std::system_error::~system_error
+24 (int (*)(...))std::system_error::~system_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::system_error
+ size=32 align=8
+ base size=32 base align=8
+std::system_error (0x0x7f61c3888af8) 0
+ vptr=((& std::system_error::_ZTVSt12system_error) + 16)
+ std::runtime_error (0x0x7f61c3888b60) 0
+ primary-for std::system_error (0x0x7f61c3888af8)
+ std::exception (0x0x7f61c38e2ba0) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f61c3888b60)
+
+Vtable for std::ios_base::failure
+std::ios_base::failure::_ZTVNSt8ios_base7failureB5cxx11E: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt8ios_base7failureB5cxx11E)
+16 (int (*)(...))std::ios_base::failure::~failure
+24 (int (*)(...))std::ios_base::failure::~failure
+32 (int (*)(...))std::ios_base::failure::what
+
+Class std::ios_base::failure
+ size=32 align=8
+ base size=32 base align=8
+std::ios_base::failure (0x0x7f61c3888dd0) 0
+ vptr=((& std::ios_base::failure::_ZTVNSt8ios_base7failureB5cxx11E) + 16)
+ std::system_error (0x0x7f61c3888e38) 0
+ primary-for std::ios_base::failure (0x0x7f61c3888dd0)
+ std::runtime_error (0x0x7f61c3888ea0) 0
+ primary-for std::system_error (0x0x7f61c3888e38)
+ std::exception (0x0x7f61c393f180) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f61c3888ea0)
+
+Class std::ios_base::_Callback_list
+ size=24 align=8
+ base size=24 base align=8
+std::ios_base::_Callback_list (0x0x7f61c393f1e0) 0
+
+Class std::ios_base::_Words
+ size=16 align=8
+ base size=16 base align=8
+std::ios_base::_Words (0x0x7f61c393f240) 0
+
+Class std::ios_base::Init
+ size=1 align=1
+ base size=0 base align=1
+std::ios_base::Init (0x0x7f61c393f2a0) 0 empty
+
+Vtable for std::ios_base
+std::ios_base::_ZTVSt8ios_base: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt8ios_base)
+16 (int (*)(...))std::ios_base::~ios_base
+24 (int (*)(...))std::ios_base::~ios_base
+
+Class std::ios_base
+ size=216 align=8
+ base size=216 base align=8
+std::ios_base (0x0x7f61c393f120) 0
+ vptr=((& std::ios_base::_ZTVSt8ios_base) + 16)
+
+Class std::ctype_base
+ size=1 align=1
+ base size=0 base align=1
+std::ctype_base (0x0x7f61c360dba0) 0 empty
+
+Class std::__num_base
+ size=1 align=1
+ base size=0 base align=1
+std::__num_base (0x0x7f61c36b6d80) 0 empty
+
+VTT for std::basic_ostream<char>
+std::basic_ostream<char>::_ZTTSo: 2 entries
+0 ((& std::basic_ostream<char>::_ZTVSo) + 24)
+8 ((& std::basic_ostream<char>::_ZTVSo) + 64)
+
+VTT for std::basic_ostream<wchar_t>
+std::basic_ostream<wchar_t>::_ZTTSt13basic_ostreamIwSt11char_traitsIwEE: 2 entries
+0 ((& std::basic_ostream<wchar_t>::_ZTVSt13basic_ostreamIwSt11char_traitsIwEE) + 24)
+8 ((& std::basic_ostream<wchar_t>::_ZTVSt13basic_ostreamIwSt11char_traitsIwEE) + 64)
+
+VTT for std::basic_istream<char>
+std::basic_istream<char>::_ZTTSi: 2 entries
+0 ((& std::basic_istream<char>::_ZTVSi) + 24)
+8 ((& std::basic_istream<char>::_ZTVSi) + 64)
+
+VTT for std::basic_istream<wchar_t>
+std::basic_istream<wchar_t>::_ZTTSt13basic_istreamIwSt11char_traitsIwEE: 2 entries
+0 ((& std::basic_istream<wchar_t>::_ZTVSt13basic_istreamIwSt11char_traitsIwEE) + 24)
+8 ((& std::basic_istream<wchar_t>::_ZTVSt13basic_istreamIwSt11char_traitsIwEE) + 64)
+
+Construction vtable for std::basic_istream<char> (0x0x7f61c32865b0 instance) in std::basic_iostream<char>
+std::basic_iostream<char>::_ZTCSd0_Si: 10 entries
+0 24
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISi)
+24 0
+32 0
+40 18446744073709551592
+48 (int (*)(...))-24
+56 (int (*)(...))(& _ZTISi)
+64 0
+72 0
+
+Construction vtable for std::basic_ostream<char> (0x0x7f61c3286680 instance) in std::basic_iostream<char>
+std::basic_iostream<char>::_ZTCSd16_So: 10 entries
+0 8
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISo)
+24 0
+32 0
+40 18446744073709551608
+48 (int (*)(...))-8
+56 (int (*)(...))(& _ZTISo)
+64 0
+72 0
+
+VTT for std::basic_iostream<char>
+std::basic_iostream<char>::_ZTTSd: 7 entries
+0 ((& std::basic_iostream<char>::_ZTVSd) + 24)
+8 ((& std::basic_iostream<char>::_ZTCSd0_Si) + 24)
+16 ((& std::basic_iostream<char>::_ZTCSd0_Si) + 64)
+24 ((& std::basic_iostream<char>::_ZTCSd16_So) + 24)
+32 ((& std::basic_iostream<char>::_ZTCSd16_So) + 64)
+40 ((& std::basic_iostream<char>::_ZTVSd) + 104)
+48 ((& std::basic_iostream<char>::_ZTVSd) + 64)
+
+Construction vtable for std::basic_istream<wchar_t> (0x0x7f61c32c8340 instance) in std::basic_iostream<wchar_t>
+std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E: 10 entries
+0 24
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISt13basic_istreamIwSt11char_traitsIwEE)
+24 0
+32 0
+40 18446744073709551592
+48 (int (*)(...))-24
+56 (int (*)(...))(& _ZTISt13basic_istreamIwSt11char_traitsIwEE)
+64 0
+72 0
+
+Construction vtable for std::basic_ostream<wchar_t> (0x0x7f61c32c8410 instance) in std::basic_iostream<wchar_t>
+std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E: 10 entries
+0 8
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISt13basic_ostreamIwSt11char_traitsIwEE)
+24 0
+32 0
+40 18446744073709551608
+48 (int (*)(...))-8
+56 (int (*)(...))(& _ZTISt13basic_ostreamIwSt11char_traitsIwEE)
+64 0
+72 0
+
+VTT for std::basic_iostream<wchar_t>
+std::basic_iostream<wchar_t>::_ZTTSt14basic_iostreamIwSt11char_traitsIwEE: 7 entries
+0 ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 24)
+8 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E) + 24)
+16 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E) + 64)
+24 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E) + 24)
+32 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E) + 64)
+40 ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 104)
+48 ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 64)
+
+Class QByteArrayDataPtr
+ size=8 align=8
+ base size=8 base align=8
+QByteArrayDataPtr (0x0x7f61c32ef720) 0
+
+Class QByteArray
+ size=8 align=8
+ base size=8 base align=8
+QByteArray (0x0x7f61c32ef780) 0
+
+Class QByteRef
+ size=16 align=8
+ base size=12 base align=8
+QByteRef (0x0x7f61c301db40) 0
+
+Class QStringDataPtr
+ size=8 align=8
+ base size=8 base align=8
+QStringDataPtr (0x0x7f61c30c29c0) 0
+
+Class QStringView
+ size=16 align=8
+ base size=16 base align=8
+QStringView (0x0x7f61c30c2e40) 0
+
+Class QLatin1String
+ size=16 align=8
+ base size=16 base align=8
+QLatin1String (0x0x7f61c2da3f00) 0
+
+Class QString::Null
+ size=1 align=1
+ base size=0 base align=1
+QString::Null (0x0x7f61c2e58ea0) 0 empty
+
+Class QString
+ size=8 align=8
+ base size=8 base align=8
+QString (0x0x7f61c2e58d80) 0
+
+Class QCharRef
+ size=16 align=8
+ base size=12 base align=8
+QCharRef (0x0x7f61c2d18d20) 0
+
+Class QStringRef
+ size=16 align=8
+ base size=16 base align=8
+QStringRef (0x0x7f61c2ab1900) 0
+
+Class QtPrivate::ArgBase
+ size=1 align=1
+ base size=1 base align=1
+QtPrivate::ArgBase (0x0x7f61c2838720) 0
+
+Class QtPrivate::QStringViewArg
+ size=24 align=8
+ base size=24 base align=8
+QtPrivate::QStringViewArg (0x0x7f61c2b57270) 0
+ QtPrivate::ArgBase (0x0x7f61c2838780) 0
+
+Class QtPrivate::QLatin1StringArg
+ size=24 align=8
+ base size=24 base align=8
+QtPrivate::QLatin1StringArg (0x0x7f61c2b572d8) 0
+ QtPrivate::ArgBase (0x0x7f61c2838960) 0
+
+Class std::__erased_type
+ size=1 align=1
+ base size=0 base align=1
+std::__erased_type (0x0x7f61c290c8a0) 0 empty
+
+Class std::allocator_arg_t
+ size=1 align=1
+ base size=0 base align=1
+std::allocator_arg_t (0x0x7f61c290c900) 0 empty
+
+Class std::__uses_alloc_base
+ size=1 align=1
+ base size=0 base align=1
+std::__uses_alloc_base (0x0x7f61c290ca80) 0 empty
+
+Class std::__uses_alloc0::_Sink
+ size=1 align=1
+ base size=0 base align=1
+std::__uses_alloc0::_Sink (0x0x7f61c290cb40) 0 empty
+
+Class std::__uses_alloc0
+ size=1 align=1
+ base size=1 base align=1
+std::__uses_alloc0 (0x0x7f61c2b57680) 0
+ std::__uses_alloc_base (0x0x7f61c290cae0) 0 empty
+
+Class std::_Swallow_assign
+ size=1 align=1
+ base size=0 base align=1
+std::_Swallow_assign (0x0x7f61c2669ea0) 0 empty
+
+Vtable for std::bad_function_call
+std::bad_function_call::_ZTVSt17bad_function_call: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt17bad_function_call)
+16 (int (*)(...))std::bad_function_call::~bad_function_call
+24 (int (*)(...))std::bad_function_call::~bad_function_call
+32 (int (*)(...))std::bad_function_call::what
+
+Class std::bad_function_call
+ size=8 align=8
+ base size=8 base align=8
+std::bad_function_call (0x0x7f61c26d18f0) 0 nearly-empty
+ vptr=((& std::bad_function_call::_ZTVSt17bad_function_call) + 16)
+ std::exception (0x0x7f61c26e27e0) 0 nearly-empty
+ primary-for std::bad_function_call (0x0x7f61c26d18f0)
+
+Class std::_Nocopy_types
+ size=16 align=8
+ base size=16 base align=8
+std::_Nocopy_types (0x0x7f61c26e28a0) 0
+
+Class std::_Any_data
+ size=16 align=8
+ base size=16 base align=8
+std::_Any_data (0x0x7f61c26e2900) 0
+
+Class std::_Function_base
+ size=24 align=8
+ base size=24 base align=8
+std::_Function_base (0x0x7f61c26e2c00) 0
+
+Class QtPrivate::QHashCombine
+ size=1 align=1
+ base size=0 base align=1
+QtPrivate::QHashCombine (0x0x7f61c25170c0) 0 empty
+
+Class QtPrivate::QHashCombineCommutative
+ size=1 align=1
+ base size=0 base align=1
+QtPrivate::QHashCombineCommutative (0x0x7f61c2517180) 0 empty
+
+Class std::_Bit_reference
+ size=16 align=8
+ base size=16 base align=8
+std::_Bit_reference (0x0x7f61c56188a0) 0
+
+Class std::_Bit_iterator_base
+ size=16 align=8
+ base size=12 base align=8
+std::_Bit_iterator_base (0x0x7f61c2555478) 0
+ std::iterator<std::random_access_iterator_tag, bool> (0x0x7f61c563e000) 0 empty
+
+Class std::_Bit_iterator
+ size=16 align=8
+ base size=12 base align=8
+std::_Bit_iterator (0x0x7f61c25555b0) 0
+ std::_Bit_iterator_base (0x0x7f61c2555618) 0
+ std::iterator<std::random_access_iterator_tag, bool> (0x0x7f61c563e660) 0 empty
+
+Class std::_Bit_const_iterator
+ size=16 align=8
+ base size=12 base align=8
+std::_Bit_const_iterator (0x0x7f61c2555680) 0
+ std::_Bit_iterator_base (0x0x7f61c25556e8) 0
+ std::iterator<std::random_access_iterator_tag, bool> (0x0x7f61c563ee40) 0 empty
+
+Class std::__detail::_List_node_base
+ size=16 align=8
+ base size=16 base align=8
+std::__detail::_List_node_base (0x0x7f61c1e8b9c0) 0
+
+Class QListData::NotArrayCompatibleLayout
+ size=1 align=1
+ base size=0 base align=1
+QListData::NotArrayCompatibleLayout (0x0x7f61c1f62780) 0 empty
+
+Class QListData::NotIndirectLayout
+ size=1 align=1
+ base size=0 base align=1
+QListData::NotIndirectLayout (0x0x7f61c1f627e0) 0 empty
+
+Class QListData::ArrayCompatibleLayout
+ size=1 align=1
+ base size=1 base align=1
+QListData::ArrayCompatibleLayout (0x0x7f61c1ea4208) 0 empty
+ QListData::NotIndirectLayout (0x0x7f61c1f62840) 0 empty
+
+Class QListData::InlineWithPaddingLayout
+ size=1 align=1
+ base size=1 base align=1
+QListData::InlineWithPaddingLayout (0x0x7f61c1eb6930) 0 empty
+ QListData::NotArrayCompatibleLayout (0x0x7f61c1f628a0) 0 empty
+ QListData::NotIndirectLayout (0x0x7f61c1f62900) 0 empty
+
+Class QListData::IndirectLayout
+ size=1 align=1
+ base size=1 base align=1
+QListData::IndirectLayout (0x0x7f61c1ea4270) 0 empty
+ QListData::NotArrayCompatibleLayout (0x0x7f61c1f62960) 0 empty
+
+Class QListData::Data
+ size=24 align=8
+ base size=24 base align=8
+QListData::Data (0x0x7f61c1f629c0) 0
+
+Class QListData
+ size=8 align=8
+ base size=8 base align=8
+QListData (0x0x7f61c1f62720) 0
+
+Class QRegExp
+ size=8 align=8
+ base size=8 base align=8
+QRegExp (0x0x7f61c1c56b40) 0
+
+Class QStringMatcher::Data
+ size=272 align=8
+ base size=272 base align=8
+QStringMatcher::Data (0x0x7f61c1d4f0c0) 0
+
+Class QStringMatcher
+ size=1048 align=8
+ base size=1048 base align=8
+QStringMatcher (0x0x7f61c1d4f060) 0
+
+Class QStringList
+ size=8 align=8
+ base size=8 base align=8
+QStringList (0x0x7f61c1d39f08) 0
+ QList<QString> (0x0x7f61c1d39f70) 0
+ QListSpecialMethods<QString> (0x0x7f61c1d4f300) 0 empty
+
+Class QScopedPointerPodDeleter
+ size=1 align=1
+ base size=0 base align=1
+QScopedPointerPodDeleter (0x0x7f61c1a33240) 0 empty
+
+Class std::_Rb_tree_node_base
+ size=32 align=8
+ base size=32 base align=8
+std::_Rb_tree_node_base (0x0x7f61c1ab6480) 0
+
+Class std::_Rb_tree_header
+ size=40 align=8
+ base size=40 base align=8
+std::_Rb_tree_header (0x0x7f61c1ab67e0) 0
+
+Class QtPrivate::AbstractDebugStreamFunction
+ size=16 align=8
+ base size=16 base align=8
+QtPrivate::AbstractDebugStreamFunction (0x0x7f61c1902de0) 0
+
+Class QtPrivate::AbstractComparatorFunction
+ size=24 align=8
+ base size=24 base align=8
+QtPrivate::AbstractComparatorFunction (0x0x7f61c191d180) 0
+
+Class QtPrivate::AbstractConverterFunction
+ size=8 align=8
+ base size=8 base align=8
+QtPrivate::AbstractConverterFunction (0x0x7f61c191d6c0) 0
+
+Class QMetaType
+ size=80 align=8
+ base size=80 base align=8
+QMetaType (0x0x7f61c191dc00) 0
+
+Class QtMetaTypePrivate::VariantData
+ size=24 align=8
+ base size=20 base align=8
+QtMetaTypePrivate::VariantData (0x0x7f61c1970de0) 0
+
+Class QtMetaTypePrivate::VectorBoolElements
+ size=1 align=1
+ base size=0 base align=1
+QtMetaTypePrivate::VectorBoolElements (0x0x7f61c15a84e0) 0 empty
+
+Class QtMetaTypePrivate::QSequentialIterableImpl
+ size=104 align=8
+ base size=104 base align=8
+QtMetaTypePrivate::QSequentialIterableImpl (0x0x7f61c1640360) 0
+
+Class QtMetaTypePrivate::QAssociativeIterableImpl
+ size=112 align=8
+ base size=112 base align=8
+QtMetaTypePrivate::QAssociativeIterableImpl (0x0x7f61c1696a20) 0
+
+Class QtMetaTypePrivate::QPairVariantInterfaceImpl
+ size=40 align=8
+ base size=40 base align=8
+QtMetaTypePrivate::QPairVariantInterfaceImpl (0x0x7f61c16ecf60) 0
+
+Class std::chrono::_V2::system_clock
+ size=1 align=1
+ base size=0 base align=1
+std::chrono::_V2::system_clock (0x0x7f61c11b5540) 0 empty
+
+Class std::chrono::_V2::steady_clock
+ size=1 align=1
+ base size=0 base align=1
+std::chrono::_V2::steady_clock (0x0x7f61c12e3000) 0 empty
+
+Vtable for QObjectData
+QObjectData::_ZTV11QObjectData: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QObjectData)
+16 (int (*)(...))__cxa_pure_virtual
+24 (int (*)(...))__cxa_pure_virtual
+
+Class QObjectData
+ size=48 align=8
+ base size=48 base align=8
+QObjectData (0x0x7f61c12e3060) 0
+ vptr=((& QObjectData::_ZTV11QObjectData) + 16)
+
+Class QObject::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QObject::QPrivateSignal (0x0x7f61c12e3240) 0 empty
+
+Vtable for QObject
+QObject::_ZTV7QObject: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QObject)
+16 (int (*)(...))QObject::metaObject
+24 (int (*)(...))QObject::qt_metacast
+32 (int (*)(...))QObject::qt_metacall
+40 (int (*)(...))QObject::~QObject
+48 (int (*)(...))QObject::~QObject
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QObject
+ size=16 align=8
+ base size=16 base align=8
+QObject (0x0x7f61c12e31e0) 0
+ vptr=((& QObject::_ZTV7QObject) + 16)
+
+Vtable for QObjectUserData
+QObjectUserData::_ZTV15QObjectUserData: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QObjectUserData)
+16 (int (*)(...))QObjectUserData::~QObjectUserData
+24 (int (*)(...))QObjectUserData::~QObjectUserData
+
+Class QObjectUserData
+ size=8 align=8
+ base size=8 base align=8
+QObjectUserData (0x0x7f61c0fb5060) 0 nearly-empty
+ vptr=((& QObjectUserData::_ZTV15QObjectUserData) + 16)
+
+Class QSignalBlocker
+ size=16 align=8
+ base size=10 base align=8
+QSignalBlocker (0x0x7f61c0fb51e0) 0
+
+Class QAbstractAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractAnimation::QPrivateSignal (0x0x7f61c0fb5a80) 0 empty
+
+Vtable for QAbstractAnimation
+QAbstractAnimation::_ZTV18QAbstractAnimation: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QAbstractAnimation)
+16 (int (*)(...))QAbstractAnimation::metaObject
+24 (int (*)(...))QAbstractAnimation::qt_metacast
+32 (int (*)(...))QAbstractAnimation::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAbstractAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+
+Class QAbstractAnimation
+ size=16 align=8
+ base size=16 base align=8
+QAbstractAnimation (0x0x7f61c0faf0d0) 0
+ vptr=((& QAbstractAnimation::_ZTV18QAbstractAnimation) + 16)
+ QObject (0x0x7f61c0fb5a20) 0
+ primary-for QAbstractAnimation (0x0x7f61c0faf0d0)
+
+Class QAnimationDriver::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAnimationDriver::QPrivateSignal (0x0x7f61c0fb5e40) 0 empty
+
+Vtable for QAnimationDriver
+QAnimationDriver::_ZTV16QAnimationDriver: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QAnimationDriver)
+16 (int (*)(...))QAnimationDriver::metaObject
+24 (int (*)(...))QAnimationDriver::qt_metacast
+32 (int (*)(...))QAnimationDriver::qt_metacall
+40 (int (*)(...))QAnimationDriver::~QAnimationDriver
+48 (int (*)(...))QAnimationDriver::~QAnimationDriver
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAnimationDriver::advance
+120 (int (*)(...))QAnimationDriver::elapsed
+128 (int (*)(...))QAnimationDriver::start
+136 (int (*)(...))QAnimationDriver::stop
+
+Class QAnimationDriver
+ size=16 align=8
+ base size=16 base align=8
+QAnimationDriver (0x0x7f61c0faf138) 0
+ vptr=((& QAnimationDriver::_ZTV16QAnimationDriver) + 16)
+ QObject (0x0x7f61c0fb5de0) 0
+ primary-for QAnimationDriver (0x0x7f61c0faf138)
+
+Class QEventLoop::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QEventLoop::QPrivateSignal (0x0x7f61c0ffb0c0) 0 empty
+
+Vtable for QEventLoop
+QEventLoop::_ZTV10QEventLoop: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QEventLoop)
+16 (int (*)(...))QEventLoop::metaObject
+24 (int (*)(...))QEventLoop::qt_metacast
+32 (int (*)(...))QEventLoop::qt_metacall
+40 (int (*)(...))QEventLoop::~QEventLoop
+48 (int (*)(...))QEventLoop::~QEventLoop
+56 (int (*)(...))QEventLoop::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QEventLoop
+ size=16 align=8
+ base size=16 base align=8
+QEventLoop (0x0x7f61c0faf1a0) 0
+ vptr=((& QEventLoop::_ZTV10QEventLoop) + 16)
+ QObject (0x0x7f61c0ffb060) 0
+ primary-for QEventLoop (0x0x7f61c0faf1a0)
+
+Class QEventLoopLocker
+ size=8 align=8
+ base size=8 base align=8
+QEventLoopLocker (0x0x7f61c0ffb960) 0
+
+Class QAbstractEventDispatcher::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractEventDispatcher::QPrivateSignal (0x0x7f61c0ffba20) 0 empty
+
+Class QAbstractEventDispatcher::TimerInfo
+ size=12 align=4
+ base size=12 base align=4
+QAbstractEventDispatcher::TimerInfo (0x0x7f61c0ffba80) 0
+
+Vtable for QAbstractEventDispatcher
+QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher: 28 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QAbstractEventDispatcher)
+16 (int (*)(...))QAbstractEventDispatcher::metaObject
+24 (int (*)(...))QAbstractEventDispatcher::qt_metacast
+32 (int (*)(...))QAbstractEventDispatcher::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))__cxa_pure_virtual
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))__cxa_pure_virtual
+176 (int (*)(...))__cxa_pure_virtual
+184 (int (*)(...))__cxa_pure_virtual
+192 (int (*)(...))__cxa_pure_virtual
+200 (int (*)(...))__cxa_pure_virtual
+208 (int (*)(...))QAbstractEventDispatcher::startingUp
+216 (int (*)(...))QAbstractEventDispatcher::closingDown
+
+Class QAbstractEventDispatcher
+ size=16 align=8
+ base size=16 base align=8
+QAbstractEventDispatcher (0x0x7f61c0faf2d8) 0
+ vptr=((& QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher) + 16)
+ QObject (0x0x7f61c0ffb9c0) 0
+ primary-for QAbstractEventDispatcher (0x0x7f61c0faf2d8)
+
+Class QMapNodeBase
+ size=24 align=8
+ base size=24 base align=8
+QMapNodeBase (0x0x7f61c106da80) 0
+
+Class QMapDataBase
+ size=40 align=8
+ base size=40 base align=8
+QMapDataBase (0x0x7f61c109a720) 0
+
+Class QHashData::Node
+ size=16 align=8
+ base size=16 base align=8
+QHashData::Node (0x0x7f61c0d880c0) 0
+
+Class QHashData
+ size=48 align=8
+ base size=44 base align=8
+QHashData (0x0x7f61c0d88060) 0
+
+Class QHashDummyValue
+ size=1 align=1
+ base size=0 base align=1
+QHashDummyValue (0x0x7f61c0d88360) 0 empty
+
+Class QVariant::PrivateShared
+ size=16 align=8
+ base size=12 base align=8
+QVariant::PrivateShared (0x0x7f61c0e9ca80) 0
+
+Class QVariant::Private::Data
+ size=8 align=8
+ base size=8 base align=8
+QVariant::Private::Data (0x0x7f61c0e9cb40) 0
+
+Class QVariant::Private
+ size=16 align=8
+ base size=12 base align=8
+QVariant::Private (0x0x7f61c0e9cae0) 0
+
+Class QVariant::Handler
+ size=72 align=8
+ base size=72 base align=8
+QVariant::Handler (0x0x7f61c0e9cba0) 0
+
+Class QVariant
+ size=16 align=8
+ base size=16 base align=8
+QVariant (0x0x7f61c0e9ca20) 0
+
+Class QVariantComparisonHelper
+ size=8 align=8
+ base size=8 base align=8
+QVariantComparisonHelper (0x0x7f61c0b8de40) 0
+
+Class QSequentialIterable::const_iterator
+ size=112 align=8
+ base size=112 base align=8
+QSequentialIterable::const_iterator (0x0x7f61c0c5c4e0) 0
+
+Class QSequentialIterable
+ size=104 align=8
+ base size=104 base align=8
+QSequentialIterable (0x0x7f61c0c5c480) 0
+
+Class QAssociativeIterable::const_iterator
+ size=120 align=8
+ base size=120 base align=8
+QAssociativeIterable::const_iterator (0x0x7f61c0c5c600) 0
+
+Class QAssociativeIterable
+ size=112 align=8
+ base size=112 base align=8
+QAssociativeIterable (0x0x7f61c0c5c5a0) 0
+
+Class QModelIndex
+ size=24 align=8
+ base size=24 base align=8
+QModelIndex (0x0x7f61c0d24780) 0
+
+Class QPersistentModelIndex
+ size=8 align=8
+ base size=8 base align=8
+QPersistentModelIndex (0x0x7f61c09983c0) 0
+
+Class QAbstractItemModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractItemModel::QPrivateSignal (0x0x7f61c0a671e0) 0 empty
+
+Vtable for QAbstractItemModel
+QAbstractItemModel::_ZTV18QAbstractItemModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QAbstractItemModel)
+16 (int (*)(...))QAbstractItemModel::metaObject
+24 (int (*)(...))QAbstractItemModel::qt_metacast
+32 (int (*)(...))QAbstractItemModel::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractItemModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAbstractItemModel::hasChildren
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QAbstractItemModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractItemModel::dropMimeData
+240 (int (*)(...))QAbstractItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QAbstractItemModel::flags
+328 (int (*)(...))QAbstractItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QAbstractItemModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractItemModel (0x0x7f61c0a65478) 0
+ vptr=((& QAbstractItemModel::_ZTV18QAbstractItemModel) + 16)
+ QObject (0x0x7f61c0a67180) 0
+ primary-for QAbstractItemModel (0x0x7f61c0a65478)
+
+Class QAbstractTableModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractTableModel::QPrivateSignal (0x0x7f61c0b2f5a0) 0 empty
+
+Vtable for QAbstractTableModel
+QAbstractTableModel::_ZTV19QAbstractTableModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractTableModel)
+16 (int (*)(...))QAbstractTableModel::metaObject
+24 (int (*)(...))QAbstractTableModel::qt_metacast
+32 (int (*)(...))QAbstractTableModel::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractTableModel::index
+120 (int (*)(...))QAbstractTableModel::parent
+128 (int (*)(...))QAbstractTableModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAbstractTableModel::hasChildren
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QAbstractItemModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractTableModel::dropMimeData
+240 (int (*)(...))QAbstractItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QAbstractTableModel::flags
+328 (int (*)(...))QAbstractItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QAbstractTableModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractTableModel (0x0x7f61c0a65a90) 0
+ vptr=((& QAbstractTableModel::_ZTV19QAbstractTableModel) + 16)
+ QAbstractItemModel (0x0x7f61c0a65af8) 0
+ primary-for QAbstractTableModel (0x0x7f61c0a65a90)
+ QObject (0x0x7f61c0b2f540) 0
+ primary-for QAbstractItemModel (0x0x7f61c0a65af8)
+
+Class QAbstractListModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractListModel::QPrivateSignal (0x0x7f61c0b2f720) 0 empty
+
+Vtable for QAbstractListModel
+QAbstractListModel::_ZTV18QAbstractListModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QAbstractListModel)
+16 (int (*)(...))QAbstractListModel::metaObject
+24 (int (*)(...))QAbstractListModel::qt_metacast
+32 (int (*)(...))QAbstractListModel::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractListModel::index
+120 (int (*)(...))QAbstractListModel::parent
+128 (int (*)(...))QAbstractListModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))QAbstractListModel::columnCount
+152 (int (*)(...))QAbstractListModel::hasChildren
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QAbstractItemModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractListModel::dropMimeData
+240 (int (*)(...))QAbstractItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QAbstractListModel::flags
+328 (int (*)(...))QAbstractItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QAbstractListModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractListModel (0x0x7f61c0a65b60) 0
+ vptr=((& QAbstractListModel::_ZTV18QAbstractListModel) + 16)
+ QAbstractItemModel (0x0x7f61c0a65bc8) 0
+ primary-for QAbstractListModel (0x0x7f61c0a65b60)
+ QObject (0x0x7f61c0b2f6c0) 0
+ primary-for QAbstractItemModel (0x0x7f61c0a65bc8)
+
+Vtable for QAbstractNativeEventFilter
+QAbstractNativeEventFilter::_ZTV26QAbstractNativeEventFilter: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAbstractNativeEventFilter)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractNativeEventFilter
+ size=16 align=8
+ base size=16 base align=8
+QAbstractNativeEventFilter (0x0x7f61c0b2fe40) 0
+ vptr=((& QAbstractNativeEventFilter::_ZTV26QAbstractNativeEventFilter) + 16)
+
+Class QAbstractProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractProxyModel::QPrivateSignal (0x0x7f61c0b2ff00) 0 empty
+
+Vtable for QAbstractProxyModel
+QAbstractProxyModel::_ZTV19QAbstractProxyModel: 53 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractProxyModel)
+16 (int (*)(...))QAbstractProxyModel::metaObject
+24 (int (*)(...))QAbstractProxyModel::qt_metacast
+32 (int (*)(...))QAbstractProxyModel::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractProxyModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAbstractProxyModel::hasChildren
+160 (int (*)(...))QAbstractProxyModel::data
+168 (int (*)(...))QAbstractProxyModel::setData
+176 (int (*)(...))QAbstractProxyModel::headerData
+184 (int (*)(...))QAbstractProxyModel::setHeaderData
+192 (int (*)(...))QAbstractProxyModel::itemData
+200 (int (*)(...))QAbstractProxyModel::setItemData
+208 (int (*)(...))QAbstractProxyModel::mimeTypes
+216 (int (*)(...))QAbstractProxyModel::mimeData
+224 (int (*)(...))QAbstractProxyModel::canDropMimeData
+232 (int (*)(...))QAbstractProxyModel::dropMimeData
+240 (int (*)(...))QAbstractProxyModel::supportedDropActions
+248 (int (*)(...))QAbstractProxyModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractProxyModel::fetchMore
+312 (int (*)(...))QAbstractProxyModel::canFetchMore
+320 (int (*)(...))QAbstractProxyModel::flags
+328 (int (*)(...))QAbstractProxyModel::sort
+336 (int (*)(...))QAbstractProxyModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractProxyModel::submit
+376 (int (*)(...))QAbstractProxyModel::revert
+384 (int (*)(...))QAbstractProxyModel::setSourceModel
+392 (int (*)(...))__cxa_pure_virtual
+400 (int (*)(...))__cxa_pure_virtual
+408 (int (*)(...))QAbstractProxyModel::mapSelectionToSource
+416 (int (*)(...))QAbstractProxyModel::mapSelectionFromSource
+
+Class QAbstractProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractProxyModel (0x0x7f61c0a65c98) 0
+ vptr=((& QAbstractProxyModel::_ZTV19QAbstractProxyModel) + 16)
+ QAbstractItemModel (0x0x7f61c0a65d00) 0
+ primary-for QAbstractProxyModel (0x0x7f61c0a65c98)
+ QObject (0x0x7f61c0b2fea0) 0
+ primary-for QAbstractItemModel (0x0x7f61c0a65d00)
+
+Class QAbstractState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractState::QPrivateSignal (0x0x7f61c07b3180) 0 empty
+
+Vtable for QAbstractState
+QAbstractState::_ZTV14QAbstractState: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QAbstractState)
+16 (int (*)(...))QAbstractState::metaObject
+24 (int (*)(...))QAbstractState::qt_metacast
+32 (int (*)(...))QAbstractState::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAbstractState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractState
+ size=16 align=8
+ base size=16 base align=8
+QAbstractState (0x0x7f61c0a65d68) 0
+ vptr=((& QAbstractState::_ZTV14QAbstractState) + 16)
+ QObject (0x0x7f61c07b3120) 0
+ primary-for QAbstractState (0x0x7f61c0a65d68)
+
+Class QAbstractTransition::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractTransition::QPrivateSignal (0x0x7f61c07b33c0) 0 empty
+
+Vtable for QAbstractTransition
+QAbstractTransition::_ZTV19QAbstractTransition: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractTransition)
+16 (int (*)(...))QAbstractTransition::metaObject
+24 (int (*)(...))QAbstractTransition::qt_metacast
+32 (int (*)(...))QAbstractTransition::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAbstractTransition::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractTransition
+ size=16 align=8
+ base size=16 base align=8
+QAbstractTransition (0x0x7f61c0a65dd0) 0
+ vptr=((& QAbstractTransition::_ZTV19QAbstractTransition) + 16)
+ QObject (0x0x7f61c07b3360) 0
+ primary-for QAbstractTransition (0x0x7f61c0a65dd0)
+
+Class QAnimationGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAnimationGroup::QPrivateSignal (0x0x7f61c07b36c0) 0 empty
+
+Vtable for QAnimationGroup
+QAnimationGroup::_ZTV15QAnimationGroup: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QAnimationGroup)
+16 (int (*)(...))QAnimationGroup::metaObject
+24 (int (*)(...))QAnimationGroup::qt_metacast
+32 (int (*)(...))QAnimationGroup::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAnimationGroup::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+
+Class QAnimationGroup
+ size=16 align=8
+ base size=16 base align=8
+QAnimationGroup (0x0x7f61c0a65e38) 0
+ vptr=((& QAnimationGroup::_ZTV15QAnimationGroup) + 16)
+ QAbstractAnimation (0x0x7f61c0a65ea0) 0
+ primary-for QAnimationGroup (0x0x7f61c0a65e38)
+ QObject (0x0x7f61c07b3660) 0
+ primary-for QAbstractAnimation (0x0x7f61c0a65ea0)
+
+Class QBasicTimer
+ size=4 align=4
+ base size=4 base align=4
+QBasicTimer (0x0x7f61c08239c0) 0
+
+Class QBitArray
+ size=8 align=8
+ base size=8 base align=8
+QBitArray (0x0x7f61c08bc360) 0
+
+Class QBitRef
+ size=16 align=8
+ base size=12 base align=8
+QBitRef (0x0x7f61c090e7e0) 0
+
+Class QIODevice::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QIODevice::QPrivateSignal (0x0x7f61c0962a80) 0 empty
+
+Vtable for QIODevice
+QIODevice::_ZTV9QIODevice: 30 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QIODevice)
+16 (int (*)(...))QIODevice::metaObject
+24 (int (*)(...))QIODevice::qt_metacast
+32 (int (*)(...))QIODevice::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QIODevice::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QIODevice::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QIODevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))__cxa_pure_virtual
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))__cxa_pure_virtual
+
+Class QIODevice
+ size=16 align=8
+ base size=16 base align=8
+QIODevice (0x0x7f61c096f478) 0
+ vptr=((& QIODevice::_ZTV9QIODevice) + 16)
+ QObject (0x0x7f61c0962a20) 0
+ primary-for QIODevice (0x0x7f61c096f478)
+
+Class QBuffer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QBuffer::QPrivateSignal (0x0x7f61c05b0420) 0 empty
+
+Vtable for QBuffer
+QBuffer::_ZTV7QBuffer: 30 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QBuffer)
+16 (int (*)(...))QBuffer::metaObject
+24 (int (*)(...))QBuffer::qt_metacast
+32 (int (*)(...))QBuffer::qt_metacall
+40 (int (*)(...))QBuffer::~QBuffer
+48 (int (*)(...))QBuffer::~QBuffer
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QBuffer::connectNotify
+104 (int (*)(...))QBuffer::disconnectNotify
+112 (int (*)(...))QIODevice::isSequential
+120 (int (*)(...))QBuffer::open
+128 (int (*)(...))QBuffer::close
+136 (int (*)(...))QBuffer::pos
+144 (int (*)(...))QBuffer::size
+152 (int (*)(...))QBuffer::seek
+160 (int (*)(...))QBuffer::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QBuffer::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QBuffer::readData
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))QBuffer::writeData
+
+Class QBuffer
+ size=16 align=8
+ base size=16 base align=8
+QBuffer (0x0x7f61c096f5b0) 0
+ vptr=((& QBuffer::_ZTV7QBuffer) + 16)
+ QIODevice (0x0x7f61c096f618) 0
+ primary-for QBuffer (0x0x7f61c096f5b0)
+ QObject (0x0x7f61c05b03c0) 0
+ primary-for QIODevice (0x0x7f61c096f618)
+
+Class QByteArrayMatcher::Data
+ size=272 align=8
+ base size=272 base align=8
+QByteArrayMatcher::Data (0x0x7f61c05b06c0) 0
+
+Class QByteArrayMatcher
+ size=1040 align=8
+ base size=1040 base align=8
+QByteArrayMatcher (0x0x7f61c05b0660) 0
+
+Class QStaticByteArrayMatcherBase::Skiptable
+ size=256 align=1
+ base size=256 base align=1
+QStaticByteArrayMatcherBase::Skiptable (0x0x7f61c05b0840) 0
+
+Class QStaticByteArrayMatcherBase
+ size=256 align=16
+ base size=256 base align=16
+QStaticByteArrayMatcherBase (0x0x7f61c05b07e0) 0
+
+Class QSharedData
+ size=4 align=4
+ base size=4 base align=4
+QSharedData (0x0x7f61c05ff720) 0
+
+Class QLocale
+ size=8 align=8
+ base size=8 base align=8
+QLocale (0x0x7f61c0642600) 0
+
+Class QCalendar::YearMonthDay
+ size=12 align=4
+ base size=12 base align=4
+QCalendar::YearMonthDay (0x0x7f61c039bae0) 0
+
+Class QCalendar
+ size=8 align=8
+ base size=8 base align=8
+QCalendar (0x0x7f61c039ba80) 0
+
+Class QDate
+ size=8 align=8
+ base size=8 base align=8
+QDate (0x0x7f61c03e4300) 0
+
+Class QTime
+ size=4 align=4
+ base size=4 base align=4
+QTime (0x0x7f61c043aba0) 0
+
+Class QDateTime::ShortData
+ size=8 align=8
+ base size=8 base align=8
+QDateTime::ShortData (0x0x7f61c04a9840) 0
+
+Class QDateTime::Data
+ size=8 align=8
+ base size=8 base align=8
+QDateTime::Data (0x0x7f61c04a98a0) 0
+
+Class QDateTime
+ size=8 align=8
+ base size=8 base align=8
+QDateTime (0x0x7f61c04a97e0) 0
+
+Vtable for QTextStream
+QTextStream::_ZTV11QTextStream: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTextStream)
+16 (int (*)(...))QTextStream::~QTextStream
+24 (int (*)(...))QTextStream::~QTextStream
+
+Class QTextStream
+ size=16 align=8
+ base size=16 base align=8
+QTextStream (0x0x7f61c0579f60) 0
+ vptr=((& QTextStream::_ZTV11QTextStream) + 16)
+
+Class QTextStreamManipulator
+ size=40 align=8
+ base size=38 base align=8
+QTextStreamManipulator (0x0x7f61c01bb840) 0
+
+Class QContiguousCacheData
+ size=24 align=4
+ base size=24 base align=4
+QContiguousCacheData (0x0x7f61c026e4e0) 0
+
+Vtable for __gnu_cxx::__concurrence_lock_error
+__gnu_cxx::__concurrence_lock_error::_ZTVN9__gnu_cxx24__concurrence_lock_errorE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx24__concurrence_lock_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error
+24 (int (*)(...))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error
+32 (int (*)(...))__gnu_cxx::__concurrence_lock_error::what
+
+Class __gnu_cxx::__concurrence_lock_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_lock_error (0x0x7f61c018e618) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_lock_error::_ZTVN9__gnu_cxx24__concurrence_lock_errorE) + 16)
+ std::exception (0x0x7f61c02bc360) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_lock_error (0x0x7f61c018e618)
+
+Vtable for __gnu_cxx::__concurrence_unlock_error
+__gnu_cxx::__concurrence_unlock_error::_ZTVN9__gnu_cxx26__concurrence_unlock_errorE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx26__concurrence_unlock_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error
+24 (int (*)(...))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error
+32 (int (*)(...))__gnu_cxx::__concurrence_unlock_error::what
+
+Class __gnu_cxx::__concurrence_unlock_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_unlock_error (0x0x7f61c018e680) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_unlock_error::_ZTVN9__gnu_cxx26__concurrence_unlock_errorE) + 16)
+ std::exception (0x0x7f61c02bc480) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_unlock_error (0x0x7f61c018e680)
+
+Vtable for __gnu_cxx::__concurrence_broadcast_error
+__gnu_cxx::__concurrence_broadcast_error::_ZTVN9__gnu_cxx29__concurrence_broadcast_errorE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx29__concurrence_broadcast_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::~__concurrence_broadcast_error
+24 (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::~__concurrence_broadcast_error
+32 (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::what
+
+Class __gnu_cxx::__concurrence_broadcast_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_broadcast_error (0x0x7f61c018e6e8) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_broadcast_error::_ZTVN9__gnu_cxx29__concurrence_broadcast_errorE) + 16)
+ std::exception (0x0x7f61c02bc5a0) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_broadcast_error (0x0x7f61c018e6e8)
+
+Vtable for __gnu_cxx::__concurrence_wait_error
+__gnu_cxx::__concurrence_wait_error::_ZTVN9__gnu_cxx24__concurrence_wait_errorE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx24__concurrence_wait_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_wait_error::~__concurrence_wait_error
+24 (int (*)(...))__gnu_cxx::__concurrence_wait_error::~__concurrence_wait_error
+32 (int (*)(...))__gnu_cxx::__concurrence_wait_error::what
+
+Class __gnu_cxx::__concurrence_wait_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_wait_error (0x0x7f61c018e7b8) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_wait_error::_ZTVN9__gnu_cxx24__concurrence_wait_errorE) + 16)
+ std::exception (0x0x7f61c02bc6c0) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_wait_error (0x0x7f61c018e7b8)
+
+Class __gnu_cxx::__mutex
+ size=40 align=8
+ base size=40 base align=8
+__gnu_cxx::__mutex (0x0x7f61c02e2720) 0
+
+Class __gnu_cxx::__recursive_mutex
+ size=40 align=8
+ base size=40 base align=8
+__gnu_cxx::__recursive_mutex (0x0x7f61c02e2a20) 0
+
+Class __gnu_cxx::__scoped_lock
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__scoped_lock (0x0x7f61c02e2d20) 0
+
+Class __gnu_cxx::__cond
+ size=48 align=8
+ base size=48 base align=8
+__gnu_cxx::__cond (0x0x7f61c03070c0) 0
+
+Vtable for std::bad_weak_ptr
+std::bad_weak_ptr::_ZTVSt12bad_weak_ptr: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12bad_weak_ptr)
+16 (int (*)(...))std::bad_weak_ptr::~bad_weak_ptr
+24 (int (*)(...))std::bad_weak_ptr::~bad_weak_ptr
+32 (int (*)(...))std::bad_weak_ptr::what
+
+Class std::bad_weak_ptr
+ size=8 align=8
+ base size=8 base align=8
+std::bad_weak_ptr (0x0x7f61c018e820) 0 nearly-empty
+ vptr=((& std::bad_weak_ptr::_ZTVSt12bad_weak_ptr) + 16)
+ std::exception (0x0x7f61bff832a0) 0 nearly-empty
+ primary-for std::bad_weak_ptr (0x0x7f61c018e820)
+
+Class std::_Sp_make_shared_tag
+ size=1 align=1
+ base size=0 base align=1
+std::_Sp_make_shared_tag (0x0x7f61bffeb240) 0 empty
+
+Class std::__sp_array_delete
+ size=1 align=1
+ base size=0 base align=1
+std::__sp_array_delete (0x0x7f61bffeb660) 0 empty
+
+Class std::_Sp_locker
+ size=2 align=1
+ base size=2 base align=1
+std::_Sp_locker (0x0x7f61c012a4e0) 0
+
+Class QtSharedPointer::NormalDeleter
+ size=1 align=1
+ base size=0 base align=1
+QtSharedPointer::NormalDeleter (0x0x7f61c01609c0) 0 empty
+
+Class QtSharedPointer::ExternalRefCountData
+ size=16 align=8
+ base size=16 base align=8
+QtSharedPointer::ExternalRefCountData (0x0x7f61c0160b40) 0
+
+Class QtPrivate::EnableInternalData
+ size=1 align=1
+ base size=0 base align=1
+QtPrivate::EnableInternalData (0x0x7f61bfdea480) 0 empty
+
+Class QDebug::Stream
+ size=80 align=8
+ base size=76 base align=8
+QDebug::Stream (0x0x7f61bfe14b40) 0
+
+Class QDebug
+ size=8 align=8
+ base size=8 base align=8
+QDebug (0x0x7f61bfe14ae0) 0
+
+Class QDebugStateSaver
+ size=8 align=8
+ base size=8 base align=8
+QDebugStateSaver (0x0x7f61bfba8480) 0
+
+Class QNoDebug
+ size=1 align=1
+ base size=0 base align=1
+QNoDebug (0x0x7f61bfba8540) 0 empty
+
+Class QCborError
+ size=4 align=4
+ base size=4 base align=4
+QCborError (0x0x7f61bfc2c780) 0
+
+Class QRegularExpression
+ size=8 align=8
+ base size=8 base align=8
+QRegularExpression (0x0x7f61bfc2cf00) 0
+
+Class QRegularExpressionMatch
+ size=8 align=8
+ base size=8 base align=8
+QRegularExpressionMatch (0x0x7f61bfce7de0) 0
+
+Class QRegularExpressionMatchIterator
+ size=8 align=8
+ base size=8 base align=8
+QRegularExpressionMatchIterator (0x0x7f61bfd4dba0) 0
+
+Class QUrl
+ size=8 align=8
+ base size=8 base align=8
+QUrl (0x0x7f61bf9cb600) 0
+
+Class QUuid
+ size=16 align=4
+ base size=16 base align=4
+QUuid (0x0x7f61bfb155a0) 0
+
+Class QCborParserError
+ size=16 align=8
+ base size=12 base align=8
+QCborParserError (0x0x7f61bf798120) 0
+
+Class QCborValue
+ size=24 align=8
+ base size=20 base align=8
+QCborValue (0x0x7f61bf7981e0) 0
+
+Class QCborValueRef
+ size=16 align=8
+ base size=16 base align=8
+QCborValueRef (0x0x7f61bf5dad80) 0
+
+Class QCborArray::Iterator
+ size=16 align=8
+ base size=16 base align=8
+QCborArray::Iterator (0x0x7f61bf6927e0) 0
+
+Class QCborArray::ConstIterator
+ size=16 align=8
+ base size=16 base align=8
+QCborArray::ConstIterator (0x0x7f61bf692840) 0
+
+Class QCborArray
+ size=8 align=8
+ base size=8 base align=8
+QCborArray (0x0x7f61bf692780) 0
+
+Class QCborMap::Iterator
+ size=16 align=8
+ base size=16 base align=8
+QCborMap::Iterator (0x0x7f61bf40d420) 0
+
+Class QCborMap::ConstIterator
+ size=16 align=8
+ base size=16 base align=8
+QCborMap::ConstIterator (0x0x7f61bf40d480) 0
+
+Class QCborMap
+ size=8 align=8
+ base size=8 base align=8
+QCborMap (0x0x7f61bf40d3c0) 0
+
+Class qfloat16::Wrap
+ size=2 align=2
+ base size=2 base align=2
+qfloat16::Wrap (0x0x7f61bf217c00) 0
+
+Class qfloat16
+ size=2 align=2
+ base size=2 base align=2
+qfloat16 (0x0x7f61bf217ba0) 0
+
+Class QCborStreamWriter
+ size=8 align=8
+ base size=8 base align=8
+QCborStreamWriter (0x0x7f61bf2fb8a0) 0
+
+Class QCborStreamReader
+ size=24 align=8
+ base size=20 base align=8
+QCborStreamReader (0x0x7f61bf32f600) 0
+
+Class QCollatorSortKey
+ size=8 align=8
+ base size=8 base align=8
+QCollatorSortKey (0x0x7f61befb4720) 0
+
+Class QCollator
+ size=8 align=8
+ base size=8 base align=8
+QCollator (0x0x7f61befb4900) 0
+
+Class QCommandLineOption
+ size=8 align=8
+ base size=8 base align=8
+QCommandLineOption (0x0x7f61bf0adf00) 0
+
+Vtable for QEvent
+QEvent::_ZTV6QEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QEvent)
+16 (int (*)(...))QEvent::~QEvent
+24 (int (*)(...))QEvent::~QEvent
+
+Class QEvent
+ size=24 align=8
+ base size=20 base align=8
+QEvent (0x0x7f61beda5480) 0
+ vptr=((& QEvent::_ZTV6QEvent) + 16)
+
+Vtable for QTimerEvent
+QTimerEvent::_ZTV11QTimerEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTimerEvent)
+16 (int (*)(...))QTimerEvent::~QTimerEvent
+24 (int (*)(...))QTimerEvent::~QTimerEvent
+
+Class QTimerEvent
+ size=24 align=8
+ base size=24 base align=8
+QTimerEvent (0x0x7f61bed86270) 0
+ vptr=((& QTimerEvent::_ZTV11QTimerEvent) + 16)
+ QEvent (0x0x7f61beda5840) 0
+ primary-for QTimerEvent (0x0x7f61bed86270)
+
+Vtable for QChildEvent
+QChildEvent::_ZTV11QChildEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QChildEvent)
+16 (int (*)(...))QChildEvent::~QChildEvent
+24 (int (*)(...))QChildEvent::~QChildEvent
+
+Class QChildEvent
+ size=32 align=8
+ base size=32 base align=8
+QChildEvent (0x0x7f61bed862d8) 0
+ vptr=((& QChildEvent::_ZTV11QChildEvent) + 16)
+ QEvent (0x0x7f61beda5900) 0
+ primary-for QChildEvent (0x0x7f61bed862d8)
+
+Vtable for QDynamicPropertyChangeEvent
+QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QDynamicPropertyChangeEvent)
+16 (int (*)(...))QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent
+24 (int (*)(...))QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent
+
+Class QDynamicPropertyChangeEvent
+ size=32 align=8
+ base size=32 base align=8
+QDynamicPropertyChangeEvent (0x0x7f61bed86820) 0
+ vptr=((& QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent) + 16)
+ QEvent (0x0x7f61beda5f60) 0
+ primary-for QDynamicPropertyChangeEvent (0x0x7f61bed86820)
+
+Vtable for QDeferredDeleteEvent
+QDeferredDeleteEvent::_ZTV20QDeferredDeleteEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QDeferredDeleteEvent)
+16 (int (*)(...))QDeferredDeleteEvent::~QDeferredDeleteEvent
+24 (int (*)(...))QDeferredDeleteEvent::~QDeferredDeleteEvent
+
+Class QDeferredDeleteEvent
+ size=24 align=8
+ base size=24 base align=8
+QDeferredDeleteEvent (0x0x7f61bed86888) 0
+ vptr=((& QDeferredDeleteEvent::_ZTV20QDeferredDeleteEvent) + 16)
+ QEvent (0x0x7f61bede8060) 0
+ primary-for QDeferredDeleteEvent (0x0x7f61bed86888)
+
+Class QCoreApplication::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QCoreApplication::QPrivateSignal (0x0x7f61bede8180) 0 empty
+
+Vtable for QCoreApplication
+QCoreApplication::_ZTV16QCoreApplication: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QCoreApplication)
+16 (int (*)(...))QCoreApplication::metaObject
+24 (int (*)(...))QCoreApplication::qt_metacast
+32 (int (*)(...))QCoreApplication::qt_metacall
+40 (int (*)(...))QCoreApplication::~QCoreApplication
+48 (int (*)(...))QCoreApplication::~QCoreApplication
+56 (int (*)(...))QCoreApplication::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QCoreApplication::notify
+120 (int (*)(...))QCoreApplication::compressEvent
+
+Class QCoreApplication
+ size=16 align=8
+ base size=16 base align=8
+QCoreApplication (0x0x7f61bed868f0) 0
+ vptr=((& QCoreApplication::_ZTV16QCoreApplication) + 16)
+ QObject (0x0x7f61bede8120) 0
+ primary-for QCoreApplication (0x0x7f61bed868f0)
+
+Class QCommandLineParser
+ size=8 align=8
+ base size=8 base align=8
+QCommandLineParser (0x0x7f61bede83c0) 0
+
+Class QConcatenateTablesProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QConcatenateTablesProxyModel::QPrivateSignal (0x0x7f61bede8540) 0 empty
+
+Vtable for QConcatenateTablesProxyModel
+QConcatenateTablesProxyModel::_ZTV28QConcatenateTablesProxyModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI28QConcatenateTablesProxyModel)
+16 (int (*)(...))QConcatenateTablesProxyModel::metaObject
+24 (int (*)(...))QConcatenateTablesProxyModel::qt_metacast
+32 (int (*)(...))QConcatenateTablesProxyModel::qt_metacall
+40 (int (*)(...))QConcatenateTablesProxyModel::~QConcatenateTablesProxyModel
+48 (int (*)(...))QConcatenateTablesProxyModel::~QConcatenateTablesProxyModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QConcatenateTablesProxyModel::index
+120 (int (*)(...))QConcatenateTablesProxyModel::parent
+128 (int (*)(...))QAbstractItemModel::sibling
+136 (int (*)(...))QConcatenateTablesProxyModel::rowCount
+144 (int (*)(...))QConcatenateTablesProxyModel::columnCount
+152 (int (*)(...))QAbstractItemModel::hasChildren
+160 (int (*)(...))QConcatenateTablesProxyModel::data
+168 (int (*)(...))QConcatenateTablesProxyModel::setData
+176 (int (*)(...))QConcatenateTablesProxyModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QConcatenateTablesProxyModel::itemData
+200 (int (*)(...))QConcatenateTablesProxyModel::setItemData
+208 (int (*)(...))QConcatenateTablesProxyModel::mimeTypes
+216 (int (*)(...))QConcatenateTablesProxyModel::mimeData
+224 (int (*)(...))QConcatenateTablesProxyModel::canDropMimeData
+232 (int (*)(...))QConcatenateTablesProxyModel::dropMimeData
+240 (int (*)(...))QAbstractItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QConcatenateTablesProxyModel::flags
+328 (int (*)(...))QAbstractItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QConcatenateTablesProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QConcatenateTablesProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QConcatenateTablesProxyModel (0x0x7f61bed86958) 0
+ vptr=((& QConcatenateTablesProxyModel::_ZTV28QConcatenateTablesProxyModel) + 16)
+ QAbstractItemModel (0x0x7f61bed869c0) 0
+ primary-for QConcatenateTablesProxyModel (0x0x7f61bed86958)
+ QObject (0x0x7f61bede84e0) 0
+ primary-for QAbstractItemModel (0x0x7f61bed869c0)
+
+Class QCryptographicHash
+ size=8 align=8
+ base size=8 base align=8
+QCryptographicHash (0x0x7f61bede8720) 0
+
+Class QDataStream
+ size=32 align=8
+ base size=32 base align=8
+QDataStream (0x0x7f61bede8840) 0
+
+Class QtPrivate::StreamStateSaver
+ size=16 align=8
+ base size=12 base align=8
+QtPrivate::StreamStateSaver (0x0x7f61bede89c0) 0
+
+Class QElapsedTimer
+ size=16 align=8
+ base size=16 base align=8
+QElapsedTimer (0x0x7f61beea4120) 0
+
+Class QDeadlineTimer
+ size=16 align=8
+ base size=16 base align=8
+QDeadlineTimer (0x0x7f61beea4840) 0
+
+Class QFileDevice::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFileDevice::QPrivateSignal (0x0x7f61bebe9540) 0 empty
+
+Vtable for QFileDevice
+QFileDevice::_ZTV11QFileDevice: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFileDevice)
+16 (int (*)(...))QFileDevice::metaObject
+24 (int (*)(...))QFileDevice::qt_metacast
+32 (int (*)(...))QFileDevice::qt_metacall
+40 (int (*)(...))QFileDevice::~QFileDevice
+48 (int (*)(...))QFileDevice::~QFileDevice
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QFileDevice::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFileDevice::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QFileDevice::writeData
+240 (int (*)(...))QFileDevice::fileName
+248 (int (*)(...))QFileDevice::resize
+256 (int (*)(...))QFileDevice::permissions
+264 (int (*)(...))QFileDevice::setPermissions
+
+Class QFileDevice
+ size=16 align=8
+ base size=16 base align=8
+QFileDevice (0x0x7f61bebd8bc8) 0
+ vptr=((& QFileDevice::_ZTV11QFileDevice) + 16)
+ QIODevice (0x0x7f61bebd8c30) 0
+ primary-for QFileDevice (0x0x7f61bebd8bc8)
+ QObject (0x0x7f61bebe94e0) 0
+ primary-for QIODevice (0x0x7f61bebd8c30)
+
+Class QFile::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFile::QPrivateSignal (0x0x7f61bebe9e40) 0 empty
+
+Vtable for QFile
+QFile::_ZTV5QFile: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI5QFile)
+16 (int (*)(...))QFile::metaObject
+24 (int (*)(...))QFile::qt_metacast
+32 (int (*)(...))QFile::qt_metacall
+40 (int (*)(...))QFile::~QFile
+48 (int (*)(...))QFile::~QFile
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QFile::open
+128 (int (*)(...))QFileDevice::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFile::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QFileDevice::writeData
+240 (int (*)(...))QFile::fileName
+248 (int (*)(...))QFile::resize
+256 (int (*)(...))QFile::permissions
+264 (int (*)(...))QFile::setPermissions
+
+Class QFile
+ size=16 align=8
+ base size=16 base align=8
+QFile (0x0x7f61bebd8d68) 0
+ vptr=((& QFile::_ZTV5QFile) + 16)
+ QFileDevice (0x0x7f61bebd8dd0) 0
+ primary-for QFile (0x0x7f61bebd8d68)
+ QIODevice (0x0x7f61bebd8e38) 0
+ primary-for QFileDevice (0x0x7f61bebd8dd0)
+ QObject (0x0x7f61bebe9de0) 0
+ primary-for QIODevice (0x0x7f61bebd8e38)
+
+Class QFileInfo
+ size=8 align=8
+ base size=8 base align=8
+QFileInfo (0x0x7f61bec594e0) 0
+
+Class QDir
+ size=8 align=8
+ base size=8 base align=8
+QDir (0x0x7f61bed283c0) 0
+
+Class QDirIterator
+ size=8 align=8
+ base size=8 base align=8
+QDirIterator (0x0x7f61bea443c0) 0
+
+Class QEasingCurve
+ size=8 align=8
+ base size=8 base align=8
+QEasingCurve (0x0x7f61bea44b40) 0
+
+Class QEventTransition::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QEventTransition::QPrivateSignal (0x0x7f61be781c60) 0 empty
+
+Vtable for QEventTransition
+QEventTransition::_ZTV16QEventTransition: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QEventTransition)
+16 (int (*)(...))QEventTransition::metaObject
+24 (int (*)(...))QEventTransition::qt_metacast
+32 (int (*)(...))QEventTransition::qt_metacall
+40 (int (*)(...))QEventTransition::~QEventTransition
+48 (int (*)(...))QEventTransition::~QEventTransition
+56 (int (*)(...))QEventTransition::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QEventTransition::eventTest
+120 (int (*)(...))QEventTransition::onTransition
+
+Class QEventTransition
+ size=16 align=8
+ base size=16 base align=8
+QEventTransition (0x0x7f61beb4caf8) 0
+ vptr=((& QEventTransition::_ZTV16QEventTransition) + 16)
+ QAbstractTransition (0x0x7f61beb4cb60) 0
+ primary-for QEventTransition (0x0x7f61beb4caf8)
+ QObject (0x0x7f61be781c00) 0
+ primary-for QAbstractTransition (0x0x7f61beb4cb60)
+
+Vtable for QException
+QException::_ZTV10QException: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QException)
+16 (int (*)(...))QException::~QException
+24 (int (*)(...))QException::~QException
+32 (int (*)(...))std::exception::what
+40 (int (*)(...))QException::raise
+48 (int (*)(...))QException::clone
+
+Class QException
+ size=8 align=8
+ base size=8 base align=8
+QException (0x0x7f61beb4cbc8) 0 nearly-empty
+ vptr=((& QException::_ZTV10QException) + 16)
+ std::exception (0x0x7f61be781e40) 0 nearly-empty
+ primary-for QException (0x0x7f61beb4cbc8)
+
+Vtable for QUnhandledException
+QUnhandledException::_ZTV19QUnhandledException: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QUnhandledException)
+16 (int (*)(...))QUnhandledException::~QUnhandledException
+24 (int (*)(...))QUnhandledException::~QUnhandledException
+32 (int (*)(...))std::exception::what
+40 (int (*)(...))QUnhandledException::raise
+48 (int (*)(...))QUnhandledException::clone
+
+Class QUnhandledException
+ size=8 align=8
+ base size=8 base align=8
+QUnhandledException (0x0x7f61beb4cc30) 0 nearly-empty
+ vptr=((& QUnhandledException::_ZTV19QUnhandledException) + 16)
+ QException (0x0x7f61beb4cc98) 0 nearly-empty
+ primary-for QUnhandledException (0x0x7f61beb4cc30)
+ std::exception (0x0x7f61be781ea0) 0 nearly-empty
+ primary-for QException (0x0x7f61beb4cc98)
+
+Class QtPrivate::ExceptionHolder
+ size=8 align=8
+ base size=8 base align=8
+QtPrivate::ExceptionHolder (0x0x7f61be781f00) 0
+
+Class QtPrivate::ExceptionStore
+ size=8 align=8
+ base size=8 base align=8
+QtPrivate::ExceptionStore (0x0x7f61be7c7000) 0
+
+Vtable for QFactoryInterface
+QFactoryInterface::_ZTV17QFactoryInterface: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QFactoryInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QFactoryInterface
+ size=8 align=8
+ base size=8 base align=8
+QFactoryInterface (0x0x7f61be7c7060) 0 nearly-empty
+ vptr=((& QFactoryInterface::_ZTV17QFactoryInterface) + 16)
+
+Class QFileSelector::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFileSelector::QPrivateSignal (0x0x7f61be7c72a0) 0 empty
+
+Vtable for QFileSelector
+QFileSelector::_ZTV13QFileSelector: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QFileSelector)
+16 (int (*)(...))QFileSelector::metaObject
+24 (int (*)(...))QFileSelector::qt_metacast
+32 (int (*)(...))QFileSelector::qt_metacall
+40 (int (*)(...))QFileSelector::~QFileSelector
+48 (int (*)(...))QFileSelector::~QFileSelector
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QFileSelector
+ size=16 align=8
+ base size=16 base align=8
+QFileSelector (0x0x7f61beb4cd00) 0
+ vptr=((& QFileSelector::_ZTV13QFileSelector) + 16)
+ QObject (0x0x7f61be7c7240) 0
+ primary-for QFileSelector (0x0x7f61beb4cd00)
+
+Class QFileSystemWatcher::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFileSystemWatcher::QPrivateSignal (0x0x7f61be7c74e0) 0 empty
+
+Vtable for QFileSystemWatcher
+QFileSystemWatcher::_ZTV18QFileSystemWatcher: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QFileSystemWatcher)
+16 (int (*)(...))QFileSystemWatcher::metaObject
+24 (int (*)(...))QFileSystemWatcher::qt_metacast
+32 (int (*)(...))QFileSystemWatcher::qt_metacall
+40 (int (*)(...))QFileSystemWatcher::~QFileSystemWatcher
+48 (int (*)(...))QFileSystemWatcher::~QFileSystemWatcher
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QFileSystemWatcher
+ size=16 align=8
+ base size=16 base align=8
+QFileSystemWatcher (0x0x7f61beb4cd68) 0
+ vptr=((& QFileSystemWatcher::_ZTV18QFileSystemWatcher) + 16)
+ QObject (0x0x7f61be7c7480) 0
+ primary-for QFileSystemWatcher (0x0x7f61beb4cd68)
+
+Class QFinalState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFinalState::QPrivateSignal (0x0x7f61be7c7720) 0 empty
+
+Vtable for QFinalState
+QFinalState::_ZTV11QFinalState: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFinalState)
+16 (int (*)(...))QFinalState::metaObject
+24 (int (*)(...))QFinalState::qt_metacast
+32 (int (*)(...))QFinalState::qt_metacall
+40 (int (*)(...))QFinalState::~QFinalState
+48 (int (*)(...))QFinalState::~QFinalState
+56 (int (*)(...))QFinalState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFinalState::onEntry
+120 (int (*)(...))QFinalState::onExit
+
+Class QFinalState
+ size=16 align=8
+ base size=16 base align=8
+QFinalState (0x0x7f61beb4cdd0) 0
+ vptr=((& QFinalState::_ZTV11QFinalState) + 16)
+ QAbstractState (0x0x7f61beb4ce38) 0
+ primary-for QFinalState (0x0x7f61beb4cdd0)
+ QObject (0x0x7f61be7c76c0) 0
+ primary-for QAbstractState (0x0x7f61beb4ce38)
+
+Vtable for QRunnable
+QRunnable::_ZTV9QRunnable: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QRunnable)
+16 (int (*)(...))__cxa_pure_virtual
+24 0
+32 0
+
+Class QRunnable
+ size=16 align=8
+ base size=12 base align=8
+QRunnable (0x0x7f61be7c7900) 0
+ vptr=((& QRunnable::_ZTV9QRunnable) + 16)
+
+Class QBasicMutex
+ size=8 align=8
+ base size=8 base align=8
+QBasicMutex (0x0x7f61be7c7ba0) 0
+
+Class QMutex
+ size=8 align=8
+ base size=8 base align=8
+QMutex (0x0x7f61beb4cf08) 0
+ QBasicMutex (0x0x7f61be865840) 0
+
+Class QRecursiveMutex
+ size=8 align=8
+ base size=8 base align=8
+QRecursiveMutex (0x0x7f61beb4cf70) 0
+ QMutex (0x0x7f61be87f000) 0
+ QBasicMutex (0x0x7f61be865a80) 0
+
+Class QMutexLocker
+ size=8 align=8
+ base size=8 base align=8
+QMutexLocker (0x0x7f61be865ae0) 0
+
+Class QtPrivate::ResultItem
+ size=16 align=8
+ base size=16 base align=8
+QtPrivate::ResultItem (0x0x7f61be891120) 0
+
+Class QtPrivate::ResultIteratorBase
+ size=16 align=8
+ base size=12 base align=8
+QtPrivate::ResultIteratorBase (0x0x7f61be891720) 0
+
+Vtable for QtPrivate::ResultStoreBase
+QtPrivate::ResultStoreBase::_ZTVN9QtPrivate15ResultStoreBaseE: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9QtPrivate15ResultStoreBaseE)
+16 (int (*)(...))QtPrivate::ResultStoreBase::~ResultStoreBase
+24 (int (*)(...))QtPrivate::ResultStoreBase::~ResultStoreBase
+
+Class QtPrivate::ResultStoreBase
+ size=48 align=8
+ base size=44 base align=8
+QtPrivate::ResultStoreBase (0x0x7f61be891900) 0
+ vptr=((& QtPrivate::ResultStoreBase::_ZTVN9QtPrivate15ResultStoreBaseE) + 16)
+
+Class std::__mutex_base
+ size=40 align=8
+ base size=40 base align=8
+std::__mutex_base (0x0x7f61be922120) 0
+
+Class std::mutex
+ size=40 align=8
+ base size=40 base align=8
+std::mutex (0x0x7f61be9168f0) 0
+ std::__mutex_base (0x0x7f61be922180) 0
+
+Class std::defer_lock_t
+ size=1 align=1
+ base size=0 base align=1
+std::defer_lock_t (0x0x7f61be922360) 0 empty
+
+Class std::try_to_lock_t
+ size=1 align=1
+ base size=0 base align=1
+std::try_to_lock_t (0x0x7f61be9223c0) 0 empty
+
+Class std::adopt_lock_t
+ size=1 align=1
+ base size=0 base align=1
+std::adopt_lock_t (0x0x7f61be922420) 0 empty
+
+Class std::__recursive_mutex_base
+ size=40 align=8
+ base size=40 base align=8
+std::__recursive_mutex_base (0x0x7f61be922e40) 0
+
+Class std::recursive_mutex
+ size=40 align=8
+ base size=40 base align=8
+std::recursive_mutex (0x0x7f61be916958) 0
+ std::__recursive_mutex_base (0x0x7f61be922ea0) 0
+
+Class std::timed_mutex
+ size=40 align=8
+ base size=40 base align=8
+std::timed_mutex (0x0x7f61be923b60) 0
+ std::__mutex_base (0x0x7f61be95e2a0) 0
+ std::__timed_mutex_impl<std::timed_mutex> (0x0x7f61be95e300) 0 empty
+
+Class std::recursive_timed_mutex
+ size=40 align=8
+ base size=40 base align=8
+std::recursive_timed_mutex (0x0x7f61be923ee0) 0
+ std::__recursive_mutex_base (0x0x7f61be95e660) 0
+ std::__timed_mutex_impl<std::recursive_timed_mutex> (0x0x7f61be95e6c0) 0 empty
+
+Class std::once_flag
+ size=4 align=4
+ base size=4 base align=4
+std::once_flag (0x0x7f61be95ede0) 0
+
+Vtable for QFutureInterfaceBase
+QFutureInterfaceBase::_ZTV20QFutureInterfaceBase: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QFutureInterfaceBase)
+16 (int (*)(...))QFutureInterfaceBase::~QFutureInterfaceBase
+24 (int (*)(...))QFutureInterfaceBase::~QFutureInterfaceBase
+
+Class QFutureInterfaceBase
+ size=16 align=8
+ base size=16 base align=8
+QFutureInterfaceBase (0x0x7f61be5a5060) 0
+ vptr=((& QFutureInterfaceBase::_ZTV20QFutureInterfaceBase) + 16)
+
+Class QFutureWatcherBase::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFutureWatcherBase::QPrivateSignal (0x0x7f61be64c3c0) 0 empty
+
+Vtable for QFutureWatcherBase
+QFutureWatcherBase::_ZTV18QFutureWatcherBase: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QFutureWatcherBase)
+16 (int (*)(...))QFutureWatcherBase::metaObject
+24 (int (*)(...))QFutureWatcherBase::qt_metacast
+32 (int (*)(...))QFutureWatcherBase::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QFutureWatcherBase::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QFutureWatcherBase::connectNotify
+104 (int (*)(...))QFutureWatcherBase::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QFutureWatcherBase
+ size=16 align=8
+ base size=16 base align=8
+QFutureWatcherBase (0x0x7f61be5d3750) 0
+ vptr=((& QFutureWatcherBase::_ZTV18QFutureWatcherBase) + 16)
+ QObject (0x0x7f61be64c360) 0
+ primary-for QFutureWatcherBase (0x0x7f61be5d3750)
+
+Class QHistoryState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QHistoryState::QPrivateSignal (0x0x7f61be675720) 0 empty
+
+Vtable for QHistoryState
+QHistoryState::_ZTV13QHistoryState: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QHistoryState)
+16 (int (*)(...))QHistoryState::metaObject
+24 (int (*)(...))QHistoryState::qt_metacast
+32 (int (*)(...))QHistoryState::qt_metacall
+40 (int (*)(...))QHistoryState::~QHistoryState
+48 (int (*)(...))QHistoryState::~QHistoryState
+56 (int (*)(...))QHistoryState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QHistoryState::onEntry
+120 (int (*)(...))QHistoryState::onExit
+
+Class QHistoryState
+ size=16 align=8
+ base size=16 base align=8
+QHistoryState (0x0x7f61be5d3f70) 0
+ vptr=((& QHistoryState::_ZTV13QHistoryState) + 16)
+ QAbstractState (0x0x7f61be684000) 0
+ primary-for QHistoryState (0x0x7f61be5d3f70)
+ QObject (0x0x7f61be6756c0) 0
+ primary-for QAbstractState (0x0x7f61be684000)
+
+Class QIdentityProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QIdentityProxyModel::QPrivateSignal (0x0x7f61be675a20) 0 empty
+
+Vtable for QIdentityProxyModel
+QIdentityProxyModel::_ZTV19QIdentityProxyModel: 53 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QIdentityProxyModel)
+16 (int (*)(...))QIdentityProxyModel::metaObject
+24 (int (*)(...))QIdentityProxyModel::qt_metacast
+32 (int (*)(...))QIdentityProxyModel::qt_metacall
+40 (int (*)(...))QIdentityProxyModel::~QIdentityProxyModel
+48 (int (*)(...))QIdentityProxyModel::~QIdentityProxyModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QIdentityProxyModel::index
+120 (int (*)(...))QIdentityProxyModel::parent
+128 (int (*)(...))QIdentityProxyModel::sibling
+136 (int (*)(...))QIdentityProxyModel::rowCount
+144 (int (*)(...))QIdentityProxyModel::columnCount
+152 (int (*)(...))QAbstractProxyModel::hasChildren
+160 (int (*)(...))QAbstractProxyModel::data
+168 (int (*)(...))QAbstractProxyModel::setData
+176 (int (*)(...))QIdentityProxyModel::headerData
+184 (int (*)(...))QAbstractProxyModel::setHeaderData
+192 (int (*)(...))QAbstractProxyModel::itemData
+200 (int (*)(...))QAbstractProxyModel::setItemData
+208 (int (*)(...))QAbstractProxyModel::mimeTypes
+216 (int (*)(...))QAbstractProxyModel::mimeData
+224 (int (*)(...))QAbstractProxyModel::canDropMimeData
+232 (int (*)(...))QIdentityProxyModel::dropMimeData
+240 (int (*)(...))QAbstractProxyModel::supportedDropActions
+248 (int (*)(...))QAbstractProxyModel::supportedDragActions
+256 (int (*)(...))QIdentityProxyModel::insertRows
+264 (int (*)(...))QIdentityProxyModel::insertColumns
+272 (int (*)(...))QIdentityProxyModel::removeRows
+280 (int (*)(...))QIdentityProxyModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractProxyModel::fetchMore
+312 (int (*)(...))QAbstractProxyModel::canFetchMore
+320 (int (*)(...))QAbstractProxyModel::flags
+328 (int (*)(...))QAbstractProxyModel::sort
+336 (int (*)(...))QAbstractProxyModel::buddy
+344 (int (*)(...))QIdentityProxyModel::match
+352 (int (*)(...))QAbstractProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractProxyModel::submit
+376 (int (*)(...))QAbstractProxyModel::revert
+384 (int (*)(...))QIdentityProxyModel::setSourceModel
+392 (int (*)(...))QIdentityProxyModel::mapToSource
+400 (int (*)(...))QIdentityProxyModel::mapFromSource
+408 (int (*)(...))QIdentityProxyModel::mapSelectionToSource
+416 (int (*)(...))QIdentityProxyModel::mapSelectionFromSource
+
+Class QIdentityProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QIdentityProxyModel (0x0x7f61be684068) 0
+ vptr=((& QIdentityProxyModel::_ZTV19QIdentityProxyModel) + 16)
+ QAbstractProxyModel (0x0x7f61be6840d0) 0
+ primary-for QIdentityProxyModel (0x0x7f61be684068)
+ QAbstractItemModel (0x0x7f61be684138) 0
+ primary-for QAbstractProxyModel (0x0x7f61be6840d0)
+ QObject (0x0x7f61be6759c0) 0
+ primary-for QAbstractItemModel (0x0x7f61be684138)
+
+Class QItemSelectionRange
+ size=16 align=8
+ base size=16 base align=8
+QItemSelectionRange (0x0x7f61be675c00) 0
+
+Class QItemSelectionModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QItemSelectionModel::QPrivateSignal (0x0x7f61be75b540) 0 empty
+
+Vtable for QItemSelectionModel
+QItemSelectionModel::_ZTV19QItemSelectionModel: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QItemSelectionModel)
+16 (int (*)(...))QItemSelectionModel::metaObject
+24 (int (*)(...))QItemSelectionModel::qt_metacast
+32 (int (*)(...))QItemSelectionModel::qt_metacall
+40 (int (*)(...))QItemSelectionModel::~QItemSelectionModel
+48 (int (*)(...))QItemSelectionModel::~QItemSelectionModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QItemSelectionModel::setCurrentIndex
+120 (int (*)(...))QItemSelectionModel::select
+128 (int (*)(...))QItemSelectionModel::select
+136 (int (*)(...))QItemSelectionModel::clear
+144 (int (*)(...))QItemSelectionModel::reset
+152 (int (*)(...))QItemSelectionModel::clearCurrentIndex
+
+Class QItemSelectionModel
+ size=16 align=8
+ base size=16 base align=8
+QItemSelectionModel (0x0x7f61be758a90) 0
+ vptr=((& QItemSelectionModel::_ZTV19QItemSelectionModel) + 16)
+ QObject (0x0x7f61be75b4e0) 0
+ primary-for QItemSelectionModel (0x0x7f61be758a90)
+
+Class QItemSelection
+ size=8 align=8
+ base size=8 base align=8
+QItemSelection (0x0x7f61be758c30) 0
+ QList<QItemSelectionRange> (0x0x7f61be758c98) 0
+ QListSpecialMethods<QItemSelectionRange> (0x0x7f61be3a9060) 0 empty
+
+Class QJsonValue
+ size=24 align=8
+ base size=20 base align=8
+QJsonValue (0x0x7f61be40e960) 0
+
+Class QJsonValueRef
+ size=16 align=8
+ base size=12 base align=8
+QJsonValueRef (0x0x7f61be563600) 0
+
+Class QJsonValuePtr
+ size=24 align=8
+ base size=24 base align=8
+QJsonValuePtr (0x0x7f61be1b65a0) 0
+
+Class QJsonValueRefPtr
+ size=16 align=8
+ base size=16 base align=8
+QJsonValueRefPtr (0x0x7f61be1b6840) 0
+
+Class QJsonArray::iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonArray::iterator (0x0x7f61be1f6ba0) 0
+
+Class QJsonArray::const_iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonArray::const_iterator (0x0x7f61be1f6c00) 0
+
+Class QJsonArray
+ size=16 align=8
+ base size=16 base align=8
+QJsonArray (0x0x7f61be1f6b40) 0
+
+Class QJsonParseError
+ size=8 align=4
+ base size=8 base align=4
+QJsonParseError (0x0x7f61be326ae0) 0
+
+Class QJsonDocument
+ size=8 align=8
+ base size=8 base align=8
+QJsonDocument (0x0x7f61be326b40) 0
+
+Class QJsonObject::iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonObject::iterator (0x0x7f61bdf93360) 0
+
+Class QJsonObject::const_iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonObject::const_iterator (0x0x7f61bdf933c0) 0
+
+Class QJsonObject
+ size=16 align=8
+ base size=16 base align=8
+QJsonObject (0x0x7f61bdf93300) 0
+
+Class QLibrary::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLibrary::QPrivateSignal (0x0x7f61be0b67e0) 0 empty
+
+Vtable for QLibrary
+QLibrary::_ZTV8QLibrary: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QLibrary)
+16 (int (*)(...))QLibrary::metaObject
+24 (int (*)(...))QLibrary::qt_metacast
+32 (int (*)(...))QLibrary::qt_metacall
+40 (int (*)(...))QLibrary::~QLibrary
+48 (int (*)(...))QLibrary::~QLibrary
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QLibrary
+ size=32 align=8
+ base size=25 base align=8
+QLibrary (0x0x7f61be0b38f0) 0
+ vptr=((& QLibrary::_ZTV8QLibrary) + 16)
+ QObject (0x0x7f61be0b6780) 0
+ primary-for QLibrary (0x0x7f61be0b38f0)
+
+Class QVersionNumber::SegmentStorage
+ size=8 align=8
+ base size=8 base align=8
+QVersionNumber::SegmentStorage (0x0x7f61be0f9660) 0
+
+Class QVersionNumber
+ size=8 align=8
+ base size=8 base align=8
+QVersionNumber (0x0x7f61be0f9180) 0
+
+Class QLibraryInfo
+ size=1 align=1
+ base size=0 base align=1
+QLibraryInfo (0x0x7f61bdd97de0) 0 empty
+
+Class QPoint
+ size=8 align=4
+ base size=8 base align=4
+QPoint (0x0x7f61bdd97e40) 0
+
+Class QPointF
+ size=16 align=8
+ base size=16 base align=8
+QPointF (0x0x7f61bde0acc0) 0
+
+Class QLine
+ size=16 align=4
+ base size=16 base align=4
+QLine (0x0x7f61bde7bea0) 0
+
+Class QLineF
+ size=32 align=8
+ base size=32 base align=8
+QLineF (0x0x7f61bdf0c2a0) 0
+
+Class QLinkedListData
+ size=32 align=8
+ base size=25 base align=8
+QLinkedListData (0x0x7f61bdb87540) 0
+
+Class QLockFile
+ size=8 align=8
+ base size=8 base align=8
+QLockFile (0x0x7f61bdc2ca80) 0
+
+Class QLoggingCategory::AtomicBools
+ size=4 align=1
+ base size=4 base align=1
+QLoggingCategory::AtomicBools (0x0x7f61bdc2ccc0) 0
+
+Class QLoggingCategory
+ size=24 align=8
+ base size=24 base align=8
+QLoggingCategory (0x0x7f61bdc2cc60) 0
+
+Class QMargins
+ size=16 align=4
+ base size=16 base align=4
+QMargins (0x0x7f61bdc9d120) 0
+
+Class QMarginsF
+ size=32 align=8
+ base size=32 base align=8
+QMarginsF (0x0x7f61bdd1f060) 0
+
+Class QMessageAuthenticationCode
+ size=8 align=8
+ base size=8 base align=8
+QMessageAuthenticationCode (0x0x7f61bdb52840) 0
+
+Class QMetaMethod
+ size=16 align=8
+ base size=12 base align=8
+QMetaMethod (0x0x7f61bdb528a0) 0
+
+Class QMetaEnum
+ size=16 align=8
+ base size=12 base align=8
+QMetaEnum (0x0x7f61bd7dd120) 0
+
+Class QMetaProperty
+ size=32 align=8
+ base size=32 base align=8
+QMetaProperty (0x0x7f61bd822300) 0
+
+Class QMetaClassInfo
+ size=16 align=8
+ base size=12 base align=8
+QMetaClassInfo (0x0x7f61bd822420) 0
+
+Class QMimeData::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMimeData::QPrivateSignal (0x0x7f61bd8639c0) 0 empty
+
+Vtable for QMimeData
+QMimeData::_ZTV9QMimeData: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QMimeData)
+16 (int (*)(...))QMimeData::metaObject
+24 (int (*)(...))QMimeData::qt_metacast
+32 (int (*)(...))QMimeData::qt_metacall
+40 (int (*)(...))QMimeData::~QMimeData
+48 (int (*)(...))QMimeData::~QMimeData
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QMimeData::hasFormat
+120 (int (*)(...))QMimeData::formats
+128 (int (*)(...))QMimeData::retrieveData
+
+Class QMimeData
+ size=16 align=8
+ base size=16 base align=8
+QMimeData (0x0x7f61bd868548) 0
+ vptr=((& QMimeData::_ZTV9QMimeData) + 16)
+ QObject (0x0x7f61bd863960) 0
+ primary-for QMimeData (0x0x7f61bd868548)
+
+Class QMimeType
+ size=8 align=8
+ base size=8 base align=8
+QMimeType (0x0x7f61bd863ba0) 0
+
+Class QMimeDatabase
+ size=8 align=8
+ base size=8 base align=8
+QMimeDatabase (0x0x7f61bd92cae0) 0
+
+Class QObjectCleanupHandler::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QObjectCleanupHandler::QPrivateSignal (0x0x7f61bd92cba0) 0 empty
+
+Vtable for QObjectCleanupHandler
+QObjectCleanupHandler::_ZTV21QObjectCleanupHandler: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QObjectCleanupHandler)
+16 (int (*)(...))QObjectCleanupHandler::metaObject
+24 (int (*)(...))QObjectCleanupHandler::qt_metacast
+32 (int (*)(...))QObjectCleanupHandler::qt_metacall
+40 (int (*)(...))QObjectCleanupHandler::~QObjectCleanupHandler
+48 (int (*)(...))QObjectCleanupHandler::~QObjectCleanupHandler
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QObjectCleanupHandler
+ size=24 align=8
+ base size=24 base align=8
+QObjectCleanupHandler (0x0x7f61bd9400d0) 0
+ vptr=((& QObjectCleanupHandler::_ZTV21QObjectCleanupHandler) + 16)
+ QObject (0x0x7f61bd92cb40) 0
+ primary-for QObjectCleanupHandler (0x0x7f61bd9400d0)
+
+Class QOperatingSystemVersion
+ size=16 align=4
+ base size=16 base align=4
+QOperatingSystemVersion (0x0x7f61bd92ccc0) 0
+
+Class QParallelAnimationGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QParallelAnimationGroup::QPrivateSignal (0x0x7f61bd5bd480) 0 empty
+
+Vtable for QParallelAnimationGroup
+QParallelAnimationGroup::_ZTV23QParallelAnimationGroup: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QParallelAnimationGroup)
+16 (int (*)(...))QParallelAnimationGroup::metaObject
+24 (int (*)(...))QParallelAnimationGroup::qt_metacast
+32 (int (*)(...))QParallelAnimationGroup::qt_metacall
+40 (int (*)(...))QParallelAnimationGroup::~QParallelAnimationGroup
+48 (int (*)(...))QParallelAnimationGroup::~QParallelAnimationGroup
+56 (int (*)(...))QParallelAnimationGroup::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QParallelAnimationGroup::duration
+120 (int (*)(...))QParallelAnimationGroup::updateCurrentTime
+128 (int (*)(...))QParallelAnimationGroup::updateState
+136 (int (*)(...))QParallelAnimationGroup::updateDirection
+
+Class QParallelAnimationGroup
+ size=16 align=8
+ base size=16 base align=8
+QParallelAnimationGroup (0x0x7f61bd5b8958) 0
+ vptr=((& QParallelAnimationGroup::_ZTV23QParallelAnimationGroup) + 16)
+ QAnimationGroup (0x0x7f61bd5b89c0) 0
+ primary-for QParallelAnimationGroup (0x0x7f61bd5b8958)
+ QAbstractAnimation (0x0x7f61bd5b8a28) 0
+ primary-for QAnimationGroup (0x0x7f61bd5b89c0)
+ QObject (0x0x7f61bd5bd420) 0
+ primary-for QAbstractAnimation (0x0x7f61bd5b8a28)
+
+Class QPauseAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPauseAnimation::QPrivateSignal (0x0x7f61bd5bd6c0) 0 empty
+
+Vtable for QPauseAnimation
+QPauseAnimation::_ZTV15QPauseAnimation: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QPauseAnimation)
+16 (int (*)(...))QPauseAnimation::metaObject
+24 (int (*)(...))QPauseAnimation::qt_metacast
+32 (int (*)(...))QPauseAnimation::qt_metacall
+40 (int (*)(...))QPauseAnimation::~QPauseAnimation
+48 (int (*)(...))QPauseAnimation::~QPauseAnimation
+56 (int (*)(...))QPauseAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QPauseAnimation::duration
+120 (int (*)(...))QPauseAnimation::updateCurrentTime
+128 (int (*)(...))QAbstractAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+
+Class QPauseAnimation
+ size=16 align=8
+ base size=16 base align=8
+QPauseAnimation (0x0x7f61bd5b8a90) 0
+ vptr=((& QPauseAnimation::_ZTV15QPauseAnimation) + 16)
+ QAbstractAnimation (0x0x7f61bd5b8af8) 0
+ primary-for QPauseAnimation (0x0x7f61bd5b8a90)
+ QObject (0x0x7f61bd5bd660) 0
+ primary-for QAbstractAnimation (0x0x7f61bd5b8af8)
+
+Class QStaticPlugin
+ size=16 align=8
+ base size=16 base align=8
+QStaticPlugin (0x0x7f61bd5f5240) 0
+
+Class QPluginLoader::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPluginLoader::QPrivateSignal (0x0x7f61bd6323c0) 0 empty
+
+Vtable for QPluginLoader
+QPluginLoader::_ZTV13QPluginLoader: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QPluginLoader)
+16 (int (*)(...))QPluginLoader::metaObject
+24 (int (*)(...))QPluginLoader::qt_metacast
+32 (int (*)(...))QPluginLoader::qt_metacall
+40 (int (*)(...))QPluginLoader::~QPluginLoader
+48 (int (*)(...))QPluginLoader::~QPluginLoader
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QPluginLoader
+ size=32 align=8
+ base size=25 base align=8
+QPluginLoader (0x0x7f61bd61fe38) 0
+ vptr=((& QPluginLoader::_ZTV13QPluginLoader) + 16)
+ QObject (0x0x7f61bd632360) 0
+ primary-for QPluginLoader (0x0x7f61bd61fe38)
+
+Class QProcessEnvironment
+ size=8 align=8
+ base size=8 base align=8
+QProcessEnvironment (0x0x7f61bd6324e0) 0
+
+Class QProcess::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QProcess::QPrivateSignal (0x0x7f61bd701960) 0 empty
+
+Vtable for QProcess
+QProcess::_ZTV8QProcess: 31 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QProcess)
+16 (int (*)(...))QProcess::metaObject
+24 (int (*)(...))QProcess::qt_metacast
+32 (int (*)(...))QProcess::qt_metacall
+40 (int (*)(...))QProcess::~QProcess
+48 (int (*)(...))QProcess::~QProcess
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QProcess::isSequential
+120 (int (*)(...))QProcess::open
+128 (int (*)(...))QProcess::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QProcess::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QProcess::bytesAvailable
+184 (int (*)(...))QProcess::bytesToWrite
+192 (int (*)(...))QProcess::canReadLine
+200 (int (*)(...))QProcess::waitForReadyRead
+208 (int (*)(...))QProcess::waitForBytesWritten
+216 (int (*)(...))QProcess::readData
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))QProcess::writeData
+240 (int (*)(...))QProcess::setupChildProcess
+
+Class QProcess
+ size=16 align=8
+ base size=16 base align=8
+QProcess (0x0x7f61bd7082d8) 0
+ vptr=((& QProcess::_ZTV8QProcess) + 16)
+ QIODevice (0x0x7f61bd708340) 0
+ primary-for QProcess (0x0x7f61bd7082d8)
+ QObject (0x0x7f61bd701900) 0
+ primary-for QIODevice (0x0x7f61bd708340)
+
+Class QVariantAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QVariantAnimation::QPrivateSignal (0x0x7f61bd73f060) 0 empty
+
+Vtable for QVariantAnimation
+QVariantAnimation::_ZTV17QVariantAnimation: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QVariantAnimation)
+16 (int (*)(...))QVariantAnimation::metaObject
+24 (int (*)(...))QVariantAnimation::qt_metacast
+32 (int (*)(...))QVariantAnimation::qt_metacall
+40 (int (*)(...))QVariantAnimation::~QVariantAnimation
+48 (int (*)(...))QVariantAnimation::~QVariantAnimation
+56 (int (*)(...))QVariantAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QVariantAnimation::duration
+120 (int (*)(...))QVariantAnimation::updateCurrentTime
+128 (int (*)(...))QVariantAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+144 (int (*)(...))QVariantAnimation::updateCurrentValue
+152 (int (*)(...))QVariantAnimation::interpolated
+
+Class QVariantAnimation
+ size=16 align=8
+ base size=16 base align=8
+QVariantAnimation (0x0x7f61bd7083a8) 0
+ vptr=((& QVariantAnimation::_ZTV17QVariantAnimation) + 16)
+ QAbstractAnimation (0x0x7f61bd708410) 0
+ primary-for QVariantAnimation (0x0x7f61bd7083a8)
+ QObject (0x0x7f61bd73f000) 0
+ primary-for QAbstractAnimation (0x0x7f61bd708410)
+
+Class QPropertyAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPropertyAnimation::QPrivateSignal (0x0x7f61bd73f300) 0 empty
+
+Vtable for QPropertyAnimation
+QPropertyAnimation::_ZTV18QPropertyAnimation: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QPropertyAnimation)
+16 (int (*)(...))QPropertyAnimation::metaObject
+24 (int (*)(...))QPropertyAnimation::qt_metacast
+32 (int (*)(...))QPropertyAnimation::qt_metacall
+40 (int (*)(...))QPropertyAnimation::~QPropertyAnimation
+48 (int (*)(...))QPropertyAnimation::~QPropertyAnimation
+56 (int (*)(...))QPropertyAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QVariantAnimation::duration
+120 (int (*)(...))QVariantAnimation::updateCurrentTime
+128 (int (*)(...))QPropertyAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+144 (int (*)(...))QPropertyAnimation::updateCurrentValue
+152 (int (*)(...))QVariantAnimation::interpolated
+
+Class QPropertyAnimation
+ size=16 align=8
+ base size=16 base align=8
+QPropertyAnimation (0x0x7f61bd7084e0) 0
+ vptr=((& QPropertyAnimation::_ZTV18QPropertyAnimation) + 16)
+ QVariantAnimation (0x0x7f61bd708548) 0
+ primary-for QPropertyAnimation (0x0x7f61bd7084e0)
+ QAbstractAnimation (0x0x7f61bd7085b0) 0
+ primary-for QVariantAnimation (0x0x7f61bd708548)
+ QObject (0x0x7f61bd73f2a0) 0
+ primary-for QAbstractAnimation (0x0x7f61bd7085b0)
+
+Class std::random_device
+ size=5000 align=8
+ base size=5000 base align=8
+std::random_device (0x0x7f61bd3c9a20) 0
+
+Class std::bernoulli_distribution::param_type
+ size=8 align=8
+ base size=8 base align=8
+std::bernoulli_distribution::param_type (0x0x7f61bd4cf780) 0
+
+Class std::bernoulli_distribution
+ size=8 align=8
+ base size=8 base align=8
+std::bernoulli_distribution (0x0x7f61bd4cf720) 0
+
+Class std::seed_seq
+ size=24 align=8
+ base size=24 base align=8
+std::seed_seq (0x0x7f61bd2c54e0) 0
+
+Class QRandomGenerator::Storage
+ size=2504 align=8
+ base size=2504 base align=8
+QRandomGenerator::Storage (0x0x7f61bd0fa180) 0
+
+Class QRandomGenerator
+ size=2512 align=8
+ base size=2512 base align=8
+QRandomGenerator (0x0x7f61bd0fa120) 0
+
+Class QRandomGenerator64
+ size=2512 align=8
+ base size=2512 base align=8
+QRandomGenerator64 (0x0x7f61bd17b270) 0
+ QRandomGenerator (0x0x7f61bd178c60) 0
+
+Class QReadWriteLock
+ size=8 align=8
+ base size=8 base align=8
+QReadWriteLock (0x0x7f61bcd9e840) 0
+
+Class QReadLocker
+ size=8 align=8
+ base size=8 base align=8
+QReadLocker (0x0x7f61bcd9eae0) 0
+
+Class QWriteLocker
+ size=8 align=8
+ base size=8 base align=8
+QWriteLocker (0x0x7f61bce24000) 0
+
+Class QSize
+ size=8 align=4
+ base size=8 base align=4
+QSize (0x0x7f61bce244e0) 0
+
+Class QSizeF
+ size=16 align=8
+ base size=16 base align=8
+QSizeF (0x0x7f61bce963c0) 0
+
+Class QRect
+ size=16 align=4
+ base size=16 base align=4
+QRect (0x0x7f61bcf11420) 0
+
+Class QRectF
+ size=32 align=8
+ base size=32 base align=8
+QRectF (0x0x7f61bcbc5480) 0
+
+Class QResource
+ size=8 align=8
+ base size=8 base align=8
+QResource (0x0x7f61bcc875a0) 0
+
+Class QSaveFile::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSaveFile::QPrivateSignal (0x0x7f61bcc87840) 0 empty
+
+Vtable for QSaveFile
+QSaveFile::_ZTV9QSaveFile: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QSaveFile)
+16 (int (*)(...))QSaveFile::metaObject
+24 (int (*)(...))QSaveFile::qt_metacast
+32 (int (*)(...))QSaveFile::qt_metacall
+40 (int (*)(...))QSaveFile::~QSaveFile
+48 (int (*)(...))QSaveFile::~QSaveFile
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QSaveFile::open
+128 (int (*)(...))QSaveFile::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFileDevice::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QSaveFile::writeData
+240 (int (*)(...))QSaveFile::fileName
+248 (int (*)(...))QFileDevice::resize
+256 (int (*)(...))QFileDevice::permissions
+264 (int (*)(...))QFileDevice::setPermissions
+
+Class QSaveFile
+ size=16 align=8
+ base size=16 base align=8
+QSaveFile (0x0x7f61bcc2cc30) 0
+ vptr=((& QSaveFile::_ZTV9QSaveFile) + 16)
+ QFileDevice (0x0x7f61bcc2cc98) 0
+ primary-for QSaveFile (0x0x7f61bcc2cc30)
+ QIODevice (0x0x7f61bcc2cd00) 0
+ primary-for QFileDevice (0x0x7f61bcc2cc98)
+ QObject (0x0x7f61bcc877e0) 0
+ primary-for QIODevice (0x0x7f61bcc2cd00)
+
+Class QSemaphore
+ size=8 align=8
+ base size=8 base align=8
+QSemaphore (0x0x7f61bcc87e40) 0
+
+Class QSemaphoreReleaser
+ size=16 align=8
+ base size=12 base align=8
+QSemaphoreReleaser (0x0x7f61bcd1d000) 0
+
+Class QSequentialAnimationGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSequentialAnimationGroup::QPrivateSignal (0x0x7f61bc985c00) 0 empty
+
+Vtable for QSequentialAnimationGroup
+QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QSequentialAnimationGroup)
+16 (int (*)(...))QSequentialAnimationGroup::metaObject
+24 (int (*)(...))QSequentialAnimationGroup::qt_metacast
+32 (int (*)(...))QSequentialAnimationGroup::qt_metacall
+40 (int (*)(...))QSequentialAnimationGroup::~QSequentialAnimationGroup
+48 (int (*)(...))QSequentialAnimationGroup::~QSequentialAnimationGroup
+56 (int (*)(...))QSequentialAnimationGroup::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QSequentialAnimationGroup::duration
+120 (int (*)(...))QSequentialAnimationGroup::updateCurrentTime
+128 (int (*)(...))QSequentialAnimationGroup::updateState
+136 (int (*)(...))QSequentialAnimationGroup::updateDirection
+
+Class QSequentialAnimationGroup
+ size=16 align=8
+ base size=16 base align=8
+QSequentialAnimationGroup (0x0x7f61bc9994e0) 0
+ vptr=((& QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup) + 16)
+ QAnimationGroup (0x0x7f61bc999548) 0
+ primary-for QSequentialAnimationGroup (0x0x7f61bc9994e0)
+ QAbstractAnimation (0x0x7f61bc9995b0) 0
+ primary-for QAnimationGroup (0x0x7f61bc999548)
+ QObject (0x0x7f61bc985ba0) 0
+ primary-for QAbstractAnimation (0x0x7f61bc9995b0)
+
+Class QSettings::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSettings::QPrivateSignal (0x0x7f61bc985e40) 0 empty
+
+Vtable for QSettings
+QSettings::_ZTV9QSettings: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QSettings)
+16 (int (*)(...))QSettings::metaObject
+24 (int (*)(...))QSettings::qt_metacast
+32 (int (*)(...))QSettings::qt_metacall
+40 (int (*)(...))QSettings::~QSettings
+48 (int (*)(...))QSettings::~QSettings
+56 (int (*)(...))QSettings::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSettings
+ size=16 align=8
+ base size=16 base align=8
+QSettings (0x0x7f61bc999618) 0
+ vptr=((& QSettings::_ZTV9QSettings) + 16)
+ QObject (0x0x7f61bc985de0) 0
+ primary-for QSettings (0x0x7f61bc999618)
+
+Class QSharedMemory::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSharedMemory::QPrivateSignal (0x0x7f61bc9cc300) 0 empty
+
+Vtable for QSharedMemory
+QSharedMemory::_ZTV13QSharedMemory: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSharedMemory)
+16 (int (*)(...))QSharedMemory::metaObject
+24 (int (*)(...))QSharedMemory::qt_metacast
+32 (int (*)(...))QSharedMemory::qt_metacall
+40 (int (*)(...))QSharedMemory::~QSharedMemory
+48 (int (*)(...))QSharedMemory::~QSharedMemory
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSharedMemory
+ size=16 align=8
+ base size=16 base align=8
+QSharedMemory (0x0x7f61bc999680) 0
+ vptr=((& QSharedMemory::_ZTV13QSharedMemory) + 16)
+ QObject (0x0x7f61bc9cc2a0) 0
+ primary-for QSharedMemory (0x0x7f61bc999680)
+
+Class QSignalMapper::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSignalMapper::QPrivateSignal (0x0x7f61bc9cc540) 0 empty
+
+Vtable for QSignalMapper
+QSignalMapper::_ZTV13QSignalMapper: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSignalMapper)
+16 (int (*)(...))QSignalMapper::metaObject
+24 (int (*)(...))QSignalMapper::qt_metacast
+32 (int (*)(...))QSignalMapper::qt_metacall
+40 (int (*)(...))QSignalMapper::~QSignalMapper
+48 (int (*)(...))QSignalMapper::~QSignalMapper
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSignalMapper
+ size=16 align=8
+ base size=16 base align=8
+QSignalMapper (0x0x7f61bc9996e8) 0
+ vptr=((& QSignalMapper::_ZTV13QSignalMapper) + 16)
+ QObject (0x0x7f61bc9cc4e0) 0
+ primary-for QSignalMapper (0x0x7f61bc9996e8)
+
+Class QSignalTransition::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSignalTransition::QPrivateSignal (0x0x7f61bc9cc780) 0 empty
+
+Vtable for QSignalTransition
+QSignalTransition::_ZTV17QSignalTransition: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QSignalTransition)
+16 (int (*)(...))QSignalTransition::metaObject
+24 (int (*)(...))QSignalTransition::qt_metacast
+32 (int (*)(...))QSignalTransition::qt_metacall
+40 (int (*)(...))QSignalTransition::~QSignalTransition
+48 (int (*)(...))QSignalTransition::~QSignalTransition
+56 (int (*)(...))QSignalTransition::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QSignalTransition::eventTest
+120 (int (*)(...))QSignalTransition::onTransition
+
+Class QSignalTransition
+ size=16 align=8
+ base size=16 base align=8
+QSignalTransition (0x0x7f61bc999750) 0
+ vptr=((& QSignalTransition::_ZTV17QSignalTransition) + 16)
+ QAbstractTransition (0x0x7f61bc9997b8) 0
+ primary-for QSignalTransition (0x0x7f61bc999750)
+ QObject (0x0x7f61bc9cc720) 0
+ primary-for QAbstractTransition (0x0x7f61bc9997b8)
+
+Class QSocketNotifier::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSocketNotifier::QPrivateSignal (0x0x7f61bc9cca20) 0 empty
+
+Vtable for QSocketNotifier
+QSocketNotifier::_ZTV15QSocketNotifier: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QSocketNotifier)
+16 (int (*)(...))QSocketNotifier::metaObject
+24 (int (*)(...))QSocketNotifier::qt_metacast
+32 (int (*)(...))QSocketNotifier::qt_metacall
+40 (int (*)(...))QSocketNotifier::~QSocketNotifier
+48 (int (*)(...))QSocketNotifier::~QSocketNotifier
+56 (int (*)(...))QSocketNotifier::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSocketNotifier
+ size=16 align=8
+ base size=16 base align=8
+QSocketNotifier (0x0x7f61bc999820) 0
+ vptr=((& QSocketNotifier::_ZTV15QSocketNotifier) + 16)
+ QObject (0x0x7f61bc9cc9c0) 0
+ primary-for QSocketNotifier (0x0x7f61bc999820)
+
+Class QSortFilterProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSortFilterProxyModel::QPrivateSignal (0x0x7f61bc9ccc60) 0 empty
+
+Vtable for QSortFilterProxyModel
+QSortFilterProxyModel::_ZTV21QSortFilterProxyModel: 56 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QSortFilterProxyModel)
+16 (int (*)(...))QSortFilterProxyModel::metaObject
+24 (int (*)(...))QSortFilterProxyModel::qt_metacast
+32 (int (*)(...))QSortFilterProxyModel::qt_metacall
+40 (int (*)(...))QSortFilterProxyModel::~QSortFilterProxyModel
+48 (int (*)(...))QSortFilterProxyModel::~QSortFilterProxyModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QSortFilterProxyModel::index
+120 (int (*)(...))QSortFilterProxyModel::parent
+128 (int (*)(...))QSortFilterProxyModel::sibling
+136 (int (*)(...))QSortFilterProxyModel::rowCount
+144 (int (*)(...))QSortFilterProxyModel::columnCount
+152 (int (*)(...))QSortFilterProxyModel::hasChildren
+160 (int (*)(...))QSortFilterProxyModel::data
+168 (int (*)(...))QSortFilterProxyModel::setData
+176 (int (*)(...))QSortFilterProxyModel::headerData
+184 (int (*)(...))QSortFilterProxyModel::setHeaderData
+192 (int (*)(...))QAbstractProxyModel::itemData
+200 (int (*)(...))QAbstractProxyModel::setItemData
+208 (int (*)(...))QSortFilterProxyModel::mimeTypes
+216 (int (*)(...))QSortFilterProxyModel::mimeData
+224 (int (*)(...))QAbstractProxyModel::canDropMimeData
+232 (int (*)(...))QSortFilterProxyModel::dropMimeData
+240 (int (*)(...))QSortFilterProxyModel::supportedDropActions
+248 (int (*)(...))QAbstractProxyModel::supportedDragActions
+256 (int (*)(...))QSortFilterProxyModel::insertRows
+264 (int (*)(...))QSortFilterProxyModel::insertColumns
+272 (int (*)(...))QSortFilterProxyModel::removeRows
+280 (int (*)(...))QSortFilterProxyModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QSortFilterProxyModel::fetchMore
+312 (int (*)(...))QSortFilterProxyModel::canFetchMore
+320 (int (*)(...))QSortFilterProxyModel::flags
+328 (int (*)(...))QSortFilterProxyModel::sort
+336 (int (*)(...))QSortFilterProxyModel::buddy
+344 (int (*)(...))QSortFilterProxyModel::match
+352 (int (*)(...))QSortFilterProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractProxyModel::submit
+376 (int (*)(...))QAbstractProxyModel::revert
+384 (int (*)(...))QSortFilterProxyModel::setSourceModel
+392 (int (*)(...))QSortFilterProxyModel::mapToSource
+400 (int (*)(...))QSortFilterProxyModel::mapFromSource
+408 (int (*)(...))QSortFilterProxyModel::mapSelectionToSource
+416 (int (*)(...))QSortFilterProxyModel::mapSelectionFromSource
+424 (int (*)(...))QSortFilterProxyModel::filterAcceptsRow
+432 (int (*)(...))QSortFilterProxyModel::filterAcceptsColumn
+440 (int (*)(...))QSortFilterProxyModel::lessThan
+
+Class QSortFilterProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QSortFilterProxyModel (0x0x7f61bc999888) 0
+ vptr=((& QSortFilterProxyModel::_ZTV21QSortFilterProxyModel) + 16)
+ QAbstractProxyModel (0x0x7f61bc9998f0) 0
+ primary-for QSortFilterProxyModel (0x0x7f61bc999888)
+ QAbstractItemModel (0x0x7f61bc999958) 0
+ primary-for QAbstractProxyModel (0x0x7f61bc9998f0)
+ QObject (0x0x7f61bc9ccc00) 0
+ primary-for QAbstractItemModel (0x0x7f61bc999958)
+
+Class QStandardPaths
+ size=1 align=1
+ base size=0 base align=1
+QStandardPaths (0x0x7f61bca3c0c0) 0 empty
+
+Class QState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QState::QPrivateSignal (0x0x7f61bca3c9c0) 0 empty
+
+Vtable for QState
+QState::_ZTV6QState: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QState)
+16 (int (*)(...))QState::metaObject
+24 (int (*)(...))QState::qt_metacast
+32 (int (*)(...))QState::qt_metacall
+40 (int (*)(...))QState::~QState
+48 (int (*)(...))QState::~QState
+56 (int (*)(...))QState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QState::onEntry
+120 (int (*)(...))QState::onExit
+
+Class QState
+ size=16 align=8
+ base size=16 base align=8
+QState (0x0x7f61bc999af8) 0
+ vptr=((& QState::_ZTV6QState) + 16)
+ QAbstractState (0x0x7f61bc999b60) 0
+ primary-for QState (0x0x7f61bc999af8)
+ QObject (0x0x7f61bca3c960) 0
+ primary-for QAbstractState (0x0x7f61bc999b60)
+
+Class QStateMachine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStateMachine::QPrivateSignal (0x0x7f61bca3ce40) 0 empty
+
+Vtable for QStateMachine::SignalEvent
+QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN13QStateMachine11SignalEventE)
+16 (int (*)(...))QStateMachine::SignalEvent::~SignalEvent
+24 (int (*)(...))QStateMachine::SignalEvent::~SignalEvent
+
+Class QStateMachine::SignalEvent
+ size=48 align=8
+ base size=48 base align=8
+QStateMachine::SignalEvent (0x0x7f61bc999d00) 0
+ vptr=((& QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE) + 16)
+ QEvent (0x0x7f61bca3cea0) 0
+ primary-for QStateMachine::SignalEvent (0x0x7f61bc999d00)
+
+Vtable for QStateMachine::WrappedEvent
+QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN13QStateMachine12WrappedEventE)
+16 (int (*)(...))QStateMachine::WrappedEvent::~WrappedEvent
+24 (int (*)(...))QStateMachine::WrappedEvent::~WrappedEvent
+
+Class QStateMachine::WrappedEvent
+ size=40 align=8
+ base size=40 base align=8
+QStateMachine::WrappedEvent (0x0x7f61bc999d68) 0
+ vptr=((& QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE) + 16)
+ QEvent (0x0x7f61bca3cf00) 0
+ primary-for QStateMachine::WrappedEvent (0x0x7f61bc999d68)
+
+Vtable for QStateMachine
+QStateMachine::_ZTV13QStateMachine: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QStateMachine)
+16 (int (*)(...))QStateMachine::metaObject
+24 (int (*)(...))QStateMachine::qt_metacast
+32 (int (*)(...))QStateMachine::qt_metacall
+40 (int (*)(...))QStateMachine::~QStateMachine
+48 (int (*)(...))QStateMachine::~QStateMachine
+56 (int (*)(...))QStateMachine::event
+64 (int (*)(...))QStateMachine::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QStateMachine::onEntry
+120 (int (*)(...))QStateMachine::onExit
+128 (int (*)(...))QStateMachine::beginSelectTransitions
+136 (int (*)(...))QStateMachine::endSelectTransitions
+144 (int (*)(...))QStateMachine::beginMicrostep
+152 (int (*)(...))QStateMachine::endMicrostep
+
+Class QStateMachine
+ size=16 align=8
+ base size=16 base align=8
+QStateMachine (0x0x7f61bc999bc8) 0
+ vptr=((& QStateMachine::_ZTV13QStateMachine) + 16)
+ QState (0x0x7f61bc999c30) 0
+ primary-for QStateMachine (0x0x7f61bc999bc8)
+ QAbstractState (0x0x7f61bc999c98) 0
+ primary-for QState (0x0x7f61bc999c30)
+ QObject (0x0x7f61bca3cde0) 0
+ primary-for QAbstractState (0x0x7f61bc999c98)
+
+Class QStorageInfo
+ size=8 align=8
+ base size=8 base align=8
+QStorageInfo (0x0x7f61bcaa7300) 0
+
+Class QAbstractConcatenable
+ size=1 align=1
+ base size=0 base align=1
+QAbstractConcatenable (0x0x7f61bc79f0c0) 0 empty
+
+Class QStringListModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStringListModel::QPrivateSignal (0x0x7f61bc828420) 0 empty
+
+Vtable for QStringListModel
+QStringListModel::_ZTV16QStringListModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QStringListModel)
+16 (int (*)(...))QStringListModel::metaObject
+24 (int (*)(...))QStringListModel::qt_metacast
+32 (int (*)(...))QStringListModel::qt_metacall
+40 (int (*)(...))QStringListModel::~QStringListModel
+48 (int (*)(...))QStringListModel::~QStringListModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractListModel::index
+120 (int (*)(...))QAbstractListModel::parent
+128 (int (*)(...))QStringListModel::sibling
+136 (int (*)(...))QStringListModel::rowCount
+144 (int (*)(...))QAbstractListModel::columnCount
+152 (int (*)(...))QAbstractListModel::hasChildren
+160 (int (*)(...))QStringListModel::data
+168 (int (*)(...))QStringListModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QStringListModel::itemData
+200 (int (*)(...))QStringListModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractListModel::dropMimeData
+240 (int (*)(...))QStringListModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QStringListModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QStringListModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QStringListModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QStringListModel::flags
+328 (int (*)(...))QStringListModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QStringListModel
+ size=24 align=8
+ base size=24 base align=8
+QStringListModel (0x0x7f61bc816680) 0
+ vptr=((& QStringListModel::_ZTV16QStringListModel) + 16)
+ QAbstractListModel (0x0x7f61bc8166e8) 0
+ primary-for QStringListModel (0x0x7f61bc816680)
+ QAbstractItemModel (0x0x7f61bc816750) 0
+ primary-for QAbstractListModel (0x0x7f61bc8166e8)
+ QObject (0x0x7f61bc8283c0) 0
+ primary-for QAbstractItemModel (0x0x7f61bc816750)
+
+Class QSystemSemaphore
+ size=8 align=8
+ base size=8 base align=8
+QSystemSemaphore (0x0x7f61bc828540) 0
+
+Class QTemporaryDir
+ size=8 align=8
+ base size=8 base align=8
+QTemporaryDir (0x0x7f61bc828600) 0
+
+Class QTemporaryFile::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTemporaryFile::QPrivateSignal (0x0x7f61bc828720) 0 empty
+
+Vtable for QTemporaryFile
+QTemporaryFile::_ZTV14QTemporaryFile: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QTemporaryFile)
+16 (int (*)(...))QTemporaryFile::metaObject
+24 (int (*)(...))QTemporaryFile::qt_metacast
+32 (int (*)(...))QTemporaryFile::qt_metacall
+40 (int (*)(...))QTemporaryFile::~QTemporaryFile
+48 (int (*)(...))QTemporaryFile::~QTemporaryFile
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QTemporaryFile::open
+128 (int (*)(...))QFileDevice::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFile::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QFileDevice::writeData
+240 (int (*)(...))QTemporaryFile::fileName
+248 (int (*)(...))QFile::resize
+256 (int (*)(...))QFile::permissions
+264 (int (*)(...))QFile::setPermissions
+
+Class QTemporaryFile
+ size=16 align=8
+ base size=16 base align=8
+QTemporaryFile (0x0x7f61bc8167b8) 0
+ vptr=((& QTemporaryFile::_ZTV14QTemporaryFile) + 16)
+ QFile (0x0x7f61bc816820) 0
+ primary-for QTemporaryFile (0x0x7f61bc8167b8)
+ QFileDevice (0x0x7f61bc816888) 0
+ primary-for QFile (0x0x7f61bc816820)
+ QIODevice (0x0x7f61bc8168f0) 0
+ primary-for QFileDevice (0x0x7f61bc816888)
+ QObject (0x0x7f61bc8286c0) 0
+ primary-for QIODevice (0x0x7f61bc8168f0)
+
+Class QTextBoundaryFinder
+ size=48 align=8
+ base size=48 base align=8
+QTextBoundaryFinder (0x0x7f61bc828a80) 0
+
+Class QTextCodec::ConverterState
+ size=32 align=8
+ base size=32 base align=8
+QTextCodec::ConverterState (0x0x7f61bc8a4300) 0
+
+Vtable for QTextCodec
+QTextCodec::_ZTV10QTextCodec: 9 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTextCodec)
+16 (int (*)(...))__cxa_pure_virtual
+24 (int (*)(...))QTextCodec::aliases
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 0
+64 0
+
+Class QTextCodec
+ size=8 align=8
+ base size=8 base align=8
+QTextCodec (0x0x7f61bc8a42a0) 0 nearly-empty
+ vptr=((& QTextCodec::_ZTV10QTextCodec) + 16)
+
+Class QTextEncoder
+ size=40 align=8
+ base size=40 base align=8
+QTextEncoder (0x0x7f61bc8a4cc0) 0
+
+Class QTextDecoder
+ size=40 align=8
+ base size=40 base align=8
+QTextDecoder (0x0x7f61bc8a4ea0) 0
+
+Vtable for std::thread::_State
+std::thread::_State::_ZTVNSt6thread6_StateE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt6thread6_StateE)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class std::thread::_State
+ size=8 align=8
+ base size=8 base align=8
+std::thread::_State (0x0x7f61bc8fe120) 0 nearly-empty
+ vptr=((& std::thread::_State::_ZTVNSt6thread6_StateE) + 16)
+
+Class std::thread::id
+ size=8 align=8
+ base size=8 base align=8
+std::thread::id (0x0x7f61bc8fe180) 0
+
+Class std::thread
+ size=8 align=8
+ base size=8 base align=8
+std::thread (0x0x7f61bc8fe0c0) 0
+
+Class std::condition_variable
+ size=48 align=8
+ base size=48 base align=8
+std::condition_variable (0x0x7f61bc38d540) 0
+
+Class std::__at_thread_exit_elt
+ size=16 align=8
+ base size=16 base align=8
+std::__at_thread_exit_elt (0x0x7f61bc38d900) 0
+
+Class std::_V2::condition_variable_any
+ size=64 align=8
+ base size=64 base align=8
+std::_V2::condition_variable_any (0x0x7f61bc38d960) 0
+
+Class std::__atomic_futex_unsigned_base
+ size=1 align=1
+ base size=0 base align=1
+std::__atomic_futex_unsigned_base (0x0x7f61bc51ec60) 0 empty
+
+Vtable for std::future_error
+std::future_error::_ZTVSt12future_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12future_error)
+16 (int (*)(...))std::future_error::~future_error
+24 (int (*)(...))std::future_error::~future_error
+32 (int (*)(...))std::future_error::what
+
+Class std::future_error
+ size=32 align=8
+ base size=32 base align=8
+std::future_error (0x0x7f61bc521c98) 0
+ vptr=((& std::future_error::_ZTVSt12future_error) + 16)
+ std::logic_error (0x0x7f61bc521d00) 0
+ primary-for std::future_error (0x0x7f61bc521c98)
+ std::exception (0x0x7f61bc54b3c0) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f61bc521d00)
+
+Class std::__future_base::_Result_base::_Deleter
+ size=1 align=1
+ base size=0 base align=1
+std::__future_base::_Result_base::_Deleter (0x0x7f61bc54bae0) 0 empty
+
+Vtable for std::__future_base::_Result_base
+std::__future_base::_Result_base::_ZTVNSt13__future_base12_Result_baseE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt13__future_base12_Result_baseE)
+16 (int (*)(...))__cxa_pure_virtual
+24 0
+32 0
+
+Class std::__future_base::_Result_base
+ size=16 align=8
+ base size=16 base align=8
+std::__future_base::_Result_base (0x0x7f61bc54ba80) 0
+ vptr=((& std::__future_base::_Result_base::_ZTVNSt13__future_base12_Result_baseE) + 16)
+
+Class std::__future_base::_State_baseV2::__exception_ptr_tag
+ size=1 align=1
+ base size=0 base align=1
+std::__future_base::_State_baseV2::__exception_ptr_tag (0x0x7f61bc357240) 0 empty
+
+Class std::__future_base::_State_baseV2::_Make_ready
+ size=32 align=8
+ base size=32 base align=8
+std::__future_base::_State_baseV2::_Make_ready (0x0x7f61bc34a548) 0
+ std::__at_thread_exit_elt (0x0x7f61bc357300) 0
+
+Vtable for std::__future_base::_State_baseV2
+std::__future_base::_State_baseV2::_ZTVNSt13__future_base13_State_baseV2E: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt13__future_base13_State_baseV2E)
+16 (int (*)(...))std::__future_base::_State_baseV2::~_State_baseV2
+24 (int (*)(...))std::__future_base::_State_baseV2::~_State_baseV2
+32 (int (*)(...))std::__future_base::_State_baseV2::_M_complete_async
+40 (int (*)(...))std::__future_base::_State_baseV2::_M_is_deferred_future
+
+Class std::__future_base::_State_baseV2
+ size=32 align=8
+ base size=28 base align=8
+std::__future_base::_State_baseV2 (0x0x7f61bc54bc60) 0
+ vptr=((& std::__future_base::_State_baseV2::_ZTVNSt13__future_base13_State_baseV2E) + 16)
+
+Class std::__future_base
+ size=1 align=1
+ base size=0 base align=1
+std::__future_base (0x0x7f61bc54ba20) 0 empty
+
+Vtable for std::__future_base::_Async_state_commonV2
+std::__future_base::_Async_state_commonV2::_ZTVNSt13__future_base21_Async_state_commonV2E: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt13__future_base21_Async_state_commonV2E)
+16 (int (*)(...))std::__future_base::_Async_state_commonV2::~_Async_state_commonV2
+24 (int (*)(...))std::__future_base::_Async_state_commonV2::~_Async_state_commonV2
+32 (int (*)(...))std::__future_base::_Async_state_commonV2::_M_complete_async
+40 (int (*)(...))std::__future_base::_State_baseV2::_M_is_deferred_future
+
+Class std::__future_base::_Async_state_commonV2
+ size=48 align=8
+ base size=44 base align=8
+std::__future_base::_Async_state_commonV2 (0x0x7f61bbae0270) 0
+ vptr=((& std::__future_base::_Async_state_commonV2::_ZTVNSt13__future_base21_Async_state_commonV2E) + 16)
+ std::__future_base::_State_baseV2 (0x0x7f61bbb02300) 0
+ primary-for std::__future_base::_Async_state_commonV2 (0x0x7f61bbae0270)
+
+Class QThread::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QThread::QPrivateSignal (0x0x7f61bbb02ba0) 0 empty
+
+Vtable for QThread
+QThread::_ZTV7QThread: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QThread)
+16 (int (*)(...))QThread::metaObject
+24 (int (*)(...))QThread::qt_metacast
+32 (int (*)(...))QThread::qt_metacall
+40 (int (*)(...))QThread::~QThread
+48 (int (*)(...))QThread::~QThread
+56 (int (*)(...))QThread::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QThread::run
+
+Class QThread
+ size=16 align=8
+ base size=16 base align=8
+QThread (0x0x7f61bbae05b0) 0
+ vptr=((& QThread::_ZTV7QThread) + 16)
+ QObject (0x0x7f61bbb02b40) 0
+ primary-for QThread (0x0x7f61bbae05b0)
+
+Class QThreadPool::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QThreadPool::QPrivateSignal (0x0x7f61bbb02f60) 0 empty
+
+Vtable for QThreadPool
+QThreadPool::_ZTV11QThreadPool: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QThreadPool)
+16 (int (*)(...))QThreadPool::metaObject
+24 (int (*)(...))QThreadPool::qt_metacast
+32 (int (*)(...))QThreadPool::qt_metacall
+40 (int (*)(...))QThreadPool::~QThreadPool
+48 (int (*)(...))QThreadPool::~QThreadPool
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QThreadPool
+ size=16 align=8
+ base size=16 base align=8
+QThreadPool (0x0x7f61bbae0618) 0
+ vptr=((& QThreadPool::_ZTV11QThreadPool) + 16)
+ QObject (0x0x7f61bbb02f00) 0
+ primary-for QThreadPool (0x0x7f61bbae0618)
+
+Class QThreadStorageData
+ size=4 align=4
+ base size=4 base align=4
+QThreadStorageData (0x0x7f61bbb47180) 0
+
+Class QTimeLine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTimeLine::QPrivateSignal (0x0x7f61bbb47840) 0 empty
+
+Vtable for QTimeLine
+QTimeLine::_ZTV9QTimeLine: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QTimeLine)
+16 (int (*)(...))QTimeLine::metaObject
+24 (int (*)(...))QTimeLine::qt_metacast
+32 (int (*)(...))QTimeLine::qt_metacall
+40 (int (*)(...))QTimeLine::~QTimeLine
+48 (int (*)(...))QTimeLine::~QTimeLine
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QTimeLine::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTimeLine::valueForTime
+
+Class QTimeLine
+ size=16 align=8
+ base size=16 base align=8
+QTimeLine (0x0x7f61bbae0680) 0
+ vptr=((& QTimeLine::_ZTV9QTimeLine) + 16)
+ QObject (0x0x7f61bbb477e0) 0
+ primary-for QTimeLine (0x0x7f61bbae0680)
+
+Class QTimer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTimer::QPrivateSignal (0x0x7f61bbb47a80) 0 empty
+
+Vtable for QTimer
+QTimer::_ZTV6QTimer: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QTimer)
+16 (int (*)(...))QTimer::metaObject
+24 (int (*)(...))QTimer::qt_metacast
+32 (int (*)(...))QTimer::qt_metacall
+40 (int (*)(...))QTimer::~QTimer
+48 (int (*)(...))QTimer::~QTimer
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QTimer::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTimer
+ size=32 align=8
+ base size=29 base align=8
+QTimer (0x0x7f61bbae06e8) 0
+ vptr=((& QTimer::_ZTV6QTimer) + 16)
+ QObject (0x0x7f61bbb47a20) 0
+ primary-for QTimer (0x0x7f61bbae06e8)
+
+Class QTimeZone::OffsetData
+ size=32 align=8
+ base size=28 base align=8
+QTimeZone::OffsetData (0x0x7f61bb7bb420) 0
+
+Class QTimeZone
+ size=8 align=8
+ base size=8 base align=8
+QTimeZone (0x0x7f61bb7bb3c0) 0
+
+Class QTranslator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTranslator::QPrivateSignal (0x0x7f61bb8554e0) 0 empty
+
+Vtable for QTranslator
+QTranslator::_ZTV11QTranslator: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTranslator)
+16 (int (*)(...))QTranslator::metaObject
+24 (int (*)(...))QTranslator::qt_metacast
+32 (int (*)(...))QTranslator::qt_metacall
+40 (int (*)(...))QTranslator::~QTranslator
+48 (int (*)(...))QTranslator::~QTranslator
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTranslator::translate
+120 (int (*)(...))QTranslator::isEmpty
+
+Class QTranslator
+ size=16 align=8
+ base size=16 base align=8
+QTranslator (0x0x7f61bb845dd0) 0
+ vptr=((& QTranslator::_ZTV11QTranslator) + 16)
+ QObject (0x0x7f61bb855480) 0
+ primary-for QTranslator (0x0x7f61bb845dd0)
+
+Class QTransposeProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTransposeProxyModel::QPrivateSignal (0x0x7f61bb855720) 0 empty
+
+Vtable for QTransposeProxyModel
+QTransposeProxyModel::_ZTV20QTransposeProxyModel: 53 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QTransposeProxyModel)
+16 (int (*)(...))QTransposeProxyModel::metaObject
+24 (int (*)(...))QTransposeProxyModel::qt_metacast
+32 (int (*)(...))QTransposeProxyModel::qt_metacall
+40 (int (*)(...))QTransposeProxyModel::~QTransposeProxyModel
+48 (int (*)(...))QTransposeProxyModel::~QTransposeProxyModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTransposeProxyModel::index
+120 (int (*)(...))QTransposeProxyModel::parent
+128 (int (*)(...))QAbstractProxyModel::sibling
+136 (int (*)(...))QTransposeProxyModel::rowCount
+144 (int (*)(...))QTransposeProxyModel::columnCount
+152 (int (*)(...))QAbstractProxyModel::hasChildren
+160 (int (*)(...))QAbstractProxyModel::data
+168 (int (*)(...))QAbstractProxyModel::setData
+176 (int (*)(...))QTransposeProxyModel::headerData
+184 (int (*)(...))QTransposeProxyModel::setHeaderData
+192 (int (*)(...))QTransposeProxyModel::itemData
+200 (int (*)(...))QTransposeProxyModel::setItemData
+208 (int (*)(...))QAbstractProxyModel::mimeTypes
+216 (int (*)(...))QAbstractProxyModel::mimeData
+224 (int (*)(...))QAbstractProxyModel::canDropMimeData
+232 (int (*)(...))QAbstractProxyModel::dropMimeData
+240 (int (*)(...))QAbstractProxyModel::supportedDropActions
+248 (int (*)(...))QAbstractProxyModel::supportedDragActions
+256 (int (*)(...))QTransposeProxyModel::insertRows
+264 (int (*)(...))QTransposeProxyModel::insertColumns
+272 (int (*)(...))QTransposeProxyModel::removeRows
+280 (int (*)(...))QTransposeProxyModel::removeColumns
+288 (int (*)(...))QTransposeProxyModel::moveRows
+296 (int (*)(...))QTransposeProxyModel::moveColumns
+304 (int (*)(...))QAbstractProxyModel::fetchMore
+312 (int (*)(...))QAbstractProxyModel::canFetchMore
+320 (int (*)(...))QAbstractProxyModel::flags
+328 (int (*)(...))QTransposeProxyModel::sort
+336 (int (*)(...))QAbstractProxyModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QTransposeProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractProxyModel::submit
+376 (int (*)(...))QAbstractProxyModel::revert
+384 (int (*)(...))QTransposeProxyModel::setSourceModel
+392 (int (*)(...))QTransposeProxyModel::mapToSource
+400 (int (*)(...))QTransposeProxyModel::mapFromSource
+408 (int (*)(...))QAbstractProxyModel::mapSelectionToSource
+416 (int (*)(...))QAbstractProxyModel::mapSelectionFromSource
+
+Class QTransposeProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QTransposeProxyModel (0x0x7f61bb845e38) 0
+ vptr=((& QTransposeProxyModel::_ZTV20QTransposeProxyModel) + 16)
+ QAbstractProxyModel (0x0x7f61bb845ea0) 0
+ primary-for QTransposeProxyModel (0x0x7f61bb845e38)
+ QAbstractItemModel (0x0x7f61bb845f08) 0
+ primary-for QAbstractProxyModel (0x0x7f61bb845ea0)
+ QObject (0x0x7f61bb8556c0) 0
+ primary-for QAbstractItemModel (0x0x7f61bb845f08)
+
+Class QUrlQuery
+ size=8 align=8
+ base size=8 base align=8
+QUrlQuery (0x0x7f61bb855900) 0
+
+Class QWaitCondition
+ size=8 align=8
+ base size=8 base align=8
+QWaitCondition (0x0x7f61bb950de0) 0
+
+Class QXmlStreamStringRef
+ size=16 align=8
+ base size=16 base align=8
+QXmlStreamStringRef (0x0x7f61bb950f00) 0
+
+Class QXmlStreamAttribute
+ size=80 align=8
+ base size=73 base align=8
+QXmlStreamAttribute (0x0x7f61bb5fe300) 0
+
+Class QXmlStreamAttributes
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamAttributes (0x0x7f61bb66e208) 0
+ QVector<QXmlStreamAttribute> (0x0x7f61bb666a20) 0
+
+Class QXmlStreamNamespaceDeclaration
+ size=40 align=8
+ base size=40 base align=8
+QXmlStreamNamespaceDeclaration (0x0x7f61bb666d20) 0
+
+Class QXmlStreamNotationDeclaration
+ size=56 align=8
+ base size=56 base align=8
+QXmlStreamNotationDeclaration (0x0x7f61bb6e6cc0) 0
+
+Class QXmlStreamEntityDeclaration
+ size=88 align=8
+ base size=88 base align=8
+QXmlStreamEntityDeclaration (0x0x7f61bb743cc0) 0
+
+Vtable for QXmlStreamEntityResolver
+QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QXmlStreamEntityResolver)
+16 (int (*)(...))QXmlStreamEntityResolver::~QXmlStreamEntityResolver
+24 (int (*)(...))QXmlStreamEntityResolver::~QXmlStreamEntityResolver
+32 (int (*)(...))QXmlStreamEntityResolver::resolveEntity
+40 (int (*)(...))QXmlStreamEntityResolver::resolveUndeclaredEntity
+
+Class QXmlStreamEntityResolver
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamEntityResolver (0x0x7f61bb3afd80) 0 nearly-empty
+ vptr=((& QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver) + 16)
+
+Class QXmlStreamReader
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamReader (0x0x7f61bb3afde0) 0
+
+Class QXmlStreamWriter
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamWriter (0x0x7f61bb3eacc0) 0
+
+Class QRgba64
+ size=8 align=8
+ base size=8 base align=8
+QRgba64 (0x0x7f61bb43e300) 0
+
+Class QColor::CT
+ size=10 align=2
+ base size=10 base align=2
+QColor::CT (0x0x7f61bb4e03c0) 0
+
+Class QColor
+ size=16 align=4
+ base size=14 base align=4
+QColor (0x0x7f61bb4e0360) 0
+
+Class QRegion::QRegionData
+ size=16 align=8
+ base size=16 base align=8
+QRegion::QRegionData (0x0x7f61bb1a32a0) 0
+
+Class QRegion
+ size=8 align=8
+ base size=8 base align=8
+QRegion (0x0x7f61bb1a3240) 0
+
+Class QKeySequence
+ size=8 align=8
+ base size=8 base align=8
+QKeySequence (0x0x7f61bb30fea0) 0
+
+Class QVector2D
+ size=8 align=4
+ base size=8 base align=4
+QVector2D (0x0x7f61baffda20) 0
+
+Class QTouchDevice
+ size=8 align=8
+ base size=8 base align=8
+QTouchDevice (0x0x7f61bb06aae0) 0
+
+Vtable for QInputEvent
+QInputEvent::_ZTV11QInputEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QInputEvent)
+16 (int (*)(...))QInputEvent::~QInputEvent
+24 (int (*)(...))QInputEvent::~QInputEvent
+
+Class QInputEvent
+ size=32 align=8
+ base size=32 base align=8
+QInputEvent (0x0x7f61bb0558f0) 0
+ vptr=((& QInputEvent::_ZTV11QInputEvent) + 16)
+ QEvent (0x0x7f61bb0b03c0) 0
+ primary-for QInputEvent (0x0x7f61bb0558f0)
+
+Vtable for QEnterEvent
+QEnterEvent::_ZTV11QEnterEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QEnterEvent)
+16 (int (*)(...))QEnterEvent::~QEnterEvent
+24 (int (*)(...))QEnterEvent::~QEnterEvent
+
+Class QEnterEvent
+ size=72 align=8
+ base size=72 base align=8
+QEnterEvent (0x0x7f61bb055958) 0
+ vptr=((& QEnterEvent::_ZTV11QEnterEvent) + 16)
+ QEvent (0x0x7f61bb0b05a0) 0
+ primary-for QEnterEvent (0x0x7f61bb055958)
+
+Vtable for QMouseEvent
+QMouseEvent::_ZTV11QMouseEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QMouseEvent)
+16 (int (*)(...))QMouseEvent::~QMouseEvent
+24 (int (*)(...))QMouseEvent::~QMouseEvent
+
+Class QMouseEvent
+ size=104 align=8
+ base size=100 base align=8
+QMouseEvent (0x0x7f61bb0559c0) 0
+ vptr=((& QMouseEvent::_ZTV11QMouseEvent) + 16)
+ QInputEvent (0x0x7f61bb055a28) 0
+ primary-for QMouseEvent (0x0x7f61bb0559c0)
+ QEvent (0x0x7f61bb0b0960) 0
+ primary-for QInputEvent (0x0x7f61bb055a28)
+
+Vtable for QHoverEvent
+QHoverEvent::_ZTV11QHoverEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QHoverEvent)
+16 (int (*)(...))QHoverEvent::~QHoverEvent
+24 (int (*)(...))QHoverEvent::~QHoverEvent
+
+Class QHoverEvent
+ size=64 align=8
+ base size=64 base align=8
+QHoverEvent (0x0x7f61bb055a90) 0
+ vptr=((& QHoverEvent::_ZTV11QHoverEvent) + 16)
+ QInputEvent (0x0x7f61bb055af8) 0
+ primary-for QHoverEvent (0x0x7f61bb055a90)
+ QEvent (0x0x7f61bb0b0e40) 0
+ primary-for QInputEvent (0x0x7f61bb055af8)
+
+Vtable for QWheelEvent
+QWheelEvent::_ZTV11QWheelEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QWheelEvent)
+16 (int (*)(...))QWheelEvent::~QWheelEvent
+24 (int (*)(...))QWheelEvent::~QWheelEvent
+
+Class QWheelEvent
+ size=96 align=8
+ base size=96 base align=8
+QWheelEvent (0x0x7f61bb055b60) 0
+ vptr=((& QWheelEvent::_ZTV11QWheelEvent) + 16)
+ QInputEvent (0x0x7f61bb055bc8) 0
+ primary-for QWheelEvent (0x0x7f61bb055b60)
+ QEvent (0x0x7f61bb0eb060) 0
+ primary-for QInputEvent (0x0x7f61bb055bc8)
+
+Vtable for QTabletEvent
+QTabletEvent::_ZTV12QTabletEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QTabletEvent)
+16 (int (*)(...))QTabletEvent::~QTabletEvent
+24 (int (*)(...))QTabletEvent::~QTabletEvent
+
+Class QTabletEvent
+ size=128 align=8
+ base size=128 base align=8
+QTabletEvent (0x0x7f61bb055c30) 0
+ vptr=((& QTabletEvent::_ZTV12QTabletEvent) + 16)
+ QInputEvent (0x0x7f61bb055c98) 0
+ primary-for QTabletEvent (0x0x7f61bb055c30)
+ QEvent (0x0x7f61bb0eb780) 0
+ primary-for QInputEvent (0x0x7f61bb055c98)
+
+Vtable for QNativeGestureEvent
+QNativeGestureEvent::_ZTV19QNativeGestureEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QNativeGestureEvent)
+16 (int (*)(...))QNativeGestureEvent::~QNativeGestureEvent
+24 (int (*)(...))QNativeGestureEvent::~QNativeGestureEvent
+
+Class QNativeGestureEvent
+ size=112 align=8
+ base size=112 base align=8
+QNativeGestureEvent (0x0x7f61bb055d00) 0
+ vptr=((& QNativeGestureEvent::_ZTV19QNativeGestureEvent) + 16)
+ QInputEvent (0x0x7f61bb055d68) 0
+ primary-for QNativeGestureEvent (0x0x7f61bb055d00)
+ QEvent (0x0x7f61bb1270c0) 0
+ primary-for QInputEvent (0x0x7f61bb055d68)
+
+Vtable for QKeyEvent
+QKeyEvent::_ZTV9QKeyEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QKeyEvent)
+16 (int (*)(...))QKeyEvent::~QKeyEvent
+24 (int (*)(...))QKeyEvent::~QKeyEvent
+
+Class QKeyEvent
+ size=64 align=8
+ base size=59 base align=8
+QKeyEvent (0x0x7f61bb055dd0) 0
+ vptr=((& QKeyEvent::_ZTV9QKeyEvent) + 16)
+ QInputEvent (0x0x7f61bb055e38) 0
+ primary-for QKeyEvent (0x0x7f61bb055dd0)
+ QEvent (0x0x7f61bb1273c0) 0
+ primary-for QInputEvent (0x0x7f61bb055e38)
+
+Vtable for QFocusEvent
+QFocusEvent::_ZTV11QFocusEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFocusEvent)
+16 (int (*)(...))QFocusEvent::~QFocusEvent
+24 (int (*)(...))QFocusEvent::~QFocusEvent
+
+Class QFocusEvent
+ size=24 align=8
+ base size=24 base align=8
+QFocusEvent (0x0x7f61bb055ea0) 0
+ vptr=((& QFocusEvent::_ZTV11QFocusEvent) + 16)
+ QEvent (0x0x7f61bb1276c0) 0
+ primary-for QFocusEvent (0x0x7f61bb055ea0)
+
+Vtable for QPaintEvent
+QPaintEvent::_ZTV11QPaintEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QPaintEvent)
+16 (int (*)(...))QPaintEvent::~QPaintEvent
+24 (int (*)(...))QPaintEvent::~QPaintEvent
+
+Class QPaintEvent
+ size=56 align=8
+ base size=49 base align=8
+QPaintEvent (0x0x7f61bb055f08) 0
+ vptr=((& QPaintEvent::_ZTV11QPaintEvent) + 16)
+ QEvent (0x0x7f61bb1277e0) 0
+ primary-for QPaintEvent (0x0x7f61bb055f08)
+
+Vtable for QMoveEvent
+QMoveEvent::_ZTV10QMoveEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QMoveEvent)
+16 (int (*)(...))QMoveEvent::~QMoveEvent
+24 (int (*)(...))QMoveEvent::~QMoveEvent
+
+Class QMoveEvent
+ size=40 align=8
+ base size=36 base align=8
+QMoveEvent (0x0x7f61bb055f70) 0
+ vptr=((& QMoveEvent::_ZTV10QMoveEvent) + 16)
+ QEvent (0x0x7f61bb127900) 0
+ primary-for QMoveEvent (0x0x7f61bb055f70)
+
+Vtable for QExposeEvent
+QExposeEvent::_ZTV12QExposeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QExposeEvent)
+16 (int (*)(...))QExposeEvent::~QExposeEvent
+24 (int (*)(...))QExposeEvent::~QExposeEvent
+
+Class QExposeEvent
+ size=32 align=8
+ base size=32 base align=8
+QExposeEvent (0x0x7f61bb15b000) 0
+ vptr=((& QExposeEvent::_ZTV12QExposeEvent) + 16)
+ QEvent (0x0x7f61bb127a20) 0
+ primary-for QExposeEvent (0x0x7f61bb15b000)
+
+Vtable for QPlatformSurfaceEvent
+QPlatformSurfaceEvent::_ZTV21QPlatformSurfaceEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QPlatformSurfaceEvent)
+16 (int (*)(...))QPlatformSurfaceEvent::~QPlatformSurfaceEvent
+24 (int (*)(...))QPlatformSurfaceEvent::~QPlatformSurfaceEvent
+
+Class QPlatformSurfaceEvent
+ size=24 align=8
+ base size=24 base align=8
+QPlatformSurfaceEvent (0x0x7f61bb15b068) 0
+ vptr=((& QPlatformSurfaceEvent::_ZTV21QPlatformSurfaceEvent) + 16)
+ QEvent (0x0x7f61bb127ae0) 0
+ primary-for QPlatformSurfaceEvent (0x0x7f61bb15b068)
+
+Vtable for QResizeEvent
+QResizeEvent::_ZTV12QResizeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QResizeEvent)
+16 (int (*)(...))QResizeEvent::~QResizeEvent
+24 (int (*)(...))QResizeEvent::~QResizeEvent
+
+Class QResizeEvent
+ size=40 align=8
+ base size=36 base align=8
+QResizeEvent (0x0x7f61bb15b0d0) 0
+ vptr=((& QResizeEvent::_ZTV12QResizeEvent) + 16)
+ QEvent (0x0x7f61bb127ba0) 0
+ primary-for QResizeEvent (0x0x7f61bb15b0d0)
+
+Vtable for QCloseEvent
+QCloseEvent::_ZTV11QCloseEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QCloseEvent)
+16 (int (*)(...))QCloseEvent::~QCloseEvent
+24 (int (*)(...))QCloseEvent::~QCloseEvent
+
+Class QCloseEvent
+ size=24 align=8
+ base size=20 base align=8
+QCloseEvent (0x0x7f61bb15b138) 0
+ vptr=((& QCloseEvent::_ZTV11QCloseEvent) + 16)
+ QEvent (0x0x7f61bb127cc0) 0
+ primary-for QCloseEvent (0x0x7f61bb15b138)
+
+Vtable for QIconDragEvent
+QIconDragEvent::_ZTV14QIconDragEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QIconDragEvent)
+16 (int (*)(...))QIconDragEvent::~QIconDragEvent
+24 (int (*)(...))QIconDragEvent::~QIconDragEvent
+
+Class QIconDragEvent
+ size=24 align=8
+ base size=20 base align=8
+QIconDragEvent (0x0x7f61bb15b1a0) 0
+ vptr=((& QIconDragEvent::_ZTV14QIconDragEvent) + 16)
+ QEvent (0x0x7f61bb127d20) 0
+ primary-for QIconDragEvent (0x0x7f61bb15b1a0)
+
+Vtable for QShowEvent
+QShowEvent::_ZTV10QShowEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QShowEvent)
+16 (int (*)(...))QShowEvent::~QShowEvent
+24 (int (*)(...))QShowEvent::~QShowEvent
+
+Class QShowEvent
+ size=24 align=8
+ base size=20 base align=8
+QShowEvent (0x0x7f61bb15b208) 0
+ vptr=((& QShowEvent::_ZTV10QShowEvent) + 16)
+ QEvent (0x0x7f61bb127d80) 0
+ primary-for QShowEvent (0x0x7f61bb15b208)
+
+Vtable for QHideEvent
+QHideEvent::_ZTV10QHideEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QHideEvent)
+16 (int (*)(...))QHideEvent::~QHideEvent
+24 (int (*)(...))QHideEvent::~QHideEvent
+
+Class QHideEvent
+ size=24 align=8
+ base size=20 base align=8
+QHideEvent (0x0x7f61bb15b270) 0
+ vptr=((& QHideEvent::_ZTV10QHideEvent) + 16)
+ QEvent (0x0x7f61bb127de0) 0
+ primary-for QHideEvent (0x0x7f61bb15b270)
+
+Vtable for QContextMenuEvent
+QContextMenuEvent::_ZTV17QContextMenuEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QContextMenuEvent)
+16 (int (*)(...))QContextMenuEvent::~QContextMenuEvent
+24 (int (*)(...))QContextMenuEvent::~QContextMenuEvent
+
+Class QContextMenuEvent
+ size=56 align=8
+ base size=49 base align=8
+QContextMenuEvent (0x0x7f61bb15b2d8) 0
+ vptr=((& QContextMenuEvent::_ZTV17QContextMenuEvent) + 16)
+ QInputEvent (0x0x7f61bb15b340) 0
+ primary-for QContextMenuEvent (0x0x7f61bb15b2d8)
+ QEvent (0x0x7f61bb127e40) 0
+ primary-for QInputEvent (0x0x7f61bb15b340)
+
+Class QInputMethodEvent::Attribute
+ size=32 align=8
+ base size=32 base align=8
+QInputMethodEvent::Attribute (0x0x7f61bb17b1e0) 0
+
+Vtable for QInputMethodEvent
+QInputMethodEvent::_ZTV17QInputMethodEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QInputMethodEvent)
+16 (int (*)(...))QInputMethodEvent::~QInputMethodEvent
+24 (int (*)(...))QInputMethodEvent::~QInputMethodEvent
+
+Class QInputMethodEvent
+ size=56 align=8
+ base size=56 base align=8
+QInputMethodEvent (0x0x7f61bb15b3a8) 0
+ vptr=((& QInputMethodEvent::_ZTV17QInputMethodEvent) + 16)
+ QEvent (0x0x7f61bb17b180) 0
+ primary-for QInputMethodEvent (0x0x7f61bb15b3a8)
+
+Class QInputMethodQueryEvent::QueryPair
+ size=24 align=8
+ base size=24 base align=8
+QInputMethodQueryEvent::QueryPair (0x0x7f61badf5540) 0
+
+Vtable for QInputMethodQueryEvent
+QInputMethodQueryEvent::_ZTV22QInputMethodQueryEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QInputMethodQueryEvent)
+16 (int (*)(...))QInputMethodQueryEvent::~QInputMethodQueryEvent
+24 (int (*)(...))QInputMethodQueryEvent::~QInputMethodQueryEvent
+
+Class QInputMethodQueryEvent
+ size=32 align=8
+ base size=32 base align=8
+QInputMethodQueryEvent (0x0x7f61badf65b0) 0
+ vptr=((& QInputMethodQueryEvent::_ZTV22QInputMethodQueryEvent) + 16)
+ QEvent (0x0x7f61badf54e0) 0
+ primary-for QInputMethodQueryEvent (0x0x7f61badf65b0)
+
+Vtable for QDropEvent
+QDropEvent::_ZTV10QDropEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QDropEvent)
+16 (int (*)(...))QDropEvent::~QDropEvent
+24 (int (*)(...))QDropEvent::~QDropEvent
+
+Class QDropEvent
+ size=72 align=8
+ base size=72 base align=8
+QDropEvent (0x0x7f61bae6b680) 0
+ vptr=((& QDropEvent::_ZTV10QDropEvent) + 16)
+ QEvent (0x0x7f61bae742a0) 0
+ primary-for QDropEvent (0x0x7f61bae6b680)
+
+Vtable for QDragMoveEvent
+QDragMoveEvent::_ZTV14QDragMoveEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QDragMoveEvent)
+16 (int (*)(...))QDragMoveEvent::~QDragMoveEvent
+24 (int (*)(...))QDragMoveEvent::~QDragMoveEvent
+
+Class QDragMoveEvent
+ size=88 align=8
+ base size=88 base align=8
+QDragMoveEvent (0x0x7f61bae6b6e8) 0
+ vptr=((& QDragMoveEvent::_ZTV14QDragMoveEvent) + 16)
+ QDropEvent (0x0x7f61bae6b750) 0
+ primary-for QDragMoveEvent (0x0x7f61bae6b6e8)
+ QEvent (0x0x7f61bae74660) 0
+ primary-for QDropEvent (0x0x7f61bae6b750)
+
+Vtable for QDragEnterEvent
+QDragEnterEvent::_ZTV15QDragEnterEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QDragEnterEvent)
+16 (int (*)(...))QDragEnterEvent::~QDragEnterEvent
+24 (int (*)(...))QDragEnterEvent::~QDragEnterEvent
+
+Class QDragEnterEvent
+ size=88 align=8
+ base size=88 base align=8
+QDragEnterEvent (0x0x7f61bae6b7b8) 0
+ vptr=((& QDragEnterEvent::_ZTV15QDragEnterEvent) + 16)
+ QDragMoveEvent (0x0x7f61bae6b820) 0
+ primary-for QDragEnterEvent (0x0x7f61bae6b7b8)
+ QDropEvent (0x0x7f61bae6b888) 0
+ primary-for QDragMoveEvent (0x0x7f61bae6b820)
+ QEvent (0x0x7f61bae748a0) 0
+ primary-for QDropEvent (0x0x7f61bae6b888)
+
+Vtable for QDragLeaveEvent
+QDragLeaveEvent::_ZTV15QDragLeaveEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QDragLeaveEvent)
+16 (int (*)(...))QDragLeaveEvent::~QDragLeaveEvent
+24 (int (*)(...))QDragLeaveEvent::~QDragLeaveEvent
+
+Class QDragLeaveEvent
+ size=24 align=8
+ base size=20 base align=8
+QDragLeaveEvent (0x0x7f61bae6b8f0) 0
+ vptr=((& QDragLeaveEvent::_ZTV15QDragLeaveEvent) + 16)
+ QEvent (0x0x7f61bae74900) 0
+ primary-for QDragLeaveEvent (0x0x7f61bae6b8f0)
+
+Vtable for QHelpEvent
+QHelpEvent::_ZTV10QHelpEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QHelpEvent)
+16 (int (*)(...))QHelpEvent::~QHelpEvent
+24 (int (*)(...))QHelpEvent::~QHelpEvent
+
+Class QHelpEvent
+ size=40 align=8
+ base size=36 base align=8
+QHelpEvent (0x0x7f61bae6b958) 0
+ vptr=((& QHelpEvent::_ZTV10QHelpEvent) + 16)
+ QEvent (0x0x7f61bae74960) 0
+ primary-for QHelpEvent (0x0x7f61bae6b958)
+
+Vtable for QStatusTipEvent
+QStatusTipEvent::_ZTV15QStatusTipEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QStatusTipEvent)
+16 (int (*)(...))QStatusTipEvent::~QStatusTipEvent
+24 (int (*)(...))QStatusTipEvent::~QStatusTipEvent
+
+Class QStatusTipEvent
+ size=32 align=8
+ base size=32 base align=8
+QStatusTipEvent (0x0x7f61bae6b9c0) 0
+ vptr=((& QStatusTipEvent::_ZTV15QStatusTipEvent) + 16)
+ QEvent (0x0x7f61bae74c00) 0
+ primary-for QStatusTipEvent (0x0x7f61bae6b9c0)
+
+Vtable for QWhatsThisClickedEvent
+QWhatsThisClickedEvent::_ZTV22QWhatsThisClickedEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QWhatsThisClickedEvent)
+16 (int (*)(...))QWhatsThisClickedEvent::~QWhatsThisClickedEvent
+24 (int (*)(...))QWhatsThisClickedEvent::~QWhatsThisClickedEvent
+
+Class QWhatsThisClickedEvent
+ size=32 align=8
+ base size=32 base align=8
+QWhatsThisClickedEvent (0x0x7f61bae6ba28) 0
+ vptr=((& QWhatsThisClickedEvent::_ZTV22QWhatsThisClickedEvent) + 16)
+ QEvent (0x0x7f61bae74cc0) 0
+ primary-for QWhatsThisClickedEvent (0x0x7f61bae6ba28)
+
+Vtable for QActionEvent
+QActionEvent::_ZTV12QActionEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QActionEvent)
+16 (int (*)(...))QActionEvent::~QActionEvent
+24 (int (*)(...))QActionEvent::~QActionEvent
+
+Class QActionEvent
+ size=40 align=8
+ base size=40 base align=8
+QActionEvent (0x0x7f61bae6ba90) 0
+ vptr=((& QActionEvent::_ZTV12QActionEvent) + 16)
+ QEvent (0x0x7f61bae74d80) 0
+ primary-for QActionEvent (0x0x7f61bae6ba90)
+
+Vtable for QFileOpenEvent
+QFileOpenEvent::_ZTV14QFileOpenEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QFileOpenEvent)
+16 (int (*)(...))QFileOpenEvent::~QFileOpenEvent
+24 (int (*)(...))QFileOpenEvent::~QFileOpenEvent
+
+Class QFileOpenEvent
+ size=40 align=8
+ base size=40 base align=8
+QFileOpenEvent (0x0x7f61bae6baf8) 0
+ vptr=((& QFileOpenEvent::_ZTV14QFileOpenEvent) + 16)
+ QEvent (0x0x7f61bae74ea0) 0
+ primary-for QFileOpenEvent (0x0x7f61bae6baf8)
+
+Vtable for QToolBarChangeEvent
+QToolBarChangeEvent::_ZTV19QToolBarChangeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QToolBarChangeEvent)
+16 (int (*)(...))QToolBarChangeEvent::~QToolBarChangeEvent
+24 (int (*)(...))QToolBarChangeEvent::~QToolBarChangeEvent
+
+Class QToolBarChangeEvent
+ size=24 align=8
+ base size=21 base align=8
+QToolBarChangeEvent (0x0x7f61bae6bb60) 0
+ vptr=((& QToolBarChangeEvent::_ZTV19QToolBarChangeEvent) + 16)
+ QEvent (0x0x7f61baeae000) 0
+ primary-for QToolBarChangeEvent (0x0x7f61bae6bb60)
+
+Vtable for QShortcutEvent
+QShortcutEvent::_ZTV14QShortcutEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QShortcutEvent)
+16 (int (*)(...))QShortcutEvent::~QShortcutEvent
+24 (int (*)(...))QShortcutEvent::~QShortcutEvent
+
+Class QShortcutEvent
+ size=40 align=8
+ base size=40 base align=8
+QShortcutEvent (0x0x7f61bae6bbc8) 0
+ vptr=((& QShortcutEvent::_ZTV14QShortcutEvent) + 16)
+ QEvent (0x0x7f61baeae0c0) 0
+ primary-for QShortcutEvent (0x0x7f61bae6bbc8)
+
+Vtable for QWindowStateChangeEvent
+QWindowStateChangeEvent::_ZTV23QWindowStateChangeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QWindowStateChangeEvent)
+16 (int (*)(...))QWindowStateChangeEvent::~QWindowStateChangeEvent
+24 (int (*)(...))QWindowStateChangeEvent::~QWindowStateChangeEvent
+
+Class QWindowStateChangeEvent
+ size=32 align=8
+ base size=25 base align=8
+QWindowStateChangeEvent (0x0x7f61bae6bc30) 0
+ vptr=((& QWindowStateChangeEvent::_ZTV23QWindowStateChangeEvent) + 16)
+ QEvent (0x0x7f61baeae240) 0
+ primary-for QWindowStateChangeEvent (0x0x7f61bae6bc30)
+
+Class QPointingDeviceUniqueId
+ size=8 align=8
+ base size=8 base align=8
+QPointingDeviceUniqueId (0x0x7f61baeae3c0) 0
+
+Class QTouchEvent::TouchPoint
+ size=8 align=8
+ base size=8 base align=8
+QTouchEvent::TouchPoint (0x0x7f61baf00780) 0
+
+Vtable for QTouchEvent
+QTouchEvent::_ZTV11QTouchEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTouchEvent)
+16 (int (*)(...))QTouchEvent::~QTouchEvent
+24 (int (*)(...))QTouchEvent::~QTouchEvent
+
+Class QTouchEvent
+ size=72 align=8
+ base size=72 base align=8
+QTouchEvent (0x0x7f61baf09478) 0
+ vptr=((& QTouchEvent::_ZTV11QTouchEvent) + 16)
+ QInputEvent (0x0x7f61baf094e0) 0
+ primary-for QTouchEvent (0x0x7f61baf09478)
+ QEvent (0x0x7f61baf00720) 0
+ primary-for QInputEvent (0x0x7f61baf094e0)
+
+Vtable for QScrollPrepareEvent
+QScrollPrepareEvent::_ZTV19QScrollPrepareEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QScrollPrepareEvent)
+16 (int (*)(...))QScrollPrepareEvent::~QScrollPrepareEvent
+24 (int (*)(...))QScrollPrepareEvent::~QScrollPrepareEvent
+
+Class QScrollPrepareEvent
+ size=112 align=8
+ base size=112 base align=8
+QScrollPrepareEvent (0x0x7f61bac191a0) 0
+ vptr=((& QScrollPrepareEvent::_ZTV19QScrollPrepareEvent) + 16)
+ QEvent (0x0x7f61bac11d20) 0
+ primary-for QScrollPrepareEvent (0x0x7f61bac191a0)
+
+Vtable for QScrollEvent
+QScrollEvent::_ZTV12QScrollEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QScrollEvent)
+16 (int (*)(...))QScrollEvent::~QScrollEvent
+24 (int (*)(...))QScrollEvent::~QScrollEvent
+
+Class QScrollEvent
+ size=64 align=8
+ base size=60 base align=8
+QScrollEvent (0x0x7f61bac19208) 0
+ vptr=((& QScrollEvent::_ZTV12QScrollEvent) + 16)
+ QEvent (0x0x7f61bac11d80) 0
+ primary-for QScrollEvent (0x0x7f61bac19208)
+
+Vtable for QScreenOrientationChangeEvent
+QScreenOrientationChangeEvent::_ZTV29QScreenOrientationChangeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI29QScreenOrientationChangeEvent)
+16 (int (*)(...))QScreenOrientationChangeEvent::~QScreenOrientationChangeEvent
+24 (int (*)(...))QScreenOrientationChangeEvent::~QScreenOrientationChangeEvent
+
+Class QScreenOrientationChangeEvent
+ size=40 align=8
+ base size=36 base align=8
+QScreenOrientationChangeEvent (0x0x7f61bac19270) 0
+ vptr=((& QScreenOrientationChangeEvent::_ZTV29QScreenOrientationChangeEvent) + 16)
+ QEvent (0x0x7f61bac11de0) 0
+ primary-for QScreenOrientationChangeEvent (0x0x7f61bac19270)
+
+Vtable for QApplicationStateChangeEvent
+QApplicationStateChangeEvent::_ZTV28QApplicationStateChangeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI28QApplicationStateChangeEvent)
+16 (int (*)(...))QApplicationStateChangeEvent::~QApplicationStateChangeEvent
+24 (int (*)(...))QApplicationStateChangeEvent::~QApplicationStateChangeEvent
+
+Class QApplicationStateChangeEvent
+ size=24 align=8
+ base size=24 base align=8
+QApplicationStateChangeEvent (0x0x7f61bac192d8) 0
+ vptr=((& QApplicationStateChangeEvent::_ZTV28QApplicationStateChangeEvent) + 16)
+ QEvent (0x0x7f61bac11e40) 0
+ primary-for QApplicationStateChangeEvent (0x0x7f61bac192d8)
+
+Class QFont
+ size=16 align=8
+ base size=12 base align=8
+QFont (0x0x7f61bac11ea0) 0
+
+Class QPolygon
+ size=8 align=8
+ base size=8 base align=8
+QPolygon (0x0x7f61bad4e750) 0
+ QVector<QPoint> (0x0x7f61bad3ef00) 0
+
+Class QPolygonF
+ size=8 align=8
+ base size=8 base align=8
+QPolygonF (0x0x7f61ba96fa90) 0
+ QVector<QPointF> (0x0x7f61ba997060) 0
+
+Class QMatrix
+ size=48 align=8
+ base size=48 base align=8
+QMatrix (0x0x7f61baa04f00) 0
+
+Class QPainterPath::Element
+ size=24 align=8
+ base size=24 base align=8
+QPainterPath::Element (0x0x7f61baa74d20) 0
+
+Class QPainterPath
+ size=8 align=8
+ base size=8 base align=8
+QPainterPath (0x0x7f61baa74cc0) 0
+
+Class QPainterPathStroker
+ size=8 align=8
+ base size=8 base align=8
+QPainterPathStroker (0x0x7f61ba7c70c0) 0
+
+Class QTransform
+ size=88 align=8
+ base size=88 base align=8
+QTransform (0x0x7f61ba7c7780) 0
+
+Vtable for QPaintDevice
+QPaintDevice::_ZTV12QPaintDevice: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QPaintDevice)
+16 0
+24 0
+32 (int (*)(...))QPaintDevice::devType
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))QPaintDevice::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QPaintDevice
+ size=24 align=8
+ base size=24 base align=8
+QPaintDevice (0x0x7f61ba8a2240) 0
+ vptr=((& QPaintDevice::_ZTV12QPaintDevice) + 16)
+
+Class QPixelFormat
+ size=8 align=8
+ base size=8 base align=8
+QPixelFormat (0x0x7f61ba8a2840) 0
+
+Vtable for QImage
+QImage::_ZTV6QImage: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QImage)
+16 (int (*)(...))QImage::~QImage
+24 (int (*)(...))QImage::~QImage
+32 (int (*)(...))QImage::devType
+40 (int (*)(...))QImage::paintEngine
+48 (int (*)(...))QImage::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QImage
+ size=32 align=8
+ base size=32 base align=8
+QImage (0x0x7f61ba5508f0) 0
+ vptr=((& QImage::_ZTV6QImage) + 16)
+ QPaintDevice (0x0x7f61ba56f180) 0
+ primary-for QImage (0x0x7f61ba5508f0)
+
+Vtable for QPixmap
+QPixmap::_ZTV7QPixmap: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QPixmap)
+16 (int (*)(...))QPixmap::~QPixmap
+24 (int (*)(...))QPixmap::~QPixmap
+32 (int (*)(...))QPixmap::devType
+40 (int (*)(...))QPixmap::paintEngine
+48 (int (*)(...))QPixmap::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QPixmap
+ size=32 align=8
+ base size=32 base align=8
+QPixmap (0x0x7f61ba669340) 0
+ vptr=((& QPixmap::_ZTV7QPixmap) + 16)
+ QPaintDevice (0x0x7f61ba658f00) 0
+ primary-for QPixmap (0x0x7f61ba669340)
+
+Class QBrush
+ size=8 align=8
+ base size=8 base align=8
+QBrush (0x0x7f61ba353240) 0
+
+Class QBrushData
+ size=112 align=8
+ base size=112 base align=8
+QBrushData (0x0x7f61ba416780) 0
+
+Class QGradient
+ size=64 align=8
+ base size=64 base align=8
+QGradient (0x0x7f61ba4169c0) 0
+
+Class QLinearGradient
+ size=64 align=8
+ base size=64 base align=8
+QLinearGradient (0x0x7f61ba40bd00) 0
+ QGradient (0x0x7f61ba47d120) 0
+
+Class QRadialGradient
+ size=64 align=8
+ base size=64 base align=8
+QRadialGradient (0x0x7f61ba40bd68) 0
+ QGradient (0x0x7f61ba47d240) 0
+
+Class QConicalGradient
+ size=64 align=8
+ base size=64 base align=8
+QConicalGradient (0x0x7f61ba40bdd0) 0
+ QGradient (0x0x7f61ba47d360) 0
+
+Class QPen
+ size=8 align=8
+ base size=8 base align=8
+QPen (0x0x7f61ba47d420) 0
+
+Class QTextOption::Tab
+ size=16 align=8
+ base size=14 base align=8
+QTextOption::Tab (0x0x7f61ba13cd80) 0
+
+Class QTextOption
+ size=32 align=8
+ base size=32 base align=8
+QTextOption (0x0x7f61ba13cd20) 0
+
+Class QTextLength
+ size=16 align=8
+ base size=16 base align=8
+QTextLength (0x0x7f61ba1a64e0) 0
+
+Class QTextFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextFormat (0x0x7f61ba1fce40) 0
+
+Class QTextCharFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextCharFormat (0x0x7f61b9f69af8) 0
+ QTextFormat (0x0x7f61b9f97540) 0
+
+Class QTextBlockFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextBlockFormat (0x0x7f61ba00af08) 0
+ QTextFormat (0x0x7f61ba00bf00) 0
+
+Class QTextListFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextListFormat (0x0x7f61ba07d478) 0
+ QTextFormat (0x0x7f61ba070cc0) 0
+
+Class QTextImageFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextImageFormat (0x0x7f61ba0c5888) 0
+ QTextCharFormat (0x0x7f61ba0c58f0) 0
+ QTextFormat (0x0x7f61ba0cd480) 0
+
+Class QTextFrameFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextFrameFormat (0x0x7f61b9d05e38) 0
+ QTextFormat (0x0x7f61b9d0fae0) 0
+
+Class QTextTableFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextTableFormat (0x0x7f61b9d6d3a8) 0
+ QTextFrameFormat (0x0x7f61b9d6d410) 0
+ QTextFormat (0x0x7f61b9d71720) 0
+
+Class QTextTableCellFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextTableCellFormat (0x0x7f61b9dc4958) 0
+ QTextCharFormat (0x0x7f61b9dc49c0) 0
+ QTextFormat (0x0x7f61b9dd50c0) 0
+
+Class QFontDatabase
+ size=8 align=8
+ base size=8 base align=8
+QFontDatabase (0x0x7f61b9e27f00) 0
+
+Class QRawFont
+ size=8 align=8
+ base size=8 base align=8
+QRawFont (0x0x7f61b9e55120) 0
+
+Class QGlyphRun
+ size=8 align=8
+ base size=8 base align=8
+QGlyphRun (0x0x7f61b9b2f900) 0
+
+Class QTextCursor
+ size=8 align=8
+ base size=8 base align=8
+QTextCursor (0x0x7f61b9c19840) 0
+
+Class QTextInlineObject
+ size=16 align=8
+ base size=16 base align=8
+QTextInlineObject (0x0x7f61b9cf54e0) 0
+
+Class QTextLayout::FormatRange
+ size=24 align=8
+ base size=24 base align=8
+QTextLayout::FormatRange (0x0x7f61b9cf5900) 0
+
+Class QTextLayout
+ size=8 align=8
+ base size=8 base align=8
+QTextLayout (0x0x7f61b9cf58a0) 0
+
+Class QTextLine
+ size=16 align=8
+ base size=16 base align=8
+QTextLine (0x0x7f61b99ab000) 0
+
+Vtable for QAbstractUndoItem
+QAbstractUndoItem::_ZTV17QAbstractUndoItem: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAbstractUndoItem)
+16 (int (*)(...))__cxa_pure_virtual
+24 (int (*)(...))__cxa_pure_virtual
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractUndoItem
+ size=8 align=8
+ base size=8 base align=8
+QAbstractUndoItem (0x0x7f61b99ab480) 0 nearly-empty
+ vptr=((& QAbstractUndoItem::_ZTV17QAbstractUndoItem) + 16)
+
+Class QTextDocument::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextDocument::QPrivateSignal (0x0x7f61b99ab720) 0 empty
+
+Vtable for QTextDocument
+QTextDocument::_ZTV13QTextDocument: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QTextDocument)
+16 (int (*)(...))QTextDocument::metaObject
+24 (int (*)(...))QTextDocument::qt_metacast
+32 (int (*)(...))QTextDocument::qt_metacall
+40 (int (*)(...))QTextDocument::~QTextDocument
+48 (int (*)(...))QTextDocument::~QTextDocument
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTextDocument::clear
+120 (int (*)(...))QTextDocument::createObject
+128 (int (*)(...))QTextDocument::loadResource
+
+Class QTextDocument
+ size=16 align=8
+ base size=16 base align=8
+QTextDocument (0x0x7f61b99aa1a0) 0
+ vptr=((& QTextDocument::_ZTV13QTextDocument) + 16)
+ QObject (0x0x7f61b99ab6c0) 0
+ primary-for QTextDocument (0x0x7f61b99aa1a0)
+
+Class QPalette::Data
+ size=4 align=4
+ base size=4 base align=4
+QPalette::Data (0x0x7f61b9a1e720) 0
+
+Class QPalette
+ size=16 align=8
+ base size=12 base align=8
+QPalette (0x0x7f61b9a1e6c0) 0
+
+Class QAbstractTextDocumentLayout::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractTextDocumentLayout::QPrivateSignal (0x0x7f61b9710ae0) 0 empty
+
+Class QAbstractTextDocumentLayout::Selection
+ size=24 align=8
+ base size=24 base align=8
+QAbstractTextDocumentLayout::Selection (0x0x7f61b9710b40) 0
+
+Class QAbstractTextDocumentLayout::PaintContext
+ size=64 align=8
+ base size=64 base align=8
+QAbstractTextDocumentLayout::PaintContext (0x0x7f61b9710ba0) 0
+
+Vtable for QAbstractTextDocumentLayout
+QAbstractTextDocumentLayout::_ZTV27QAbstractTextDocumentLayout: 24 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QAbstractTextDocumentLayout)
+16 (int (*)(...))QAbstractTextDocumentLayout::metaObject
+24 (int (*)(...))QAbstractTextDocumentLayout::qt_metacast
+32 (int (*)(...))QAbstractTextDocumentLayout::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))__cxa_pure_virtual
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QAbstractTextDocumentLayout::resizeInlineObject
+176 (int (*)(...))QAbstractTextDocumentLayout::positionInlineObject
+184 (int (*)(...))QAbstractTextDocumentLayout::drawInlineObject
+
+Class QAbstractTextDocumentLayout
+ size=16 align=8
+ base size=16 base align=8
+QAbstractTextDocumentLayout (0x0x7f61b9705f70) 0
+ vptr=((& QAbstractTextDocumentLayout::_ZTV27QAbstractTextDocumentLayout) + 16)
+ QObject (0x0x7f61b9710a80) 0
+ primary-for QAbstractTextDocumentLayout (0x0x7f61b9705f70)
+
+Vtable for QTextObjectInterface
+QTextObjectInterface::_ZTV20QTextObjectInterface: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QTextObjectInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QTextObjectInterface
+ size=8 align=8
+ base size=8 base align=8
+QTextObjectInterface (0x0x7f61b97de780) 0 nearly-empty
+ vptr=((& QTextObjectInterface::_ZTV20QTextObjectInterface) + 16)
+
+Class QAccessible::State
+ size=8 align=8
+ base size=5 base align=8
+QAccessible::State (0x0x7f61b97de9c0) 0
+
+Vtable for QAccessible::ActivationObserver
+QAccessible::ActivationObserver::_ZTVN11QAccessible18ActivationObserverE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN11QAccessible18ActivationObserverE)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessible::ActivationObserver
+ size=8 align=8
+ base size=8 base align=8
+QAccessible::ActivationObserver (0x0x7f61b97dea20) 0 nearly-empty
+ vptr=((& QAccessible::ActivationObserver::_ZTVN11QAccessible18ActivationObserverE) + 16)
+
+Class QAccessible
+ size=1 align=1
+ base size=0 base align=1
+QAccessible (0x0x7f61b97de960) 0 empty
+
+Vtable for QAccessibleInterface
+QAccessibleInterface::_ZTV20QAccessibleInterface: 23 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QAccessibleInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))QAccessibleInterface::window
+56 (int (*)(...))QAccessibleInterface::relations
+64 (int (*)(...))QAccessibleInterface::focusChild
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))__cxa_pure_virtual
+96 (int (*)(...))__cxa_pure_virtual
+104 (int (*)(...))__cxa_pure_virtual
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAccessibleInterface::foregroundColor
+160 (int (*)(...))QAccessibleInterface::backgroundColor
+168 (int (*)(...))QAccessibleInterface::virtual_hook
+176 (int (*)(...))QAccessibleInterface::interface_cast
+
+Class QAccessibleInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleInterface (0x0x7f61b9819600) 0 nearly-empty
+ vptr=((& QAccessibleInterface::_ZTV20QAccessibleInterface) + 16)
+
+Vtable for QAccessibleTextInterface
+QAccessibleTextInterface::_ZTV24QAccessibleTextInterface: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QAccessibleTextInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))__cxa_pure_virtual
+96 (int (*)(...))QAccessibleTextInterface::textBeforeOffset
+104 (int (*)(...))QAccessibleTextInterface::textAfterOffset
+112 (int (*)(...))QAccessibleTextInterface::textAtOffset
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleTextInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleTextInterface (0x0x7f61b9819960) 0 nearly-empty
+ vptr=((& QAccessibleTextInterface::_ZTV24QAccessibleTextInterface) + 16)
+
+Vtable for QAccessibleEditableTextInterface
+QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI32QAccessibleEditableTextInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleEditableTextInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleEditableTextInterface (0x0x7f61b98199c0) 0 nearly-empty
+ vptr=((& QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface) + 16)
+
+Vtable for QAccessibleValueInterface
+QAccessibleValueInterface::_ZTV25QAccessibleValueInterface: 9 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QAccessibleValueInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleValueInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleValueInterface (0x0x7f61b9819a20) 0 nearly-empty
+ vptr=((& QAccessibleValueInterface::_ZTV25QAccessibleValueInterface) + 16)
+
+Vtable for QAccessibleTableCellInterface
+QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface: 12 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI29QAccessibleTableCellInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleTableCellInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleTableCellInterface (0x0x7f61b9819a80) 0 nearly-empty
+ vptr=((& QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface) + 16)
+
+Vtable for QAccessibleTableInterface
+QAccessibleTableInterface::_ZTV25QAccessibleTableInterface: 24 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QAccessibleTableInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))__cxa_pure_virtual
+96 (int (*)(...))__cxa_pure_virtual
+104 (int (*)(...))__cxa_pure_virtual
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))__cxa_pure_virtual
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))__cxa_pure_virtual
+176 (int (*)(...))__cxa_pure_virtual
+184 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleTableInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleTableInterface (0x0x7f61b9819ae0) 0 nearly-empty
+ vptr=((& QAccessibleTableInterface::_ZTV25QAccessibleTableInterface) + 16)
+
+Vtable for QAccessibleActionInterface
+QAccessibleActionInterface::_ZTV26QAccessibleActionInterface: 9 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAccessibleActionInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))QAccessibleActionInterface::localizedActionName
+48 (int (*)(...))QAccessibleActionInterface::localizedActionDescription
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleActionInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleActionInterface (0x0x7f61b9819b40) 0 nearly-empty
+ vptr=((& QAccessibleActionInterface::_ZTV26QAccessibleActionInterface) + 16)
+
+Vtable for QAccessibleImageInterface
+QAccessibleImageInterface::_ZTV25QAccessibleImageInterface: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QAccessibleImageInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleImageInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleImageInterface (0x0x7f61b9819c60) 0 nearly-empty
+ vptr=((& QAccessibleImageInterface::_ZTV25QAccessibleImageInterface) + 16)
+
+Vtable for QAccessibleEvent
+QAccessibleEvent::_ZTV16QAccessibleEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QAccessibleEvent)
+16 (int (*)(...))QAccessibleEvent::~QAccessibleEvent
+24 (int (*)(...))QAccessibleEvent::~QAccessibleEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleEvent
+ size=32 align=8
+ base size=28 base align=8
+QAccessibleEvent (0x0x7f61b9819cc0) 0
+ vptr=((& QAccessibleEvent::_ZTV16QAccessibleEvent) + 16)
+
+Vtable for QAccessibleStateChangeEvent
+QAccessibleStateChangeEvent::_ZTV27QAccessibleStateChangeEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QAccessibleStateChangeEvent)
+16 (int (*)(...))QAccessibleStateChangeEvent::~QAccessibleStateChangeEvent
+24 (int (*)(...))QAccessibleStateChangeEvent::~QAccessibleStateChangeEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleStateChangeEvent
+ size=40 align=8
+ base size=40 base align=8
+QAccessibleStateChangeEvent (0x0x7f61b98165b0) 0
+ vptr=((& QAccessibleStateChangeEvent::_ZTV27QAccessibleStateChangeEvent) + 16)
+ QAccessibleEvent (0x0x7f61b987d6c0) 0
+ primary-for QAccessibleStateChangeEvent (0x0x7f61b98165b0)
+
+Vtable for QAccessibleTextCursorEvent
+QAccessibleTextCursorEvent::_ZTV26QAccessibleTextCursorEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAccessibleTextCursorEvent)
+16 (int (*)(...))QAccessibleTextCursorEvent::~QAccessibleTextCursorEvent
+24 (int (*)(...))QAccessibleTextCursorEvent::~QAccessibleTextCursorEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleTextCursorEvent
+ size=32 align=8
+ base size=32 base align=8
+QAccessibleTextCursorEvent (0x0x7f61b9816618) 0
+ vptr=((& QAccessibleTextCursorEvent::_ZTV26QAccessibleTextCursorEvent) + 16)
+ QAccessibleEvent (0x0x7f61b987da80) 0
+ primary-for QAccessibleTextCursorEvent (0x0x7f61b9816618)
+
+Vtable for QAccessibleTextSelectionEvent
+QAccessibleTextSelectionEvent::_ZTV29QAccessibleTextSelectionEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI29QAccessibleTextSelectionEvent)
+16 (int (*)(...))QAccessibleTextSelectionEvent::~QAccessibleTextSelectionEvent
+24 (int (*)(...))QAccessibleTextSelectionEvent::~QAccessibleTextSelectionEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleTextSelectionEvent
+ size=40 align=8
+ base size=40 base align=8
+QAccessibleTextSelectionEvent (0x0x7f61b9816680) 0
+ vptr=((& QAccessibleTextSelectionEvent::_ZTV29QAccessibleTextSelectionEvent) + 16)
+ QAccessibleTextCursorEvent (0x0x7f61b98166e8) 0
+ primary-for QAccessibleTextSelectionEvent (0x0x7f61b9816680)
+ QAccessibleEvent (0x0x7f61b987dea0) 0
+ primary-for QAccessibleTextCursorEvent (0x0x7f61b98166e8)
+
+Vtable for QAccessibleTextInsertEvent
+QAccessibleTextInsertEvent::_ZTV26QAccessibleTextInsertEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAccessibleTextInsertEvent)
+16 (int (*)(...))QAccessibleTextInsertEvent::~QAccessibleTextInsertEvent
+24 (int (*)(...))QAccessibleTextInsertEvent::~QAccessibleTextInsertEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleTextInsertEvent
+ size=48 align=8
+ base size=48 base align=8
+QAccessibleTextInsertEvent (0x0x7f61b9816750) 0
+ vptr=((& QAccessibleTextInsertEvent::_ZTV26QAccessibleTextInsertEvent) + 16)
+ QAccessibleTextCursorEvent (0x0x7f61b98167b8) 0
+ primary-for QAccessibleTextInsertEvent (0x0x7f61b9816750)
+ QAccessibleEvent (0x0x7f61b98ec360) 0
+ primary-for QAccessibleTextCursorEvent (0x0x7f61b98167b8)
+
+Vtable for QAccessibleTextRemoveEvent
+QAccessibleTextRemoveEvent::_ZTV26QAccessibleTextRemoveEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAccessibleTextRemoveEvent)
+16 (int (*)(...))QAccessibleTextRemoveEvent::~QAccessibleTextRemoveEvent
+24 (int (*)(...))QAccessibleTextRemoveEvent::~QAccessibleTextRemoveEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleTextRemoveEvent
+ size=48 align=8
+ base size=48 base align=8
+QAccessibleTextRemoveEvent (0x0x7f61b9816820) 0
+ vptr=((& QAccessibleTextRemoveEvent::_ZTV26QAccessibleTextRemoveEvent) + 16)
+ QAccessibleTextCursorEvent (0x0x7f61b9816888) 0
+ primary-for QAccessibleTextRemoveEvent (0x0x7f61b9816820)
+ QAccessibleEvent (0x0x7f61b98ec780) 0
+ primary-for QAccessibleTextCursorEvent (0x0x7f61b9816888)
+
+Vtable for QAccessibleTextUpdateEvent
+QAccessibleTextUpdateEvent::_ZTV26QAccessibleTextUpdateEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAccessibleTextUpdateEvent)
+16 (int (*)(...))QAccessibleTextUpdateEvent::~QAccessibleTextUpdateEvent
+24 (int (*)(...))QAccessibleTextUpdateEvent::~QAccessibleTextUpdateEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleTextUpdateEvent
+ size=56 align=8
+ base size=56 base align=8
+QAccessibleTextUpdateEvent (0x0x7f61b98168f0) 0
+ vptr=((& QAccessibleTextUpdateEvent::_ZTV26QAccessibleTextUpdateEvent) + 16)
+ QAccessibleTextCursorEvent (0x0x7f61b9816958) 0
+ primary-for QAccessibleTextUpdateEvent (0x0x7f61b98168f0)
+ QAccessibleEvent (0x0x7f61b98ecba0) 0
+ primary-for QAccessibleTextCursorEvent (0x0x7f61b9816958)
+
+Vtable for QAccessibleValueChangeEvent
+QAccessibleValueChangeEvent::_ZTV27QAccessibleValueChangeEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QAccessibleValueChangeEvent)
+16 (int (*)(...))QAccessibleValueChangeEvent::~QAccessibleValueChangeEvent
+24 (int (*)(...))QAccessibleValueChangeEvent::~QAccessibleValueChangeEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleValueChangeEvent
+ size=48 align=8
+ base size=48 base align=8
+QAccessibleValueChangeEvent (0x0x7f61b98169c0) 0
+ vptr=((& QAccessibleValueChangeEvent::_ZTV27QAccessibleValueChangeEvent) + 16)
+ QAccessibleEvent (0x0x7f61b951a060) 0
+ primary-for QAccessibleValueChangeEvent (0x0x7f61b98169c0)
+
+Vtable for QAccessibleTableModelChangeEvent
+QAccessibleTableModelChangeEvent::_ZTV32QAccessibleTableModelChangeEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI32QAccessibleTableModelChangeEvent)
+16 (int (*)(...))QAccessibleTableModelChangeEvent::~QAccessibleTableModelChangeEvent
+24 (int (*)(...))QAccessibleTableModelChangeEvent::~QAccessibleTableModelChangeEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleTableModelChangeEvent
+ size=48 align=8
+ base size=48 base align=8
+QAccessibleTableModelChangeEvent (0x0x7f61b9816a28) 0
+ vptr=((& QAccessibleTableModelChangeEvent::_ZTV32QAccessibleTableModelChangeEvent) + 16)
+ QAccessibleEvent (0x0x7f61b951a480) 0
+ primary-for QAccessibleTableModelChangeEvent (0x0x7f61b9816a28)
+
+Vtable for QAccessibleBridge
+QAccessibleBridge::_ZTV17QAccessibleBridge: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAccessibleBridge)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleBridge
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleBridge (0x0x7f61b951ad20) 0 nearly-empty
+ vptr=((& QAccessibleBridge::_ZTV17QAccessibleBridge) + 16)
+
+Class QAccessibleBridgePlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAccessibleBridgePlugin::QPrivateSignal (0x0x7f61b954a000) 0 empty
+
+Vtable for QAccessibleBridgePlugin
+QAccessibleBridgePlugin::_ZTV23QAccessibleBridgePlugin: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QAccessibleBridgePlugin)
+16 (int (*)(...))QAccessibleBridgePlugin::metaObject
+24 (int (*)(...))QAccessibleBridgePlugin::qt_metacast
+32 (int (*)(...))QAccessibleBridgePlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleBridgePlugin
+ size=16 align=8
+ base size=16 base align=8
+QAccessibleBridgePlugin (0x0x7f61b9816a90) 0
+ vptr=((& QAccessibleBridgePlugin::_ZTV23QAccessibleBridgePlugin) + 16)
+ QObject (0x0x7f61b951af60) 0
+ primary-for QAccessibleBridgePlugin (0x0x7f61b9816a90)
+
+Vtable for QAccessibleObject
+QAccessibleObject::_ZTV17QAccessibleObject: 23 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAccessibleObject)
+16 0
+24 0
+32 (int (*)(...))QAccessibleObject::isValid
+40 (int (*)(...))QAccessibleObject::object
+48 (int (*)(...))QAccessibleInterface::window
+56 (int (*)(...))QAccessibleInterface::relations
+64 (int (*)(...))QAccessibleInterface::focusChild
+72 (int (*)(...))QAccessibleObject::childAt
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))__cxa_pure_virtual
+96 (int (*)(...))__cxa_pure_virtual
+104 (int (*)(...))__cxa_pure_virtual
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))QAccessibleObject::setText
+128 (int (*)(...))QAccessibleObject::rect
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAccessibleInterface::foregroundColor
+160 (int (*)(...))QAccessibleInterface::backgroundColor
+168 (int (*)(...))QAccessibleInterface::virtual_hook
+176 (int (*)(...))QAccessibleInterface::interface_cast
+
+Class QAccessibleObject
+ size=16 align=8
+ base size=16 base align=8
+QAccessibleObject (0x0x7f61b9816af8) 0
+ vptr=((& QAccessibleObject::_ZTV17QAccessibleObject) + 16)
+ QAccessibleInterface (0x0x7f61b954a120) 0 nearly-empty
+ primary-for QAccessibleObject (0x0x7f61b9816af8)
+
+Vtable for QAccessibleApplication
+QAccessibleApplication::_ZTV22QAccessibleApplication: 23 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QAccessibleApplication)
+16 (int (*)(...))QAccessibleApplication::~QAccessibleApplication
+24 (int (*)(...))QAccessibleApplication::~QAccessibleApplication
+32 (int (*)(...))QAccessibleObject::isValid
+40 (int (*)(...))QAccessibleObject::object
+48 (int (*)(...))QAccessibleApplication::window
+56 (int (*)(...))QAccessibleInterface::relations
+64 (int (*)(...))QAccessibleApplication::focusChild
+72 (int (*)(...))QAccessibleObject::childAt
+80 (int (*)(...))QAccessibleApplication::parent
+88 (int (*)(...))QAccessibleApplication::child
+96 (int (*)(...))QAccessibleApplication::childCount
+104 (int (*)(...))QAccessibleApplication::indexOfChild
+112 (int (*)(...))QAccessibleApplication::text
+120 (int (*)(...))QAccessibleObject::setText
+128 (int (*)(...))QAccessibleObject::rect
+136 (int (*)(...))QAccessibleApplication::role
+144 (int (*)(...))QAccessibleApplication::state
+152 (int (*)(...))QAccessibleInterface::foregroundColor
+160 (int (*)(...))QAccessibleInterface::backgroundColor
+168 (int (*)(...))QAccessibleInterface::virtual_hook
+176 (int (*)(...))QAccessibleInterface::interface_cast
+
+Class QAccessibleApplication
+ size=16 align=8
+ base size=16 base align=8
+QAccessibleApplication (0x0x7f61b9816b60) 0
+ vptr=((& QAccessibleApplication::_ZTV22QAccessibleApplication) + 16)
+ QAccessibleObject (0x0x7f61b9816bc8) 0
+ primary-for QAccessibleApplication (0x0x7f61b9816b60)
+ QAccessibleInterface (0x0x7f61b954a180) 0 nearly-empty
+ primary-for QAccessibleObject (0x0x7f61b9816bc8)
+
+Class QAccessiblePlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAccessiblePlugin::QPrivateSignal (0x0x7f61b954a240) 0 empty
+
+Vtable for QAccessiblePlugin
+QAccessiblePlugin::_ZTV17QAccessiblePlugin: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAccessiblePlugin)
+16 (int (*)(...))QAccessiblePlugin::metaObject
+24 (int (*)(...))QAccessiblePlugin::qt_metacast
+32 (int (*)(...))QAccessiblePlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessiblePlugin
+ size=16 align=8
+ base size=16 base align=8
+QAccessiblePlugin (0x0x7f61b9816c30) 0
+ vptr=((& QAccessiblePlugin::_ZTV17QAccessiblePlugin) + 16)
+ QObject (0x0x7f61b954a1e0) 0
+ primary-for QAccessiblePlugin (0x0x7f61b9816c30)
+
+Class QSurfaceFormat
+ size=8 align=8
+ base size=8 base align=8
+QSurfaceFormat (0x0x7f61b954a360) 0
+
+Vtable for QSurface
+QSurface::_ZTV8QSurface: 8 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QSurface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+
+Class QSurface
+ size=24 align=8
+ base size=24 base align=8
+QSurface (0x0x7f61b954aea0) 0
+ vptr=((& QSurface::_ZTV8QSurface) + 16)
+
+Class QIcon
+ size=8 align=8
+ base size=8 base align=8
+QIcon (0x0x7f61b95ba2a0) 0
+
+Class QCursor
+ size=8 align=8
+ base size=8 base align=8
+QCursor (0x0x7f61b9674de0) 0
+
+Class QWindow::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QWindow::QPrivateSignal (0x0x7f61b933fba0) 0 empty
+
+Vtable for QWindow
+QWindow::_ZTV7QWindow: 45 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QWindow)
+16 (int (*)(...))QWindow::metaObject
+24 (int (*)(...))QWindow::qt_metacast
+32 (int (*)(...))QWindow::qt_metacall
+40 (int (*)(...))QWindow::~QWindow
+48 (int (*)(...))QWindow::~QWindow
+56 (int (*)(...))QWindow::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWindow::surfaceType
+120 (int (*)(...))QWindow::format
+128 (int (*)(...))QWindow::size
+136 (int (*)(...))QWindow::accessibleRoot
+144 (int (*)(...))QWindow::focusObject
+152 (int (*)(...))QWindow::exposeEvent
+160 (int (*)(...))QWindow::resizeEvent
+168 (int (*)(...))QWindow::moveEvent
+176 (int (*)(...))QWindow::focusInEvent
+184 (int (*)(...))QWindow::focusOutEvent
+192 (int (*)(...))QWindow::showEvent
+200 (int (*)(...))QWindow::hideEvent
+208 (int (*)(...))QWindow::keyPressEvent
+216 (int (*)(...))QWindow::keyReleaseEvent
+224 (int (*)(...))QWindow::mousePressEvent
+232 (int (*)(...))QWindow::mouseReleaseEvent
+240 (int (*)(...))QWindow::mouseDoubleClickEvent
+248 (int (*)(...))QWindow::mouseMoveEvent
+256 (int (*)(...))QWindow::wheelEvent
+264 (int (*)(...))QWindow::touchEvent
+272 (int (*)(...))QWindow::tabletEvent
+280 (int (*)(...))QWindow::nativeEvent
+288 (int (*)(...))QWindow::surfaceHandle
+296 (int (*)(...))-16
+304 (int (*)(...))(& _ZTI7QWindow)
+312 (int (*)(...))QWindow::_ZThn16_N7QWindowD1Ev
+320 (int (*)(...))QWindow::_ZThn16_N7QWindowD0Ev
+328 (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
+336 (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
+344 (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
+352 (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv
+
+Class QWindow
+ size=40 align=8
+ base size=40 base align=8
+QWindow (0x0x7f61b9345770) 0
+ vptr=((& QWindow::_ZTV7QWindow) + 16)
+ QObject (0x0x7f61b933fae0) 0
+ primary-for QWindow (0x0x7f61b9345770)
+ QSurface (0x0x7f61b933fb40) 16
+ vptr=((& QWindow::_ZTV7QWindow) + 312)
+
+Class QBackingStore
+ size=8 align=8
+ base size=8 base align=8
+QBackingStore (0x0x7f61b9390480) 0
+
+Vtable for QBitmap
+QBitmap::_ZTV7QBitmap: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QBitmap)
+16 (int (*)(...))QBitmap::~QBitmap
+24 (int (*)(...))QBitmap::~QBitmap
+32 (int (*)(...))QPixmap::devType
+40 (int (*)(...))QPixmap::paintEngine
+48 (int (*)(...))QPixmap::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QBitmap
+ size=32 align=8
+ base size=32 base align=8
+QBitmap (0x0x7f61b9334f08) 0
+ vptr=((& QBitmap::_ZTV7QBitmap) + 16)
+ QPixmap (0x0x7f61b9334f70) 0
+ primary-for QBitmap (0x0x7f61b9334f08)
+ QPaintDevice (0x0x7f61b9390540) 0
+ primary-for QPixmap (0x0x7f61b9334f70)
+
+Class QClipboard::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QClipboard::QPrivateSignal (0x0x7f61b93e8a80) 0 empty
+
+Vtable for QClipboard
+QClipboard::_ZTV10QClipboard: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QClipboard)
+16 (int (*)(...))QClipboard::metaObject
+24 (int (*)(...))QClipboard::qt_metacast
+32 (int (*)(...))QClipboard::qt_metacall
+40 (int (*)(...))QClipboard::~QClipboard
+48 (int (*)(...))QClipboard::~QClipboard
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QClipboard
+ size=16 align=8
+ base size=16 base align=8
+QClipboard (0x0x7f61b93f1270) 0
+ vptr=((& QClipboard::_ZTV10QClipboard) + 16)
+ QObject (0x0x7f61b93e8a20) 0
+ primary-for QClipboard (0x0x7f61b93f1270)
+
+Class QColorTransform
+ size=8 align=8
+ base size=8 base align=8
+QColorTransform (0x0x7f61b93e8ba0) 0
+
+Class QColorSpace
+ size=8 align=8
+ base size=8 base align=8
+QColorSpace (0x0x7f61b94aed20) 0
+
+Class QDesktopServices
+ size=1 align=1
+ base size=0 base align=1
+QDesktopServices (0x0x7f61b9185ae0) 0 empty
+
+Class QDrag::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDrag::QPrivateSignal (0x0x7f61b9185ba0) 0 empty
+
+Vtable for QDrag
+QDrag::_ZTV5QDrag: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI5QDrag)
+16 (int (*)(...))QDrag::metaObject
+24 (int (*)(...))QDrag::qt_metacast
+32 (int (*)(...))QDrag::qt_metacall
+40 (int (*)(...))QDrag::~QDrag
+48 (int (*)(...))QDrag::~QDrag
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QDrag
+ size=16 align=8
+ base size=16 base align=8
+QDrag (0x0x7f61b9181f08) 0
+ vptr=((& QDrag::_ZTV5QDrag) + 16)
+ QObject (0x0x7f61b9185b40) 0
+ primary-for QDrag (0x0x7f61b9181f08)
+
+Class QFontInfo
+ size=8 align=8
+ base size=8 base align=8
+QFontInfo (0x0x7f61b9185d80) 0
+
+Class QFontMetrics
+ size=8 align=8
+ base size=8 base align=8
+QFontMetrics (0x0x7f61b91dfde0) 0
+
+Class QFontMetricsF
+ size=8 align=8
+ base size=8 base align=8
+QFontMetricsF (0x0x7f61b9248180) 0
+
+Class QGenericPlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGenericPlugin::QPrivateSignal (0x0x7f61b8fb2300) 0 empty
+
+Vtable for QGenericPlugin
+QGenericPlugin::_ZTV14QGenericPlugin: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QGenericPlugin)
+16 (int (*)(...))QGenericPlugin::metaObject
+24 (int (*)(...))QGenericPlugin::qt_metacast
+32 (int (*)(...))QGenericPlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QGenericPlugin
+ size=16 align=8
+ base size=16 base align=8
+QGenericPlugin (0x0x7f61b928eaf8) 0
+ vptr=((& QGenericPlugin::_ZTV14QGenericPlugin) + 16)
+ QObject (0x0x7f61b8fb22a0) 0
+ primary-for QGenericPlugin (0x0x7f61b928eaf8)
+
+Class QGenericPluginFactory
+ size=1 align=1
+ base size=0 base align=1
+QGenericPluginFactory (0x0x7f61b8fb2420) 0 empty
+
+Class QInputMethod::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QInputMethod::QPrivateSignal (0x0x7f61b8fb24e0) 0 empty
+
+Vtable for QInputMethod
+QInputMethod::_ZTV12QInputMethod: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QInputMethod)
+16 (int (*)(...))QInputMethod::metaObject
+24 (int (*)(...))QInputMethod::qt_metacast
+32 (int (*)(...))QInputMethod::qt_metacall
+40 (int (*)(...))QInputMethod::~QInputMethod
+48 (int (*)(...))QInputMethod::~QInputMethod
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QInputMethod
+ size=16 align=8
+ base size=16 base align=8
+QInputMethod (0x0x7f61b928eb60) 0
+ vptr=((& QInputMethod::_ZTV12QInputMethod) + 16)
+ QObject (0x0x7f61b8fb2480) 0
+ primary-for QInputMethod (0x0x7f61b928eb60)
+
+Class QGuiApplication::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGuiApplication::QPrivateSignal (0x0x7f61b8fb27e0) 0 empty
+
+Vtable for QGuiApplication
+QGuiApplication::_ZTV15QGuiApplication: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QGuiApplication)
+16 (int (*)(...))QGuiApplication::metaObject
+24 (int (*)(...))QGuiApplication::qt_metacast
+32 (int (*)(...))QGuiApplication::qt_metacall
+40 (int (*)(...))QGuiApplication::~QGuiApplication
+48 (int (*)(...))QGuiApplication::~QGuiApplication
+56 (int (*)(...))QGuiApplication::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGuiApplication::notify
+120 (int (*)(...))QGuiApplication::compressEvent
+
+Class QGuiApplication
+ size=16 align=8
+ base size=16 base align=8
+QGuiApplication (0x0x7f61b928ebc8) 0
+ vptr=((& QGuiApplication::_ZTV15QGuiApplication) + 16)
+ QCoreApplication (0x0x7f61b928ec30) 0
+ primary-for QGuiApplication (0x0x7f61b928ebc8)
+ QObject (0x0x7f61b8fb2780) 0
+ primary-for QCoreApplication (0x0x7f61b928ec30)
+
+Class QIconEngine::AvailableSizesArgument
+ size=16 align=8
+ base size=16 base align=8
+QIconEngine::AvailableSizesArgument (0x0x7f61b8fb2f60) 0
+
+Class QIconEngine::ScaledPixmapArgument
+ size=56 align=8
+ base size=56 base align=8
+QIconEngine::ScaledPixmapArgument (0x0x7f61b9014120) 0
+
+Vtable for QIconEngine
+QIconEngine::_ZTV11QIconEngine: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QIconEngine)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))QIconEngine::actualSize
+48 (int (*)(...))QIconEngine::pixmap
+56 (int (*)(...))QIconEngine::addPixmap
+64 (int (*)(...))QIconEngine::addFile
+72 (int (*)(...))QIconEngine::key
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))QIconEngine::read
+96 (int (*)(...))QIconEngine::write
+104 (int (*)(...))QIconEngine::availableSizes
+112 (int (*)(...))QIconEngine::iconName
+120 (int (*)(...))QIconEngine::virtual_hook
+
+Class QIconEngine
+ size=8 align=8
+ base size=8 base align=8
+QIconEngine (0x0x7f61b8fb2f00) 0 nearly-empty
+ vptr=((& QIconEngine::_ZTV11QIconEngine) + 16)
+
+Class QIconEnginePlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QIconEnginePlugin::QPrivateSignal (0x0x7f61b90141e0) 0 empty
+
+Vtable for QIconEnginePlugin
+QIconEnginePlugin::_ZTV17QIconEnginePlugin: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QIconEnginePlugin)
+16 (int (*)(...))QIconEnginePlugin::metaObject
+24 (int (*)(...))QIconEnginePlugin::qt_metacast
+32 (int (*)(...))QIconEnginePlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QIconEnginePlugin
+ size=16 align=8
+ base size=16 base align=8
+QIconEnginePlugin (0x0x7f61b9002208) 0
+ vptr=((& QIconEnginePlugin::_ZTV17QIconEnginePlugin) + 16)
+ QObject (0x0x7f61b9014180) 0
+ primary-for QIconEnginePlugin (0x0x7f61b9002208)
+
+Vtable for QImageIOHandler
+QImageIOHandler::_ZTV15QImageIOHandler: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QImageIOHandler)
+16 0
+24 0
+32 (int (*)(...))QImageIOHandler::name
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))QImageIOHandler::write
+64 (int (*)(...))QImageIOHandler::option
+72 (int (*)(...))QImageIOHandler::setOption
+80 (int (*)(...))QImageIOHandler::supportsOption
+88 (int (*)(...))QImageIOHandler::jumpToNextImage
+96 (int (*)(...))QImageIOHandler::jumpToImage
+104 (int (*)(...))QImageIOHandler::loopCount
+112 (int (*)(...))QImageIOHandler::imageCount
+120 (int (*)(...))QImageIOHandler::nextImageDelay
+128 (int (*)(...))QImageIOHandler::currentImageNumber
+136 (int (*)(...))QImageIOHandler::currentImageRect
+
+Class QImageIOHandler
+ size=16 align=8
+ base size=16 base align=8
+QImageIOHandler (0x0x7f61b9014300) 0
+ vptr=((& QImageIOHandler::_ZTV15QImageIOHandler) + 16)
+
+Class QImageIOPlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QImageIOPlugin::QPrivateSignal (0x0x7f61b9014540) 0 empty
+
+Vtable for QImageIOPlugin
+QImageIOPlugin::_ZTV14QImageIOPlugin: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QImageIOPlugin)
+16 (int (*)(...))QImageIOPlugin::metaObject
+24 (int (*)(...))QImageIOPlugin::qt_metacast
+32 (int (*)(...))QImageIOPlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QImageIOPlugin
+ size=16 align=8
+ base size=16 base align=8
+QImageIOPlugin (0x0x7f61b9002270) 0
+ vptr=((& QImageIOPlugin::_ZTV14QImageIOPlugin) + 16)
+ QObject (0x0x7f61b90144e0) 0
+ primary-for QImageIOPlugin (0x0x7f61b9002270)
+
+Class QImageReader
+ size=8 align=8
+ base size=8 base align=8
+QImageReader (0x0x7f61b9014d20) 0
+
+Class QImageWriter
+ size=8 align=8
+ base size=8 base align=8
+QImageWriter (0x0x7f61b9014e40) 0
+
+Class QVector3D
+ size=12 align=4
+ base size=12 base align=4
+QVector3D (0x0x7f61b9014f60) 0
+
+Class QVector4D
+ size=16 align=4
+ base size=16 base align=4
+QVector4D (0x0x7f61b8cc0120) 0
+
+Class QQuaternion
+ size=16 align=4
+ base size=16 base align=4
+QQuaternion (0x0x7f61b8d40360) 0
+
+Class QMatrix4x4
+ size=68 align=4
+ base size=68 base align=4
+QMatrix4x4 (0x0x7f61b8dd2c60) 0
+
+Class QMovie::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMovie::QPrivateSignal (0x0x7f61b8ab9ae0) 0 empty
+
+Vtable for QMovie
+QMovie::_ZTV6QMovie: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QMovie)
+16 (int (*)(...))QMovie::metaObject
+24 (int (*)(...))QMovie::qt_metacast
+32 (int (*)(...))QMovie::qt_metacall
+40 (int (*)(...))QMovie::~QMovie
+48 (int (*)(...))QMovie::~QMovie
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QMovie
+ size=16 align=8
+ base size=16 base align=8
+QMovie (0x0x7f61b8e5c9c0) 0
+ vptr=((& QMovie::_ZTV6QMovie) + 16)
+ QObject (0x0x7f61b8ab9a80) 0
+ primary-for QMovie (0x0x7f61b8e5c9c0)
+
+Class QOffscreenSurface::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOffscreenSurface::QPrivateSignal (0x0x7f61b8ab9f00) 0 empty
+
+Vtable for QOffscreenSurface
+QOffscreenSurface::_ZTV17QOffscreenSurface: 26 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QOffscreenSurface)
+16 (int (*)(...))QOffscreenSurface::metaObject
+24 (int (*)(...))QOffscreenSurface::qt_metacast
+32 (int (*)(...))QOffscreenSurface::qt_metacall
+40 (int (*)(...))QOffscreenSurface::~QOffscreenSurface
+48 (int (*)(...))QOffscreenSurface::~QOffscreenSurface
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QOffscreenSurface::surfaceType
+120 (int (*)(...))QOffscreenSurface::format
+128 (int (*)(...))QOffscreenSurface::size
+136 (int (*)(...))QOffscreenSurface::surfaceHandle
+144 (int (*)(...))-16
+152 (int (*)(...))(& _ZTI17QOffscreenSurface)
+160 (int (*)(...))QOffscreenSurface::_ZThn16_N17QOffscreenSurfaceD1Ev
+168 (int (*)(...))QOffscreenSurface::_ZThn16_N17QOffscreenSurfaceD0Ev
+176 (int (*)(...))QOffscreenSurface::_ZThn16_NK17QOffscreenSurface6formatEv
+184 (int (*)(...))QOffscreenSurface::_ZThn16_NK17QOffscreenSurface13surfaceHandleEv
+192 (int (*)(...))QOffscreenSurface::_ZThn16_NK17QOffscreenSurface11surfaceTypeEv
+200 (int (*)(...))QOffscreenSurface::_ZThn16_NK17QOffscreenSurface4sizeEv
+
+Class QOffscreenSurface
+ size=40 align=8
+ base size=40 base align=8
+QOffscreenSurface (0x0x7f61b8e70770) 0
+ vptr=((& QOffscreenSurface::_ZTV17QOffscreenSurface) + 16)
+ QObject (0x0x7f61b8ab9e40) 0
+ primary-for QOffscreenSurface (0x0x7f61b8e70770)
+ QSurface (0x0x7f61b8ab9ea0) 16
+ vptr=((& QOffscreenSurface::_ZTV17QOffscreenSurface) + 160)
+
+Class QOpenGLBuffer
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLBuffer (0x0x7f61b8b9b180) 0
+
+Class QOpenGLVersionStatus
+ size=12 align=4
+ base size=12 base align=4
+QOpenGLVersionStatus (0x0x7f61b8b9b9c0) 0
+
+Class QOpenGLVersionFunctionsBackend
+ size=16 align=8
+ base size=12 base align=8
+QOpenGLVersionFunctionsBackend (0x0x7f61b88495a0) 0
+
+Class QOpenGLVersionFunctionsStorage
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLVersionFunctionsStorage (0x0x7f61b8849780) 0
+
+Class QAbstractOpenGLFunctionsPrivate
+ size=16 align=8
+ base size=9 base align=8
+QAbstractOpenGLFunctionsPrivate (0x0x7f61b88497e0) 0
+
+Vtable for QAbstractOpenGLFunctions
+QAbstractOpenGLFunctions::_ZTV24QAbstractOpenGLFunctions: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QAbstractOpenGLFunctions)
+16 (int (*)(...))QAbstractOpenGLFunctions::~QAbstractOpenGLFunctions
+24 (int (*)(...))QAbstractOpenGLFunctions::~QAbstractOpenGLFunctions
+32 (int (*)(...))QAbstractOpenGLFunctions::initializeOpenGLFunctions
+
+Class QAbstractOpenGLFunctions
+ size=16 align=8
+ base size=16 base align=8
+QAbstractOpenGLFunctions (0x0x7f61b88499c0) 0
+ vptr=((& QAbstractOpenGLFunctions::_ZTV24QAbstractOpenGLFunctions) + 16)
+
+Class QOpenGLFunctions_1_0_CoreBackend::Functions
+ size=384 align=8
+ base size=384 base align=8
+QOpenGLFunctions_1_0_CoreBackend::Functions (0x0x7f61b8849ba0) 0
+
+Class QOpenGLFunctions_1_0_CoreBackend
+ size=400 align=8
+ base size=400 base align=8
+QOpenGLFunctions_1_0_CoreBackend (0x0x7f61b8845888) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b8849b40) 0
+
+Class QOpenGLFunctions_1_1_CoreBackend::Functions
+ size=128 align=8
+ base size=128 base align=8
+QOpenGLFunctions_1_1_CoreBackend::Functions (0x0x7f61b8849ea0) 0
+
+Class QOpenGLFunctions_1_1_CoreBackend
+ size=144 align=8
+ base size=144 base align=8
+QOpenGLFunctions_1_1_CoreBackend (0x0x7f61b88458f0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b8849e40) 0
+
+Class QOpenGLFunctions_1_2_CoreBackend::Functions
+ size=48 align=8
+ base size=48 base align=8
+QOpenGLFunctions_1_2_CoreBackend::Functions (0x0x7f61b84881e0) 0
+
+Class QOpenGLFunctions_1_2_CoreBackend
+ size=64 align=8
+ base size=64 base align=8
+QOpenGLFunctions_1_2_CoreBackend (0x0x7f61b8845958) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b8488180) 0
+
+Class QOpenGLFunctions_1_3_CoreBackend::Functions
+ size=72 align=8
+ base size=72 base align=8
+QOpenGLFunctions_1_3_CoreBackend::Functions (0x0x7f61b84884e0) 0
+
+Class QOpenGLFunctions_1_3_CoreBackend
+ size=88 align=8
+ base size=88 base align=8
+QOpenGLFunctions_1_3_CoreBackend (0x0x7f61b88459c0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b8488480) 0
+
+Class QOpenGLFunctions_1_4_CoreBackend::Functions
+ size=56 align=8
+ base size=56 base align=8
+QOpenGLFunctions_1_4_CoreBackend::Functions (0x0x7f61b8488840) 0
+
+Class QOpenGLFunctions_1_4_CoreBackend
+ size=72 align=8
+ base size=72 base align=8
+QOpenGLFunctions_1_4_CoreBackend (0x0x7f61b8845a28) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b84887e0) 0
+
+Class QOpenGLFunctions_1_5_CoreBackend::Functions
+ size=152 align=8
+ base size=152 base align=8
+QOpenGLFunctions_1_5_CoreBackend::Functions (0x0x7f61b8488b40) 0
+
+Class QOpenGLFunctions_1_5_CoreBackend
+ size=168 align=8
+ base size=168 base align=8
+QOpenGLFunctions_1_5_CoreBackend (0x0x7f61b8845a90) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b8488ae0) 0
+
+Class QOpenGLFunctions_2_0_CoreBackend::Functions
+ size=744 align=8
+ base size=744 base align=8
+QOpenGLFunctions_2_0_CoreBackend::Functions (0x0x7f61b8488e40) 0
+
+Class QOpenGLFunctions_2_0_CoreBackend
+ size=760 align=8
+ base size=760 base align=8
+QOpenGLFunctions_2_0_CoreBackend (0x0x7f61b8845af8) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b8488de0) 0
+
+Class QOpenGLFunctions_2_1_CoreBackend::Functions
+ size=48 align=8
+ base size=48 base align=8
+QOpenGLFunctions_2_1_CoreBackend::Functions (0x0x7f61b84c6180) 0
+
+Class QOpenGLFunctions_2_1_CoreBackend
+ size=64 align=8
+ base size=64 base align=8
+QOpenGLFunctions_2_1_CoreBackend (0x0x7f61b8845b60) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b84c6120) 0
+
+Class QOpenGLFunctions_3_0_CoreBackend::Functions
+ size=672 align=8
+ base size=672 base align=8
+QOpenGLFunctions_3_0_CoreBackend::Functions (0x0x7f61b84c6480) 0
+
+Class QOpenGLFunctions_3_0_CoreBackend
+ size=688 align=8
+ base size=688 base align=8
+QOpenGLFunctions_3_0_CoreBackend (0x0x7f61b8845bc8) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b84c6420) 0
+
+Class QOpenGLFunctions_3_1_CoreBackend::Functions
+ size=96 align=8
+ base size=96 base align=8
+QOpenGLFunctions_3_1_CoreBackend::Functions (0x0x7f61b84c6780) 0
+
+Class QOpenGLFunctions_3_1_CoreBackend
+ size=112 align=8
+ base size=112 base align=8
+QOpenGLFunctions_3_1_CoreBackend (0x0x7f61b8845c30) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b84c6720) 0
+
+Class QOpenGLFunctions_3_2_CoreBackend::Functions
+ size=152 align=8
+ base size=152 base align=8
+QOpenGLFunctions_3_2_CoreBackend::Functions (0x0x7f61b84c6a80) 0
+
+Class QOpenGLFunctions_3_2_CoreBackend
+ size=168 align=8
+ base size=168 base align=8
+QOpenGLFunctions_3_2_CoreBackend (0x0x7f61b8845c98) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b84c6a20) 0
+
+Class QOpenGLFunctions_3_3_CoreBackend::Functions
+ size=464 align=8
+ base size=464 base align=8
+QOpenGLFunctions_3_3_CoreBackend::Functions (0x0x7f61b84c6d80) 0
+
+Class QOpenGLFunctions_3_3_CoreBackend
+ size=480 align=8
+ base size=480 base align=8
+QOpenGLFunctions_3_3_CoreBackend (0x0x7f61b8845d00) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b84c6d20) 0
+
+Class QOpenGLFunctions_4_0_CoreBackend::Functions
+ size=368 align=8
+ base size=368 base align=8
+QOpenGLFunctions_4_0_CoreBackend::Functions (0x0x7f61b85120c0) 0
+
+Class QOpenGLFunctions_4_0_CoreBackend
+ size=384 align=8
+ base size=384 base align=8
+QOpenGLFunctions_4_0_CoreBackend (0x0x7f61b8845d68) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b8512060) 0
+
+Class QOpenGLFunctions_4_1_CoreBackend::Functions
+ size=704 align=8
+ base size=704 base align=8
+QOpenGLFunctions_4_1_CoreBackend::Functions (0x0x7f61b85123c0) 0
+
+Class QOpenGLFunctions_4_1_CoreBackend
+ size=720 align=8
+ base size=720 base align=8
+QOpenGLFunctions_4_1_CoreBackend (0x0x7f61b8845dd0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b8512360) 0
+
+Class QOpenGLFunctions_4_2_CoreBackend::Functions
+ size=96 align=8
+ base size=96 base align=8
+QOpenGLFunctions_4_2_CoreBackend::Functions (0x0x7f61b85126c0) 0
+
+Class QOpenGLFunctions_4_2_CoreBackend
+ size=112 align=8
+ base size=112 base align=8
+QOpenGLFunctions_4_2_CoreBackend (0x0x7f61b8845e38) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b8512660) 0
+
+Class QOpenGLFunctions_4_3_CoreBackend::Functions
+ size=344 align=8
+ base size=344 base align=8
+QOpenGLFunctions_4_3_CoreBackend::Functions (0x0x7f61b85129c0) 0
+
+Class QOpenGLFunctions_4_3_CoreBackend
+ size=360 align=8
+ base size=360 base align=8
+QOpenGLFunctions_4_3_CoreBackend (0x0x7f61b8845ea0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b8512960) 0
+
+Class QOpenGLFunctions_4_4_CoreBackend::Functions
+ size=72 align=8
+ base size=72 base align=8
+QOpenGLFunctions_4_4_CoreBackend::Functions (0x0x7f61b8512cc0) 0
+
+Class QOpenGLFunctions_4_4_CoreBackend
+ size=88 align=8
+ base size=88 base align=8
+QOpenGLFunctions_4_4_CoreBackend (0x0x7f61b8845f08) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b8512c60) 0
+
+Class QOpenGLFunctions_4_5_CoreBackend::Functions
+ size=848 align=8
+ base size=848 base align=8
+QOpenGLFunctions_4_5_CoreBackend::Functions (0x0x7f61b8565060) 0
+
+Class QOpenGLFunctions_4_5_CoreBackend
+ size=864 align=8
+ base size=864 base align=8
+QOpenGLFunctions_4_5_CoreBackend (0x0x7f61b8845f70) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b8565000) 0
+
+Class QOpenGLFunctions_1_0_DeprecatedBackend::Functions
+ size=2064 align=8
+ base size=2064 base align=8
+QOpenGLFunctions_1_0_DeprecatedBackend::Functions (0x0x7f61b8565360) 0
+
+Class QOpenGLFunctions_1_0_DeprecatedBackend
+ size=2080 align=8
+ base size=2080 base align=8
+QOpenGLFunctions_1_0_DeprecatedBackend (0x0x7f61b8590000) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b8565300) 0
+
+Class QOpenGLFunctions_1_1_DeprecatedBackend::Functions
+ size=136 align=8
+ base size=136 base align=8
+QOpenGLFunctions_1_1_DeprecatedBackend::Functions (0x0x7f61b8565660) 0
+
+Class QOpenGLFunctions_1_1_DeprecatedBackend
+ size=152 align=8
+ base size=152 base align=8
+QOpenGLFunctions_1_1_DeprecatedBackend (0x0x7f61b8590068) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b8565600) 0
+
+Class QOpenGLFunctions_1_2_DeprecatedBackend::Functions
+ size=256 align=8
+ base size=256 base align=8
+QOpenGLFunctions_1_2_DeprecatedBackend::Functions (0x0x7f61b8565960) 0
+
+Class QOpenGLFunctions_1_2_DeprecatedBackend
+ size=272 align=8
+ base size=272 base align=8
+QOpenGLFunctions_1_2_DeprecatedBackend (0x0x7f61b85900d0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b8565900) 0
+
+Class QOpenGLFunctions_1_3_DeprecatedBackend::Functions
+ size=296 align=8
+ base size=296 base align=8
+QOpenGLFunctions_1_3_DeprecatedBackend::Functions (0x0x7f61b8565c60) 0
+
+Class QOpenGLFunctions_1_3_DeprecatedBackend
+ size=312 align=8
+ base size=312 base align=8
+QOpenGLFunctions_1_3_DeprecatedBackend (0x0x7f61b8590138) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b8565c00) 0
+
+Class QOpenGLFunctions_1_4_DeprecatedBackend::Functions
+ size=304 align=8
+ base size=304 base align=8
+QOpenGLFunctions_1_4_DeprecatedBackend::Functions (0x0x7f61b8565f60) 0
+
+Class QOpenGLFunctions_1_4_DeprecatedBackend
+ size=320 align=8
+ base size=320 base align=8
+QOpenGLFunctions_1_4_DeprecatedBackend (0x0x7f61b85901a0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b8565f00) 0
+
+Class QOpenGLFunctions_2_0_DeprecatedBackend::Functions
+ size=288 align=8
+ base size=288 base align=8
+QOpenGLFunctions_2_0_DeprecatedBackend::Functions (0x0x7f61b85f92a0) 0
+
+Class QOpenGLFunctions_2_0_DeprecatedBackend
+ size=304 align=8
+ base size=304 base align=8
+QOpenGLFunctions_2_0_DeprecatedBackend (0x0x7f61b8590208) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b85f9240) 0
+
+Class QOpenGLFunctions_3_0_DeprecatedBackend::Functions
+ size=160 align=8
+ base size=160 base align=8
+QOpenGLFunctions_3_0_DeprecatedBackend::Functions (0x0x7f61b85f95a0) 0
+
+Class QOpenGLFunctions_3_0_DeprecatedBackend
+ size=176 align=8
+ base size=176 base align=8
+QOpenGLFunctions_3_0_DeprecatedBackend (0x0x7f61b8590270) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b85f9540) 0
+
+Class QOpenGLFunctions_3_3_DeprecatedBackend::Functions
+ size=240 align=8
+ base size=240 base align=8
+QOpenGLFunctions_3_3_DeprecatedBackend::Functions (0x0x7f61b85f98a0) 0
+
+Class QOpenGLFunctions_3_3_DeprecatedBackend
+ size=256 align=8
+ base size=256 base align=8
+QOpenGLFunctions_3_3_DeprecatedBackend (0x0x7f61b85902d8) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b85f9840) 0
+
+Class QOpenGLFunctions_4_5_DeprecatedBackend::Functions
+ size=96 align=8
+ base size=96 base align=8
+QOpenGLFunctions_4_5_DeprecatedBackend::Functions (0x0x7f61b85f9ba0) 0
+
+Class QOpenGLFunctions_4_5_DeprecatedBackend
+ size=112 align=8
+ base size=112 base align=8
+QOpenGLFunctions_4_5_DeprecatedBackend (0x0x7f61b8590340) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f61b85f9b40) 0
+
+Class QOpenGLVersionProfile
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLVersionProfile (0x0x7f61b85f9e40) 0
+
+Class QOpenGLContextGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLContextGroup::QPrivateSignal (0x0x7f61b8637960) 0 empty
+
+Vtable for QOpenGLContextGroup
+QOpenGLContextGroup::_ZTV19QOpenGLContextGroup: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QOpenGLContextGroup)
+16 (int (*)(...))QOpenGLContextGroup::metaObject
+24 (int (*)(...))QOpenGLContextGroup::qt_metacast
+32 (int (*)(...))QOpenGLContextGroup::qt_metacall
+40 (int (*)(...))QOpenGLContextGroup::~QOpenGLContextGroup
+48 (int (*)(...))QOpenGLContextGroup::~QOpenGLContextGroup
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLContextGroup
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLContextGroup (0x0x7f61b8590d68) 0
+ vptr=((& QOpenGLContextGroup::_ZTV19QOpenGLContextGroup) + 16)
+ QObject (0x0x7f61b8637900) 0
+ primary-for QOpenGLContextGroup (0x0x7f61b8590d68)
+
+Class QOpenGLContext::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLContext::QPrivateSignal (0x0x7f61b8637ba0) 0 empty
+
+Vtable for QOpenGLContext
+QOpenGLContext::_ZTV14QOpenGLContext: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QOpenGLContext)
+16 (int (*)(...))QOpenGLContext::metaObject
+24 (int (*)(...))QOpenGLContext::qt_metacast
+32 (int (*)(...))QOpenGLContext::qt_metacall
+40 (int (*)(...))QOpenGLContext::~QOpenGLContext
+48 (int (*)(...))QOpenGLContext::~QOpenGLContext
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLContext
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLContext (0x0x7f61b8590dd0) 0
+ vptr=((& QOpenGLContext::_ZTV14QOpenGLContext) + 16)
+ QObject (0x0x7f61b8637b40) 0
+ primary-for QOpenGLContext (0x0x7f61b8590dd0)
+
+Class QOpenGLDebugMessage
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLDebugMessage (0x0x7f61b8637de0) 0
+
+Class QOpenGLDebugLogger::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLDebugLogger::QPrivateSignal (0x0x7f61b83b43c0) 0 empty
+
+Vtable for QOpenGLDebugLogger
+QOpenGLDebugLogger::_ZTV18QOpenGLDebugLogger: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QOpenGLDebugLogger)
+16 (int (*)(...))QOpenGLDebugLogger::metaObject
+24 (int (*)(...))QOpenGLDebugLogger::qt_metacast
+32 (int (*)(...))QOpenGLDebugLogger::qt_metacall
+40 (int (*)(...))QOpenGLDebugLogger::~QOpenGLDebugLogger
+48 (int (*)(...))QOpenGLDebugLogger::~QOpenGLDebugLogger
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLDebugLogger
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLDebugLogger (0x0x7f61b8395068) 0
+ vptr=((& QOpenGLDebugLogger::_ZTV18QOpenGLDebugLogger) + 16)
+ QObject (0x0x7f61b83b4360) 0
+ primary-for QOpenGLDebugLogger (0x0x7f61b8395068)
+
+Class QOpenGLFunctions
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLFunctions (0x0x7f61b83b4840) 0
+
+Class QOpenGLFunctionsPrivate::Functions
+ size=1152 align=8
+ base size=1152 base align=8
+QOpenGLFunctionsPrivate::Functions (0x0x7f61b84411e0) 0
+
+Class QOpenGLFunctionsPrivate
+ size=1152 align=8
+ base size=1152 base align=8
+QOpenGLFunctionsPrivate (0x0x7f61b8441180) 0
+
+Class QOpenGLExtraFunctions
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLExtraFunctions (0x0x7f61b8395410) 0
+ QOpenGLFunctions (0x0x7f61b8119f60) 0
+
+Class QOpenGLExtraFunctionsPrivate::Functions
+ size=1728 align=8
+ base size=1728 base align=8
+QOpenGLExtraFunctionsPrivate::Functions (0x0x7f61b819f300) 0
+
+Class QOpenGLExtraFunctionsPrivate
+ size=2880 align=8
+ base size=2880 base align=8
+QOpenGLExtraFunctionsPrivate (0x0x7f61b8395478) 0
+ QOpenGLFunctionsPrivate (0x0x7f61b819f2a0) 0
+
+Vtable for QOpenGLFramebufferObject
+QOpenGLFramebufferObject::_ZTV24QOpenGLFramebufferObject: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QOpenGLFramebufferObject)
+16 (int (*)(...))QOpenGLFramebufferObject::~QOpenGLFramebufferObject
+24 (int (*)(...))QOpenGLFramebufferObject::~QOpenGLFramebufferObject
+
+Class QOpenGLFramebufferObject
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLFramebufferObject (0x0x7f61b7ee9d80) 0
+ vptr=((& QOpenGLFramebufferObject::_ZTV24QOpenGLFramebufferObject) + 16)
+
+Class QOpenGLFramebufferObjectFormat
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLFramebufferObjectFormat (0x0x7f61b7f3a060) 0
+
+Vtable for QOpenGLPaintDevice
+QOpenGLPaintDevice::_ZTV18QOpenGLPaintDevice: 11 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QOpenGLPaintDevice)
+16 (int (*)(...))QOpenGLPaintDevice::~QOpenGLPaintDevice
+24 (int (*)(...))QOpenGLPaintDevice::~QOpenGLPaintDevice
+32 (int (*)(...))QOpenGLPaintDevice::devType
+40 (int (*)(...))QOpenGLPaintDevice::paintEngine
+48 (int (*)(...))QOpenGLPaintDevice::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+80 (int (*)(...))QOpenGLPaintDevice::ensureActiveTarget
+
+Class QOpenGLPaintDevice
+ size=32 align=8
+ base size=32 base align=8
+QOpenGLPaintDevice (0x0x7f61b7f17208) 0
+ vptr=((& QOpenGLPaintDevice::_ZTV18QOpenGLPaintDevice) + 16)
+ QPaintDevice (0x0x7f61b7f3a0c0) 0
+ primary-for QOpenGLPaintDevice (0x0x7f61b7f17208)
+
+Class QOpenGLPixelTransferOptions
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLPixelTransferOptions (0x0x7f61b7f3a300) 0
+
+Class QOpenGLShader::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLShader::QPrivateSignal (0x0x7f61b7fa5120) 0 empty
+
+Vtable for QOpenGLShader
+QOpenGLShader::_ZTV13QOpenGLShader: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QOpenGLShader)
+16 (int (*)(...))QOpenGLShader::metaObject
+24 (int (*)(...))QOpenGLShader::qt_metacast
+32 (int (*)(...))QOpenGLShader::qt_metacall
+40 (int (*)(...))QOpenGLShader::~QOpenGLShader
+48 (int (*)(...))QOpenGLShader::~QOpenGLShader
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLShader
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLShader (0x0x7f61b7fa1340) 0
+ vptr=((& QOpenGLShader::_ZTV13QOpenGLShader) + 16)
+ QObject (0x0x7f61b7fa50c0) 0
+ primary-for QOpenGLShader (0x0x7f61b7fa1340)
+
+Class QOpenGLShaderProgram::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLShaderProgram::QPrivateSignal (0x0x7f61b7fa5a20) 0 empty
+
+Vtable for QOpenGLShaderProgram
+QOpenGLShaderProgram::_ZTV20QOpenGLShaderProgram: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QOpenGLShaderProgram)
+16 (int (*)(...))QOpenGLShaderProgram::metaObject
+24 (int (*)(...))QOpenGLShaderProgram::qt_metacast
+32 (int (*)(...))QOpenGLShaderProgram::qt_metacall
+40 (int (*)(...))QOpenGLShaderProgram::~QOpenGLShaderProgram
+48 (int (*)(...))QOpenGLShaderProgram::~QOpenGLShaderProgram
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QOpenGLShaderProgram::link
+
+Class QOpenGLShaderProgram
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLShaderProgram (0x0x7f61b7fa1478) 0
+ vptr=((& QOpenGLShaderProgram::_ZTV20QOpenGLShaderProgram) + 16)
+ QObject (0x0x7f61b7fa59c0) 0
+ primary-for QOpenGLShaderProgram (0x0x7f61b7fa1478)
+
+Class QOpenGLTexture
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLTexture (0x0x7f61b7fa5c00) 0
+
+Class QOpenGLTextureBlitter
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLTextureBlitter (0x0x7f61b7cbe120) 0
+
+Class QOpenGLTimerQuery::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLTimerQuery::QPrivateSignal (0x0x7f61b7cbe360) 0 empty
+
+Vtable for QOpenGLTimerQuery
+QOpenGLTimerQuery::_ZTV17QOpenGLTimerQuery: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QOpenGLTimerQuery)
+16 (int (*)(...))QOpenGLTimerQuery::metaObject
+24 (int (*)(...))QOpenGLTimerQuery::qt_metacast
+32 (int (*)(...))QOpenGLTimerQuery::qt_metacall
+40 (int (*)(...))QOpenGLTimerQuery::~QOpenGLTimerQuery
+48 (int (*)(...))QOpenGLTimerQuery::~QOpenGLTimerQuery
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLTimerQuery
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLTimerQuery (0x0x7f61b7fa15b0) 0
+ vptr=((& QOpenGLTimerQuery::_ZTV17QOpenGLTimerQuery) + 16)
+ QObject (0x0x7f61b7cbe300) 0
+ primary-for QOpenGLTimerQuery (0x0x7f61b7fa15b0)
+
+Class QOpenGLTimeMonitor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLTimeMonitor::QPrivateSignal (0x0x7f61b7cbe5a0) 0 empty
+
+Vtable for QOpenGLTimeMonitor
+QOpenGLTimeMonitor::_ZTV18QOpenGLTimeMonitor: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QOpenGLTimeMonitor)
+16 (int (*)(...))QOpenGLTimeMonitor::metaObject
+24 (int (*)(...))QOpenGLTimeMonitor::qt_metacast
+32 (int (*)(...))QOpenGLTimeMonitor::qt_metacall
+40 (int (*)(...))QOpenGLTimeMonitor::~QOpenGLTimeMonitor
+48 (int (*)(...))QOpenGLTimeMonitor::~QOpenGLTimeMonitor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLTimeMonitor
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLTimeMonitor (0x0x7f61b7fa1618) 0
+ vptr=((& QOpenGLTimeMonitor::_ZTV18QOpenGLTimeMonitor) + 16)
+ QObject (0x0x7f61b7cbe540) 0
+ primary-for QOpenGLTimeMonitor (0x0x7f61b7fa1618)
+
+Class QOpenGLVertexArrayObject::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLVertexArrayObject::QPrivateSignal (0x0x7f61b7cbe7e0) 0 empty
+
+Class QOpenGLVertexArrayObject::Binder
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLVertexArrayObject::Binder (0x0x7f61b7cbe840) 0
+
+Vtable for QOpenGLVertexArrayObject
+QOpenGLVertexArrayObject::_ZTV24QOpenGLVertexArrayObject: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QOpenGLVertexArrayObject)
+16 (int (*)(...))QOpenGLVertexArrayObject::metaObject
+24 (int (*)(...))QOpenGLVertexArrayObject::qt_metacast
+32 (int (*)(...))QOpenGLVertexArrayObject::qt_metacall
+40 (int (*)(...))QOpenGLVertexArrayObject::~QOpenGLVertexArrayObject
+48 (int (*)(...))QOpenGLVertexArrayObject::~QOpenGLVertexArrayObject
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLVertexArrayObject
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLVertexArrayObject (0x0x7f61b7fa1680) 0
+ vptr=((& QOpenGLVertexArrayObject::_ZTV24QOpenGLVertexArrayObject) + 16)
+ QObject (0x0x7f61b7cbe780) 0
+ primary-for QOpenGLVertexArrayObject (0x0x7f61b7fa1680)
+
+Class QPaintDeviceWindow::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPaintDeviceWindow::QPrivateSignal (0x0x7f61b7cbef00) 0 empty
+
+Vtable for QPaintDeviceWindow
+QPaintDeviceWindow::_ZTV18QPaintDeviceWindow: 58 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QPaintDeviceWindow)
+16 (int (*)(...))QPaintDeviceWindow::metaObject
+24 (int (*)(...))QPaintDeviceWindow::qt_metacast
+32 (int (*)(...))QPaintDeviceWindow::qt_metacall
+40 (int (*)(...))QPaintDeviceWindow::~QPaintDeviceWindow
+48 (int (*)(...))QPaintDeviceWindow::~QPaintDeviceWindow
+56 (int (*)(...))QPaintDeviceWindow::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWindow::surfaceType
+120 (int (*)(...))QWindow::format
+128 (int (*)(...))QWindow::size
+136 (int (*)(...))QWindow::accessibleRoot
+144 (int (*)(...))QWindow::focusObject
+152 (int (*)(...))QPaintDeviceWindow::exposeEvent
+160 (int (*)(...))QWindow::resizeEvent
+168 (int (*)(...))QWindow::moveEvent
+176 (int (*)(...))QWindow::focusInEvent
+184 (int (*)(...))QWindow::focusOutEvent
+192 (int (*)(...))QWindow::showEvent
+200 (int (*)(...))QWindow::hideEvent
+208 (int (*)(...))QWindow::keyPressEvent
+216 (int (*)(...))QWindow::keyReleaseEvent
+224 (int (*)(...))QWindow::mousePressEvent
+232 (int (*)(...))QWindow::mouseReleaseEvent
+240 (int (*)(...))QWindow::mouseDoubleClickEvent
+248 (int (*)(...))QWindow::mouseMoveEvent
+256 (int (*)(...))QWindow::wheelEvent
+264 (int (*)(...))QWindow::touchEvent
+272 (int (*)(...))QWindow::tabletEvent
+280 (int (*)(...))QWindow::nativeEvent
+288 (int (*)(...))QWindow::surfaceHandle
+296 (int (*)(...))QPaintDeviceWindow::paintEvent
+304 (int (*)(...))QPaintDeviceWindow::metric
+312 (int (*)(...))QPaintDeviceWindow::paintEngine
+320 (int (*)(...))-16
+328 (int (*)(...))(& _ZTI18QPaintDeviceWindow)
+336 (int (*)(...))QPaintDeviceWindow::_ZThn16_N18QPaintDeviceWindowD1Ev
+344 (int (*)(...))QPaintDeviceWindow::_ZThn16_N18QPaintDeviceWindowD0Ev
+352 (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
+360 (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
+368 (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
+376 (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv
+384 (int (*)(...))-40
+392 (int (*)(...))(& _ZTI18QPaintDeviceWindow)
+400 (int (*)(...))QPaintDeviceWindow::_ZThn40_N18QPaintDeviceWindowD1Ev
+408 (int (*)(...))QPaintDeviceWindow::_ZThn40_N18QPaintDeviceWindowD0Ev
+416 (int (*)(...))QPaintDevice::devType
+424 (int (*)(...))QPaintDeviceWindow::_ZThn40_NK18QPaintDeviceWindow11paintEngineEv
+432 (int (*)(...))QPaintDeviceWindow::_ZThn40_NK18QPaintDeviceWindow6metricEN12QPaintDevice17PaintDeviceMetricE
+440 (int (*)(...))QPaintDevice::initPainter
+448 (int (*)(...))QPaintDevice::redirected
+456 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QPaintDeviceWindow
+ size=64 align=8
+ base size=64 base align=8
+QPaintDeviceWindow (0x0x7f61b7ce47e0) 0
+ vptr=((& QPaintDeviceWindow::_ZTV18QPaintDeviceWindow) + 16)
+ QWindow (0x0x7f61b7ce4850) 0
+ primary-for QPaintDeviceWindow (0x0x7f61b7ce47e0)
+ QObject (0x0x7f61b7cbede0) 0
+ primary-for QWindow (0x0x7f61b7ce4850)
+ QSurface (0x0x7f61b7cbee40) 16
+ vptr=((& QPaintDeviceWindow::_ZTV18QPaintDeviceWindow) + 336)
+ QPaintDevice (0x0x7f61b7cbeea0) 40
+ vptr=((& QPaintDeviceWindow::_ZTV18QPaintDeviceWindow) + 400)
+
+Class QOpenGLWindow::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLWindow::QPrivateSignal (0x0x7f61b7d16240) 0 empty
+
+Vtable for QOpenGLWindow
+QOpenGLWindow::_ZTV13QOpenGLWindow: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QOpenGLWindow)
+16 (int (*)(...))QOpenGLWindow::metaObject
+24 (int (*)(...))QOpenGLWindow::qt_metacast
+32 (int (*)(...))QOpenGLWindow::qt_metacall
+40 (int (*)(...))QOpenGLWindow::~QOpenGLWindow
+48 (int (*)(...))QOpenGLWindow::~QOpenGLWindow
+56 (int (*)(...))QPaintDeviceWindow::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWindow::surfaceType
+120 (int (*)(...))QWindow::format
+128 (int (*)(...))QWindow::size
+136 (int (*)(...))QWindow::accessibleRoot
+144 (int (*)(...))QWindow::focusObject
+152 (int (*)(...))QPaintDeviceWindow::exposeEvent
+160 (int (*)(...))QOpenGLWindow::resizeEvent
+168 (int (*)(...))QWindow::moveEvent
+176 (int (*)(...))QWindow::focusInEvent
+184 (int (*)(...))QWindow::focusOutEvent
+192 (int (*)(...))QWindow::showEvent
+200 (int (*)(...))QWindow::hideEvent
+208 (int (*)(...))QWindow::keyPressEvent
+216 (int (*)(...))QWindow::keyReleaseEvent
+224 (int (*)(...))QWindow::mousePressEvent
+232 (int (*)(...))QWindow::mouseReleaseEvent
+240 (int (*)(...))QWindow::mouseDoubleClickEvent
+248 (int (*)(...))QWindow::mouseMoveEvent
+256 (int (*)(...))QWindow::wheelEvent
+264 (int (*)(...))QWindow::touchEvent
+272 (int (*)(...))QWindow::tabletEvent
+280 (int (*)(...))QWindow::nativeEvent
+288 (int (*)(...))QWindow::surfaceHandle
+296 (int (*)(...))QOpenGLWindow::paintEvent
+304 (int (*)(...))QOpenGLWindow::metric
+312 (int (*)(...))QPaintDeviceWindow::paintEngine
+320 (int (*)(...))QOpenGLWindow::initializeGL
+328 (int (*)(...))QOpenGLWindow::resizeGL
+336 (int (*)(...))QOpenGLWindow::paintGL
+344 (int (*)(...))QOpenGLWindow::paintUnderGL
+352 (int (*)(...))QOpenGLWindow::paintOverGL
+360 (int (*)(...))QOpenGLWindow::redirected
+368 (int (*)(...))-16
+376 (int (*)(...))(& _ZTI13QOpenGLWindow)
+384 (int (*)(...))QOpenGLWindow::_ZThn16_N13QOpenGLWindowD1Ev
+392 (int (*)(...))QOpenGLWindow::_ZThn16_N13QOpenGLWindowD0Ev
+400 (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
+408 (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
+416 (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
+424 (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv
+432 (int (*)(...))-40
+440 (int (*)(...))(& _ZTI13QOpenGLWindow)
+448 (int (*)(...))QOpenGLWindow::_ZThn40_N13QOpenGLWindowD1Ev
+456 (int (*)(...))QOpenGLWindow::_ZThn40_N13QOpenGLWindowD0Ev
+464 (int (*)(...))QPaintDevice::devType
+472 (int (*)(...))QPaintDeviceWindow::_ZThn40_NK18QPaintDeviceWindow11paintEngineEv
+480 (int (*)(...))QOpenGLWindow::_ZThn40_NK13QOpenGLWindow6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QPaintDevice::initPainter
+496 (int (*)(...))QOpenGLWindow::_ZThn40_NK13QOpenGLWindow10redirectedEP6QPoint
+504 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QOpenGLWindow
+ size=64 align=8
+ base size=64 base align=8
+QOpenGLWindow (0x0x7f61b7fa1750) 0
+ vptr=((& QOpenGLWindow::_ZTV13QOpenGLWindow) + 16)
+ QPaintDeviceWindow (0x0x7f61b7ce4a10) 0
+ primary-for QOpenGLWindow (0x0x7f61b7fa1750)
+ QWindow (0x0x7f61b7ce4a80) 0
+ primary-for QPaintDeviceWindow (0x0x7f61b7ce4a10)
+ QObject (0x0x7f61b7d16120) 0
+ primary-for QWindow (0x0x7f61b7ce4a80)
+ QSurface (0x0x7f61b7d16180) 16
+ vptr=((& QOpenGLWindow::_ZTV13QOpenGLWindow) + 384)
+ QPaintDevice (0x0x7f61b7d161e0) 40
+ vptr=((& QOpenGLWindow::_ZTV13QOpenGLWindow) + 448)
+
+Class QPageSize
+ size=8 align=8
+ base size=8 base align=8
+QPageSize (0x0x7f61b7d16420) 0
+
+Class QPageLayout
+ size=8 align=8
+ base size=8 base align=8
+QPageLayout (0x0x7f61b7e0d960) 0
+
+Class QPagedPaintDevice::Margins
+ size=32 align=8
+ base size=32 base align=8
+QPagedPaintDevice::Margins (0x0x7f61b7b09420) 0
+
+Vtable for QPagedPaintDevice
+QPagedPaintDevice::_ZTV17QPagedPaintDevice: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QPagedPaintDevice)
+16 0
+24 0
+32 (int (*)(...))QPaintDevice::devType
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))QPaintDevice::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))QPagedPaintDevice::setPageSize
+96 (int (*)(...))QPagedPaintDevice::setPageSizeMM
+104 (int (*)(...))QPagedPaintDevice::setMargins
+
+Class QPagedPaintDevice
+ size=32 align=8
+ base size=32 base align=8
+QPagedPaintDevice (0x0x7f61b7aeab60) 0
+ vptr=((& QPagedPaintDevice::_ZTV17QPagedPaintDevice) + 16)
+ QPaintDevice (0x0x7f61b7b093c0) 0
+ primary-for QPagedPaintDevice (0x0x7f61b7aeab60)
+
+Class QPainter::PixmapFragment
+ size=80 align=8
+ base size=80 base align=8
+QPainter::PixmapFragment (0x0x7f61b7b094e0) 0
+
+Class QPainter
+ size=8 align=8
+ base size=8 base align=8
+QPainter (0x0x7f61b7b09480) 0
+
+Class QTextItem
+ size=1 align=1
+ base size=0 base align=1
+QTextItem (0x0x7f61c49a0cc0) 0 empty
+
+Vtable for QPaintEngine
+QPaintEngine::_ZTV12QPaintEngine: 24 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QPaintEngine)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))QPaintEngine::drawRects
+64 (int (*)(...))QPaintEngine::drawRects
+72 (int (*)(...))QPaintEngine::drawLines
+80 (int (*)(...))QPaintEngine::drawLines
+88 (int (*)(...))QPaintEngine::drawEllipse
+96 (int (*)(...))QPaintEngine::drawEllipse
+104 (int (*)(...))QPaintEngine::drawPath
+112 (int (*)(...))QPaintEngine::drawPoints
+120 (int (*)(...))QPaintEngine::drawPoints
+128 (int (*)(...))QPaintEngine::drawPolygon
+136 (int (*)(...))QPaintEngine::drawPolygon
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QPaintEngine::drawTextItem
+160 (int (*)(...))QPaintEngine::drawTiledPixmap
+168 (int (*)(...))QPaintEngine::drawImage
+176 (int (*)(...))QPaintEngine::coordinateOffset
+184 (int (*)(...))__cxa_pure_virtual
+
+Class QPaintEngine
+ size=32 align=8
+ base size=32 base align=8
+QPaintEngine (0x0x7f61c4049f60) 0
+ vptr=((& QPaintEngine::_ZTV12QPaintEngine) + 16)
+
+Class QPaintEngineState
+ size=4 align=4
+ base size=4 base align=4
+QPaintEngineState (0x0x7f61c4137f60) 0
+
+Class QPdfWriter::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPdfWriter::QPrivateSignal (0x0x7f61c30a09c0) 0 empty
+
+Vtable for QPdfWriter
+QPdfWriter::_ZTV10QPdfWriter: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QPdfWriter)
+16 (int (*)(...))QPdfWriter::metaObject
+24 (int (*)(...))QPdfWriter::qt_metacast
+32 (int (*)(...))QPdfWriter::qt_metacall
+40 (int (*)(...))QPdfWriter::~QPdfWriter
+48 (int (*)(...))QPdfWriter::~QPdfWriter
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QPdfWriter::newPage
+120 (int (*)(...))QPdfWriter::setPageSize
+128 (int (*)(...))QPdfWriter::setPageSizeMM
+136 (int (*)(...))QPdfWriter::setMargins
+144 (int (*)(...))QPdfWriter::paintEngine
+152 (int (*)(...))QPdfWriter::metric
+160 (int (*)(...))-16
+168 (int (*)(...))(& _ZTI10QPdfWriter)
+176 (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriterD1Ev
+184 (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriterD0Ev
+192 (int (*)(...))QPaintDevice::devType
+200 (int (*)(...))QPdfWriter::_ZThn16_NK10QPdfWriter11paintEngineEv
+208 (int (*)(...))QPdfWriter::_ZThn16_NK10QPdfWriter6metricEN12QPaintDevice17PaintDeviceMetricE
+216 (int (*)(...))QPaintDevice::initPainter
+224 (int (*)(...))QPaintDevice::redirected
+232 (int (*)(...))QPaintDevice::sharedPainter
+240 (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriter7newPageEv
+248 (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriter11setPageSizeEN17QPagedPaintDevice8PageSizeE
+256 (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriter13setPageSizeMMERK6QSizeF
+264 (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriter10setMarginsERKN17QPagedPaintDevice7MarginsE
+
+Class QPdfWriter
+ size=48 align=8
+ base size=48 base align=8
+QPdfWriter (0x0x7f61bd0f1000) 0
+ vptr=((& QPdfWriter::_ZTV10QPdfWriter) + 16)
+ QObject (0x0x7f61c30a0420) 0
+ primary-for QPdfWriter (0x0x7f61bd0f1000)
+ QPagedPaintDevice (0x0x7f61c408eb60) 16
+ vptr=((& QPdfWriter::_ZTV10QPdfWriter) + 176)
+ QPaintDevice (0x0x7f61c30a0960) 16
+ primary-for QPagedPaintDevice (0x0x7f61c408eb60)
+
+Vtable for QPicture
+QPicture::_ZTV8QPicture: 11 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QPicture)
+16 (int (*)(...))QPicture::~QPicture
+24 (int (*)(...))QPicture::~QPicture
+32 (int (*)(...))QPicture::devType
+40 (int (*)(...))QPicture::paintEngine
+48 (int (*)(...))QPicture::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+80 (int (*)(...))QPicture::setData
+
+Class QPicture
+ size=32 align=8
+ base size=32 base align=8
+QPicture (0x0x7f61c408ee38) 0
+ vptr=((& QPicture::_ZTV8QPicture) + 16)
+ QPaintDevice (0x0x7f61c2d86420) 0
+ primary-for QPicture (0x0x7f61c408ee38)
+
+Class QPictureIO
+ size=8 align=8
+ base size=8 base align=8
+QPictureIO (0x0x7f61c123c060) 0
+
+Class QPictureFormatPlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPictureFormatPlugin::QPrivateSignal (0x0x7f61c123c1e0) 0 empty
+
+Vtable for QPictureFormatPlugin
+QPictureFormatPlugin::_ZTV20QPictureFormatPlugin: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QPictureFormatPlugin)
+16 (int (*)(...))QPictureFormatPlugin::metaObject
+24 (int (*)(...))QPictureFormatPlugin::qt_metacast
+32 (int (*)(...))QPictureFormatPlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QPictureFormatPlugin::loadPicture
+120 (int (*)(...))QPictureFormatPlugin::savePicture
+128 (int (*)(...))__cxa_pure_virtual
+
+Class QPictureFormatPlugin
+ size=16 align=8
+ base size=16 base align=8
+QPictureFormatPlugin (0x0x7f61c1221bc8) 0
+ vptr=((& QPictureFormatPlugin::_ZTV20QPictureFormatPlugin) + 16)
+ QObject (0x0x7f61c123c0c0) 0
+ primary-for QPictureFormatPlugin (0x0x7f61c1221bc8)
+
+Class QPixmapCache::Key
+ size=8 align=8
+ base size=8 base align=8
+QPixmapCache::Key (0x0x7f61c123cf60) 0
+
+Class QPixmapCache
+ size=1 align=1
+ base size=0 base align=1
+QPixmapCache (0x0x7f61c123c4e0) 0 empty
+
+Class QRasterWindow::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QRasterWindow::QPrivateSignal (0x0x7f61bfe82ba0) 0 empty
+
+Vtable for QRasterWindow
+QRasterWindow::_ZTV13QRasterWindow: 59 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QRasterWindow)
+16 (int (*)(...))QRasterWindow::metaObject
+24 (int (*)(...))QRasterWindow::qt_metacast
+32 (int (*)(...))QRasterWindow::qt_metacall
+40 (int (*)(...))QRasterWindow::~QRasterWindow
+48 (int (*)(...))QRasterWindow::~QRasterWindow
+56 (int (*)(...))QPaintDeviceWindow::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWindow::surfaceType
+120 (int (*)(...))QWindow::format
+128 (int (*)(...))QWindow::size
+136 (int (*)(...))QWindow::accessibleRoot
+144 (int (*)(...))QWindow::focusObject
+152 (int (*)(...))QPaintDeviceWindow::exposeEvent
+160 (int (*)(...))QWindow::resizeEvent
+168 (int (*)(...))QWindow::moveEvent
+176 (int (*)(...))QWindow::focusInEvent
+184 (int (*)(...))QWindow::focusOutEvent
+192 (int (*)(...))QWindow::showEvent
+200 (int (*)(...))QWindow::hideEvent
+208 (int (*)(...))QWindow::keyPressEvent
+216 (int (*)(...))QWindow::keyReleaseEvent
+224 (int (*)(...))QWindow::mousePressEvent
+232 (int (*)(...))QWindow::mouseReleaseEvent
+240 (int (*)(...))QWindow::mouseDoubleClickEvent
+248 (int (*)(...))QWindow::mouseMoveEvent
+256 (int (*)(...))QWindow::wheelEvent
+264 (int (*)(...))QWindow::touchEvent
+272 (int (*)(...))QWindow::tabletEvent
+280 (int (*)(...))QWindow::nativeEvent
+288 (int (*)(...))QWindow::surfaceHandle
+296 (int (*)(...))QPaintDeviceWindow::paintEvent
+304 (int (*)(...))QRasterWindow::metric
+312 (int (*)(...))QPaintDeviceWindow::paintEngine
+320 (int (*)(...))QRasterWindow::redirected
+328 (int (*)(...))-16
+336 (int (*)(...))(& _ZTI13QRasterWindow)
+344 (int (*)(...))QRasterWindow::_ZThn16_N13QRasterWindowD1Ev
+352 (int (*)(...))QRasterWindow::_ZThn16_N13QRasterWindowD0Ev
+360 (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
+368 (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
+376 (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
+384 (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv
+392 (int (*)(...))-40
+400 (int (*)(...))(& _ZTI13QRasterWindow)
+408 (int (*)(...))QRasterWindow::_ZThn40_N13QRasterWindowD1Ev
+416 (int (*)(...))QRasterWindow::_ZThn40_N13QRasterWindowD0Ev
+424 (int (*)(...))QPaintDevice::devType
+432 (int (*)(...))QPaintDeviceWindow::_ZThn40_NK18QPaintDeviceWindow11paintEngineEv
+440 (int (*)(...))QRasterWindow::_ZThn40_NK13QRasterWindow6metricEN12QPaintDevice17PaintDeviceMetricE
+448 (int (*)(...))QPaintDevice::initPainter
+456 (int (*)(...))QRasterWindow::_ZThn40_NK13QRasterWindow10redirectedEP6QPoint
+464 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QRasterWindow
+ size=64 align=8
+ base size=64 base align=8
+QRasterWindow (0x0x7f61bf97a5b0) 0
+ vptr=((& QRasterWindow::_ZTV13QRasterWindow) + 16)
+ QPaintDeviceWindow (0x0x7f61c51a0a80) 0
+ primary-for QRasterWindow (0x0x7f61bf97a5b0)
+ QWindow (0x0x7f61c51a0af0) 0
+ primary-for QPaintDeviceWindow (0x0x7f61c51a0a80)
+ QObject (0x0x7f61bfe82960) 0
+ primary-for QWindow (0x0x7f61c51a0af0)
+ QSurface (0x0x7f61bfe82a80) 16
+ vptr=((& QRasterWindow::_ZTV13QRasterWindow) + 344)
+ QPaintDevice (0x0x7f61bfe82ae0) 40
+ vptr=((& QRasterWindow::_ZTV13QRasterWindow) + 408)
+
+Class QScreen::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QScreen::QPrivateSignal (0x0x7f61bfebc3c0) 0 empty
+
+Vtable for QScreen
+QScreen::_ZTV7QScreen: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QScreen)
+16 (int (*)(...))QScreen::metaObject
+24 (int (*)(...))QScreen::qt_metacast
+32 (int (*)(...))QScreen::qt_metacall
+40 (int (*)(...))QScreen::~QScreen
+48 (int (*)(...))QScreen::~QScreen
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QScreen
+ size=16 align=8
+ base size=16 base align=8
+QScreen (0x0x7f61bf97a958) 0
+ vptr=((& QScreen::_ZTV7QScreen) + 16)
+ QObject (0x0x7f61bfebc360) 0
+ primary-for QScreen (0x0x7f61bf97a958)
+
+Class QSessionManager::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSessionManager::QPrivateSignal (0x0x7f61bff6bd20) 0 empty
+
+Vtable for QSessionManager
+QSessionManager::_ZTV15QSessionManager: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QSessionManager)
+16 (int (*)(...))QSessionManager::metaObject
+24 (int (*)(...))QSessionManager::qt_metacast
+32 (int (*)(...))QSessionManager::qt_metacall
+40 (int (*)(...))QSessionManager::~QSessionManager
+48 (int (*)(...))QSessionManager::~QSessionManager
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSessionManager
+ size=16 align=8
+ base size=16 base align=8
+QSessionManager (0x0x7f61bf97a9c0) 0
+ vptr=((& QSessionManager::_ZTV15QSessionManager) + 16)
+ QObject (0x0x7f61bff6bcc0) 0
+ primary-for QSessionManager (0x0x7f61bf97a9c0)
+
+Vtable for QStandardItem
+QStandardItem::_ZTV13QStandardItem: 11 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QStandardItem)
+16 (int (*)(...))QStandardItem::~QStandardItem
+24 (int (*)(...))QStandardItem::~QStandardItem
+32 (int (*)(...))QStandardItem::data
+40 (int (*)(...))QStandardItem::setData
+48 (int (*)(...))QStandardItem::clone
+56 (int (*)(...))QStandardItem::type
+64 (int (*)(...))QStandardItem::read
+72 (int (*)(...))QStandardItem::write
+80 (int (*)(...))QStandardItem::operator<
+
+Class QStandardItem
+ size=16 align=8
+ base size=16 base align=8
+QStandardItem (0x0x7f61bfba81e0) 0
+ vptr=((& QStandardItem::_ZTV13QStandardItem) + 16)
+
+Class QStandardItemModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStandardItemModel::QPrivateSignal (0x0x7f61bf86e240) 0 empty
+
+Vtable for QStandardItemModel
+QStandardItemModel::_ZTV18QStandardItemModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QStandardItemModel)
+16 (int (*)(...))QStandardItemModel::metaObject
+24 (int (*)(...))QStandardItemModel::qt_metacast
+32 (int (*)(...))QStandardItemModel::qt_metacall
+40 (int (*)(...))QStandardItemModel::~QStandardItemModel
+48 (int (*)(...))QStandardItemModel::~QStandardItemModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QStandardItemModel::index
+120 (int (*)(...))QStandardItemModel::parent
+128 (int (*)(...))QStandardItemModel::sibling
+136 (int (*)(...))QStandardItemModel::rowCount
+144 (int (*)(...))QStandardItemModel::columnCount
+152 (int (*)(...))QStandardItemModel::hasChildren
+160 (int (*)(...))QStandardItemModel::data
+168 (int (*)(...))QStandardItemModel::setData
+176 (int (*)(...))QStandardItemModel::headerData
+184 (int (*)(...))QStandardItemModel::setHeaderData
+192 (int (*)(...))QStandardItemModel::itemData
+200 (int (*)(...))QStandardItemModel::setItemData
+208 (int (*)(...))QStandardItemModel::mimeTypes
+216 (int (*)(...))QStandardItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QStandardItemModel::dropMimeData
+240 (int (*)(...))QStandardItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QStandardItemModel::insertRows
+264 (int (*)(...))QStandardItemModel::insertColumns
+272 (int (*)(...))QStandardItemModel::removeRows
+280 (int (*)(...))QStandardItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QStandardItemModel::flags
+328 (int (*)(...))QStandardItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QStandardItemModel
+ size=16 align=8
+ base size=16 base align=8
+QStandardItemModel (0x0x7f61bf405208) 0
+ vptr=((& QStandardItemModel::_ZTV18QStandardItemModel) + 16)
+ QAbstractItemModel (0x0x7f61bf405270) 0
+ primary-for QStandardItemModel (0x0x7f61bf405208)
+ QObject (0x0x7f61bf86e1e0) 0
+ primary-for QAbstractItemModel (0x0x7f61bf405270)
+
+Class QStaticText
+ size=8 align=8
+ base size=8 base align=8
+QStaticText (0x0x7f61bf8b0840) 0
+
+Class QStyleHints::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStyleHints::QPrivateSignal (0x0x7f61bea2a7e0) 0 empty
+
+Vtable for QStyleHints
+QStyleHints::_ZTV11QStyleHints: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QStyleHints)
+16 (int (*)(...))QStyleHints::metaObject
+24 (int (*)(...))QStyleHints::qt_metacast
+32 (int (*)(...))QStyleHints::qt_metacall
+40 (int (*)(...))QStyleHints::~QStyleHints
+48 (int (*)(...))QStyleHints::~QStyleHints
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QStyleHints
+ size=16 align=8
+ base size=16 base align=8
+QStyleHints (0x0x7f61be45d8f0) 0
+ vptr=((& QStyleHints::_ZTV11QStyleHints) + 16)
+ QObject (0x0x7f61bea2a780) 0
+ primary-for QStyleHints (0x0x7f61be45d8f0)
+
+Class QTextObject::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextObject::QPrivateSignal (0x0x7f61beab7960) 0 empty
+
+Vtable for QTextObject
+QTextObject::_ZTV11QTextObject: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTextObject)
+16 (int (*)(...))QTextObject::metaObject
+24 (int (*)(...))QTextObject::qt_metacast
+32 (int (*)(...))QTextObject::qt_metacall
+40 (int (*)(...))QTextObject::~QTextObject
+48 (int (*)(...))QTextObject::~QTextObject
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTextObject
+ size=16 align=8
+ base size=16 base align=8
+QTextObject (0x0x7f61be45d958) 0
+ vptr=((& QTextObject::_ZTV11QTextObject) + 16)
+ QObject (0x0x7f61beab7780) 0
+ primary-for QTextObject (0x0x7f61be45d958)
+
+Class QTextBlockGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextBlockGroup::QPrivateSignal (0x0x7f61beadcc00) 0 empty
+
+Vtable for QTextBlockGroup
+QTextBlockGroup::_ZTV15QTextBlockGroup: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QTextBlockGroup)
+16 (int (*)(...))QTextBlockGroup::metaObject
+24 (int (*)(...))QTextBlockGroup::qt_metacast
+32 (int (*)(...))QTextBlockGroup::qt_metacall
+40 (int (*)(...))QTextBlockGroup::~QTextBlockGroup
+48 (int (*)(...))QTextBlockGroup::~QTextBlockGroup
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTextBlockGroup::blockInserted
+120 (int (*)(...))QTextBlockGroup::blockRemoved
+128 (int (*)(...))QTextBlockGroup::blockFormatChanged
+
+Class QTextBlockGroup
+ size=16 align=8
+ base size=16 base align=8
+QTextBlockGroup (0x0x7f61be48a410) 0
+ vptr=((& QTextBlockGroup::_ZTV15QTextBlockGroup) + 16)
+ QTextObject (0x0x7f61be48a478) 0
+ primary-for QTextBlockGroup (0x0x7f61be48a410)
+ QObject (0x0x7f61beadcb40) 0
+ primary-for QTextObject (0x0x7f61be48a478)
+
+Vtable for QTextFrameLayoutData
+QTextFrameLayoutData::_ZTV20QTextFrameLayoutData: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QTextFrameLayoutData)
+16 (int (*)(...))QTextFrameLayoutData::~QTextFrameLayoutData
+24 (int (*)(...))QTextFrameLayoutData::~QTextFrameLayoutData
+
+Class QTextFrameLayoutData
+ size=8 align=8
+ base size=8 base align=8
+QTextFrameLayoutData (0x0x7f61beaf77e0) 0 nearly-empty
+ vptr=((& QTextFrameLayoutData::_ZTV20QTextFrameLayoutData) + 16)
+
+Class QTextFrame::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextFrame::QPrivateSignal (0x0x7f61beaf7a20) 0 empty
+
+Class QTextFrame::iterator
+ size=32 align=8
+ base size=28 base align=8
+QTextFrame::iterator (0x0x7f61beb18a80) 0
+
+Vtable for QTextFrame
+QTextFrame::_ZTV10QTextFrame: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTextFrame)
+16 (int (*)(...))QTextFrame::metaObject
+24 (int (*)(...))QTextFrame::qt_metacast
+32 (int (*)(...))QTextFrame::qt_metacall
+40 (int (*)(...))QTextFrame::~QTextFrame
+48 (int (*)(...))QTextFrame::~QTextFrame
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTextFrame
+ size=16 align=8
+ base size=16 base align=8
+QTextFrame (0x0x7f61be48a888) 0
+ vptr=((& QTextFrame::_ZTV10QTextFrame) + 16)
+ QTextObject (0x0x7f61be48a8f0) 0
+ primary-for QTextFrame (0x0x7f61be48a888)
+ QObject (0x0x7f61beaf79c0) 0
+ primary-for QTextObject (0x0x7f61be48a8f0)
+
+Vtable for QTextBlockUserData
+QTextBlockUserData::_ZTV18QTextBlockUserData: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QTextBlockUserData)
+16 (int (*)(...))QTextBlockUserData::~QTextBlockUserData
+24 (int (*)(...))QTextBlockUserData::~QTextBlockUserData
+
+Class QTextBlockUserData
+ size=8 align=8
+ base size=8 base align=8
+QTextBlockUserData (0x0x7f61be243b40) 0 nearly-empty
+ vptr=((& QTextBlockUserData::_ZTV18QTextBlockUserData) + 16)
+
+Class QTextBlock::iterator
+ size=24 align=8
+ base size=20 base align=8
+QTextBlock::iterator (0x0x7f61be243de0) 0
+
+Class QTextBlock
+ size=16 align=8
+ base size=12 base align=8
+QTextBlock (0x0x7f61be243c00) 0
+
+Class QTextFragment
+ size=16 align=8
+ base size=16 base align=8
+QTextFragment (0x0x7f61bd911cc0) 0
+
+Class QSyntaxHighlighter::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSyntaxHighlighter::QPrivateSignal (0x0x7f61bcb0aae0) 0 empty
+
+Vtable for QSyntaxHighlighter
+QSyntaxHighlighter::_ZTV18QSyntaxHighlighter: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QSyntaxHighlighter)
+16 (int (*)(...))QSyntaxHighlighter::metaObject
+24 (int (*)(...))QSyntaxHighlighter::qt_metacast
+32 (int (*)(...))QSyntaxHighlighter::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QSyntaxHighlighter
+ size=16 align=8
+ base size=16 base align=8
+QSyntaxHighlighter (0x0x7f61bbc292d8) 0
+ vptr=((& QSyntaxHighlighter::_ZTV18QSyntaxHighlighter) + 16)
+ QObject (0x0x7f61bcb0a360) 0
+ primary-for QSyntaxHighlighter (0x0x7f61bbc292d8)
+
+Class QTextDocumentFragment
+ size=8 align=8
+ base size=8 base align=8
+QTextDocumentFragment (0x0x7f61bcb25060) 0
+
+Class QTextDocumentWriter
+ size=8 align=8
+ base size=8 base align=8
+QTextDocumentWriter (0x0x7f61bcb254e0) 0
+
+Class QTextList::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextList::QPrivateSignal (0x0x7f61bcb25600) 0 empty
+
+Vtable for QTextList
+QTextList::_ZTV9QTextList: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QTextList)
+16 (int (*)(...))QTextList::metaObject
+24 (int (*)(...))QTextList::qt_metacast
+32 (int (*)(...))QTextList::qt_metacall
+40 (int (*)(...))QTextList::~QTextList
+48 (int (*)(...))QTextList::~QTextList
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTextBlockGroup::blockInserted
+120 (int (*)(...))QTextBlockGroup::blockRemoved
+128 (int (*)(...))QTextBlockGroup::blockFormatChanged
+
+Class QTextList
+ size=16 align=8
+ base size=16 base align=8
+QTextList (0x0x7f61bbd70270) 0
+ vptr=((& QTextList::_ZTV9QTextList) + 16)
+ QTextBlockGroup (0x0x7f61bbd702d8) 0
+ primary-for QTextList (0x0x7f61bbd70270)
+ QTextObject (0x0x7f61bbd70340) 0
+ primary-for QTextBlockGroup (0x0x7f61bbd702d8)
+ QObject (0x0x7f61bcb25540) 0
+ primary-for QTextObject (0x0x7f61bbd70340)
+
+Class QTextTableCell
+ size=16 align=8
+ base size=12 base align=8
+QTextTableCell (0x0x7f61bcb7a9c0) 0
+
+Class QTextTable::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextTable::QPrivateSignal (0x0x7f61bc96d3c0) 0 empty
+
+Vtable for QTextTable
+QTextTable::_ZTV10QTextTable: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTextTable)
+16 (int (*)(...))QTextTable::metaObject
+24 (int (*)(...))QTextTable::qt_metacast
+32 (int (*)(...))QTextTable::qt_metacall
+40 (int (*)(...))QTextTable::~QTextTable
+48 (int (*)(...))QTextTable::~QTextTable
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTextTable
+ size=16 align=8
+ base size=16 base align=8
+QTextTable (0x0x7f61bbd703a8) 0
+ vptr=((& QTextTable::_ZTV10QTextTable) + 16)
+ QTextFrame (0x0x7f61bbd70478) 0
+ primary-for QTextTable (0x0x7f61bbd703a8)
+ QTextObject (0x0x7f61bbd704e0) 0
+ primary-for QTextFrame (0x0x7f61bbd70478)
+ QObject (0x0x7f61bc952d20) 0
+ primary-for QTextObject (0x0x7f61bbd704e0)
+
+Class QValidator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QValidator::QPrivateSignal (0x0x7f61bc751180) 0 empty
+
+Vtable for QValidator
+QValidator::_ZTV10QValidator: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QValidator)
+16 (int (*)(...))QValidator::metaObject
+24 (int (*)(...))QValidator::qt_metacast
+32 (int (*)(...))QValidator::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))QValidator::fixup
+
+Class QValidator
+ size=16 align=8
+ base size=16 base align=8
+QValidator (0x0x7f61bbd70548) 0
+ vptr=((& QValidator::_ZTV10QValidator) + 16)
+ QObject (0x0x7f61bc7510c0) 0
+ primary-for QValidator (0x0x7f61bbd70548)
+
+Class QIntValidator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QIntValidator::QPrivateSignal (0x0x7f61bc4d70c0) 0 empty
+
+Vtable for QIntValidator
+QIntValidator::_ZTV13QIntValidator: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QIntValidator)
+16 (int (*)(...))QIntValidator::metaObject
+24 (int (*)(...))QIntValidator::qt_metacast
+32 (int (*)(...))QIntValidator::qt_metacall
+40 (int (*)(...))QIntValidator::~QIntValidator
+48 (int (*)(...))QIntValidator::~QIntValidator
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QIntValidator::validate
+120 (int (*)(...))QIntValidator::fixup
+128 (int (*)(...))QIntValidator::setRange
+
+Class QIntValidator
+ size=24 align=8
+ base size=24 base align=8
+QIntValidator (0x0x7f61bbd705b0) 0
+ vptr=((& QIntValidator::_ZTV13QIntValidator) + 16)
+ QValidator (0x0x7f61bbd70750) 0
+ primary-for QIntValidator (0x0x7f61bbd705b0)
+ QObject (0x0x7f61bc49fcc0) 0
+ primary-for QValidator (0x0x7f61bbd70750)
+
+Class QDoubleValidator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDoubleValidator::QPrivateSignal (0x0x7f61bc51ede0) 0 empty
+
+Vtable for QDoubleValidator
+QDoubleValidator::_ZTV16QDoubleValidator: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QDoubleValidator)
+16 (int (*)(...))QDoubleValidator::metaObject
+24 (int (*)(...))QDoubleValidator::qt_metacast
+32 (int (*)(...))QDoubleValidator::qt_metacall
+40 (int (*)(...))QDoubleValidator::~QDoubleValidator
+48 (int (*)(...))QDoubleValidator::~QDoubleValidator
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QDoubleValidator::validate
+120 (int (*)(...))QValidator::fixup
+128 (int (*)(...))QDoubleValidator::setRange
+
+Class QDoubleValidator
+ size=40 align=8
+ base size=36 base align=8
+QDoubleValidator (0x0x7f61bbd707b8) 0
+ vptr=((& QDoubleValidator::_ZTV16QDoubleValidator) + 16)
+ QValidator (0x0x7f61bbd708f0) 0
+ primary-for QDoubleValidator (0x0x7f61bbd707b8)
+ QObject (0x0x7f61bc4d7780) 0
+ primary-for QValidator (0x0x7f61bbd708f0)
+
+Class QRegExpValidator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QRegExpValidator::QPrivateSignal (0x0x7f61bc357000) 0 empty
+
+Vtable for QRegExpValidator
+QRegExpValidator::_ZTV16QRegExpValidator: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QRegExpValidator)
+16 (int (*)(...))QRegExpValidator::metaObject
+24 (int (*)(...))QRegExpValidator::qt_metacast
+32 (int (*)(...))QRegExpValidator::qt_metacall
+40 (int (*)(...))QRegExpValidator::~QRegExpValidator
+48 (int (*)(...))QRegExpValidator::~QRegExpValidator
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QRegExpValidator::validate
+120 (int (*)(...))QValidator::fixup
+
+Class QRegExpValidator
+ size=24 align=8
+ base size=24 base align=8
+QRegExpValidator (0x0x7f61bbd70a90) 0
+ vptr=((& QRegExpValidator::_ZTV16QRegExpValidator) + 16)
+ QValidator (0x0x7f61bbd70b60) 0
+ primary-for QRegExpValidator (0x0x7f61bbd70a90)
+ QObject (0x0x7f61bc3174e0) 0
+ primary-for QValidator (0x0x7f61bbd70b60)
+
+Class QRegularExpressionValidator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QRegularExpressionValidator::QPrivateSignal (0x0x7f61bbfc0ea0) 0 empty
+
+Vtable for QRegularExpressionValidator
+QRegularExpressionValidator::_ZTV27QRegularExpressionValidator: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QRegularExpressionValidator)
+16 (int (*)(...))QRegularExpressionValidator::metaObject
+24 (int (*)(...))QRegularExpressionValidator::qt_metacast
+32 (int (*)(...))QRegularExpressionValidator::qt_metacall
+40 (int (*)(...))QRegularExpressionValidator::~QRegularExpressionValidator
+48 (int (*)(...))QRegularExpressionValidator::~QRegularExpressionValidator
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QRegularExpressionValidator::validate
+120 (int (*)(...))QValidator::fixup
+
+Class QRegularExpressionValidator
+ size=16 align=8
+ base size=16 base align=8
+QRegularExpressionValidator (0x0x7f61bbd70bc8) 0
+ vptr=((& QRegularExpressionValidator::_ZTV27QRegularExpressionValidator) + 16)
+ QValidator (0x0x7f61bbd70d00) 0
+ primary-for QRegularExpressionValidator (0x0x7f61bbd70bc8)
+ QObject (0x0x7f61bbfc0e40) 0
+ primary-for QValidator (0x0x7f61bbd70d00)
+
+Class QNetworkRequest
+ size=8 align=8
+ base size=8 base align=8
+QNetworkRequest (0x0x7f61bc017780) 0
+
+Class QNetworkCacheMetaData
+ size=8 align=8
+ base size=8 base align=8
+QNetworkCacheMetaData (0x0x7f61baffd4e0) 0
+
+Class QAbstractNetworkCache::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractNetworkCache::QPrivateSignal (0x0x7f61ba3bf300) 0 empty
+
+Vtable for QAbstractNetworkCache
+QAbstractNetworkCache::_ZTV21QAbstractNetworkCache: 22 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QAbstractNetworkCache)
+16 (int (*)(...))QAbstractNetworkCache::metaObject
+24 (int (*)(...))QAbstractNetworkCache::qt_metacast
+32 (int (*)(...))QAbstractNetworkCache::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))__cxa_pure_virtual
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractNetworkCache
+ size=16 align=8
+ base size=16 base align=8
+QAbstractNetworkCache (0x0x7f61b9d5bdd0) 0
+ vptr=((& QAbstractNetworkCache::_ZTV21QAbstractNetworkCache) + 16)
+ QObject (0x0x7f61ba3bf2a0) 0
+ primary-for QAbstractNetworkCache (0x0x7f61b9d5bdd0)
+
+Class QAbstractSocket::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractSocket::QPrivateSignal (0x0x7f61ba3dbd20) 0 empty
+
+Vtable for QAbstractSocket
+QAbstractSocket::_ZTV15QAbstractSocket: 41 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QAbstractSocket)
+16 (int (*)(...))QAbstractSocket::metaObject
+24 (int (*)(...))QAbstractSocket::qt_metacast
+32 (int (*)(...))QAbstractSocket::qt_metacall
+40 (int (*)(...))QAbstractSocket::~QAbstractSocket
+48 (int (*)(...))QAbstractSocket::~QAbstractSocket
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractSocket::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QAbstractSocket::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QAbstractSocket::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QAbstractSocket::bytesAvailable
+184 (int (*)(...))QAbstractSocket::bytesToWrite
+192 (int (*)(...))QAbstractSocket::canReadLine
+200 (int (*)(...))QAbstractSocket::waitForReadyRead
+208 (int (*)(...))QAbstractSocket::waitForBytesWritten
+216 (int (*)(...))QAbstractSocket::readData
+224 (int (*)(...))QAbstractSocket::readLineData
+232 (int (*)(...))QAbstractSocket::writeData
+240 (int (*)(...))QAbstractSocket::resume
+248 (int (*)(...))QAbstractSocket::connectToHost
+256 (int (*)(...))QAbstractSocket::connectToHost
+264 (int (*)(...))QAbstractSocket::disconnectFromHost
+272 (int (*)(...))QAbstractSocket::setReadBufferSize
+280 (int (*)(...))QAbstractSocket::socketDescriptor
+288 (int (*)(...))QAbstractSocket::setSocketDescriptor
+296 (int (*)(...))QAbstractSocket::setSocketOption
+304 (int (*)(...))QAbstractSocket::socketOption
+312 (int (*)(...))QAbstractSocket::waitForConnected
+320 (int (*)(...))QAbstractSocket::waitForDisconnected
+
+Class QAbstractSocket
+ size=16 align=8
+ base size=16 base align=8
+QAbstractSocket (0x0x7f61b9d6d138) 0
+ vptr=((& QAbstractSocket::_ZTV15QAbstractSocket) + 16)
+ QIODevice (0x0x7f61b9d6d1a0) 0
+ primary-for QAbstractSocket (0x0x7f61b9d6d138)
+ QObject (0x0x7f61ba3db0c0) 0
+ primary-for QIODevice (0x0x7f61b9d6d1a0)
+
+Class QAuthenticator
+ size=8 align=8
+ base size=8 base align=8
+QAuthenticator (0x0x7f61b9f61ba0) 0
+
+Class QDnsDomainNameRecord
+ size=8 align=8
+ base size=8 base align=8
+QDnsDomainNameRecord (0x0x7f61b9ff3000) 0
+
+Class QDnsHostAddressRecord
+ size=8 align=8
+ base size=8 base align=8
+QDnsHostAddressRecord (0x0x7f61b9674000) 0
+
+Class QDnsMailExchangeRecord
+ size=8 align=8
+ base size=8 base align=8
+QDnsMailExchangeRecord (0x0x7f61b8327600) 0
+
+Class QDnsServiceRecord
+ size=8 align=8
+ base size=8 base align=8
+QDnsServiceRecord (0x0x7f61c3344780) 0
+
+Class QDnsTextRecord
+ size=8 align=8
+ base size=8 base align=8
+QDnsTextRecord (0x0x7f61c2ecb660) 0
+
+Class QDnsLookup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDnsLookup::QPrivateSignal (0x0x7f61c16ae6c0) 0 empty
+
+Vtable for QDnsLookup
+QDnsLookup::_ZTV10QDnsLookup: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QDnsLookup)
+16 (int (*)(...))QDnsLookup::metaObject
+24 (int (*)(...))QDnsLookup::qt_metacast
+32 (int (*)(...))QDnsLookup::qt_metacall
+40 (int (*)(...))QDnsLookup::~QDnsLookup
+48 (int (*)(...))QDnsLookup::~QDnsLookup
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QDnsLookup
+ size=16 align=8
+ base size=16 base align=8
+QDnsLookup (0x0x7f61c194db60) 0
+ vptr=((& QDnsLookup::_ZTV10QDnsLookup) + 16)
+ QObject (0x0x7f61c16ae660) 0
+ primary-for QDnsLookup (0x0x7f61c194db60)
+
+Class QTcpSocket::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTcpSocket::QPrivateSignal (0x0x7f61c16aea80) 0 empty
+
+Vtable for QTcpSocket
+QTcpSocket::_ZTV10QTcpSocket: 41 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTcpSocket)
+16 (int (*)(...))QTcpSocket::metaObject
+24 (int (*)(...))QTcpSocket::qt_metacast
+32 (int (*)(...))QTcpSocket::qt_metacall
+40 (int (*)(...))QTcpSocket::~QTcpSocket
+48 (int (*)(...))QTcpSocket::~QTcpSocket
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractSocket::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QAbstractSocket::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QAbstractSocket::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QAbstractSocket::bytesAvailable
+184 (int (*)(...))QAbstractSocket::bytesToWrite
+192 (int (*)(...))QAbstractSocket::canReadLine
+200 (int (*)(...))QAbstractSocket::waitForReadyRead
+208 (int (*)(...))QAbstractSocket::waitForBytesWritten
+216 (int (*)(...))QAbstractSocket::readData
+224 (int (*)(...))QAbstractSocket::readLineData
+232 (int (*)(...))QAbstractSocket::writeData
+240 (int (*)(...))QAbstractSocket::resume
+248 (int (*)(...))QAbstractSocket::connectToHost
+256 (int (*)(...))QAbstractSocket::connectToHost
+264 (int (*)(...))QAbstractSocket::disconnectFromHost
+272 (int (*)(...))QAbstractSocket::setReadBufferSize
+280 (int (*)(...))QAbstractSocket::socketDescriptor
+288 (int (*)(...))QAbstractSocket::setSocketDescriptor
+296 (int (*)(...))QAbstractSocket::setSocketOption
+304 (int (*)(...))QAbstractSocket::socketOption
+312 (int (*)(...))QAbstractSocket::waitForConnected
+320 (int (*)(...))QAbstractSocket::waitForDisconnected
+
+Class QTcpSocket
+ size=16 align=8
+ base size=16 base align=8
+QTcpSocket (0x0x7f61c194dbc8) 0
+ vptr=((& QTcpSocket::_ZTV10QTcpSocket) + 16)
+ QAbstractSocket (0x0x7f61c194dc30) 0
+ primary-for QTcpSocket (0x0x7f61c194dbc8)
+ QIODevice (0x0x7f61c194dc98) 0
+ primary-for QAbstractSocket (0x0x7f61c194dc30)
+ QObject (0x0x7f61c16aea20) 0
+ primary-for QIODevice (0x0x7f61c194dc98)
+
+Class QSslCertificate
+ size=8 align=8
+ base size=8 base align=8
+QSslCertificate (0x0x7f61c068e360) 0
+
+Class QSslError
+ size=8 align=8
+ base size=8 base align=8
+QSslError (0x0x7f61bf8d3ba0) 0
+
+Class QSslSocket::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSslSocket::QPrivateSignal (0x0x7f61be45be40) 0 empty
+
+Vtable for QSslSocket
+QSslSocket::_ZTV10QSslSocket: 41 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QSslSocket)
+16 (int (*)(...))QSslSocket::metaObject
+24 (int (*)(...))QSslSocket::qt_metacast
+32 (int (*)(...))QSslSocket::qt_metacall
+40 (int (*)(...))QSslSocket::~QSslSocket
+48 (int (*)(...))QSslSocket::~QSslSocket
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractSocket::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QSslSocket::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QSslSocket::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QSslSocket::bytesAvailable
+184 (int (*)(...))QSslSocket::bytesToWrite
+192 (int (*)(...))QSslSocket::canReadLine
+200 (int (*)(...))QSslSocket::waitForReadyRead
+208 (int (*)(...))QSslSocket::waitForBytesWritten
+216 (int (*)(...))QSslSocket::readData
+224 (int (*)(...))QAbstractSocket::readLineData
+232 (int (*)(...))QSslSocket::writeData
+240 (int (*)(...))QSslSocket::resume
+248 (int (*)(...))QSslSocket::connectToHost
+256 (int (*)(...))QAbstractSocket::connectToHost
+264 (int (*)(...))QSslSocket::disconnectFromHost
+272 (int (*)(...))QSslSocket::setReadBufferSize
+280 (int (*)(...))QAbstractSocket::socketDescriptor
+288 (int (*)(...))QSslSocket::setSocketDescriptor
+296 (int (*)(...))QSslSocket::setSocketOption
+304 (int (*)(...))QSslSocket::socketOption
+312 (int (*)(...))QSslSocket::waitForConnected
+320 (int (*)(...))QSslSocket::waitForDisconnected
+
+Class QSslSocket
+ size=16 align=8
+ base size=16 base align=8
+QSslSocket (0x0x7f61be4c4958) 0
+ vptr=((& QSslSocket::_ZTV10QSslSocket) + 16)
+ QTcpSocket (0x0x7f61be4c49c0) 0
+ primary-for QSslSocket (0x0x7f61be4c4958)
+ QAbstractSocket (0x0x7f61be4c4a28) 0
+ primary-for QTcpSocket (0x0x7f61be4c49c0)
+ QIODevice (0x0x7f61be4c4a90) 0
+ primary-for QAbstractSocket (0x0x7f61be4c4a28)
+ QObject (0x0x7f61be45bde0) 0
+ primary-for QIODevice (0x0x7f61be4c4a90)
+
+Class QDtlsClientVerifier::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDtlsClientVerifier::QPrivateSignal (0x0x7f61bd7120c0) 0 empty
+
+Class QDtlsClientVerifier::GeneratorParameters
+ size=16 align=8
+ base size=16 base align=8
+QDtlsClientVerifier::GeneratorParameters (0x0x7f61bd712120) 0
+
+Vtable for QDtlsClientVerifier
+QDtlsClientVerifier::_ZTV19QDtlsClientVerifier: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QDtlsClientVerifier)
+16 (int (*)(...))QDtlsClientVerifier::metaObject
+24 (int (*)(...))QDtlsClientVerifier::qt_metacast
+32 (int (*)(...))QDtlsClientVerifier::qt_metacall
+40 (int (*)(...))QDtlsClientVerifier::~QDtlsClientVerifier
+48 (int (*)(...))QDtlsClientVerifier::~QDtlsClientVerifier
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QDtlsClientVerifier
+ size=16 align=8
+ base size=16 base align=8
+QDtlsClientVerifier (0x0x7f61be4c4af8) 0
+ vptr=((& QDtlsClientVerifier::_ZTV19QDtlsClientVerifier) + 16)
+ QObject (0x0x7f61bd712060) 0
+ primary-for QDtlsClientVerifier (0x0x7f61be4c4af8)
+
+Class QDtls::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDtls::QPrivateSignal (0x0x7f61bd712360) 0 empty
+
+Vtable for QDtls
+QDtls::_ZTV5QDtls: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI5QDtls)
+16 (int (*)(...))QDtls::metaObject
+24 (int (*)(...))QDtls::qt_metacast
+32 (int (*)(...))QDtls::qt_metacall
+40 (int (*)(...))QDtls::~QDtls
+48 (int (*)(...))QDtls::~QDtls
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QDtls
+ size=16 align=8
+ base size=16 base align=8
+QDtls (0x0x7f61be4c4b60) 0
+ vptr=((& QDtls::_ZTV5QDtls) + 16)
+ QObject (0x0x7f61bd712300) 0
+ primary-for QDtls (0x0x7f61be4c4b60)
+
+Class QIPv6Address
+ size=16 align=1
+ base size=16 base align=1
+QIPv6Address (0x0x7f61bd7125a0) 0
+
+Class QHostAddress
+ size=8 align=8
+ base size=8 base align=8
+QHostAddress (0x0x7f61bd7126c0) 0
+
+Class QHostInfo
+ size=8 align=8
+ base size=8 base align=8
+QHostInfo (0x0x7f61bb016480) 0
+
+Class QHstsPolicy
+ size=8 align=8
+ base size=8 base align=8
+QHstsPolicy (0x0x7f61ba560b40) 0
+
+Class QHttp2Configuration
+ size=8 align=8
+ base size=8 base align=8
+QHttp2Configuration (0x0x7f61b90c42a0) 0
+
+Class QHttpPart
+ size=8 align=8
+ base size=8 base align=8
+QHttpPart (0x0x7f61b8e0a7e0) 0
+
+Class QHttpMultiPart::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QHttpMultiPart::QPrivateSignal (0x0x7f61b805a480) 0 empty
+
+Vtable for QHttpMultiPart
+QHttpMultiPart::_ZTV14QHttpMultiPart: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QHttpMultiPart)
+16 (int (*)(...))QHttpMultiPart::metaObject
+24 (int (*)(...))QHttpMultiPart::qt_metacast
+32 (int (*)(...))QHttpMultiPart::qt_metacall
+40 (int (*)(...))QHttpMultiPart::~QHttpMultiPart
+48 (int (*)(...))QHttpMultiPart::~QHttpMultiPart
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QHttpMultiPart
+ size=16 align=8
+ base size=16 base align=8
+QHttpMultiPart (0x0x7f61b806e2d8) 0
+ vptr=((& QHttpMultiPart::_ZTV14QHttpMultiPart) + 16)
+ QObject (0x0x7f61b805a420) 0
+ primary-for QHttpMultiPart (0x0x7f61b806e2d8)
+
+Class QLocalServer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLocalServer::QPrivateSignal (0x0x7f61b805a6c0) 0 empty
+
+Vtable for QLocalServer
+QLocalServer::_ZTV12QLocalServer: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QLocalServer)
+16 (int (*)(...))QLocalServer::metaObject
+24 (int (*)(...))QLocalServer::qt_metacast
+32 (int (*)(...))QLocalServer::qt_metacall
+40 (int (*)(...))QLocalServer::~QLocalServer
+48 (int (*)(...))QLocalServer::~QLocalServer
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QLocalServer::hasPendingConnections
+120 (int (*)(...))QLocalServer::nextPendingConnection
+128 (int (*)(...))QLocalServer::incomingConnection
+
+Class QLocalServer
+ size=16 align=8
+ base size=16 base align=8
+QLocalServer (0x0x7f61b806e340) 0
+ vptr=((& QLocalServer::_ZTV12QLocalServer) + 16)
+ QObject (0x0x7f61b805a660) 0
+ primary-for QLocalServer (0x0x7f61b806e340)
+
+Class QLocalSocket::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLocalSocket::QPrivateSignal (0x0x7f61bcf26180) 0 empty
+
+Vtable for QLocalSocket
+QLocalSocket::_ZTV12QLocalSocket: 30 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QLocalSocket)
+16 (int (*)(...))QLocalSocket::metaObject
+24 (int (*)(...))QLocalSocket::qt_metacast
+32 (int (*)(...))QLocalSocket::qt_metacall
+40 (int (*)(...))QLocalSocket::~QLocalSocket
+48 (int (*)(...))QLocalSocket::~QLocalSocket
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QLocalSocket::isSequential
+120 (int (*)(...))QLocalSocket::open
+128 (int (*)(...))QLocalSocket::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QIODevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QLocalSocket::bytesAvailable
+184 (int (*)(...))QLocalSocket::bytesToWrite
+192 (int (*)(...))QLocalSocket::canReadLine
+200 (int (*)(...))QLocalSocket::waitForReadyRead
+208 (int (*)(...))QLocalSocket::waitForBytesWritten
+216 (int (*)(...))QLocalSocket::readData
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))QLocalSocket::writeData
+
+Class QLocalSocket
+ size=16 align=8
+ base size=16 base align=8
+QLocalSocket (0x0x7f61b806e4e0) 0
+ vptr=((& QLocalSocket::_ZTV12QLocalSocket) + 16)
+ QIODevice (0x0x7f61b806e548) 0
+ primary-for QLocalSocket (0x0x7f61b806e4e0)
+ QObject (0x0x7f61bcf26120) 0
+ primary-for QIODevice (0x0x7f61b806e548)
+
+Class QSslConfiguration
+ size=8 align=8
+ base size=8 base align=8
+QSslConfiguration (0x0x7f61bcf26360) 0
+
+Class QSslPreSharedKeyAuthenticator
+ size=8 align=8
+ base size=8 base align=8
+QSslPreSharedKeyAuthenticator (0x0x7f61b891c840) 0
+
+Class QNetworkAccessManager::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QNetworkAccessManager::QPrivateSignal (0x0x7f61b89cbea0) 0 empty
+
+Vtable for QNetworkAccessManager
+QNetworkAccessManager::_ZTV21QNetworkAccessManager: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QNetworkAccessManager)
+16 (int (*)(...))QNetworkAccessManager::metaObject
+24 (int (*)(...))QNetworkAccessManager::qt_metacast
+32 (int (*)(...))QNetworkAccessManager::qt_metacall
+40 (int (*)(...))QNetworkAccessManager::~QNetworkAccessManager
+48 (int (*)(...))QNetworkAccessManager::~QNetworkAccessManager
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QNetworkAccessManager::createRequest
+
+Class QNetworkAccessManager
+ size=16 align=8
+ base size=16 base align=8
+QNetworkAccessManager (0x0x7f61b89daa28) 0
+ vptr=((& QNetworkAccessManager::_ZTV21QNetworkAccessManager) + 16)
+ QObject (0x0x7f61b89cbe40) 0
+ primary-for QNetworkAccessManager (0x0x7f61b89daa28)
+
+Class QNetworkConfiguration
+ size=8 align=8
+ base size=8 base align=8
+QNetworkConfiguration (0x0x7f61b8a0a180) 0
+
+Class QNetworkConfigurationManager::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QNetworkConfigurationManager::QPrivateSignal (0x0x7f61b86b3540) 0 empty
+
+Vtable for QNetworkConfigurationManager
+QNetworkConfigurationManager::_ZTV28QNetworkConfigurationManager: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI28QNetworkConfigurationManager)
+16 (int (*)(...))QNetworkConfigurationManager::metaObject
+24 (int (*)(...))QNetworkConfigurationManager::qt_metacast
+32 (int (*)(...))QNetworkConfigurationManager::qt_metacall
+40 (int (*)(...))QNetworkConfigurationManager::~QNetworkConfigurationManager
+48 (int (*)(...))QNetworkConfigurationManager::~QNetworkConfigurationManager
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QNetworkConfigurationManager
+ size=16 align=8
+ base size=16 base align=8
+QNetworkConfigurationManager (0x0x7f61b86a5d00) 0
+ vptr=((& QNetworkConfigurationManager::_ZTV28QNetworkConfigurationManager) + 16)
+ QObject (0x0x7f61b86b34e0) 0
+ primary-for QNetworkConfigurationManager (0x0x7f61b86a5d00)
+
+Class QNetworkCookie
+ size=8 align=8
+ base size=8 base align=8
+QNetworkCookie (0x0x7f61b86fe0c0) 0
+
+Class QNetworkCookieJar::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QNetworkCookieJar::QPrivateSignal (0x0x7f61b87a96c0) 0 empty
+
+Vtable for QNetworkCookieJar
+QNetworkCookieJar::_ZTV17QNetworkCookieJar: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QNetworkCookieJar)
+16 (int (*)(...))QNetworkCookieJar::metaObject
+24 (int (*)(...))QNetworkCookieJar::qt_metacast
+32 (int (*)(...))QNetworkCookieJar::qt_metacall
+40 (int (*)(...))QNetworkCookieJar::~QNetworkCookieJar
+48 (int (*)(...))QNetworkCookieJar::~QNetworkCookieJar
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QNetworkCookieJar::cookiesForUrl
+120 (int (*)(...))QNetworkCookieJar::setCookiesFromUrl
+128 (int (*)(...))QNetworkCookieJar::insertCookie
+136 (int (*)(...))QNetworkCookieJar::updateCookie
+144 (int (*)(...))QNetworkCookieJar::deleteCookie
+152 (int (*)(...))QNetworkCookieJar::validateCookie
+
+Class QNetworkCookieJar
+ size=16 align=8
+ base size=16 base align=8
+QNetworkCookieJar (0x0x7f61b879cf70) 0
+ vptr=((& QNetworkCookieJar::_ZTV17QNetworkCookieJar) + 16)
+ QObject (0x0x7f61b87a9660) 0
+ primary-for QNetworkCookieJar (0x0x7f61b879cf70)
+
+Class QNetworkDatagram
+ size=8 align=8
+ base size=8 base align=8
+QNetworkDatagram (0x0x7f61b87a98a0) 0
+
+Class QNetworkDiskCache::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QNetworkDiskCache::QPrivateSignal (0x0x7f61b8572420) 0 empty
+
+Vtable for QNetworkDiskCache
+QNetworkDiskCache::_ZTV17QNetworkDiskCache: 23 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QNetworkDiskCache)
+16 (int (*)(...))QNetworkDiskCache::metaObject
+24 (int (*)(...))QNetworkDiskCache::qt_metacast
+32 (int (*)(...))QNetworkDiskCache::qt_metacall
+40 (int (*)(...))QNetworkDiskCache::~QNetworkDiskCache
+48 (int (*)(...))QNetworkDiskCache::~QNetworkDiskCache
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QNetworkDiskCache::metaData
+120 (int (*)(...))QNetworkDiskCache::updateMetaData
+128 (int (*)(...))QNetworkDiskCache::data
+136 (int (*)(...))QNetworkDiskCache::remove
+144 (int (*)(...))QNetworkDiskCache::cacheSize
+152 (int (*)(...))QNetworkDiskCache::prepare
+160 (int (*)(...))QNetworkDiskCache::insert
+168 (int (*)(...))QNetworkDiskCache::clear
+176 (int (*)(...))QNetworkDiskCache::expire
+
+Class QNetworkDiskCache
+ size=16 align=8
+ base size=16 base align=8
+QNetworkDiskCache (0x0x7f61b8554e38) 0
+ vptr=((& QNetworkDiskCache::_ZTV17QNetworkDiskCache) + 16)
+ QAbstractNetworkCache (0x0x7f61b8554ea0) 0
+ primary-for QNetworkDiskCache (0x0x7f61b8554e38)
+ QObject (0x0x7f61b85723c0) 0
+ primary-for QAbstractNetworkCache (0x0x7f61b8554ea0)
+
+Class QNetworkAddressEntry
+ size=8 align=8
+ base size=8 base align=8
+QNetworkAddressEntry (0x0x7f61b8572600) 0
+
+Class QNetworkInterface
+ size=8 align=8
+ base size=8 base align=8
+QNetworkInterface (0x0x7f61b84585a0) 0
+
+Class QNetworkProxyQuery
+ size=8 align=8
+ base size=8 base align=8
+QNetworkProxyQuery (0x0x7f61c48d40c0) 0
+
+Class QNetworkProxy
+ size=8 align=8
+ base size=8 base align=8
+QNetworkProxy (0x0x7f61c1ce43c0) 0
+
+Vtable for QNetworkProxyFactory
+QNetworkProxyFactory::_ZTV20QNetworkProxyFactory: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QNetworkProxyFactory)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QNetworkProxyFactory
+ size=8 align=8
+ base size=8 base align=8
+QNetworkProxyFactory (0x0x7f61c052dc00) 0 nearly-empty
+ vptr=((& QNetworkProxyFactory::_ZTV20QNetworkProxyFactory) + 16)
+
+Class QNetworkReply::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QNetworkReply::QPrivateSignal (0x0x7f61c052dea0) 0 empty
+
+Vtable for QNetworkReply
+QNetworkReply::_ZTV13QNetworkReply: 36 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QNetworkReply)
+16 (int (*)(...))QNetworkReply::metaObject
+24 (int (*)(...))QNetworkReply::qt_metacast
+32 (int (*)(...))QNetworkReply::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QNetworkReply::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QNetworkReply::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QIODevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))__cxa_pure_virtual
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))QNetworkReply::writeData
+240 (int (*)(...))QNetworkReply::setReadBufferSize
+248 (int (*)(...))__cxa_pure_virtual
+256 (int (*)(...))QNetworkReply::ignoreSslErrors
+264 (int (*)(...))QNetworkReply::sslConfigurationImplementation
+272 (int (*)(...))QNetworkReply::setSslConfigurationImplementation
+280 (int (*)(...))QNetworkReply::ignoreSslErrorsImplementation
+
+Class QNetworkReply
+ size=16 align=8
+ base size=16 base align=8
+QNetworkReply (0x0x7f61c02172d8) 0
+ vptr=((& QNetworkReply::_ZTV13QNetworkReply) + 16)
+ QIODevice (0x0x7f61c0217340) 0
+ primary-for QNetworkReply (0x0x7f61c02172d8)
+ QObject (0x0x7f61c052de40) 0
+ primary-for QIODevice (0x0x7f61c0217340)
+
+Class QNetworkSession::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QNetworkSession::QPrivateSignal (0x0x7f61bfb723c0) 0 empty
+
+Vtable for QNetworkSession
+QNetworkSession::_ZTV15QNetworkSession: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QNetworkSession)
+16 (int (*)(...))QNetworkSession::metaObject
+24 (int (*)(...))QNetworkSession::qt_metacast
+32 (int (*)(...))QNetworkSession::qt_metacall
+40 (int (*)(...))QNetworkSession::~QNetworkSession
+48 (int (*)(...))QNetworkSession::~QNetworkSession
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QNetworkSession::connectNotify
+104 (int (*)(...))QNetworkSession::disconnectNotify
+
+Class QNetworkSession
+ size=24 align=8
+ base size=24 base align=8
+QNetworkSession (0x0x7f61c02173a8) 0
+ vptr=((& QNetworkSession::_ZTV15QNetworkSession) + 16)
+ QObject (0x0x7f61bfb72360) 0
+ primary-for QNetworkSession (0x0x7f61c02173a8)
+
+Class QOcspResponse
+ size=8 align=8
+ base size=8 base align=8
+QOcspResponse (0x0x7f61bfb72c00) 0
+
+Class QTcpServer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTcpServer::QPrivateSignal (0x0x7f61bf10e480) 0 empty
+
+Vtable for QTcpServer
+QTcpServer::_ZTV10QTcpServer: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTcpServer)
+16 (int (*)(...))QTcpServer::metaObject
+24 (int (*)(...))QTcpServer::qt_metacast
+32 (int (*)(...))QTcpServer::qt_metacall
+40 (int (*)(...))QTcpServer::~QTcpServer
+48 (int (*)(...))QTcpServer::~QTcpServer
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTcpServer::hasPendingConnections
+120 (int (*)(...))QTcpServer::nextPendingConnection
+128 (int (*)(...))QTcpServer::incomingConnection
+
+Class QTcpServer
+ size=16 align=8
+ base size=16 base align=8
+QTcpServer (0x0x7f61bf020c30) 0
+ vptr=((& QTcpServer::_ZTV10QTcpServer) + 16)
+ QObject (0x0x7f61bf10e420) 0
+ primary-for QTcpServer (0x0x7f61bf020c30)
+
+Class QSslCertificateExtension
+ size=8 align=8
+ base size=8 base align=8
+QSslCertificateExtension (0x0x7f61bf10e660) 0
+
+Class QSslCipher
+ size=8 align=8
+ base size=8 base align=8
+QSslCipher (0x0x7f61be05e600) 0
+
+Class QSslDiffieHellmanParameters
+ size=8 align=8
+ base size=8 base align=8
+QSslDiffieHellmanParameters (0x0x7f61bc96a6c0) 0
+
+Class QSslEllipticCurve
+ size=4 align=4
+ base size=4 base align=4
+QSslEllipticCurve (0x0x7f61bbaac420) 0
+
+Class QSslKey
+ size=8 align=8
+ base size=8 base align=8
+QSslKey (0x0x7f61bb523d80) 0
+
+Class QUdpSocket::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QUdpSocket::QPrivateSignal (0x0x7f61ba4eac60) 0 empty
+
+Vtable for QUdpSocket
+QUdpSocket::_ZTV10QUdpSocket: 41 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QUdpSocket)
+16 (int (*)(...))QUdpSocket::metaObject
+24 (int (*)(...))QUdpSocket::qt_metacast
+32 (int (*)(...))QUdpSocket::qt_metacall
+40 (int (*)(...))QUdpSocket::~QUdpSocket
+48 (int (*)(...))QUdpSocket::~QUdpSocket
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractSocket::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QAbstractSocket::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QAbstractSocket::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QAbstractSocket::bytesAvailable
+184 (int (*)(...))QAbstractSocket::bytesToWrite
+192 (int (*)(...))QAbstractSocket::canReadLine
+200 (int (*)(...))QAbstractSocket::waitForReadyRead
+208 (int (*)(...))QAbstractSocket::waitForBytesWritten
+216 (int (*)(...))QAbstractSocket::readData
+224 (int (*)(...))QAbstractSocket::readLineData
+232 (int (*)(...))QAbstractSocket::writeData
+240 (int (*)(...))QAbstractSocket::resume
+248 (int (*)(...))QAbstractSocket::connectToHost
+256 (int (*)(...))QAbstractSocket::connectToHost
+264 (int (*)(...))QAbstractSocket::disconnectFromHost
+272 (int (*)(...))QAbstractSocket::setReadBufferSize
+280 (int (*)(...))QAbstractSocket::socketDescriptor
+288 (int (*)(...))QAbstractSocket::setSocketDescriptor
+296 (int (*)(...))QAbstractSocket::setSocketOption
+304 (int (*)(...))QAbstractSocket::socketOption
+312 (int (*)(...))QAbstractSocket::waitForConnected
+320 (int (*)(...))QAbstractSocket::waitForDisconnected
+
+Class QUdpSocket
+ size=16 align=8
+ base size=16 base align=8
+QUdpSocket (0x0x7f61ba1e7208) 0
+ vptr=((& QUdpSocket::_ZTV10QUdpSocket) + 16)
+ QAbstractSocket (0x0x7f61ba1e7270) 0
+ primary-for QUdpSocket (0x0x7f61ba1e7208)
+ QIODevice (0x0x7f61ba1e72d8) 0
+ primary-for QAbstractSocket (0x0x7f61ba1e7270)
+ QObject (0x0x7f61ba4eac00) 0
+ primary-for QIODevice (0x0x7f61ba1e72d8)
+
+Class QJSValue
+ size=8 align=8
+ base size=8 base align=8
+QJSValue (0x0x7f61ba4eaea0) 0
+
+Class QQmlDebuggingEnabler
+ size=1 align=1
+ base size=0 base align=1
+QQmlDebuggingEnabler (0x0x7f61b9e06420) 0 empty
+
+Class QJSEngine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QJSEngine::QPrivateSignal (0x0x7f61b9e064e0) 0 empty
+
+Vtable for QJSEngine
+QJSEngine::_ZTV9QJSEngine: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QJSEngine)
+16 (int (*)(...))QJSEngine::metaObject
+24 (int (*)(...))QJSEngine::qt_metacast
+32 (int (*)(...))QJSEngine::qt_metacall
+40 (int (*)(...))QJSEngine::~QJSEngine
+48 (int (*)(...))QJSEngine::~QJSEngine
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QJSEngine
+ size=24 align=8
+ base size=24 base align=8
+QJSEngine (0x0x7f61ba1e73a8) 0
+ vptr=((& QJSEngine::_ZTV9QJSEngine) + 16)
+ QObject (0x0x7f61b9e06480) 0
+ primary-for QJSEngine (0x0x7f61ba1e73a8)
+
+Class QJSValueIterator
+ size=8 align=8
+ base size=8 base align=8
+QJSValueIterator (0x0x7f61b96ac060) 0
+
+Class QQmlPrivate::RegisterType
+ size=128 align=8
+ base size=124 base align=8
+QQmlPrivate::RegisterType (0x0x7f61b96acc00) 0
+
+Class QQmlPrivate::RegisterInterface
+ size=24 align=8
+ base size=24 base align=8
+QQmlPrivate::RegisterInterface (0x0x7f61b96acc60) 0
+
+Class QQmlPrivate::RegisterAutoParent
+ size=16 align=8
+ base size=16 base align=8
+QQmlPrivate::RegisterAutoParent (0x0x7f61b96accc0) 0
+
+Class QQmlPrivate::RegisterSingletonType
+ size=96 align=8
+ base size=96 base align=8
+QQmlPrivate::RegisterSingletonType (0x0x7f61b96acd20) 0
+
+Class QQmlPrivate::RegisterCompositeType
+ size=32 align=8
+ base size=32 base align=8
+QQmlPrivate::RegisterCompositeType (0x0x7f61b96acf00) 0
+
+Class QQmlPrivate::RegisterCompositeSingletonType
+ size=32 align=8
+ base size=32 base align=8
+QQmlPrivate::RegisterCompositeSingletonType (0x0x7f61b96acf60) 0
+
+Class QQmlPrivate::CachedQmlUnit
+ size=24 align=8
+ base size=24 base align=8
+QQmlPrivate::CachedQmlUnit (0x0x7f61b8d90000) 0
+
+Class QQmlPrivate::RegisterQmlUnitCacheHook
+ size=16 align=8
+ base size=16 base align=8
+QQmlPrivate::RegisterQmlUnitCacheHook (0x0x7f61b8d90060) 0
+
+Class QQmlPrivate::RegisterSingletonFunctor
+ size=24 align=8
+ base size=17 base align=8
+QQmlPrivate::RegisterSingletonFunctor (0x0x7f61b8d900c0) 0
+
+Vtable for QQmlParserStatus
+QQmlParserStatus::_ZTV16QQmlParserStatus: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QQmlParserStatus)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlParserStatus
+ size=16 align=8
+ base size=16 base align=8
+QQmlParserStatus (0x0x7f61b8d90480) 0
+ vptr=((& QQmlParserStatus::_ZTV16QQmlParserStatus) + 16)
+
+Vtable for QQmlPropertyValueSource
+QQmlPropertyValueSource::_ZTV23QQmlPropertyValueSource: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QQmlPropertyValueSource)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlPropertyValueSource
+ size=8 align=8
+ base size=8 base align=8
+QQmlPropertyValueSource (0x0x7f61b8d90660) 0 nearly-empty
+ vptr=((& QQmlPropertyValueSource::_ZTV23QQmlPropertyValueSource) + 16)
+
+Class QQmlListReference
+ size=8 align=8
+ base size=8 base align=8
+QQmlListReference (0x0x7f61b8d90c00) 0
+
+Vtable for QQmlAbstractUrlInterceptor
+QQmlAbstractUrlInterceptor::_ZTV26QQmlAbstractUrlInterceptor: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QQmlAbstractUrlInterceptor)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlAbstractUrlInterceptor
+ size=8 align=8
+ base size=8 base align=8
+QQmlAbstractUrlInterceptor (0x0x7f61c2a95420) 0 nearly-empty
+ vptr=((& QQmlAbstractUrlInterceptor::_ZTV26QQmlAbstractUrlInterceptor) + 16)
+
+Class QQmlError
+ size=8 align=8
+ base size=8 base align=8
+QQmlError (0x0x7f61c2a95480) 0
+
+Vtable for QQmlImageProviderBase
+QQmlImageProviderBase::_ZTV21QQmlImageProviderBase: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QQmlImageProviderBase)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlImageProviderBase
+ size=8 align=8
+ base size=8 base align=8
+QQmlImageProviderBase (0x0x7f61c123a3c0) 0 nearly-empty
+ vptr=((& QQmlImageProviderBase::_ZTV21QQmlImageProviderBase) + 16)
+
+Class QQmlEngine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlEngine::QPrivateSignal (0x0x7f61c123ab40) 0 empty
+
+Vtable for QQmlEngine
+QQmlEngine::_ZTV10QQmlEngine: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QQmlEngine)
+16 (int (*)(...))QQmlEngine::metaObject
+24 (int (*)(...))QQmlEngine::qt_metacast
+32 (int (*)(...))QQmlEngine::qt_metacall
+40 (int (*)(...))QQmlEngine::~QQmlEngine
+48 (int (*)(...))QQmlEngine::~QQmlEngine
+56 (int (*)(...))QQmlEngine::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QQmlEngine
+ size=24 align=8
+ base size=24 base align=8
+QQmlEngine (0x0x7f61c1723dd0) 0
+ vptr=((& QQmlEngine::_ZTV10QQmlEngine) + 16)
+ QJSEngine (0x0x7f61c1723e38) 0
+ primary-for QQmlEngine (0x0x7f61c1723dd0)
+ QObject (0x0x7f61c123aae0) 0
+ primary-for QJSEngine (0x0x7f61c1723e38)
+
+Class QQmlApplicationEngine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlApplicationEngine::QPrivateSignal (0x0x7f61c123ade0) 0 empty
+
+Vtable for QQmlApplicationEngine
+QQmlApplicationEngine::_ZTV21QQmlApplicationEngine: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QQmlApplicationEngine)
+16 (int (*)(...))QQmlApplicationEngine::metaObject
+24 (int (*)(...))QQmlApplicationEngine::qt_metacast
+32 (int (*)(...))QQmlApplicationEngine::qt_metacall
+40 (int (*)(...))QQmlApplicationEngine::~QQmlApplicationEngine
+48 (int (*)(...))QQmlApplicationEngine::~QQmlApplicationEngine
+56 (int (*)(...))QQmlEngine::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QQmlApplicationEngine
+ size=24 align=8
+ base size=24 base align=8
+QQmlApplicationEngine (0x0x7f61c1723ea0) 0
+ vptr=((& QQmlApplicationEngine::_ZTV21QQmlApplicationEngine) + 16)
+ QQmlEngine (0x0x7f61c1723f08) 0
+ primary-for QQmlApplicationEngine (0x0x7f61c1723ea0)
+ QJSEngine (0x0x7f61c1723f70) 0
+ primary-for QQmlEngine (0x0x7f61c1723f08)
+ QObject (0x0x7f61c123ad80) 0
+ primary-for QJSEngine (0x0x7f61c1723f70)
+
+Class QQmlComponent::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlComponent::QPrivateSignal (0x0x7f61c0728060) 0 empty
+
+Vtable for QQmlComponent
+QQmlComponent::_ZTV13QQmlComponent: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QQmlComponent)
+16 (int (*)(...))QQmlComponent::metaObject
+24 (int (*)(...))QQmlComponent::qt_metacast
+32 (int (*)(...))QQmlComponent::qt_metacall
+40 (int (*)(...))QQmlComponent::~QQmlComponent
+48 (int (*)(...))QQmlComponent::~QQmlComponent
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QQmlComponent::create
+120 (int (*)(...))QQmlComponent::beginCreate
+128 (int (*)(...))QQmlComponent::completeCreate
+
+Class QQmlComponent
+ size=16 align=8
+ base size=16 base align=8
+QQmlComponent (0x0x7f61c0702000) 0
+ vptr=((& QQmlComponent::_ZTV13QQmlComponent) + 16)
+ QObject (0x0x7f61c0728000) 0
+ primary-for QQmlComponent (0x0x7f61c0702000)
+
+Class QQmlContext::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlContext::QPrivateSignal (0x0x7f61c0728d20) 0 empty
+
+Class QQmlContext::PropertyPair
+ size=24 align=8
+ base size=24 base align=8
+QQmlContext::PropertyPair (0x0x7f61c0728d80) 0
+
+Vtable for QQmlContext
+QQmlContext::_ZTV11QQmlContext: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QQmlContext)
+16 (int (*)(...))QQmlContext::metaObject
+24 (int (*)(...))QQmlContext::qt_metacast
+32 (int (*)(...))QQmlContext::qt_metacall
+40 (int (*)(...))QQmlContext::~QQmlContext
+48 (int (*)(...))QQmlContext::~QQmlContext
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QQmlContext
+ size=16 align=8
+ base size=16 base align=8
+QQmlContext (0x0x7f61c0702548) 0
+ vptr=((& QQmlContext::_ZTV11QQmlContext) + 16)
+ QObject (0x0x7f61c0728cc0) 0
+ primary-for QQmlContext (0x0x7f61c0702548)
+
+Class QQmlScriptString
+ size=8 align=8
+ base size=8 base align=8
+QQmlScriptString (0x0x7f61bf843180) 0
+
+Class QQmlExpression::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlExpression::QPrivateSignal (0x0x7f61bf843480) 0 empty
+
+Vtable for QQmlExpression
+QQmlExpression::_ZTV14QQmlExpression: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QQmlExpression)
+16 (int (*)(...))QQmlExpression::metaObject
+24 (int (*)(...))QQmlExpression::qt_metacast
+32 (int (*)(...))QQmlExpression::qt_metacall
+40 (int (*)(...))QQmlExpression::~QQmlExpression
+48 (int (*)(...))QQmlExpression::~QQmlExpression
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QQmlExpression
+ size=16 align=8
+ base size=16 base align=8
+QQmlExpression (0x0x7f61c07025b0) 0
+ vptr=((& QQmlExpression::_ZTV14QQmlExpression) + 16)
+ QObject (0x0x7f61bf843420) 0
+ primary-for QQmlExpression (0x0x7f61c07025b0)
+
+Vtable for QQmlTypesExtensionInterface
+QQmlTypesExtensionInterface::_ZTV27QQmlTypesExtensionInterface: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QQmlTypesExtensionInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlTypesExtensionInterface
+ size=8 align=8
+ base size=8 base align=8
+QQmlTypesExtensionInterface (0x0x7f61bf843660) 0 nearly-empty
+ vptr=((& QQmlTypesExtensionInterface::_ZTV27QQmlTypesExtensionInterface) + 16)
+
+Vtable for QQmlExtensionInterface
+QQmlExtensionInterface::_ZTV22QQmlExtensionInterface: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QQmlExtensionInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlExtensionInterface
+ size=8 align=8
+ base size=8 base align=8
+QQmlExtensionInterface (0x0x7f61c0702618) 0 nearly-empty
+ vptr=((& QQmlExtensionInterface::_ZTV22QQmlExtensionInterface) + 16)
+ QQmlTypesExtensionInterface (0x0x7f61bf8436c0) 0 nearly-empty
+ primary-for QQmlExtensionInterface (0x0x7f61c0702618)
+
+Class QQmlExtensionPlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlExtensionPlugin::QPrivateSignal (0x0x7f61bf843ae0) 0 empty
+
+Vtable for QQmlExtensionPlugin
+QQmlExtensionPlugin::_ZTV19QQmlExtensionPlugin: 22 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QQmlExtensionPlugin)
+16 (int (*)(...))QQmlExtensionPlugin::metaObject
+24 (int (*)(...))QQmlExtensionPlugin::qt_metacast
+32 (int (*)(...))QQmlExtensionPlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))QQmlExtensionPlugin::initializeEngine
+128 (int (*)(...))-16
+136 (int (*)(...))(& _ZTI19QQmlExtensionPlugin)
+144 0
+152 0
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QQmlExtensionPlugin::_ZThn16_N19QQmlExtensionPlugin16initializeEngineEP10QQmlEnginePKc
+
+Class QQmlExtensionPlugin
+ size=24 align=8
+ base size=24 base align=8
+QQmlExtensionPlugin (0x0x7f61bcefaee0) 0
+ vptr=((& QQmlExtensionPlugin::_ZTV19QQmlExtensionPlugin) + 16)
+ QObject (0x0x7f61bf843a20) 0
+ primary-for QQmlExtensionPlugin (0x0x7f61bcefaee0)
+ QQmlExtensionInterface (0x0x7f61c0702680) 16 nearly-empty
+ vptr=((& QQmlExtensionPlugin::_ZTV19QQmlExtensionPlugin) + 144)
+ QQmlTypesExtensionInterface (0x0x7f61bf843a80) 16 nearly-empty
+ primary-for QQmlExtensionInterface (0x0x7f61c0702680)
+
+Class QQmlFile
+ size=8 align=8
+ base size=8 base align=8
+QQmlFile (0x0x7f61bf843cc0) 0
+
+Class QQmlFileSelector::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlFileSelector::QPrivateSignal (0x0x7f61bf843d80) 0 empty
+
+Vtable for QQmlFileSelector
+QQmlFileSelector::_ZTV16QQmlFileSelector: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QQmlFileSelector)
+16 (int (*)(...))QQmlFileSelector::metaObject
+24 (int (*)(...))QQmlFileSelector::qt_metacast
+32 (int (*)(...))QQmlFileSelector::qt_metacall
+40 (int (*)(...))QQmlFileSelector::~QQmlFileSelector
+48 (int (*)(...))QQmlFileSelector::~QQmlFileSelector
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QQmlFileSelector
+ size=16 align=8
+ base size=16 base align=8
+QQmlFileSelector (0x0x7f61c0702750) 0
+ vptr=((& QQmlFileSelector::_ZTV16QQmlFileSelector) + 16)
+ QObject (0x0x7f61bf843d20) 0
+ primary-for QQmlFileSelector (0x0x7f61c0702750)
+
+Vtable for QQmlIncubator
+QQmlIncubator::_ZTV13QQmlIncubator: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QQmlIncubator)
+16 (int (*)(...))QQmlIncubator::~QQmlIncubator
+24 (int (*)(...))QQmlIncubator::~QQmlIncubator
+32 (int (*)(...))QQmlIncubator::statusChanged
+40 (int (*)(...))QQmlIncubator::setInitialState
+
+Class QQmlIncubator
+ size=16 align=8
+ base size=16 base align=8
+QQmlIncubator (0x0x7f61bf843f60) 0
+ vptr=((& QQmlIncubator::_ZTV13QQmlIncubator) + 16)
+
+Vtable for QQmlIncubationController
+QQmlIncubationController::_ZTV24QQmlIncubationController: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QQmlIncubationController)
+16 (int (*)(...))QQmlIncubationController::~QQmlIncubationController
+24 (int (*)(...))QQmlIncubationController::~QQmlIncubationController
+32 (int (*)(...))QQmlIncubationController::incubatingObjectCountChanged
+
+Class QQmlIncubationController
+ size=16 align=8
+ base size=16 base align=8
+QQmlIncubationController (0x0x7f61beb25000) 0
+ vptr=((& QQmlIncubationController::_ZTV24QQmlIncubationController) + 16)
+
+Class QQmlInfo
+ size=16 align=8
+ base size=16 base align=8
+QQmlInfo (0x0x7f61c07027b8) 0
+ QDebug (0x0x7f61beb25060) 0
+
+Vtable for QQmlNetworkAccessManagerFactory
+QQmlNetworkAccessManagerFactory::_ZTV31QQmlNetworkAccessManagerFactory: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI31QQmlNetworkAccessManagerFactory)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlNetworkAccessManagerFactory
+ size=8 align=8
+ base size=8 base align=8
+QQmlNetworkAccessManagerFactory (0x0x7f61be27c000) 0 nearly-empty
+ vptr=((& QQmlNetworkAccessManagerFactory::_ZTV31QQmlNetworkAccessManagerFactory) + 16)
+
+Class QQmlProperty
+ size=8 align=8
+ base size=8 base align=8
+QQmlProperty (0x0x7f61be27c060) 0
+
+Class QQmlPropertyMap::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlPropertyMap::QPrivateSignal (0x0x7f61bd6aa8a0) 0 empty
+
+Vtable for QQmlPropertyMap
+QQmlPropertyMap::_ZTV15QQmlPropertyMap: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QQmlPropertyMap)
+16 (int (*)(...))QQmlPropertyMap::metaObject
+24 (int (*)(...))QQmlPropertyMap::qt_metacast
+32 (int (*)(...))QQmlPropertyMap::qt_metacall
+40 (int (*)(...))QQmlPropertyMap::~QQmlPropertyMap
+48 (int (*)(...))QQmlPropertyMap::~QQmlPropertyMap
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QQmlPropertyMap::updateValue
+
+Class QQmlPropertyMap
+ size=16 align=8
+ base size=16 base align=8
+QQmlPropertyMap (0x0x7f61bd60ddd0) 0
+ vptr=((& QQmlPropertyMap::_ZTV15QQmlPropertyMap) + 16)
+ QObject (0x0x7f61bd6aa840) 0
+ primary-for QQmlPropertyMap (0x0x7f61bd60ddd0)
+
+Class QQuickTransform::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickTransform::QPrivateSignal (0x0x7f61bd6aab40) 0 empty
+
+Vtable for QQuickTransform
+QQuickTransform::_ZTV15QQuickTransform: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QQuickTransform)
+16 (int (*)(...))QQuickTransform::metaObject
+24 (int (*)(...))QQuickTransform::qt_metacast
+32 (int (*)(...))QQuickTransform::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QQuickTransform
+ size=16 align=8
+ base size=16 base align=8
+QQuickTransform (0x0x7f61bd60de38) 0
+ vptr=((& QQuickTransform::_ZTV15QQuickTransform) + 16)
+ QObject (0x0x7f61bd6aaae0) 0
+ primary-for QQuickTransform (0x0x7f61bd60de38)
+
+Class QQuickItem::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickItem::QPrivateSignal (0x0x7f61bd6aade0) 0 empty
+
+Class QQuickItem::ItemChangeData
+ size=8 align=8
+ base size=8 base align=8
+QQuickItem::ItemChangeData (0x0x7f61bd6aae40) 0
+
+Class QQuickItem::UpdatePaintNodeData
+ size=8 align=8
+ base size=8 base align=8
+QQuickItem::UpdatePaintNodeData (0x0x7f61bd6aaea0) 0
+
+Vtable for QQuickItem
+QQuickItem::_ZTV10QQuickItem: 55 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QQuickItem)
+16 (int (*)(...))QQuickItem::metaObject
+24 (int (*)(...))QQuickItem::qt_metacast
+32 (int (*)(...))QQuickItem::qt_metacall
+40 (int (*)(...))QQuickItem::~QQuickItem
+48 (int (*)(...))QQuickItem::~QQuickItem
+56 (int (*)(...))QQuickItem::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QQuickItem::boundingRect
+120 (int (*)(...))QQuickItem::clipRect
+128 (int (*)(...))QQuickItem::contains
+136 (int (*)(...))QQuickItem::inputMethodQuery
+144 (int (*)(...))QQuickItem::isTextureProvider
+152 (int (*)(...))QQuickItem::textureProvider
+160 (int (*)(...))QQuickItem::itemChange
+168 (int (*)(...))QQuickItem::classBegin
+176 (int (*)(...))QQuickItem::componentComplete
+184 (int (*)(...))QQuickItem::keyPressEvent
+192 (int (*)(...))QQuickItem::keyReleaseEvent
+200 (int (*)(...))QQuickItem::inputMethodEvent
+208 (int (*)(...))QQuickItem::focusInEvent
+216 (int (*)(...))QQuickItem::focusOutEvent
+224 (int (*)(...))QQuickItem::mousePressEvent
+232 (int (*)(...))QQuickItem::mouseMoveEvent
+240 (int (*)(...))QQuickItem::mouseReleaseEvent
+248 (int (*)(...))QQuickItem::mouseDoubleClickEvent
+256 (int (*)(...))QQuickItem::mouseUngrabEvent
+264 (int (*)(...))QQuickItem::touchUngrabEvent
+272 (int (*)(...))QQuickItem::wheelEvent
+280 (int (*)(...))QQuickItem::touchEvent
+288 (int (*)(...))QQuickItem::hoverEnterEvent
+296 (int (*)(...))QQuickItem::hoverMoveEvent
+304 (int (*)(...))QQuickItem::hoverLeaveEvent
+312 (int (*)(...))QQuickItem::dragEnterEvent
+320 (int (*)(...))QQuickItem::dragMoveEvent
+328 (int (*)(...))QQuickItem::dragLeaveEvent
+336 (int (*)(...))QQuickItem::dropEvent
+344 (int (*)(...))QQuickItem::childMouseEventFilter
+352 (int (*)(...))QQuickItem::windowDeactivateEvent
+360 (int (*)(...))QQuickItem::geometryChanged
+368 (int (*)(...))QQuickItem::updatePaintNode
+376 (int (*)(...))QQuickItem::releaseResources
+384 (int (*)(...))QQuickItem::updatePolish
+392 (int (*)(...))-16
+400 (int (*)(...))(& _ZTI10QQuickItem)
+408 (int (*)(...))QQuickItem::_ZThn16_N10QQuickItemD1Ev
+416 (int (*)(...))QQuickItem::_ZThn16_N10QQuickItemD0Ev
+424 (int (*)(...))QQuickItem::_ZThn16_N10QQuickItem10classBeginEv
+432 (int (*)(...))QQuickItem::_ZThn16_N10QQuickItem17componentCompleteEv
+
+Class QQuickItem
+ size=32 align=8
+ base size=32 base align=8
+QQuickItem (0x0x7f61bc784150) 0
+ vptr=((& QQuickItem::_ZTV10QQuickItem) + 16)
+ QObject (0x0x7f61bd6aad20) 0
+ primary-for QQuickItem (0x0x7f61bc784150)
+ QQmlParserStatus (0x0x7f61bd6aad80) 16
+ vptr=((& QQuickItem::_ZTV10QQuickItem) + 408)
+
+Class QQuickFramebufferObject::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickFramebufferObject::QPrivateSignal (0x0x7f61bac65840) 0 empty
+
+Vtable for QQuickFramebufferObject::Renderer
+QQuickFramebufferObject::Renderer::_ZTVN23QQuickFramebufferObject8RendererE: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN23QQuickFramebufferObject8RendererE)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))QQuickFramebufferObject::Renderer::createFramebufferObject
+48 (int (*)(...))QQuickFramebufferObject::Renderer::synchronize
+
+Class QQuickFramebufferObject::Renderer
+ size=16 align=8
+ base size=16 base align=8
+QQuickFramebufferObject::Renderer (0x0x7f61bac658a0) 0
+ vptr=((& QQuickFramebufferObject::Renderer::_ZTVN23QQuickFramebufferObject8RendererE) + 16)
+
+Vtable for QQuickFramebufferObject
+QQuickFramebufferObject::_ZTV23QQuickFramebufferObject: 56 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QQuickFramebufferObject)
+16 (int (*)(...))QQuickFramebufferObject::metaObject
+24 (int (*)(...))QQuickFramebufferObject::qt_metacast
+32 (int (*)(...))QQuickFramebufferObject::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QQuickItem::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QQuickItem::boundingRect
+120 (int (*)(...))QQuickItem::clipRect
+128 (int (*)(...))QQuickItem::contains
+136 (int (*)(...))QQuickItem::inputMethodQuery
+144 (int (*)(...))QQuickFramebufferObject::isTextureProvider
+152 (int (*)(...))QQuickFramebufferObject::textureProvider
+160 (int (*)(...))QQuickItem::itemChange
+168 (int (*)(...))QQuickItem::classBegin
+176 (int (*)(...))QQuickItem::componentComplete
+184 (int (*)(...))QQuickItem::keyPressEvent
+192 (int (*)(...))QQuickItem::keyReleaseEvent
+200 (int (*)(...))QQuickItem::inputMethodEvent
+208 (int (*)(...))QQuickItem::focusInEvent
+216 (int (*)(...))QQuickItem::focusOutEvent
+224 (int (*)(...))QQuickItem::mousePressEvent
+232 (int (*)(...))QQuickItem::mouseMoveEvent
+240 (int (*)(...))QQuickItem::mouseReleaseEvent
+248 (int (*)(...))QQuickItem::mouseDoubleClickEvent
+256 (int (*)(...))QQuickItem::mouseUngrabEvent
+264 (int (*)(...))QQuickItem::touchUngrabEvent
+272 (int (*)(...))QQuickItem::wheelEvent
+280 (int (*)(...))QQuickItem::touchEvent
+288 (int (*)(...))QQuickItem::hoverEnterEvent
+296 (int (*)(...))QQuickItem::hoverMoveEvent
+304 (int (*)(...))QQuickItem::hoverLeaveEvent
+312 (int (*)(...))QQuickItem::dragEnterEvent
+320 (int (*)(...))QQuickItem::dragMoveEvent
+328 (int (*)(...))QQuickItem::dragLeaveEvent
+336 (int (*)(...))QQuickItem::dropEvent
+344 (int (*)(...))QQuickItem::childMouseEventFilter
+352 (int (*)(...))QQuickItem::windowDeactivateEvent
+360 (int (*)(...))QQuickFramebufferObject::geometryChanged
+368 (int (*)(...))QQuickFramebufferObject::updatePaintNode
+376 (int (*)(...))QQuickFramebufferObject::releaseResources
+384 (int (*)(...))QQuickItem::updatePolish
+392 (int (*)(...))__cxa_pure_virtual
+400 (int (*)(...))-16
+408 (int (*)(...))(& _ZTI23QQuickFramebufferObject)
+416 0
+424 0
+432 (int (*)(...))QQuickItem::_ZThn16_N10QQuickItem10classBeginEv
+440 (int (*)(...))QQuickItem::_ZThn16_N10QQuickItem17componentCompleteEv
+
+Class QQuickFramebufferObject
+ size=32 align=8
+ base size=32 base align=8
+QQuickFramebufferObject (0x0x7f61bd60df70) 0
+ vptr=((& QQuickFramebufferObject::_ZTV23QQuickFramebufferObject) + 16)
+ QQuickItem (0x0x7f61bc7fd7e0) 0
+ primary-for QQuickFramebufferObject (0x0x7f61bd60df70)
+ QObject (0x0x7f61bac65780) 0
+ primary-for QQuickItem (0x0x7f61bc7fd7e0)
+ QQmlParserStatus (0x0x7f61bac657e0) 16
+ vptr=((& QQuickFramebufferObject::_ZTV23QQuickFramebufferObject) + 416)
+
+Class QQuickTextureFactory::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickTextureFactory::QPrivateSignal (0x0x7f61bac65ae0) 0 empty
+
+Vtable for QQuickTextureFactory
+QQuickTextureFactory::_ZTV20QQuickTextureFactory: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QQuickTextureFactory)
+16 (int (*)(...))QQuickTextureFactory::metaObject
+24 (int (*)(...))QQuickTextureFactory::qt_metacast
+32 (int (*)(...))QQuickTextureFactory::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))QQuickTextureFactory::image
+
+Class QQuickTextureFactory
+ size=16 align=8
+ base size=16 base align=8
+QQuickTextureFactory (0x0x7f61ba3b7000) 0
+ vptr=((& QQuickTextureFactory::_ZTV20QQuickTextureFactory) + 16)
+ QObject (0x0x7f61bac65a80) 0
+ primary-for QQuickTextureFactory (0x0x7f61ba3b7000)
+
+Class QQuickImageResponse::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickImageResponse::QPrivateSignal (0x0x7f61bac65c60) 0 empty
+
+Vtable for QQuickImageResponse
+QQuickImageResponse::_ZTV19QQuickImageResponse: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QQuickImageResponse)
+16 (int (*)(...))QQuickImageResponse::metaObject
+24 (int (*)(...))QQuickImageResponse::qt_metacast
+32 (int (*)(...))QQuickImageResponse::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))QQuickImageResponse::errorString
+128 (int (*)(...))QQuickImageResponse::cancel
+
+Class QQuickImageResponse
+ size=16 align=8
+ base size=16 base align=8
+QQuickImageResponse (0x0x7f61ba3b7068) 0
+ vptr=((& QQuickImageResponse::_ZTV19QQuickImageResponse) + 16)
+ QObject (0x0x7f61bac65c00) 0
+ primary-for QQuickImageResponse (0x0x7f61ba3b7068)
+
+Vtable for QQuickImageProvider
+QQuickImageProvider::_ZTV19QQuickImageProvider: 9 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QQuickImageProvider)
+16 (int (*)(...))QQuickImageProvider::~QQuickImageProvider
+24 (int (*)(...))QQuickImageProvider::~QQuickImageProvider
+32 (int (*)(...))QQuickImageProvider::imageType
+40 (int (*)(...))QQuickImageProvider::flags
+48 (int (*)(...))QQuickImageProvider::requestImage
+56 (int (*)(...))QQuickImageProvider::requestPixmap
+64 (int (*)(...))QQuickImageProvider::requestTexture
+
+Class QQuickImageProvider
+ size=16 align=8
+ base size=16 base align=8
+QQuickImageProvider (0x0x7f61ba3b70d0) 0
+ vptr=((& QQuickImageProvider::_ZTV19QQuickImageProvider) + 16)
+ QQmlImageProviderBase (0x0x7f61bac65e40) 0 nearly-empty
+ primary-for QQuickImageProvider (0x0x7f61ba3b70d0)
+
+Vtable for QQuickAsyncImageProvider
+QQuickAsyncImageProvider::_ZTV24QQuickAsyncImageProvider: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QQuickAsyncImageProvider)
+16 0
+24 0
+32 (int (*)(...))QQuickImageProvider::imageType
+40 (int (*)(...))QQuickImageProvider::flags
+48 (int (*)(...))QQuickImageProvider::requestImage
+56 (int (*)(...))QQuickImageProvider::requestPixmap
+64 (int (*)(...))QQuickImageProvider::requestTexture
+72 (int (*)(...))__cxa_pure_virtual
+
+Class QQuickAsyncImageProvider
+ size=24 align=8
+ base size=24 base align=8
+QQuickAsyncImageProvider (0x0x7f61ba3b7138) 0
+ vptr=((& QQuickAsyncImageProvider::_ZTV24QQuickAsyncImageProvider) + 16)
+ QQuickImageProvider (0x0x7f61ba3b71a0) 0
+ primary-for QQuickAsyncImageProvider (0x0x7f61ba3b7138)
+ QQmlImageProviderBase (0x0x7f61b9feb0c0) 0 nearly-empty
+ primary-for QQuickImageProvider (0x0x7f61ba3b71a0)
+
+Class QQuickItemGrabResult::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickItemGrabResult::QPrivateSignal (0x0x7f61b9feb180) 0 empty
+
+Vtable for QQuickItemGrabResult
+QQuickItemGrabResult::_ZTV20QQuickItemGrabResult: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QQuickItemGrabResult)
+16 (int (*)(...))QQuickItemGrabResult::metaObject
+24 (int (*)(...))QQuickItemGrabResult::qt_metacast
+32 (int (*)(...))QQuickItemGrabResult::qt_metacall
+40 (int (*)(...))QQuickItemGrabResult::~QQuickItemGrabResult
+48 (int (*)(...))QQuickItemGrabResult::~QQuickItemGrabResult
+56 (int (*)(...))QQuickItemGrabResult::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QQuickItemGrabResult
+ size=16 align=8
+ base size=16 base align=8
+QQuickItemGrabResult (0x0x7f61ba3b7208) 0
+ vptr=((& QQuickItemGrabResult::_ZTV20QQuickItemGrabResult) + 16)
+ QObject (0x0x7f61b9feb120) 0
+ primary-for QQuickItemGrabResult (0x0x7f61ba3b7208)
+
+Class QQuickPaintedItem::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickPaintedItem::QPrivateSignal (0x0x7f61b9feb420) 0 empty
+
+Vtable for QQuickPaintedItem
+QQuickPaintedItem::_ZTV17QQuickPaintedItem: 56 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QQuickPaintedItem)
+16 (int (*)(...))QQuickPaintedItem::metaObject
+24 (int (*)(...))QQuickPaintedItem::qt_metacast
+32 (int (*)(...))QQuickPaintedItem::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QQuickItem::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QQuickItem::boundingRect
+120 (int (*)(...))QQuickItem::clipRect
+128 (int (*)(...))QQuickItem::contains
+136 (int (*)(...))QQuickItem::inputMethodQuery
+144 (int (*)(...))QQuickPaintedItem::isTextureProvider
+152 (int (*)(...))QQuickPaintedItem::textureProvider
+160 (int (*)(...))QQuickPaintedItem::itemChange
+168 (int (*)(...))QQuickItem::classBegin
+176 (int (*)(...))QQuickItem::componentComplete
+184 (int (*)(...))QQuickItem::keyPressEvent
+192 (int (*)(...))QQuickItem::keyReleaseEvent
+200 (int (*)(...))QQuickItem::inputMethodEvent
+208 (int (*)(...))QQuickItem::focusInEvent
+216 (int (*)(...))QQuickItem::focusOutEvent
+224 (int (*)(...))QQuickItem::mousePressEvent
+232 (int (*)(...))QQuickItem::mouseMoveEvent
+240 (int (*)(...))QQuickItem::mouseReleaseEvent
+248 (int (*)(...))QQuickItem::mouseDoubleClickEvent
+256 (int (*)(...))QQuickItem::mouseUngrabEvent
+264 (int (*)(...))QQuickItem::touchUngrabEvent
+272 (int (*)(...))QQuickItem::wheelEvent
+280 (int (*)(...))QQuickItem::touchEvent
+288 (int (*)(...))QQuickItem::hoverEnterEvent
+296 (int (*)(...))QQuickItem::hoverMoveEvent
+304 (int (*)(...))QQuickItem::hoverLeaveEvent
+312 (int (*)(...))QQuickItem::dragEnterEvent
+320 (int (*)(...))QQuickItem::dragMoveEvent
+328 (int (*)(...))QQuickItem::dragLeaveEvent
+336 (int (*)(...))QQuickItem::dropEvent
+344 (int (*)(...))QQuickItem::childMouseEventFilter
+352 (int (*)(...))QQuickItem::windowDeactivateEvent
+360 (int (*)(...))QQuickItem::geometryChanged
+368 (int (*)(...))QQuickPaintedItem::updatePaintNode
+376 (int (*)(...))QQuickPaintedItem::releaseResources
+384 (int (*)(...))QQuickItem::updatePolish
+392 (int (*)(...))__cxa_pure_virtual
+400 (int (*)(...))-16
+408 (int (*)(...))(& _ZTI17QQuickPaintedItem)
+416 0
+424 0
+432 (int (*)(...))QQuickItem::_ZThn16_N10QQuickItem10classBeginEv
+440 (int (*)(...))QQuickItem::_ZThn16_N10QQuickItem17componentCompleteEv
+
+Class QQuickPaintedItem
+ size=32 align=8
+ base size=32 base align=8
+QQuickPaintedItem (0x0x7f61ba3b7270) 0
+ vptr=((& QQuickPaintedItem::_ZTV17QQuickPaintedItem) + 16)
+ QQuickItem (0x0x7f61bc7fdee0) 0
+ primary-for QQuickPaintedItem (0x0x7f61ba3b7270)
+ QObject (0x0x7f61b9feb360) 0
+ primary-for QQuickItem (0x0x7f61bc7fdee0)
+ QQmlParserStatus (0x0x7f61b9feb3c0) 16
+ vptr=((& QQuickPaintedItem::_ZTV17QQuickPaintedItem) + 416)
+
+Class QQuickRenderControl::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickRenderControl::QPrivateSignal (0x0x7f61b9febea0) 0 empty
+
+Vtable for QQuickRenderControl
+QQuickRenderControl::_ZTV19QQuickRenderControl: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QQuickRenderControl)
+16 (int (*)(...))QQuickRenderControl::metaObject
+24 (int (*)(...))QQuickRenderControl::qt_metacast
+32 (int (*)(...))QQuickRenderControl::qt_metacall
+40 (int (*)(...))QQuickRenderControl::~QQuickRenderControl
+48 (int (*)(...))QQuickRenderControl::~QQuickRenderControl
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QQuickRenderControl::renderWindow
+
+Class QQuickRenderControl
+ size=16 align=8
+ base size=16 base align=8
+QQuickRenderControl (0x0x7f61ba3b7410) 0
+ vptr=((& QQuickRenderControl::_ZTV19QQuickRenderControl) + 16)
+ QObject (0x0x7f61b9febe40) 0
+ primary-for QQuickRenderControl (0x0x7f61ba3b7410)
+
+Class QQuickTextDocument::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickTextDocument::QPrivateSignal (0x0x7f61b93ce180) 0 empty
+
+Vtable for QQuickTextDocument
+QQuickTextDocument::_ZTV18QQuickTextDocument: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QQuickTextDocument)
+16 (int (*)(...))QQuickTextDocument::metaObject
+24 (int (*)(...))QQuickTextDocument::qt_metacast
+32 (int (*)(...))QQuickTextDocument::qt_metacall
+40 (int (*)(...))QQuickTextDocument::~QQuickTextDocument
+48 (int (*)(...))QQuickTextDocument::~QQuickTextDocument
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QQuickTextDocument
+ size=16 align=8
+ base size=16 base align=8
+QQuickTextDocument (0x0x7f61ba3b7478) 0
+ vptr=((& QQuickTextDocument::_ZTV18QQuickTextDocument) + 16)
+ QObject (0x0x7f61b93ce120) 0
+ primary-for QQuickTextDocument (0x0x7f61ba3b7478)
+
+Class QSGGeometry::Attribute
+ size=16 align=4
+ base size=16 base align=4
+QSGGeometry::Attribute (0x0x7f61b93ce7e0) 0
+
+Class QSGGeometry::AttributeSet
+ size=16 align=8
+ base size=16 base align=8
+QSGGeometry::AttributeSet (0x0x7f61b93ce840) 0
+
+Class QSGGeometry::Point2D
+ size=8 align=4
+ base size=8 base align=4
+QSGGeometry::Point2D (0x0x7f61b93ce8a0) 0
+
+Class QSGGeometry::TexturedPoint2D
+ size=16 align=4
+ base size=16 base align=4
+QSGGeometry::TexturedPoint2D (0x0x7f61b93ce900) 0
+
+Class QSGGeometry::ColoredPoint2D
+ size=12 align=4
+ base size=12 base align=4
+QSGGeometry::ColoredPoint2D (0x0x7f61b93ce960) 0
+
+Vtable for QSGGeometry
+QSGGeometry::_ZTV11QSGGeometry: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QSGGeometry)
+16 (int (*)(...))QSGGeometry::~QSGGeometry
+24 (int (*)(...))QSGGeometry::~QSGGeometry
+
+Class QSGGeometry
+ size=128 align=8
+ base size=128 base align=8
+QSGGeometry (0x0x7f61b93ce780) 0
+ vptr=((& QSGGeometry::_ZTV11QSGGeometry) + 16)
+
+Vtable for QSGNode
+QSGNode::_ZTV7QSGNode: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QSGNode)
+16 (int (*)(...))QSGNode::~QSGNode
+24 (int (*)(...))QSGNode::~QSGNode
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+
+Class QSGNode
+ size=80 align=8
+ base size=80 base align=8
+QSGNode (0x0x7f61be9f0960) 0
+ vptr=((& QSGNode::_ZTV7QSGNode) + 16)
+
+Vtable for QSGBasicGeometryNode
+QSGBasicGeometryNode::_ZTV20QSGBasicGeometryNode: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QSGBasicGeometryNode)
+16 (int (*)(...))QSGBasicGeometryNode::~QSGBasicGeometryNode
+24 (int (*)(...))QSGBasicGeometryNode::~QSGBasicGeometryNode
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+
+Class QSGBasicGeometryNode
+ size=112 align=8
+ base size=112 base align=8
+QSGBasicGeometryNode (0x0x7f61ba3b7b60) 0
+ vptr=((& QSGBasicGeometryNode::_ZTV20QSGBasicGeometryNode) + 16)
+ QSGNode (0x0x7f61bb779300) 0
+ primary-for QSGBasicGeometryNode (0x0x7f61ba3b7b60)
+
+Vtable for QSGGeometryNode
+QSGGeometryNode::_ZTV15QSGGeometryNode: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QSGGeometryNode)
+16 (int (*)(...))QSGGeometryNode::~QSGGeometryNode
+24 (int (*)(...))QSGGeometryNode::~QSGGeometryNode
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+
+Class QSGGeometryNode
+ size=144 align=8
+ base size=144 base align=8
+QSGGeometryNode (0x0x7f61ba3b7bc8) 0
+ vptr=((& QSGGeometryNode::_ZTV15QSGGeometryNode) + 16)
+ QSGBasicGeometryNode (0x0x7f61ba3b7c30) 0
+ primary-for QSGGeometryNode (0x0x7f61ba3b7bc8)
+ QSGNode (0x0x7f61bb7795a0) 0
+ primary-for QSGBasicGeometryNode (0x0x7f61ba3b7c30)
+
+Vtable for QSGClipNode
+QSGClipNode::_ZTV11QSGClipNode: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QSGClipNode)
+16 (int (*)(...))QSGClipNode::~QSGClipNode
+24 (int (*)(...))QSGClipNode::~QSGClipNode
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+
+Class QSGClipNode
+ size=152 align=8
+ base size=152 base align=8
+QSGClipNode (0x0x7f61ba3b7c98) 0
+ vptr=((& QSGClipNode::_ZTV11QSGClipNode) + 16)
+ QSGBasicGeometryNode (0x0x7f61ba3b7d00) 0
+ primary-for QSGClipNode (0x0x7f61ba3b7c98)
+ QSGNode (0x0x7f61bb779780) 0
+ primary-for QSGBasicGeometryNode (0x0x7f61ba3b7d00)
+
+Vtable for QSGTransformNode
+QSGTransformNode::_ZTV16QSGTransformNode: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QSGTransformNode)
+16 (int (*)(...))QSGTransformNode::~QSGTransformNode
+24 (int (*)(...))QSGTransformNode::~QSGTransformNode
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+
+Class QSGTransformNode
+ size=216 align=8
+ base size=216 base align=8
+QSGTransformNode (0x0x7f61ba3b7d68) 0
+ vptr=((& QSGTransformNode::_ZTV16QSGTransformNode) + 16)
+ QSGNode (0x0x7f61bb7798a0) 0
+ primary-for QSGTransformNode (0x0x7f61ba3b7d68)
+
+Vtable for QSGRootNode
+QSGRootNode::_ZTV11QSGRootNode: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QSGRootNode)
+16 (int (*)(...))QSGRootNode::~QSGRootNode
+24 (int (*)(...))QSGRootNode::~QSGRootNode
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+
+Class QSGRootNode
+ size=88 align=8
+ base size=88 base align=8
+QSGRootNode (0x0x7f61ba3b7dd0) 0
+ vptr=((& QSGRootNode::_ZTV11QSGRootNode) + 16)
+ QSGNode (0x0x7f61bb7799c0) 0
+ primary-for QSGRootNode (0x0x7f61ba3b7dd0)
+
+Vtable for QSGOpacityNode
+QSGOpacityNode::_ZTV14QSGOpacityNode: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QSGOpacityNode)
+16 (int (*)(...))QSGOpacityNode::~QSGOpacityNode
+24 (int (*)(...))QSGOpacityNode::~QSGOpacityNode
+32 (int (*)(...))QSGOpacityNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+
+Class QSGOpacityNode
+ size=96 align=8
+ base size=96 base align=8
+QSGOpacityNode (0x0x7f61ba3b7ea0) 0
+ vptr=((& QSGOpacityNode::_ZTV14QSGOpacityNode) + 16)
+ QSGNode (0x0x7f61bb779b40) 0
+ primary-for QSGOpacityNode (0x0x7f61ba3b7ea0)
+
+Vtable for QSGNodeVisitor
+QSGNodeVisitor::_ZTV14QSGNodeVisitor: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QSGNodeVisitor)
+16 (int (*)(...))QSGNodeVisitor::~QSGNodeVisitor
+24 (int (*)(...))QSGNodeVisitor::~QSGNodeVisitor
+32 (int (*)(...))QSGNodeVisitor::enterTransformNode
+40 (int (*)(...))QSGNodeVisitor::leaveTransformNode
+48 (int (*)(...))QSGNodeVisitor::enterClipNode
+56 (int (*)(...))QSGNodeVisitor::leaveClipNode
+64 (int (*)(...))QSGNodeVisitor::enterGeometryNode
+72 (int (*)(...))QSGNodeVisitor::leaveGeometryNode
+80 (int (*)(...))QSGNodeVisitor::enterOpacityNode
+88 (int (*)(...))QSGNodeVisitor::leaveOpacityNode
+96 (int (*)(...))QSGNodeVisitor::visitNode
+104 (int (*)(...))QSGNodeVisitor::visitChildren
+
+Class QSGNodeVisitor
+ size=8 align=8
+ base size=8 base align=8
+QSGNodeVisitor (0x0x7f61bb779c60) 0 nearly-empty
+ vptr=((& QSGNodeVisitor::_ZTV14QSGNodeVisitor) + 16)
+
+Vtable for QSGRendererInterface
+QSGRendererInterface::_ZTV20QSGRendererInterface: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QSGRendererInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))QSGRendererInterface::getResource
+48 (int (*)(...))QSGRendererInterface::getResource
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+
+Class QSGRendererInterface
+ size=8 align=8
+ base size=8 base align=8
+QSGRendererInterface (0x0x7f61bd65da80) 0 nearly-empty
+ vptr=((& QSGRendererInterface::_ZTV20QSGRendererInterface) + 16)
+
+Class QQuickWindow::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickWindow::QPrivateSignal (0x0x7f61bb47d960) 0 empty
+
+Class QQuickWindow::GraphicsStateInfo
+ size=8 align=4
+ base size=8 base align=4
+QQuickWindow::GraphicsStateInfo (0x0x7f61bb47d9c0) 0
+
+Vtable for QQuickWindow
+QQuickWindow::_ZTV12QQuickWindow: 45 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QQuickWindow)
+16 (int (*)(...))QQuickWindow::metaObject
+24 (int (*)(...))QQuickWindow::qt_metacast
+32 (int (*)(...))QQuickWindow::qt_metacall
+40 (int (*)(...))QQuickWindow::~QQuickWindow
+48 (int (*)(...))QQuickWindow::~QQuickWindow
+56 (int (*)(...))QQuickWindow::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWindow::surfaceType
+120 (int (*)(...))QWindow::format
+128 (int (*)(...))QWindow::size
+136 (int (*)(...))QQuickWindow::accessibleRoot
+144 (int (*)(...))QQuickWindow::focusObject
+152 (int (*)(...))QQuickWindow::exposeEvent
+160 (int (*)(...))QQuickWindow::resizeEvent
+168 (int (*)(...))QWindow::moveEvent
+176 (int (*)(...))QQuickWindow::focusInEvent
+184 (int (*)(...))QQuickWindow::focusOutEvent
+192 (int (*)(...))QQuickWindow::showEvent
+200 (int (*)(...))QQuickWindow::hideEvent
+208 (int (*)(...))QQuickWindow::keyPressEvent
+216 (int (*)(...))QQuickWindow::keyReleaseEvent
+224 (int (*)(...))QQuickWindow::mousePressEvent
+232 (int (*)(...))QQuickWindow::mouseReleaseEvent
+240 (int (*)(...))QQuickWindow::mouseDoubleClickEvent
+248 (int (*)(...))QQuickWindow::mouseMoveEvent
+256 (int (*)(...))QQuickWindow::wheelEvent
+264 (int (*)(...))QWindow::touchEvent
+272 (int (*)(...))QWindow::tabletEvent
+280 (int (*)(...))QWindow::nativeEvent
+288 (int (*)(...))QWindow::surfaceHandle
+296 (int (*)(...))-16
+304 (int (*)(...))(& _ZTI12QQuickWindow)
+312 (int (*)(...))QQuickWindow::_ZThn16_N12QQuickWindowD1Ev
+320 (int (*)(...))QQuickWindow::_ZThn16_N12QQuickWindowD0Ev
+328 (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
+336 (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
+344 (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
+352 (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv
+
+Class QQuickWindow
+ size=40 align=8
+ base size=40 base align=8
+QQuickWindow (0x0x7f61bafc00d0) 0
+ vptr=((& QQuickWindow::_ZTV12QQuickWindow) + 16)
+ QWindow (0x0x7f61bc5292a0) 0
+ primary-for QQuickWindow (0x0x7f61bafc00d0)
+ QObject (0x0x7f61bb47d8a0) 0
+ primary-for QWindow (0x0x7f61bc5292a0)
+ QSurface (0x0x7f61bb47d900) 16
+ vptr=((& QQuickWindow::_ZTV12QQuickWindow) + 312)
+
+Class QQuickView::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickView::QPrivateSignal (0x0x7f61b959f4e0) 0 empty
+
+Vtable for QQuickView
+QQuickView::_ZTV10QQuickView: 45 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QQuickView)
+16 (int (*)(...))QQuickView::metaObject
+24 (int (*)(...))QQuickView::qt_metacast
+32 (int (*)(...))QQuickView::qt_metacall
+40 (int (*)(...))QQuickView::~QQuickView
+48 (int (*)(...))QQuickView::~QQuickView
+56 (int (*)(...))QQuickWindow::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QQuickView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWindow::surfaceType
+120 (int (*)(...))QWindow::format
+128 (int (*)(...))QWindow::size
+136 (int (*)(...))QQuickWindow::accessibleRoot
+144 (int (*)(...))QQuickWindow::focusObject
+152 (int (*)(...))QQuickWindow::exposeEvent
+160 (int (*)(...))QQuickView::resizeEvent
+168 (int (*)(...))QWindow::moveEvent
+176 (int (*)(...))QQuickWindow::focusInEvent
+184 (int (*)(...))QQuickWindow::focusOutEvent
+192 (int (*)(...))QQuickWindow::showEvent
+200 (int (*)(...))QQuickWindow::hideEvent
+208 (int (*)(...))QQuickView::keyPressEvent
+216 (int (*)(...))QQuickView::keyReleaseEvent
+224 (int (*)(...))QQuickView::mousePressEvent
+232 (int (*)(...))QQuickView::mouseReleaseEvent
+240 (int (*)(...))QQuickWindow::mouseDoubleClickEvent
+248 (int (*)(...))QQuickView::mouseMoveEvent
+256 (int (*)(...))QQuickWindow::wheelEvent
+264 (int (*)(...))QWindow::touchEvent
+272 (int (*)(...))QWindow::tabletEvent
+280 (int (*)(...))QWindow::nativeEvent
+288 (int (*)(...))QWindow::surfaceHandle
+296 (int (*)(...))-16
+304 (int (*)(...))(& _ZTI10QQuickView)
+312 (int (*)(...))QQuickView::_ZThn16_N10QQuickViewD1Ev
+320 (int (*)(...))QQuickView::_ZThn16_N10QQuickViewD0Ev
+328 (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
+336 (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
+344 (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
+352 (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv
+
+Class QQuickView
+ size=40 align=8
+ base size=40 base align=8
+QQuickView (0x0x7f61bafc0208) 0
+ vptr=((& QQuickView::_ZTV10QQuickView) + 16)
+ QQuickWindow (0x0x7f61bafc0270) 0
+ primary-for QQuickView (0x0x7f61bafc0208)
+ QWindow (0x0x7f61bc5608c0) 0
+ primary-for QQuickWindow (0x0x7f61bafc0270)
+ QObject (0x0x7f61b959f420) 0
+ primary-for QWindow (0x0x7f61bc5608c0)
+ QSurface (0x0x7f61b959f480) 16
+ vptr=((& QQuickView::_ZTV10QQuickView) + 312)
+
+Class QSGAbstractRenderer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSGAbstractRenderer::QPrivateSignal (0x0x7f61b959f8a0) 0 empty
+
+Vtable for QSGAbstractRenderer
+QSGAbstractRenderer::_ZTV19QSGAbstractRenderer: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QSGAbstractRenderer)
+16 (int (*)(...))QSGAbstractRenderer::metaObject
+24 (int (*)(...))QSGAbstractRenderer::qt_metacast
+32 (int (*)(...))QSGAbstractRenderer::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QSGAbstractRenderer
+ size=16 align=8
+ base size=16 base align=8
+QSGAbstractRenderer (0x0x7f61bafc02d8) 0
+ vptr=((& QSGAbstractRenderer::_ZTV19QSGAbstractRenderer) + 16)
+ QObject (0x0x7f61b959f840) 0
+ primary-for QSGAbstractRenderer (0x0x7f61bafc02d8)
+
+Class QSGEngine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSGEngine::QPrivateSignal (0x0x7f61b852c5a0) 0 empty
+
+Vtable for QSGEngine
+QSGEngine::_ZTV9QSGEngine: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QSGEngine)
+16 (int (*)(...))QSGEngine::metaObject
+24 (int (*)(...))QSGEngine::qt_metacast
+32 (int (*)(...))QSGEngine::qt_metacall
+40 (int (*)(...))QSGEngine::~QSGEngine
+48 (int (*)(...))QSGEngine::~QSGEngine
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSGEngine
+ size=16 align=8
+ base size=16 base align=8
+QSGEngine (0x0x7f61bafc04e0) 0
+ vptr=((& QSGEngine::_ZTV9QSGEngine) + 16)
+ QObject (0x0x7f61b852c540) 0
+ primary-for QSGEngine (0x0x7f61bafc04e0)
+
+Class QSGMaterialType
+ size=1 align=1
+ base size=0 base align=1
+QSGMaterialType (0x0x7f61b852cc00) 0 empty
+
+Class QSGMaterialShader::RenderState
+ size=16 align=8
+ base size=16 base align=8
+QSGMaterialShader::RenderState (0x0x7f61b852ccc0) 0
+
+Vtable for QSGMaterialShader
+QSGMaterialShader::_ZTV17QSGMaterialShader: 12 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QSGMaterialShader)
+16 0
+24 0
+32 (int (*)(...))QSGMaterialShader::activate
+40 (int (*)(...))QSGMaterialShader::deactivate
+48 (int (*)(...))QSGMaterialShader::updateState
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))QSGMaterialShader::compile
+72 (int (*)(...))QSGMaterialShader::initialize
+80 (int (*)(...))QSGMaterialShader::vertexShader
+88 (int (*)(...))QSGMaterialShader::fragmentShader
+
+Class QSGMaterialShader
+ size=32 align=8
+ base size=32 base align=8
+QSGMaterialShader (0x0x7f61b852cc60) 0
+ vptr=((& QSGMaterialShader::_ZTV17QSGMaterialShader) + 16)
+
+Class QSGMaterialRhiShader::RenderState
+ size=16 align=8
+ base size=16 base align=8
+QSGMaterialRhiShader::RenderState (0x0x7f61b8294840) 0
+
+Class QSGMaterialRhiShader::GraphicsPipelineState
+ size=36 align=4
+ base size=36 base align=4
+QSGMaterialRhiShader::GraphicsPipelineState (0x0x7f61b82948a0) 0
+
+Vtable for QSGMaterialRhiShader
+QSGMaterialRhiShader::_ZTV20QSGMaterialRhiShader: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QSGMaterialRhiShader)
+16 (int (*)(...))QSGMaterialRhiShader::~QSGMaterialRhiShader
+24 (int (*)(...))QSGMaterialRhiShader::~QSGMaterialRhiShader
+32 (int (*)(...))QSGMaterialShader::activate
+40 (int (*)(...))QSGMaterialShader::deactivate
+48 (int (*)(...))QSGMaterialShader::updateState
+56 (int (*)(...))QSGMaterialRhiShader::attributeNames
+64 (int (*)(...))QSGMaterialShader::compile
+72 (int (*)(...))QSGMaterialShader::initialize
+80 (int (*)(...))QSGMaterialShader::vertexShader
+88 (int (*)(...))QSGMaterialShader::fragmentShader
+96 (int (*)(...))QSGMaterialRhiShader::updateUniformData
+104 (int (*)(...))QSGMaterialRhiShader::updateSampledImage
+112 (int (*)(...))QSGMaterialRhiShader::updateGraphicsPipelineState
+
+Class QSGMaterialRhiShader
+ size=40 align=8
+ base size=40 base align=8
+QSGMaterialRhiShader (0x0x7f61bafc06e8) 0
+ vptr=((& QSGMaterialRhiShader::_ZTV20QSGMaterialRhiShader) + 16)
+ QSGMaterialShader (0x0x7f61b82947e0) 0
+ primary-for QSGMaterialRhiShader (0x0x7f61bafc06e8)
+
+Vtable for QSGMaterial
+QSGMaterial::_ZTV11QSGMaterial: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QSGMaterial)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))QSGMaterial::compare
+
+Class QSGMaterial
+ size=24 align=8
+ base size=24 base align=8
+QSGMaterial (0x0x7f61b81ad960) 0
+ vptr=((& QSGMaterial::_ZTV11QSGMaterial) + 16)
+
+Vtable for QSGFlatColorMaterial
+QSGFlatColorMaterial::_ZTV20QSGFlatColorMaterial: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QSGFlatColorMaterial)
+16 (int (*)(...))QSGFlatColorMaterial::~QSGFlatColorMaterial
+24 (int (*)(...))QSGFlatColorMaterial::~QSGFlatColorMaterial
+32 (int (*)(...))QSGFlatColorMaterial::type
+40 (int (*)(...))QSGFlatColorMaterial::createShader
+48 (int (*)(...))QSGFlatColorMaterial::compare
+
+Class QSGFlatColorMaterial
+ size=40 align=8
+ base size=40 base align=8
+QSGFlatColorMaterial (0x0x7f61bafc0a28) 0
+ vptr=((& QSGFlatColorMaterial::_ZTV20QSGFlatColorMaterial) + 16)
+ QSGMaterial (0x0x7f61b7d57120) 0
+ primary-for QSGFlatColorMaterial (0x0x7f61bafc0a28)
+
+Class QSGTexture::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSGTexture::QPrivateSignal (0x0x7f61b7d57240) 0 empty
+
+Vtable for QSGTexture
+QSGTexture::_ZTV10QSGTexture: 22 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QSGTexture)
+16 (int (*)(...))QSGTexture::metaObject
+24 (int (*)(...))QSGTexture::qt_metacast
+32 (int (*)(...))QSGTexture::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))QSGTexture::normalizedTextureSubRect
+152 (int (*)(...))QSGTexture::isAtlasTexture
+160 (int (*)(...))QSGTexture::removedFromAtlas
+168 (int (*)(...))__cxa_pure_virtual
+
+Class QSGTexture
+ size=16 align=8
+ base size=16 base align=8
+QSGTexture (0x0x7f61bafc0a90) 0
+ vptr=((& QSGTexture::_ZTV10QSGTexture) + 16)
+ QObject (0x0x7f61b7d571e0) 0
+ primary-for QSGTexture (0x0x7f61bafc0a90)
+
+Class QSGDynamicTexture::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSGDynamicTexture::QPrivateSignal (0x0x7f61b7d574e0) 0 empty
+
+Vtable for QSGDynamicTexture
+QSGDynamicTexture::_ZTV17QSGDynamicTexture: 23 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QSGDynamicTexture)
+16 (int (*)(...))QSGDynamicTexture::metaObject
+24 (int (*)(...))QSGDynamicTexture::qt_metacast
+32 (int (*)(...))QSGDynamicTexture::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))QSGTexture::normalizedTextureSubRect
+152 (int (*)(...))QSGTexture::isAtlasTexture
+160 (int (*)(...))QSGTexture::removedFromAtlas
+168 (int (*)(...))__cxa_pure_virtual
+176 (int (*)(...))__cxa_pure_virtual
+
+Class QSGDynamicTexture
+ size=16 align=8
+ base size=16 base align=8
+QSGDynamicTexture (0x0x7f61bafc0af8) 0
+ vptr=((& QSGDynamicTexture::_ZTV17QSGDynamicTexture) + 16)
+ QSGTexture (0x0x7f61bafc0b60) 0
+ primary-for QSGDynamicTexture (0x0x7f61bafc0af8)
+ QObject (0x0x7f61b7d57480) 0
+ primary-for QSGTexture (0x0x7f61bafc0b60)
+
+Vtable for QSGImageNode
+QSGImageNode::_ZTV12QSGImageNode: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QSGImageNode)
+16 0
+24 0
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))__cxa_pure_virtual
+96 (int (*)(...))__cxa_pure_virtual
+104 (int (*)(...))__cxa_pure_virtual
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))__cxa_pure_virtual
+
+Class QSGImageNode
+ size=144 align=8
+ base size=144 base align=8
+QSGImageNode (0x0x7f61bafc0bc8) 0
+ vptr=((& QSGImageNode::_ZTV12QSGImageNode) + 16)
+ QSGGeometryNode (0x0x7f61bafc0c30) 0
+ primary-for QSGImageNode (0x0x7f61bafc0bc8)
+ QSGBasicGeometryNode (0x0x7f61bafc0c98) 0
+ primary-for QSGGeometryNode (0x0x7f61bafc0c30)
+ QSGNode (0x0x7f61b7d57600) 0
+ primary-for QSGBasicGeometryNode (0x0x7f61bafc0c98)
+
+Vtable for QSGNinePatchNode
+QSGNinePatchNode::_ZTV16QSGNinePatchNode: 11 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QSGNinePatchNode)
+16 0
+24 0
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))__cxa_pure_virtual
+
+Class QSGNinePatchNode
+ size=144 align=8
+ base size=144 base align=8
+QSGNinePatchNode (0x0x7f61bafc0dd0) 0
+ vptr=((& QSGNinePatchNode::_ZTV16QSGNinePatchNode) + 16)
+ QSGGeometryNode (0x0x7f61bafc0e38) 0
+ primary-for QSGNinePatchNode (0x0x7f61bafc0dd0)
+ QSGBasicGeometryNode (0x0x7f61bafc0ea0) 0
+ primary-for QSGGeometryNode (0x0x7f61bafc0e38)
+ QSGNode (0x0x7f61b7d57de0) 0
+ primary-for QSGBasicGeometryNode (0x0x7f61bafc0ea0)
+
+Vtable for QSGRectangleNode
+QSGRectangleNode::_ZTV16QSGRectangleNode: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QSGRectangleNode)
+16 0
+24 0
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+
+Class QSGRectangleNode
+ size=144 align=8
+ base size=144 base align=8
+QSGRectangleNode (0x0x7f61bafc0f08) 0
+ vptr=((& QSGRectangleNode::_ZTV16QSGRectangleNode) + 16)
+ QSGGeometryNode (0x0x7f61bafc0f70) 0
+ primary-for QSGRectangleNode (0x0x7f61bafc0f08)
+ QSGBasicGeometryNode (0x0x7f61bba8c000) 0
+ primary-for QSGGeometryNode (0x0x7f61bafc0f70)
+ QSGNode (0x0x7f61b7d57e40) 0
+ primary-for QSGBasicGeometryNode (0x0x7f61bba8c000)
+
+Vtable for QSGRenderNode::RenderState
+QSGRenderNode::RenderState::_ZTVN13QSGRenderNode11RenderStateE: 11 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN13QSGRenderNode11RenderStateE)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))QSGRenderNode::RenderState::get
+
+Class QSGRenderNode::RenderState
+ size=8 align=8
+ base size=8 base align=8
+QSGRenderNode::RenderState (0x0x7f61b7d57f60) 0 nearly-empty
+ vptr=((& QSGRenderNode::RenderState::_ZTVN13QSGRenderNode11RenderStateE) + 16)
+
+Vtable for QSGRenderNode
+QSGRenderNode::_ZTV13QSGRenderNode: 11 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSGRenderNode)
+16 0
+24 0
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+48 (int (*)(...))QSGRenderNode::changedStates
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))QSGRenderNode::releaseResources
+72 (int (*)(...))QSGRenderNode::flags
+80 (int (*)(...))QSGRenderNode::rect
+
+Class QSGRenderNode
+ size=88 align=8
+ base size=88 base align=8
+QSGRenderNode (0x0x7f61bba8c068) 0
+ vptr=((& QSGRenderNode::_ZTV13QSGRenderNode) + 16)
+ QSGNode (0x0x7f61b7d57f00) 0
+ primary-for QSGRenderNode (0x0x7f61bba8c068)
+
+Vtable for QSGSimpleRectNode
+QSGSimpleRectNode::_ZTV17QSGSimpleRectNode: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QSGSimpleRectNode)
+16 (int (*)(...))QSGSimpleRectNode::~QSGSimpleRectNode
+24 (int (*)(...))QSGSimpleRectNode::~QSGSimpleRectNode
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+
+Class QSGSimpleRectNode
+ size=320 align=8
+ base size=320 base align=8
+QSGSimpleRectNode (0x0x7f61bba8c4e0) 0
+ vptr=((& QSGSimpleRectNode::_ZTV17QSGSimpleRectNode) + 16)
+ QSGGeometryNode (0x0x7f61bba8c548) 0
+ primary-for QSGSimpleRectNode (0x0x7f61bba8c4e0)
+ QSGBasicGeometryNode (0x0x7f61bba8c5b0) 0
+ primary-for QSGGeometryNode (0x0x7f61bba8c548)
+ QSGNode (0x0x7f61bf1936c0) 0
+ primary-for QSGBasicGeometryNode (0x0x7f61bba8c5b0)
+
+Vtable for QSGOpaqueTextureMaterial
+QSGOpaqueTextureMaterial::_ZTV24QSGOpaqueTextureMaterial: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QSGOpaqueTextureMaterial)
+16 (int (*)(...))QSGOpaqueTextureMaterial::~QSGOpaqueTextureMaterial
+24 (int (*)(...))QSGOpaqueTextureMaterial::~QSGOpaqueTextureMaterial
+32 (int (*)(...))QSGOpaqueTextureMaterial::type
+40 (int (*)(...))QSGOpaqueTextureMaterial::createShader
+48 (int (*)(...))QSGOpaqueTextureMaterial::compare
+
+Class QSGOpaqueTextureMaterial
+ size=40 align=8
+ base size=36 base align=8
+QSGOpaqueTextureMaterial (0x0x7f61bba8c618) 0
+ vptr=((& QSGOpaqueTextureMaterial::_ZTV24QSGOpaqueTextureMaterial) + 16)
+ QSGMaterial (0x0x7f61bf193780) 0
+ primary-for QSGOpaqueTextureMaterial (0x0x7f61bba8c618)
+
+Vtable for QSGTextureMaterial
+QSGTextureMaterial::_ZTV18QSGTextureMaterial: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QSGTextureMaterial)
+16 (int (*)(...))QSGTextureMaterial::~QSGTextureMaterial
+24 (int (*)(...))QSGTextureMaterial::~QSGTextureMaterial
+32 (int (*)(...))QSGTextureMaterial::type
+40 (int (*)(...))QSGTextureMaterial::createShader
+48 (int (*)(...))QSGOpaqueTextureMaterial::compare
+
+Class QSGTextureMaterial
+ size=40 align=8
+ base size=36 base align=8
+QSGTextureMaterial (0x0x7f61bba8c680) 0
+ vptr=((& QSGTextureMaterial::_ZTV18QSGTextureMaterial) + 16)
+ QSGOpaqueTextureMaterial (0x0x7f61bba8c6e8) 0
+ primary-for QSGTextureMaterial (0x0x7f61bba8c680)
+ QSGMaterial (0x0x7f61bf193c00) 0
+ primary-for QSGOpaqueTextureMaterial (0x0x7f61bba8c6e8)
+
+Vtable for QSGSimpleTextureNode
+QSGSimpleTextureNode::_ZTV20QSGSimpleTextureNode: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QSGSimpleTextureNode)
+16 (int (*)(...))QSGSimpleTextureNode::~QSGSimpleTextureNode
+24 (int (*)(...))QSGSimpleTextureNode::~QSGSimpleTextureNode
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+
+Class QSGSimpleTextureNode
+ size=384 align=8
+ base size=384 base align=8
+QSGSimpleTextureNode (0x0x7f61bba8c750) 0
+ vptr=((& QSGSimpleTextureNode::_ZTV20QSGSimpleTextureNode) + 16)
+ QSGGeometryNode (0x0x7f61bba8c7b8) 0
+ primary-for QSGSimpleTextureNode (0x0x7f61bba8c750)
+ QSGBasicGeometryNode (0x0x7f61bba8c820) 0
+ primary-for QSGGeometryNode (0x0x7f61bba8c7b8)
+ QSGNode (0x0x7f61bf193c60) 0
+ primary-for QSGBasicGeometryNode (0x0x7f61bba8c820)
+
+Class QSGTextureProvider::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSGTextureProvider::QPrivateSignal (0x0x7f61be571600) 0 empty
+
+Vtable for QSGTextureProvider
+QSGTextureProvider::_ZTV18QSGTextureProvider: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QSGTextureProvider)
+16 (int (*)(...))QSGTextureProvider::metaObject
+24 (int (*)(...))QSGTextureProvider::qt_metacast
+32 (int (*)(...))QSGTextureProvider::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QSGTextureProvider
+ size=16 align=8
+ base size=16 base align=8
+QSGTextureProvider (0x0x7f61bba8c9c0) 0
+ vptr=((& QSGTextureProvider::_ZTV18QSGTextureProvider) + 16)
+ QObject (0x0x7f61be5715a0) 0
+ primary-for QSGTextureProvider (0x0x7f61bba8c9c0)
+
+Vtable for QSGVertexColorMaterial
+QSGVertexColorMaterial::_ZTV22QSGVertexColorMaterial: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QSGVertexColorMaterial)
+16 (int (*)(...))QSGVertexColorMaterial::~QSGVertexColorMaterial
+24 (int (*)(...))QSGVertexColorMaterial::~QSGVertexColorMaterial
+32 (int (*)(...))QSGVertexColorMaterial::type
+40 (int (*)(...))QSGVertexColorMaterial::createShader
+48 (int (*)(...))QSGVertexColorMaterial::compare
+
+Class QSGVertexColorMaterial
+ size=24 align=8
+ base size=24 base align=8
+QSGVertexColorMaterial (0x0x7f61bba8ca28) 0
+ vptr=((& QSGVertexColorMaterial::_ZTV22QSGVertexColorMaterial) + 16)
+ QSGMaterial (0x0x7f61be571720) 0
+ primary-for QSGVertexColorMaterial (0x0x7f61bba8ca28)
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f61bb625a20) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f61bb625d80) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f61bb625f60) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f61bb3fd300) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f61bb3fd4e0) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f61bb3fd840) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f61bb3fda20) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f61bb3fdd80) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f61bb3fdf60) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f61bb484300) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7f61bb4844e0) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7f61bb484840) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7f61bb484a20) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7f61bb484d80) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7f61bb484f60) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7f61bb1c0300) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f61bb1f77e0) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f61bb1f7b40) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f61bb1f7cc0) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f61bb33b060) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f61bb33b1e0) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f61bb33b540) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f61bb33b6c0) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f61bb33ba20) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f61bb33bba0) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f61bb33bf00) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7f61baad50c0) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7f61baad5420) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7f61baad55a0) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7f61baad5900) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7f61baad5a80) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7f61baad5de0) 0 empty
+
diff --git a/tests/auto/bic/data/QtQuickTest.5.14.0.linux-gcc-amd64.txt b/tests/auto/bic/data/QtQuickTest.5.14.0.linux-gcc-amd64.txt
new file mode 100644
index 0000000000..3e2d5d78d7
--- /dev/null
+++ b/tests/auto/bic/data/QtQuickTest.5.14.0.linux-gcc-amd64.txt
@@ -0,0 +1,19712 @@
+Class std::__failure_type
+ size=1 align=1
+ base size=0 base align=1
+std::__failure_type (0x0x7f09729820c0) 0 empty
+
+Class std::__do_is_destructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_destructible_impl (0x0x7f09725c8840) 0 empty
+
+Class std::__do_is_nt_destructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_nt_destructible_impl (0x0x7f09725c8a80) 0 empty
+
+Class std::__do_is_default_constructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_default_constructible_impl (0x0x7f09725c8cc0) 0 empty
+
+Class std::__do_is_static_castable_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_static_castable_impl (0x0x7f09725c8f00) 0 empty
+
+Class std::__do_is_direct_constructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_direct_constructible_impl (0x0x7f09725f70c0) 0 empty
+
+Class std::__do_is_nary_constructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_nary_constructible_impl (0x0x7f09725f7480) 0 empty
+
+Class std::__do_is_implicitly_default_constructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_implicitly_default_constructible_impl (0x0x7f09726345a0) 0 empty
+
+Class std::__do_common_type_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_common_type_impl (0x0x7f0972689c60) 0 empty
+
+Class std::__do_member_type_wrapper
+ size=1 align=1
+ base size=0 base align=1
+std::__do_member_type_wrapper (0x0x7f0972689d20) 0 empty
+
+Class std::__invoke_memfun_ref
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_memfun_ref (0x0x7f09726ba120) 0 empty
+
+Class std::__invoke_memfun_deref
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_memfun_deref (0x0x7f09726ba180) 0 empty
+
+Class std::__invoke_memobj_ref
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_memobj_ref (0x0x7f09726ba1e0) 0 empty
+
+Class std::__invoke_memobj_deref
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_memobj_deref (0x0x7f09726ba240) 0 empty
+
+Class std::__invoke_other
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_other (0x0x7f09726ba2a0) 0 empty
+
+Class std::__result_of_memfun_ref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memfun_ref_impl (0x0x7f09726ba360) 0 empty
+
+Class std::__result_of_memfun_deref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memfun_deref_impl (0x0x7f09726ba420) 0 empty
+
+Class std::__result_of_memobj_ref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memobj_ref_impl (0x0x7f09726ba4e0) 0 empty
+
+Class std::__result_of_memobj_deref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memobj_deref_impl (0x0x7f09726ba5a0) 0 empty
+
+Class std::__result_of_other_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_other_impl (0x0x7f09726ba900) 0 empty
+
+Class std::__swappable_details::__do_is_swappable_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__swappable_details::__do_is_swappable_impl (0x0x7f09726bac60) 0 empty
+
+Class std::__swappable_details::__do_is_nothrow_swappable_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__swappable_details::__do_is_nothrow_swappable_impl (0x0x7f09726bacc0) 0 empty
+
+Class std::__nonesuch
+ size=1 align=1
+ base size=0 base align=1
+std::__nonesuch (0x0x7f09727042a0) 0 empty
+
+Class std::piecewise_construct_t
+ size=1 align=1
+ base size=0 base align=1
+std::piecewise_construct_t (0x0x7f0972704900) 0 empty
+
+Class std::__nonesuch_no_braces
+ size=1 align=1
+ base size=1 base align=1
+std::__nonesuch_no_braces (0x0x7f09726c1958) 0 empty
+ std::__nonesuch (0x0x7f0972704de0) 0 empty
+
+Class std::__true_type
+ size=1 align=1
+ base size=0 base align=1
+std::__true_type (0x0x7f0972786780) 0 empty
+
+Class std::__false_type
+ size=1 align=1
+ base size=0 base align=1
+std::__false_type (0x0x7f09727867e0) 0 empty
+
+Class std::input_iterator_tag
+ size=1 align=1
+ base size=0 base align=1
+std::input_iterator_tag (0x0x7f0971fdc4e0) 0 empty
+
+Class std::output_iterator_tag
+ size=1 align=1
+ base size=0 base align=1
+std::output_iterator_tag (0x0x7f0971fdc540) 0 empty
+
+Class std::forward_iterator_tag
+ size=1 align=1
+ base size=1 base align=1
+std::forward_iterator_tag (0x0x7f09726c1e38) 0 empty
+ std::input_iterator_tag (0x0x7f0971fdc5a0) 0 empty
+
+Class std::bidirectional_iterator_tag
+ size=1 align=1
+ base size=1 base align=1
+std::bidirectional_iterator_tag (0x0x7f09726c1ea0) 0 empty
+ std::forward_iterator_tag (0x0x7f09726c1f08) 0 empty
+ std::input_iterator_tag (0x0x7f0971fdc600) 0 empty
+
+Class std::random_access_iterator_tag
+ size=1 align=1
+ base size=1 base align=1
+std::random_access_iterator_tag (0x0x7f09726c1f70) 0 empty
+ std::bidirectional_iterator_tag (0x0x7f0971ff3000) 0 empty
+ std::forward_iterator_tag (0x0x7f0971ff3068) 0 empty
+ std::input_iterator_tag (0x0x7f0971fdc660) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_less_iter
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_less_iter (0x0x7f0972095180) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_less_val
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_less_val (0x0x7f09720952a0) 0 empty
+
+Class __gnu_cxx::__ops::_Val_less_iter
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Val_less_iter (0x0x7f09720955a0) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_equal_to_iter
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_equal_to_iter (0x0x7f09720958a0) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_equal_to_val
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_equal_to_val (0x0x7f09720959c0) 0 empty
+
+Class __locale_struct
+ size=232 align=8
+ base size=232 base align=8
+__locale_struct (0x0x7f0972120cc0) 0
+
+Class timeval
+ size=16 align=8
+ base size=16 base align=8
+timeval (0x0x7f0972164000) 0
+
+Class timespec
+ size=16 align=8
+ base size=16 base align=8
+timespec (0x0x7f0972164060) 0
+
+Class __pthread_rwlock_arch_t
+ size=56 align=8
+ base size=56 base align=8
+__pthread_rwlock_arch_t (0x0x7f0972164120) 0
+
+Class __pthread_internal_list
+ size=16 align=8
+ base size=16 base align=8
+__pthread_internal_list (0x0x7f0972164180) 0
+
+Class __pthread_mutex_s
+ size=40 align=8
+ base size=40 base align=8
+__pthread_mutex_s (0x0x7f09721641e0) 0
+
+Class __pthread_cond_s
+ size=48 align=8
+ base size=48 base align=8
+__pthread_cond_s (0x0x7f0972164240) 0
+
+Class pthread_attr_t
+ size=56 align=8
+ base size=56 base align=8
+pthread_attr_t (0x0x7f09721644e0) 0
+
+Class random_data
+ size=48 align=8
+ base size=48 base align=8
+random_data (0x0x7f0972164780) 0
+
+Class drand48_data
+ size=24 align=8
+ base size=24 base align=8
+drand48_data (0x0x7f09721647e0) 0
+
+Vtable for std::exception
+std::exception::_ZTVSt9exception: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt9exception)
+16 (int (*)(...))std::exception::~exception
+24 (int (*)(...))std::exception::~exception
+32 (int (*)(...))std::exception::what
+
+Class std::exception
+ size=8 align=8
+ base size=8 base align=8
+std::exception (0x0x7f0971e195a0) 0 nearly-empty
+ vptr=((& std::exception::_ZTVSt9exception) + 16)
+
+Vtable for std::bad_exception
+std::bad_exception::_ZTVSt13bad_exception: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt13bad_exception)
+16 (int (*)(...))std::bad_exception::~bad_exception
+24 (int (*)(...))std::bad_exception::~bad_exception
+32 (int (*)(...))std::bad_exception::what
+
+Class std::bad_exception
+ size=8 align=8
+ base size=8 base align=8
+std::bad_exception (0x0x7f0971ff33a8) 0 nearly-empty
+ vptr=((& std::bad_exception::_ZTVSt13bad_exception) + 16)
+ std::exception (0x0x7f0971e19780) 0 nearly-empty
+ primary-for std::bad_exception (0x0x7f0971ff33a8)
+
+Vtable for std::type_info
+std::type_info::_ZTVSt9type_info: 8 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt9type_info)
+16 (int (*)(...))std::type_info::~type_info
+24 (int (*)(...))std::type_info::~type_info
+32 (int (*)(...))std::type_info::__is_pointer_p
+40 (int (*)(...))std::type_info::__is_function_p
+48 (int (*)(...))std::type_info::__do_catch
+56 (int (*)(...))std::type_info::__do_upcast
+
+Class std::type_info
+ size=16 align=8
+ base size=16 base align=8
+std::type_info (0x0x7f0971e19960) 0
+ vptr=((& std::type_info::_ZTVSt9type_info) + 16)
+
+Vtable for std::bad_cast
+std::bad_cast::_ZTVSt8bad_cast: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt8bad_cast)
+16 (int (*)(...))std::bad_cast::~bad_cast
+24 (int (*)(...))std::bad_cast::~bad_cast
+32 (int (*)(...))std::bad_cast::what
+
+Class std::bad_cast
+ size=8 align=8
+ base size=8 base align=8
+std::bad_cast (0x0x7f0971ff3410) 0 nearly-empty
+ vptr=((& std::bad_cast::_ZTVSt8bad_cast) + 16)
+ std::exception (0x0x7f0971e19d20) 0 nearly-empty
+ primary-for std::bad_cast (0x0x7f0971ff3410)
+
+Vtable for std::bad_typeid
+std::bad_typeid::_ZTVSt10bad_typeid: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt10bad_typeid)
+16 (int (*)(...))std::bad_typeid::~bad_typeid
+24 (int (*)(...))std::bad_typeid::~bad_typeid
+32 (int (*)(...))std::bad_typeid::what
+
+Class std::bad_typeid
+ size=8 align=8
+ base size=8 base align=8
+std::bad_typeid (0x0x7f0971ff3478) 0 nearly-empty
+ vptr=((& std::bad_typeid::_ZTVSt10bad_typeid) + 16)
+ std::exception (0x0x7f0971e19f00) 0 nearly-empty
+ primary-for std::bad_typeid (0x0x7f0971ff3478)
+
+Class std::__exception_ptr::exception_ptr
+ size=8 align=8
+ base size=8 base align=8
+std::__exception_ptr::exception_ptr (0x0x7f0971e50120) 0
+
+Vtable for std::nested_exception
+std::nested_exception::_ZTVSt16nested_exception: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt16nested_exception)
+16 (int (*)(...))std::nested_exception::~nested_exception
+24 (int (*)(...))std::nested_exception::~nested_exception
+
+Class std::nested_exception
+ size=16 align=8
+ base size=16 base align=8
+std::nested_exception (0x0x7f0971e506c0) 0
+ vptr=((& std::nested_exception::_ZTVSt16nested_exception) + 16)
+
+Vtable for std::bad_alloc
+std::bad_alloc::_ZTVSt9bad_alloc: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt9bad_alloc)
+16 (int (*)(...))std::bad_alloc::~bad_alloc
+24 (int (*)(...))std::bad_alloc::~bad_alloc
+32 (int (*)(...))std::bad_alloc::what
+
+Class std::bad_alloc
+ size=8 align=8
+ base size=8 base align=8
+std::bad_alloc (0x0x7f0971ff34e0) 0 nearly-empty
+ vptr=((& std::bad_alloc::_ZTVSt9bad_alloc) + 16)
+ std::exception (0x0x7f0971e50d80) 0 nearly-empty
+ primary-for std::bad_alloc (0x0x7f0971ff34e0)
+
+Vtable for std::bad_array_new_length
+std::bad_array_new_length::_ZTVSt20bad_array_new_length: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt20bad_array_new_length)
+16 (int (*)(...))std::bad_array_new_length::~bad_array_new_length
+24 (int (*)(...))std::bad_array_new_length::~bad_array_new_length
+32 (int (*)(...))std::bad_array_new_length::what
+
+Class std::bad_array_new_length
+ size=8 align=8
+ base size=8 base align=8
+std::bad_array_new_length (0x0x7f0971ff3548) 0 nearly-empty
+ vptr=((& std::bad_array_new_length::_ZTVSt20bad_array_new_length) + 16)
+ std::bad_alloc (0x0x7f0971ff35b0) 0 nearly-empty
+ primary-for std::bad_array_new_length (0x0x7f0971ff3548)
+ std::exception (0x0x7f0971e50f60) 0 nearly-empty
+ primary-for std::bad_alloc (0x0x7f0971ff35b0)
+
+Class std::nothrow_t
+ size=1 align=1
+ base size=0 base align=1
+std::nothrow_t (0x0x7f0971e84180) 0 empty
+
+Class std::__allocator_traits_base
+ size=1 align=1
+ base size=0 base align=1
+std::__allocator_traits_base (0x0x7f0971e84360) 0 empty
+
+Class std::__numeric_limits_base
+ size=1 align=1
+ base size=0 base align=1
+std::__numeric_limits_base (0x0x7f0971ef9840) 0 empty
+
+Class QSysInfo
+ size=1 align=1
+ base size=0 base align=1
+QSysInfo (0x0x7f0971b71d80) 0 empty
+
+Class QMessageLogContext
+ size=32 align=8
+ base size=32 base align=8
+QMessageLogContext (0x0x7f0971b71ea0) 0
+
+Class QMessageLogger
+ size=32 align=8
+ base size=32 base align=8
+QMessageLogger (0x0x7f09717a50c0) 0
+
+Class QFlag
+ size=4 align=4
+ base size=4 base align=4
+QFlag (0x0x7f09717a5780) 0
+
+Class QIncompatibleFlag
+ size=4 align=4
+ base size=4 base align=4
+QIncompatibleFlag (0x0x7f09717eef00) 0
+
+Class std::__atomic_flag_base
+ size=1 align=1
+ base size=1 base align=1
+std::__atomic_flag_base (0x0x7f09718a0420) 0
+
+Class std::atomic_flag
+ size=1 align=1
+ base size=1 base align=1
+std::atomic_flag (0x0x7f0971841410) 0
+ std::__atomic_flag_base (0x0x7f09718a0480) 0
+
+Class QAtomicInt
+ size=4 align=4
+ base size=4 base align=4
+QAtomicInt (0x0x7f0971841b60) 0
+ QAtomicInteger<int> (0x0x7f0971841bc8) 0
+ QBasicAtomicInteger<int> (0x0x7f09713d56c0) 0
+
+Class QInternal
+ size=1 align=1
+ base size=0 base align=1
+QInternal (0x0x7f097102c240) 0 empty
+
+Class QtPrivate::QSlotObjectBase
+ size=16 align=8
+ base size=16 base align=8
+QtPrivate::QSlotObjectBase (0x0x7f097106d7e0) 0
+
+Class QGenericArgument
+ size=16 align=8
+ base size=16 base align=8
+QGenericArgument (0x0x7f097106df00) 0
+
+Class QGenericReturnArgument
+ size=16 align=8
+ base size=16 base align=8
+QGenericReturnArgument (0x0x7f097133b820) 0
+ QGenericArgument (0x0x7f09710ae1e0) 0
+
+Class QMetaObject::SuperData
+ size=8 align=8
+ base size=8 base align=8
+QMetaObject::SuperData (0x0x7f09710ae660) 0
+
+Class QMetaObject
+ size=48 align=8
+ base size=48 base align=8
+QMetaObject (0x0x7f09710ae600) 0
+
+Class QMetaObject::Connection
+ size=8 align=8
+ base size=8 base align=8
+QMetaObject::Connection (0x0x7f09710aef00) 0
+
+Class QLatin1Char
+ size=1 align=1
+ base size=1 base align=1
+QLatin1Char (0x0x7f097115fa20) 0
+
+Class QChar
+ size=2 align=2
+ base size=2 base align=2
+QChar (0x0x7f0971183180) 0
+
+Class QtPrivate::RefCount
+ size=4 align=4
+ base size=4 base align=4
+QtPrivate::RefCount (0x0x7f0970e34f60) 0
+
+Class QArrayData
+ size=24 align=8
+ base size=24 base align=8
+QArrayData (0x0x7f0970e55300) 0
+
+Class QtPrivate::QContainerImplHelper
+ size=1 align=1
+ base size=0 base align=1
+QtPrivate::QContainerImplHelper (0x0x7f0970ebd600) 0 empty
+
+Class lconv
+ size=96 align=8
+ base size=96 base align=8
+lconv (0x0x7f0970f67e40) 0
+
+Vtable for __cxxabiv1::__forced_unwind
+__cxxabiv1::__forced_unwind::_ZTVN10__cxxabiv115__forced_unwindE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN10__cxxabiv115__forced_unwindE)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class __cxxabiv1::__forced_unwind
+ size=8 align=8
+ base size=8 base align=8
+__cxxabiv1::__forced_unwind (0x0x7f0970f67f00) 0 nearly-empty
+ vptr=((& __cxxabiv1::__forced_unwind::_ZTVN10__cxxabiv115__forced_unwindE) + 16)
+
+Class sched_param
+ size=4 align=4
+ base size=4 base align=4
+sched_param (0x0x7f0970c61060) 0
+
+Class timex
+ size=208 align=8
+ base size=208 base align=8
+timex (0x0x7f0970c61120) 0
+
+Class tm
+ size=56 align=8
+ base size=56 base align=8
+tm (0x0x7f0970c61180) 0
+
+Class itimerspec
+ size=32 align=8
+ base size=32 base align=8
+itimerspec (0x0x7f0970c611e0) 0
+
+Class _pthread_cleanup_buffer
+ size=32 align=8
+ base size=32 base align=8
+_pthread_cleanup_buffer (0x0x7f0970c61240) 0
+
+Class __pthread_cleanup_frame
+ size=24 align=8
+ base size=24 base align=8
+__pthread_cleanup_frame (0x0x7f0970c61360) 0
+
+Class __pthread_cleanup_class
+ size=24 align=8
+ base size=24 base align=8
+__pthread_cleanup_class (0x0x7f0970c613c0) 0
+
+Class _IO_marker
+ size=24 align=8
+ base size=24 base align=8
+_IO_marker (0x0x7f09709a0360) 0
+
+Class _IO_FILE
+ size=216 align=8
+ base size=216 base align=8
+_IO_FILE (0x0x7f09709a03c0) 0
+
+Class std::_Hash_impl
+ size=1 align=1
+ base size=0 base align=1
+std::_Hash_impl (0x0x7f0970b55420) 0 empty
+
+Class std::_Fnv_hash_impl
+ size=1 align=1
+ base size=0 base align=1
+std::_Fnv_hash_impl (0x0x7f0970b555a0) 0 empty
+
+Class std::locale
+ size=8 align=8
+ base size=8 base align=8
+std::locale (0x0x7f09708cf720) 0
+
+Vtable for std::locale::facet
+std::locale::facet::_ZTVNSt6locale5facetE: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt6locale5facetE)
+16 (int (*)(...))std::locale::facet::~facet
+24 (int (*)(...))std::locale::facet::~facet
+
+Class std::locale::facet
+ size=16 align=8
+ base size=12 base align=8
+std::locale::facet (0x0x7f09708cfae0) 0
+ vptr=((& std::locale::facet::_ZTVNSt6locale5facetE) + 16)
+
+Class std::locale::id
+ size=8 align=8
+ base size=8 base align=8
+std::locale::id (0x0x7f09708cfd80) 0
+
+Class std::locale::_Impl
+ size=40 align=8
+ base size=40 base align=8
+std::locale::_Impl (0x0x7f09708cff60) 0
+
+Class std::__cow_string
+ size=8 align=8
+ base size=8 base align=8
+std::__cow_string (0x0x7f0970928f60) 0
+
+Vtable for std::logic_error
+std::logic_error::_ZTVSt11logic_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt11logic_error)
+16 (int (*)(...))std::logic_error::~logic_error
+24 (int (*)(...))std::logic_error::~logic_error
+32 (int (*)(...))std::logic_error::what
+
+Class std::logic_error
+ size=16 align=8
+ base size=16 base align=8
+std::logic_error (0x0x7f0970806888) 0
+ vptr=((& std::logic_error::_ZTVSt11logic_error) + 16)
+ std::exception (0x0x7f0970973060) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f0970806888)
+
+Vtable for std::domain_error
+std::domain_error::_ZTVSt12domain_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12domain_error)
+16 (int (*)(...))std::domain_error::~domain_error
+24 (int (*)(...))std::domain_error::~domain_error
+32 (int (*)(...))std::logic_error::what
+
+Class std::domain_error
+ size=16 align=8
+ base size=16 base align=8
+std::domain_error (0x0x7f09708068f0) 0
+ vptr=((& std::domain_error::_ZTVSt12domain_error) + 16)
+ std::logic_error (0x0x7f0970806958) 0
+ primary-for std::domain_error (0x0x7f09708068f0)
+ std::exception (0x0x7f09709730c0) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f0970806958)
+
+Vtable for std::invalid_argument
+std::invalid_argument::_ZTVSt16invalid_argument: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt16invalid_argument)
+16 (int (*)(...))std::invalid_argument::~invalid_argument
+24 (int (*)(...))std::invalid_argument::~invalid_argument
+32 (int (*)(...))std::logic_error::what
+
+Class std::invalid_argument
+ size=16 align=8
+ base size=16 base align=8
+std::invalid_argument (0x0x7f09708069c0) 0
+ vptr=((& std::invalid_argument::_ZTVSt16invalid_argument) + 16)
+ std::logic_error (0x0x7f0970806a28) 0
+ primary-for std::invalid_argument (0x0x7f09708069c0)
+ std::exception (0x0x7f0970973120) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f0970806a28)
+
+Vtable for std::length_error
+std::length_error::_ZTVSt12length_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12length_error)
+16 (int (*)(...))std::length_error::~length_error
+24 (int (*)(...))std::length_error::~length_error
+32 (int (*)(...))std::logic_error::what
+
+Class std::length_error
+ size=16 align=8
+ base size=16 base align=8
+std::length_error (0x0x7f0970806a90) 0
+ vptr=((& std::length_error::_ZTVSt12length_error) + 16)
+ std::logic_error (0x0x7f0970806af8) 0
+ primary-for std::length_error (0x0x7f0970806a90)
+ std::exception (0x0x7f0970973180) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f0970806af8)
+
+Vtable for std::out_of_range
+std::out_of_range::_ZTVSt12out_of_range: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12out_of_range)
+16 (int (*)(...))std::out_of_range::~out_of_range
+24 (int (*)(...))std::out_of_range::~out_of_range
+32 (int (*)(...))std::logic_error::what
+
+Class std::out_of_range
+ size=16 align=8
+ base size=16 base align=8
+std::out_of_range (0x0x7f0970806b60) 0
+ vptr=((& std::out_of_range::_ZTVSt12out_of_range) + 16)
+ std::logic_error (0x0x7f0970806bc8) 0
+ primary-for std::out_of_range (0x0x7f0970806b60)
+ std::exception (0x0x7f09709731e0) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f0970806bc8)
+
+Vtable for std::runtime_error
+std::runtime_error::_ZTVSt13runtime_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt13runtime_error)
+16 (int (*)(...))std::runtime_error::~runtime_error
+24 (int (*)(...))std::runtime_error::~runtime_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::runtime_error
+ size=16 align=8
+ base size=16 base align=8
+std::runtime_error (0x0x7f0970806c30) 0
+ vptr=((& std::runtime_error::_ZTVSt13runtime_error) + 16)
+ std::exception (0x0x7f0970973240) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f0970806c30)
+
+Vtable for std::range_error
+std::range_error::_ZTVSt11range_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt11range_error)
+16 (int (*)(...))std::range_error::~range_error
+24 (int (*)(...))std::range_error::~range_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::range_error
+ size=16 align=8
+ base size=16 base align=8
+std::range_error (0x0x7f0970806c98) 0
+ vptr=((& std::range_error::_ZTVSt11range_error) + 16)
+ std::runtime_error (0x0x7f0970806d00) 0
+ primary-for std::range_error (0x0x7f0970806c98)
+ std::exception (0x0x7f09709732a0) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f0970806d00)
+
+Vtable for std::overflow_error
+std::overflow_error::_ZTVSt14overflow_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt14overflow_error)
+16 (int (*)(...))std::overflow_error::~overflow_error
+24 (int (*)(...))std::overflow_error::~overflow_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::overflow_error
+ size=16 align=8
+ base size=16 base align=8
+std::overflow_error (0x0x7f0970806d68) 0
+ vptr=((& std::overflow_error::_ZTVSt14overflow_error) + 16)
+ std::runtime_error (0x0x7f0970806dd0) 0
+ primary-for std::overflow_error (0x0x7f0970806d68)
+ std::exception (0x0x7f0970973300) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f0970806dd0)
+
+Vtable for std::underflow_error
+std::underflow_error::_ZTVSt15underflow_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt15underflow_error)
+16 (int (*)(...))std::underflow_error::~underflow_error
+24 (int (*)(...))std::underflow_error::~underflow_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::underflow_error
+ size=16 align=8
+ base size=16 base align=8
+std::underflow_error (0x0x7f0970806e38) 0
+ vptr=((& std::underflow_error::_ZTVSt15underflow_error) + 16)
+ std::runtime_error (0x0x7f0970806ea0) 0
+ primary-for std::underflow_error (0x0x7f0970806e38)
+ std::exception (0x0x7f0970973360) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f0970806ea0)
+
+Vtable for std::_V2::error_category
+std::_V2::error_category::_ZTVNSt3_V214error_categoryE: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt3_V214error_categoryE)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))std::_V2::error_category::_M_message
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))std::_V2::error_category::default_error_condition
+64 (int (*)(...))std::_V2::error_category::equivalent
+72 (int (*)(...))std::_V2::error_category::equivalent
+
+Class std::_V2::error_category
+ size=8 align=8
+ base size=8 base align=8
+std::_V2::error_category (0x0x7f09709734e0) 0 nearly-empty
+ vptr=((& std::_V2::error_category::_ZTVNSt3_V214error_categoryE) + 16)
+
+Class std::error_code
+ size=16 align=8
+ base size=16 base align=8
+std::error_code (0x0x7f0970973840) 0
+
+Class std::error_condition
+ size=16 align=8
+ base size=16 base align=8
+std::error_condition (0x0x7f09705c30c0) 0
+
+Vtable for std::system_error
+std::system_error::_ZTVSt12system_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12system_error)
+16 (int (*)(...))std::system_error::~system_error
+24 (int (*)(...))std::system_error::~system_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::system_error
+ size=32 align=8
+ base size=32 base align=8
+std::system_error (0x0x7f09705c0208) 0
+ vptr=((& std::system_error::_ZTVSt12system_error) + 16)
+ std::runtime_error (0x0x7f09705c0270) 0
+ primary-for std::system_error (0x0x7f09705c0208)
+ std::exception (0x0x7f09705c3c60) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f09705c0270)
+
+Vtable for std::ios_base::failure
+std::ios_base::failure::_ZTVNSt8ios_base7failureB5cxx11E: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt8ios_base7failureB5cxx11E)
+16 (int (*)(...))std::ios_base::failure::~failure
+24 (int (*)(...))std::ios_base::failure::~failure
+32 (int (*)(...))std::ios_base::failure::what
+
+Class std::ios_base::failure
+ size=32 align=8
+ base size=32 base align=8
+std::ios_base::failure (0x0x7f09705c04e0) 0
+ vptr=((& std::ios_base::failure::_ZTVNSt8ios_base7failureB5cxx11E) + 16)
+ std::system_error (0x0x7f09705c0548) 0
+ primary-for std::ios_base::failure (0x0x7f09705c04e0)
+ std::runtime_error (0x0x7f09705c05b0) 0
+ primary-for std::system_error (0x0x7f09705c0548)
+ std::exception (0x0x7f097061e240) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f09705c05b0)
+
+Class std::ios_base::_Callback_list
+ size=24 align=8
+ base size=24 base align=8
+std::ios_base::_Callback_list (0x0x7f097061e2a0) 0
+
+Class std::ios_base::_Words
+ size=16 align=8
+ base size=16 base align=8
+std::ios_base::_Words (0x0x7f097061e300) 0
+
+Class std::ios_base::Init
+ size=1 align=1
+ base size=0 base align=1
+std::ios_base::Init (0x0x7f097061e360) 0 empty
+
+Vtable for std::ios_base
+std::ios_base::_ZTVSt8ios_base: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt8ios_base)
+16 (int (*)(...))std::ios_base::~ios_base
+24 (int (*)(...))std::ios_base::~ios_base
+
+Class std::ios_base
+ size=216 align=8
+ base size=216 base align=8
+std::ios_base (0x0x7f097061e1e0) 0
+ vptr=((& std::ios_base::_ZTVSt8ios_base) + 16)
+
+Class std::ctype_base
+ size=1 align=1
+ base size=0 base align=1
+std::ctype_base (0x0x7f09706ecc60) 0 empty
+
+Class std::__num_base
+ size=1 align=1
+ base size=0 base align=1
+std::__num_base (0x0x7f0970397e40) 0 empty
+
+VTT for std::basic_ostream<char>
+std::basic_ostream<char>::_ZTTSo: 2 entries
+0 ((& std::basic_ostream<char>::_ZTVSo) + 24)
+8 ((& std::basic_ostream<char>::_ZTVSo) + 64)
+
+VTT for std::basic_ostream<wchar_t>
+std::basic_ostream<wchar_t>::_ZTTSt13basic_ostreamIwSt11char_traitsIwEE: 2 entries
+0 ((& std::basic_ostream<wchar_t>::_ZTVSt13basic_ostreamIwSt11char_traitsIwEE) + 24)
+8 ((& std::basic_ostream<wchar_t>::_ZTVSt13basic_ostreamIwSt11char_traitsIwEE) + 64)
+
+VTT for std::basic_istream<char>
+std::basic_istream<char>::_ZTTSi: 2 entries
+0 ((& std::basic_istream<char>::_ZTVSi) + 24)
+8 ((& std::basic_istream<char>::_ZTVSi) + 64)
+
+VTT for std::basic_istream<wchar_t>
+std::basic_istream<wchar_t>::_ZTTSt13basic_istreamIwSt11char_traitsIwEE: 2 entries
+0 ((& std::basic_istream<wchar_t>::_ZTVSt13basic_istreamIwSt11char_traitsIwEE) + 24)
+8 ((& std::basic_istream<wchar_t>::_ZTVSt13basic_istreamIwSt11char_traitsIwEE) + 64)
+
+Construction vtable for std::basic_istream<char> (0x0x7f0970358c98 instance) in std::basic_iostream<char>
+std::basic_iostream<char>::_ZTCSd0_Si: 10 entries
+0 24
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISi)
+24 0
+32 0
+40 18446744073709551592
+48 (int (*)(...))-24
+56 (int (*)(...))(& _ZTISi)
+64 0
+72 0
+
+Construction vtable for std::basic_ostream<char> (0x0x7f0970358d68 instance) in std::basic_iostream<char>
+std::basic_iostream<char>::_ZTCSd16_So: 10 entries
+0 8
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISo)
+24 0
+32 0
+40 18446744073709551608
+48 (int (*)(...))-8
+56 (int (*)(...))(& _ZTISo)
+64 0
+72 0
+
+VTT for std::basic_iostream<char>
+std::basic_iostream<char>::_ZTTSd: 7 entries
+0 ((& std::basic_iostream<char>::_ZTVSd) + 24)
+8 ((& std::basic_iostream<char>::_ZTCSd0_Si) + 24)
+16 ((& std::basic_iostream<char>::_ZTCSd0_Si) + 64)
+24 ((& std::basic_iostream<char>::_ZTCSd16_So) + 24)
+32 ((& std::basic_iostream<char>::_ZTCSd16_So) + 64)
+40 ((& std::basic_iostream<char>::_ZTVSd) + 104)
+48 ((& std::basic_iostream<char>::_ZTVSd) + 64)
+
+Construction vtable for std::basic_istream<wchar_t> (0x0x7f096ff9ca28 instance) in std::basic_iostream<wchar_t>
+std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E: 10 entries
+0 24
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISt13basic_istreamIwSt11char_traitsIwEE)
+24 0
+32 0
+40 18446744073709551592
+48 (int (*)(...))-24
+56 (int (*)(...))(& _ZTISt13basic_istreamIwSt11char_traitsIwEE)
+64 0
+72 0
+
+Construction vtable for std::basic_ostream<wchar_t> (0x0x7f096ff9caf8 instance) in std::basic_iostream<wchar_t>
+std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E: 10 entries
+0 8
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISt13basic_ostreamIwSt11char_traitsIwEE)
+24 0
+32 0
+40 18446744073709551608
+48 (int (*)(...))-8
+56 (int (*)(...))(& _ZTISt13basic_ostreamIwSt11char_traitsIwEE)
+64 0
+72 0
+
+VTT for std::basic_iostream<wchar_t>
+std::basic_iostream<wchar_t>::_ZTTSt14basic_iostreamIwSt11char_traitsIwEE: 7 entries
+0 ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 24)
+8 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E) + 24)
+16 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E) + 64)
+24 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E) + 24)
+32 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E) + 64)
+40 ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 104)
+48 ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 64)
+
+Class QByteArrayDataPtr
+ size=8 align=8
+ base size=8 base align=8
+QByteArrayDataPtr (0x0x7f096ffd27e0) 0
+
+Class QByteArray
+ size=8 align=8
+ base size=8 base align=8
+QByteArray (0x0x7f096ffd2840) 0
+
+Class QByteRef
+ size=16 align=8
+ base size=12 base align=8
+QByteRef (0x0x7f09700fdc00) 0
+
+Class QStringDataPtr
+ size=8 align=8
+ base size=8 base align=8
+QStringDataPtr (0x0x7f096fda2a80) 0
+
+Class QStringView
+ size=16 align=8
+ base size=16 base align=8
+QStringView (0x0x7f096fda2f00) 0
+
+Class QLatin1String
+ size=16 align=8
+ base size=16 base align=8
+QLatin1String (0x0x7f096fea2000) 0
+
+Class QString::Null
+ size=1 align=1
+ base size=0 base align=1
+QString::Null (0x0x7f096ff38f60) 0 empty
+
+Class QString
+ size=8 align=8
+ base size=8 base align=8
+QString (0x0x7f096ff38e40) 0
+
+Class QCharRef
+ size=16 align=8
+ base size=12 base align=8
+QCharRef (0x0x7f096f9f6de0) 0
+
+Class QStringRef
+ size=16 align=8
+ base size=16 base align=8
+QStringRef (0x0x7f096f78f9c0) 0
+
+Class QtPrivate::ArgBase
+ size=1 align=1
+ base size=1 base align=1
+QtPrivate::ArgBase (0x0x7f096f9167e0) 0
+
+Class QtPrivate::QStringViewArg
+ size=24 align=8
+ base size=24 base align=8
+QtPrivate::QStringViewArg (0x0x7f096f82f958) 0
+ QtPrivate::ArgBase (0x0x7f096f916840) 0
+
+Class QtPrivate::QLatin1StringArg
+ size=24 align=8
+ base size=24 base align=8
+QtPrivate::QLatin1StringArg (0x0x7f096f82f9c0) 0
+ QtPrivate::ArgBase (0x0x7f096f916a20) 0
+
+Class std::__erased_type
+ size=1 align=1
+ base size=0 base align=1
+std::__erased_type (0x0x7f096f5eb960) 0 empty
+
+Class std::allocator_arg_t
+ size=1 align=1
+ base size=0 base align=1
+std::allocator_arg_t (0x0x7f096f5eb9c0) 0 empty
+
+Class std::__uses_alloc_base
+ size=1 align=1
+ base size=0 base align=1
+std::__uses_alloc_base (0x0x7f096f5ebb40) 0 empty
+
+Class std::__uses_alloc0::_Sink
+ size=1 align=1
+ base size=0 base align=1
+std::__uses_alloc0::_Sink (0x0x7f096f5ebc00) 0 empty
+
+Class std::__uses_alloc0
+ size=1 align=1
+ base size=1 base align=1
+std::__uses_alloc0 (0x0x7f096f82fd68) 0
+ std::__uses_alloc_base (0x0x7f096f5ebba0) 0 empty
+
+Class std::_Swallow_assign
+ size=1 align=1
+ base size=0 base align=1
+std::_Swallow_assign (0x0x7f096f746f60) 0 empty
+
+Vtable for std::bad_function_call
+std::bad_function_call::_ZTVSt17bad_function_call: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt17bad_function_call)
+16 (int (*)(...))std::bad_function_call::~bad_function_call
+24 (int (*)(...))std::bad_function_call::~bad_function_call
+32 (int (*)(...))std::bad_function_call::what
+
+Class std::bad_function_call
+ size=8 align=8
+ base size=8 base align=8
+std::bad_function_call (0x0x7f096f3dd000) 0 nearly-empty
+ vptr=((& std::bad_function_call::_ZTVSt17bad_function_call) + 16)
+ std::exception (0x0x7f096f3bf8a0) 0 nearly-empty
+ primary-for std::bad_function_call (0x0x7f096f3dd000)
+
+Class std::_Nocopy_types
+ size=16 align=8
+ base size=16 base align=8
+std::_Nocopy_types (0x0x7f096f3bf960) 0
+
+Class std::_Any_data
+ size=16 align=8
+ base size=16 base align=8
+std::_Any_data (0x0x7f096f3bf9c0) 0
+
+Class std::_Function_base
+ size=24 align=8
+ base size=24 base align=8
+std::_Function_base (0x0x7f096f3bfcc0) 0
+
+Class QtPrivate::QHashCombine
+ size=1 align=1
+ base size=0 base align=1
+QtPrivate::QHashCombine (0x0x7f096f1f1180) 0 empty
+
+Class QtPrivate::QHashCombineCommutative
+ size=1 align=1
+ base size=0 base align=1
+QtPrivate::QHashCombineCommutative (0x0x7f096f1f1240) 0 empty
+
+Class std::_Bit_reference
+ size=16 align=8
+ base size=16 base align=8
+std::_Bit_reference (0x0x7f096f2f6960) 0
+
+Class std::_Bit_iterator_base
+ size=16 align=8
+ base size=12 base align=8
+std::_Bit_iterator_base (0x0x7f096f221b60) 0
+ std::iterator<std::random_access_iterator_tag, bool> (0x0x7f096f3180c0) 0 empty
+
+Class std::_Bit_iterator
+ size=16 align=8
+ base size=12 base align=8
+std::_Bit_iterator (0x0x7f096f221c98) 0
+ std::_Bit_iterator_base (0x0x7f096f221d00) 0
+ std::iterator<std::random_access_iterator_tag, bool> (0x0x7f096f318720) 0 empty
+
+Class std::_Bit_const_iterator
+ size=16 align=8
+ base size=12 base align=8
+std::_Bit_const_iterator (0x0x7f096f221d68) 0
+ std::_Bit_iterator_base (0x0x7f096f221dd0) 0
+ std::iterator<std::random_access_iterator_tag, bool> (0x0x7f096f318f00) 0 empty
+
+Class std::__detail::_List_node_base
+ size=16 align=8
+ base size=16 base align=8
+std::__detail::_List_node_base (0x0x7f096f16ba80) 0
+
+Class QListData::NotArrayCompatibleLayout
+ size=1 align=1
+ base size=0 base align=1
+QListData::NotArrayCompatibleLayout (0x0x7f096ee42840) 0 empty
+
+Class QListData::NotIndirectLayout
+ size=1 align=1
+ base size=0 base align=1
+QListData::NotIndirectLayout (0x0x7f096ee428a0) 0 empty
+
+Class QListData::ArrayCompatibleLayout
+ size=1 align=1
+ base size=1 base align=1
+QListData::ArrayCompatibleLayout (0x0x7f096efbb9c0) 0 empty
+ QListData::NotIndirectLayout (0x0x7f096ee42900) 0 empty
+
+Class QListData::InlineWithPaddingLayout
+ size=1 align=1
+ base size=1 base align=1
+QListData::InlineWithPaddingLayout (0x0x7f096eda28c0) 0 empty
+ QListData::NotArrayCompatibleLayout (0x0x7f096ee42960) 0 empty
+ QListData::NotIndirectLayout (0x0x7f096ee429c0) 0 empty
+
+Class QListData::IndirectLayout
+ size=1 align=1
+ base size=1 base align=1
+QListData::IndirectLayout (0x0x7f096efbba28) 0 empty
+ QListData::NotArrayCompatibleLayout (0x0x7f096ee42a20) 0 empty
+
+Class QListData::Data
+ size=24 align=8
+ base size=24 base align=8
+QListData::Data (0x0x7f096ee42a80) 0
+
+Class QListData
+ size=8 align=8
+ base size=8 base align=8
+QListData (0x0x7f096ee427e0) 0
+
+Class QRegExp
+ size=8 align=8
+ base size=8 base align=8
+QRegExp (0x0x7f096ef35c00) 0
+
+Class QStringMatcher::Data
+ size=272 align=8
+ base size=272 base align=8
+QStringMatcher::Data (0x0x7f096ec2b180) 0
+
+Class QStringMatcher
+ size=1048 align=8
+ base size=1048 base align=8
+QStringMatcher (0x0x7f096ec2b120) 0
+
+Class QStringList
+ size=8 align=8
+ base size=8 base align=8
+QStringList (0x0x7f096ec23618) 0
+ QList<QString> (0x0x7f096ec23680) 0
+ QListSpecialMethods<QString> (0x0x7f096ec2b3c0) 0 empty
+
+Class QScopedPointerPodDeleter
+ size=1 align=1
+ base size=0 base align=1
+QScopedPointerPodDeleter (0x0x7f096ed0d300) 0 empty
+
+Class std::_Rb_tree_node_base
+ size=32 align=8
+ base size=32 base align=8
+std::_Rb_tree_node_base (0x0x7f096e996540) 0
+
+Class std::_Rb_tree_header
+ size=40 align=8
+ base size=40 base align=8
+std::_Rb_tree_header (0x0x7f096e9968a0) 0
+
+Class QtPrivate::AbstractDebugStreamFunction
+ size=16 align=8
+ base size=16 base align=8
+QtPrivate::AbstractDebugStreamFunction (0x0x7f096e7e0ea0) 0
+
+Class QtPrivate::AbstractComparatorFunction
+ size=24 align=8
+ base size=24 base align=8
+QtPrivate::AbstractComparatorFunction (0x0x7f096e7fc240) 0
+
+Class QtPrivate::AbstractConverterFunction
+ size=8 align=8
+ base size=8 base align=8
+QtPrivate::AbstractConverterFunction (0x0x7f096e7fc780) 0
+
+Class QMetaType
+ size=80 align=8
+ base size=80 base align=8
+QMetaType (0x0x7f096e7fccc0) 0
+
+Class QtMetaTypePrivate::VariantData
+ size=24 align=8
+ base size=20 base align=8
+QtMetaTypePrivate::VariantData (0x0x7f096e84cea0) 0
+
+Class QtMetaTypePrivate::VectorBoolElements
+ size=1 align=1
+ base size=0 base align=1
+QtMetaTypePrivate::VectorBoolElements (0x0x7f096e8865a0) 0 empty
+
+Class QtMetaTypePrivate::QSequentialIterableImpl
+ size=104 align=8
+ base size=104 base align=8
+QtMetaTypePrivate::QSequentialIterableImpl (0x0x7f096e91f420) 0
+
+Class QtMetaTypePrivate::QAssociativeIterableImpl
+ size=112 align=8
+ base size=112 base align=8
+QtMetaTypePrivate::QAssociativeIterableImpl (0x0x7f096e976ae0) 0
+
+Class QtMetaTypePrivate::QPairVariantInterfaceImpl
+ size=40 align=8
+ base size=40 base align=8
+QtMetaTypePrivate::QPairVariantInterfaceImpl (0x0x7f096e5ee060) 0
+
+Class std::chrono::_V2::system_clock
+ size=1 align=1
+ base size=0 base align=1
+std::chrono::_V2::system_clock (0x0x7f096e493600) 0 empty
+
+Class std::chrono::_V2::steady_clock
+ size=1 align=1
+ base size=0 base align=1
+std::chrono::_V2::steady_clock (0x0x7f096e1c40c0) 0 empty
+
+Vtable for QObjectData
+QObjectData::_ZTV11QObjectData: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QObjectData)
+16 (int (*)(...))__cxa_pure_virtual
+24 (int (*)(...))__cxa_pure_virtual
+
+Class QObjectData
+ size=48 align=8
+ base size=48 base align=8
+QObjectData (0x0x7f096e1c4120) 0
+ vptr=((& QObjectData::_ZTV11QObjectData) + 16)
+
+Class QObject::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QObject::QPrivateSignal (0x0x7f096e1c4300) 0 empty
+
+Vtable for QObject
+QObject::_ZTV7QObject: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QObject)
+16 (int (*)(...))QObject::metaObject
+24 (int (*)(...))QObject::qt_metacast
+32 (int (*)(...))QObject::qt_metacall
+40 (int (*)(...))QObject::~QObject
+48 (int (*)(...))QObject::~QObject
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QObject
+ size=16 align=8
+ base size=16 base align=8
+QObject (0x0x7f096e1c42a0) 0
+ vptr=((& QObject::_ZTV7QObject) + 16)
+
+Vtable for QObjectUserData
+QObjectUserData::_ZTV15QObjectUserData: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QObjectUserData)
+16 (int (*)(...))QObjectUserData::~QObjectUserData
+24 (int (*)(...))QObjectUserData::~QObjectUserData
+
+Class QObjectUserData
+ size=8 align=8
+ base size=8 base align=8
+QObjectUserData (0x0x7f096e293120) 0 nearly-empty
+ vptr=((& QObjectUserData::_ZTV15QObjectUserData) + 16)
+
+Class QSignalBlocker
+ size=16 align=8
+ base size=10 base align=8
+QSignalBlocker (0x0x7f096e2932a0) 0
+
+Class QAbstractAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractAnimation::QPrivateSignal (0x0x7f096e293b40) 0 empty
+
+Vtable for QAbstractAnimation
+QAbstractAnimation::_ZTV18QAbstractAnimation: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QAbstractAnimation)
+16 (int (*)(...))QAbstractAnimation::metaObject
+24 (int (*)(...))QAbstractAnimation::qt_metacast
+32 (int (*)(...))QAbstractAnimation::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAbstractAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+
+Class QAbstractAnimation
+ size=16 align=8
+ base size=16 base align=8
+QAbstractAnimation (0x0x7f096e26b7b8) 0
+ vptr=((& QAbstractAnimation::_ZTV18QAbstractAnimation) + 16)
+ QObject (0x0x7f096e293ae0) 0
+ primary-for QAbstractAnimation (0x0x7f096e26b7b8)
+
+Class QAnimationDriver::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAnimationDriver::QPrivateSignal (0x0x7f096e293f00) 0 empty
+
+Vtable for QAnimationDriver
+QAnimationDriver::_ZTV16QAnimationDriver: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QAnimationDriver)
+16 (int (*)(...))QAnimationDriver::metaObject
+24 (int (*)(...))QAnimationDriver::qt_metacast
+32 (int (*)(...))QAnimationDriver::qt_metacall
+40 (int (*)(...))QAnimationDriver::~QAnimationDriver
+48 (int (*)(...))QAnimationDriver::~QAnimationDriver
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAnimationDriver::advance
+120 (int (*)(...))QAnimationDriver::elapsed
+128 (int (*)(...))QAnimationDriver::start
+136 (int (*)(...))QAnimationDriver::stop
+
+Class QAnimationDriver
+ size=16 align=8
+ base size=16 base align=8
+QAnimationDriver (0x0x7f096e26b820) 0
+ vptr=((& QAnimationDriver::_ZTV16QAnimationDriver) + 16)
+ QObject (0x0x7f096e293ea0) 0
+ primary-for QAnimationDriver (0x0x7f096e26b820)
+
+Class QEventLoop::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QEventLoop::QPrivateSignal (0x0x7f096e2da180) 0 empty
+
+Vtable for QEventLoop
+QEventLoop::_ZTV10QEventLoop: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QEventLoop)
+16 (int (*)(...))QEventLoop::metaObject
+24 (int (*)(...))QEventLoop::qt_metacast
+32 (int (*)(...))QEventLoop::qt_metacall
+40 (int (*)(...))QEventLoop::~QEventLoop
+48 (int (*)(...))QEventLoop::~QEventLoop
+56 (int (*)(...))QEventLoop::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QEventLoop
+ size=16 align=8
+ base size=16 base align=8
+QEventLoop (0x0x7f096e26b888) 0
+ vptr=((& QEventLoop::_ZTV10QEventLoop) + 16)
+ QObject (0x0x7f096e2da120) 0
+ primary-for QEventLoop (0x0x7f096e26b888)
+
+Class QEventLoopLocker
+ size=8 align=8
+ base size=8 base align=8
+QEventLoopLocker (0x0x7f096e2daa20) 0
+
+Class QAbstractEventDispatcher::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractEventDispatcher::QPrivateSignal (0x0x7f096e2daae0) 0 empty
+
+Class QAbstractEventDispatcher::TimerInfo
+ size=12 align=4
+ base size=12 base align=4
+QAbstractEventDispatcher::TimerInfo (0x0x7f096e2dab40) 0
+
+Vtable for QAbstractEventDispatcher
+QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher: 28 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QAbstractEventDispatcher)
+16 (int (*)(...))QAbstractEventDispatcher::metaObject
+24 (int (*)(...))QAbstractEventDispatcher::qt_metacast
+32 (int (*)(...))QAbstractEventDispatcher::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))__cxa_pure_virtual
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))__cxa_pure_virtual
+176 (int (*)(...))__cxa_pure_virtual
+184 (int (*)(...))__cxa_pure_virtual
+192 (int (*)(...))__cxa_pure_virtual
+200 (int (*)(...))__cxa_pure_virtual
+208 (int (*)(...))QAbstractEventDispatcher::startingUp
+216 (int (*)(...))QAbstractEventDispatcher::closingDown
+
+Class QAbstractEventDispatcher
+ size=16 align=8
+ base size=16 base align=8
+QAbstractEventDispatcher (0x0x7f096e26b9c0) 0
+ vptr=((& QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher) + 16)
+ QObject (0x0x7f096e2daa80) 0
+ primary-for QAbstractEventDispatcher (0x0x7f096e26b9c0)
+
+Class QMapNodeBase
+ size=24 align=8
+ base size=24 base align=8
+QMapNodeBase (0x0x7f096e34bb40) 0
+
+Class QMapDataBase
+ size=40 align=8
+ base size=40 base align=8
+QMapDataBase (0x0x7f096e3777e0) 0
+
+Class QHashData::Node
+ size=16 align=8
+ base size=16 base align=8
+QHashData::Node (0x0x7f096e065180) 0
+
+Class QHashData
+ size=48 align=8
+ base size=44 base align=8
+QHashData (0x0x7f096e065120) 0
+
+Class QHashDummyValue
+ size=1 align=1
+ base size=0 base align=1
+QHashDummyValue (0x0x7f096e065420) 0 empty
+
+Class QVariant::PrivateShared
+ size=16 align=8
+ base size=12 base align=8
+QVariant::PrivateShared (0x0x7f096e171b40) 0
+
+Class QVariant::Private::Data
+ size=8 align=8
+ base size=8 base align=8
+QVariant::Private::Data (0x0x7f096e171c00) 0
+
+Class QVariant::Private
+ size=16 align=8
+ base size=12 base align=8
+QVariant::Private (0x0x7f096e171ba0) 0
+
+Class QVariant::Handler
+ size=72 align=8
+ base size=72 base align=8
+QVariant::Handler (0x0x7f096e171c60) 0
+
+Class QVariant
+ size=16 align=8
+ base size=16 base align=8
+QVariant (0x0x7f096e171ae0) 0
+
+Class QVariantComparisonHelper
+ size=8 align=8
+ base size=8 base align=8
+QVariantComparisonHelper (0x0x7f096de6bf00) 0
+
+Class QSequentialIterable::const_iterator
+ size=112 align=8
+ base size=112 base align=8
+QSequentialIterable::const_iterator (0x0x7f096df395a0) 0
+
+Class QSequentialIterable
+ size=104 align=8
+ base size=104 base align=8
+QSequentialIterable (0x0x7f096df39540) 0
+
+Class QAssociativeIterable::const_iterator
+ size=120 align=8
+ base size=120 base align=8
+QAssociativeIterable::const_iterator (0x0x7f096df396c0) 0
+
+Class QAssociativeIterable
+ size=112 align=8
+ base size=112 base align=8
+QAssociativeIterable (0x0x7f096df39660) 0
+
+Class QModelIndex
+ size=24 align=8
+ base size=24 base align=8
+QModelIndex (0x0x7f096dc04840) 0
+
+Class QPersistentModelIndex
+ size=8 align=8
+ base size=8 base align=8
+QPersistentModelIndex (0x0x7f096dc79480) 0
+
+Class QAbstractItemModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractItemModel::QPrivateSignal (0x0x7f096dd462a0) 0 empty
+
+Vtable for QAbstractItemModel
+QAbstractItemModel::_ZTV18QAbstractItemModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QAbstractItemModel)
+16 (int (*)(...))QAbstractItemModel::metaObject
+24 (int (*)(...))QAbstractItemModel::qt_metacast
+32 (int (*)(...))QAbstractItemModel::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractItemModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAbstractItemModel::hasChildren
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QAbstractItemModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractItemModel::dropMimeData
+240 (int (*)(...))QAbstractItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QAbstractItemModel::flags
+328 (int (*)(...))QAbstractItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QAbstractItemModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractItemModel (0x0x7f096dd37b60) 0
+ vptr=((& QAbstractItemModel::_ZTV18QAbstractItemModel) + 16)
+ QObject (0x0x7f096dd46240) 0
+ primary-for QAbstractItemModel (0x0x7f096dd37b60)
+
+Class QAbstractTableModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractTableModel::QPrivateSignal (0x0x7f096da0e660) 0 empty
+
+Vtable for QAbstractTableModel
+QAbstractTableModel::_ZTV19QAbstractTableModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractTableModel)
+16 (int (*)(...))QAbstractTableModel::metaObject
+24 (int (*)(...))QAbstractTableModel::qt_metacast
+32 (int (*)(...))QAbstractTableModel::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractTableModel::index
+120 (int (*)(...))QAbstractTableModel::parent
+128 (int (*)(...))QAbstractTableModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAbstractTableModel::hasChildren
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QAbstractItemModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractTableModel::dropMimeData
+240 (int (*)(...))QAbstractItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QAbstractTableModel::flags
+328 (int (*)(...))QAbstractItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QAbstractTableModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractTableModel (0x0x7f096d98b1a0) 0
+ vptr=((& QAbstractTableModel::_ZTV19QAbstractTableModel) + 16)
+ QAbstractItemModel (0x0x7f096d98b208) 0
+ primary-for QAbstractTableModel (0x0x7f096d98b1a0)
+ QObject (0x0x7f096da0e600) 0
+ primary-for QAbstractItemModel (0x0x7f096d98b208)
+
+Class QAbstractListModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractListModel::QPrivateSignal (0x0x7f096da0e7e0) 0 empty
+
+Vtable for QAbstractListModel
+QAbstractListModel::_ZTV18QAbstractListModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QAbstractListModel)
+16 (int (*)(...))QAbstractListModel::metaObject
+24 (int (*)(...))QAbstractListModel::qt_metacast
+32 (int (*)(...))QAbstractListModel::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractListModel::index
+120 (int (*)(...))QAbstractListModel::parent
+128 (int (*)(...))QAbstractListModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))QAbstractListModel::columnCount
+152 (int (*)(...))QAbstractListModel::hasChildren
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QAbstractItemModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractListModel::dropMimeData
+240 (int (*)(...))QAbstractItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QAbstractListModel::flags
+328 (int (*)(...))QAbstractItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QAbstractListModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractListModel (0x0x7f096d98b270) 0
+ vptr=((& QAbstractListModel::_ZTV18QAbstractListModel) + 16)
+ QAbstractItemModel (0x0x7f096d98b2d8) 0
+ primary-for QAbstractListModel (0x0x7f096d98b270)
+ QObject (0x0x7f096da0e780) 0
+ primary-for QAbstractItemModel (0x0x7f096d98b2d8)
+
+Vtable for QAbstractNativeEventFilter
+QAbstractNativeEventFilter::_ZTV26QAbstractNativeEventFilter: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAbstractNativeEventFilter)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractNativeEventFilter
+ size=16 align=8
+ base size=16 base align=8
+QAbstractNativeEventFilter (0x0x7f096da0ef00) 0
+ vptr=((& QAbstractNativeEventFilter::_ZTV26QAbstractNativeEventFilter) + 16)
+
+Class QAbstractProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractProxyModel::QPrivateSignal (0x0x7f096da7f000) 0 empty
+
+Vtable for QAbstractProxyModel
+QAbstractProxyModel::_ZTV19QAbstractProxyModel: 53 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractProxyModel)
+16 (int (*)(...))QAbstractProxyModel::metaObject
+24 (int (*)(...))QAbstractProxyModel::qt_metacast
+32 (int (*)(...))QAbstractProxyModel::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractProxyModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAbstractProxyModel::hasChildren
+160 (int (*)(...))QAbstractProxyModel::data
+168 (int (*)(...))QAbstractProxyModel::setData
+176 (int (*)(...))QAbstractProxyModel::headerData
+184 (int (*)(...))QAbstractProxyModel::setHeaderData
+192 (int (*)(...))QAbstractProxyModel::itemData
+200 (int (*)(...))QAbstractProxyModel::setItemData
+208 (int (*)(...))QAbstractProxyModel::mimeTypes
+216 (int (*)(...))QAbstractProxyModel::mimeData
+224 (int (*)(...))QAbstractProxyModel::canDropMimeData
+232 (int (*)(...))QAbstractProxyModel::dropMimeData
+240 (int (*)(...))QAbstractProxyModel::supportedDropActions
+248 (int (*)(...))QAbstractProxyModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractProxyModel::fetchMore
+312 (int (*)(...))QAbstractProxyModel::canFetchMore
+320 (int (*)(...))QAbstractProxyModel::flags
+328 (int (*)(...))QAbstractProxyModel::sort
+336 (int (*)(...))QAbstractProxyModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractProxyModel::submit
+376 (int (*)(...))QAbstractProxyModel::revert
+384 (int (*)(...))QAbstractProxyModel::setSourceModel
+392 (int (*)(...))__cxa_pure_virtual
+400 (int (*)(...))__cxa_pure_virtual
+408 (int (*)(...))QAbstractProxyModel::mapSelectionToSource
+416 (int (*)(...))QAbstractProxyModel::mapSelectionFromSource
+
+Class QAbstractProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractProxyModel (0x0x7f096d98b3a8) 0
+ vptr=((& QAbstractProxyModel::_ZTV19QAbstractProxyModel) + 16)
+ QAbstractItemModel (0x0x7f096d98b410) 0
+ primary-for QAbstractProxyModel (0x0x7f096d98b3a8)
+ QObject (0x0x7f096da0ef60) 0
+ primary-for QAbstractItemModel (0x0x7f096d98b410)
+
+Class QAbstractState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractState::QPrivateSignal (0x0x7f096da7f240) 0 empty
+
+Vtable for QAbstractState
+QAbstractState::_ZTV14QAbstractState: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QAbstractState)
+16 (int (*)(...))QAbstractState::metaObject
+24 (int (*)(...))QAbstractState::qt_metacast
+32 (int (*)(...))QAbstractState::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAbstractState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractState
+ size=16 align=8
+ base size=16 base align=8
+QAbstractState (0x0x7f096d98b478) 0
+ vptr=((& QAbstractState::_ZTV14QAbstractState) + 16)
+ QObject (0x0x7f096da7f1e0) 0
+ primary-for QAbstractState (0x0x7f096d98b478)
+
+Class QAbstractTransition::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractTransition::QPrivateSignal (0x0x7f096da7f480) 0 empty
+
+Vtable for QAbstractTransition
+QAbstractTransition::_ZTV19QAbstractTransition: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractTransition)
+16 (int (*)(...))QAbstractTransition::metaObject
+24 (int (*)(...))QAbstractTransition::qt_metacast
+32 (int (*)(...))QAbstractTransition::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAbstractTransition::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractTransition
+ size=16 align=8
+ base size=16 base align=8
+QAbstractTransition (0x0x7f096d98b4e0) 0
+ vptr=((& QAbstractTransition::_ZTV19QAbstractTransition) + 16)
+ QObject (0x0x7f096da7f420) 0
+ primary-for QAbstractTransition (0x0x7f096d98b4e0)
+
+Class QAnimationGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAnimationGroup::QPrivateSignal (0x0x7f096da7f780) 0 empty
+
+Vtable for QAnimationGroup
+QAnimationGroup::_ZTV15QAnimationGroup: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QAnimationGroup)
+16 (int (*)(...))QAnimationGroup::metaObject
+24 (int (*)(...))QAnimationGroup::qt_metacast
+32 (int (*)(...))QAnimationGroup::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAnimationGroup::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+
+Class QAnimationGroup
+ size=16 align=8
+ base size=16 base align=8
+QAnimationGroup (0x0x7f096d98b548) 0
+ vptr=((& QAnimationGroup::_ZTV15QAnimationGroup) + 16)
+ QAbstractAnimation (0x0x7f096d98b5b0) 0
+ primary-for QAnimationGroup (0x0x7f096d98b548)
+ QObject (0x0x7f096da7f720) 0
+ primary-for QAbstractAnimation (0x0x7f096d98b5b0)
+
+Class QBasicTimer
+ size=4 align=4
+ base size=4 base align=4
+QBasicTimer (0x0x7f096db01a80) 0
+
+Class QBitArray
+ size=8 align=8
+ base size=8 base align=8
+QBitArray (0x0x7f096c79a420) 0
+
+Class QBitRef
+ size=16 align=8
+ base size=12 base align=8
+QBitRef (0x0x7f096c7ec8a0) 0
+
+Class QIODevice::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QIODevice::QPrivateSignal (0x0x7f096c83fb40) 0 empty
+
+Vtable for QIODevice
+QIODevice::_ZTV9QIODevice: 30 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QIODevice)
+16 (int (*)(...))QIODevice::metaObject
+24 (int (*)(...))QIODevice::qt_metacast
+32 (int (*)(...))QIODevice::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QIODevice::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QIODevice::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QIODevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))__cxa_pure_virtual
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))__cxa_pure_virtual
+
+Class QIODevice
+ size=16 align=8
+ base size=16 base align=8
+QIODevice (0x0x7f096c841b60) 0
+ vptr=((& QIODevice::_ZTV9QIODevice) + 16)
+ QObject (0x0x7f096c83fae0) 0
+ primary-for QIODevice (0x0x7f096c841b60)
+
+Class QBuffer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QBuffer::QPrivateSignal (0x0x7f096c88c4e0) 0 empty
+
+Vtable for QBuffer
+QBuffer::_ZTV7QBuffer: 30 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QBuffer)
+16 (int (*)(...))QBuffer::metaObject
+24 (int (*)(...))QBuffer::qt_metacast
+32 (int (*)(...))QBuffer::qt_metacall
+40 (int (*)(...))QBuffer::~QBuffer
+48 (int (*)(...))QBuffer::~QBuffer
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QBuffer::connectNotify
+104 (int (*)(...))QBuffer::disconnectNotify
+112 (int (*)(...))QIODevice::isSequential
+120 (int (*)(...))QBuffer::open
+128 (int (*)(...))QBuffer::close
+136 (int (*)(...))QBuffer::pos
+144 (int (*)(...))QBuffer::size
+152 (int (*)(...))QBuffer::seek
+160 (int (*)(...))QBuffer::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QBuffer::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QBuffer::readData
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))QBuffer::writeData
+
+Class QBuffer
+ size=16 align=8
+ base size=16 base align=8
+QBuffer (0x0x7f096c841c98) 0
+ vptr=((& QBuffer::_ZTV7QBuffer) + 16)
+ QIODevice (0x0x7f096c841d00) 0
+ primary-for QBuffer (0x0x7f096c841c98)
+ QObject (0x0x7f096c88c480) 0
+ primary-for QIODevice (0x0x7f096c841d00)
+
+Class QByteArrayMatcher::Data
+ size=272 align=8
+ base size=272 base align=8
+QByteArrayMatcher::Data (0x0x7f096c88c780) 0
+
+Class QByteArrayMatcher
+ size=1040 align=8
+ base size=1040 base align=8
+QByteArrayMatcher (0x0x7f096c88c720) 0
+
+Class QStaticByteArrayMatcherBase::Skiptable
+ size=256 align=1
+ base size=256 base align=1
+QStaticByteArrayMatcherBase::Skiptable (0x0x7f096c88c900) 0
+
+Class QStaticByteArrayMatcherBase
+ size=256 align=16
+ base size=256 base align=16
+QStaticByteArrayMatcherBase (0x0x7f096c88c8a0) 0
+
+Class QSharedData
+ size=4 align=4
+ base size=4 base align=4
+QSharedData (0x0x7f096c8d77e0) 0
+
+Class QLocale
+ size=8 align=8
+ base size=8 base align=8
+QLocale (0x0x7f096c91a6c0) 0
+
+Class QCalendar::YearMonthDay
+ size=12 align=4
+ base size=12 base align=4
+QCalendar::YearMonthDay (0x0x7f096c677ba0) 0
+
+Class QCalendar
+ size=8 align=8
+ base size=8 base align=8
+QCalendar (0x0x7f096c677b40) 0
+
+Class QDate
+ size=8 align=8
+ base size=8 base align=8
+QDate (0x0x7f096c6c63c0) 0
+
+Class QTime
+ size=4 align=4
+ base size=4 base align=4
+QTime (0x0x7f096c715c60) 0
+
+Class QDateTime::ShortData
+ size=8 align=8
+ base size=8 base align=8
+QDateTime::ShortData (0x0x7f096c785900) 0
+
+Class QDateTime::Data
+ size=8 align=8
+ base size=8 base align=8
+QDateTime::Data (0x0x7f096c785960) 0
+
+Class QDateTime
+ size=8 align=8
+ base size=8 base align=8
+QDateTime (0x0x7f096c7858a0) 0
+
+Vtable for QTextStream
+QTextStream::_ZTV11QTextStream: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTextStream)
+16 (int (*)(...))QTextStream::~QTextStream
+24 (int (*)(...))QTextStream::~QTextStream
+
+Class QTextStream
+ size=16 align=8
+ base size=16 base align=8
+QTextStream (0x0x7f096c474060) 0
+ vptr=((& QTextStream::_ZTV11QTextStream) + 16)
+
+Class QTextStreamManipulator
+ size=40 align=8
+ base size=38 base align=8
+QTextStreamManipulator (0x0x7f096c474900) 0
+
+Class QContiguousCacheData
+ size=24 align=4
+ base size=24 base align=4
+QContiguousCacheData (0x0x7f096c54d5a0) 0
+
+Vtable for __gnu_cxx::__concurrence_lock_error
+__gnu_cxx::__concurrence_lock_error::_ZTVN9__gnu_cxx24__concurrence_lock_errorE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx24__concurrence_lock_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error
+24 (int (*)(...))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error
+32 (int (*)(...))__gnu_cxx::__concurrence_lock_error::what
+
+Class __gnu_cxx::__concurrence_lock_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_lock_error (0x0x7f096c465d00) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_lock_error::_ZTVN9__gnu_cxx24__concurrence_lock_errorE) + 16)
+ std::exception (0x0x7f096c19c420) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_lock_error (0x0x7f096c465d00)
+
+Vtable for __gnu_cxx::__concurrence_unlock_error
+__gnu_cxx::__concurrence_unlock_error::_ZTVN9__gnu_cxx26__concurrence_unlock_errorE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx26__concurrence_unlock_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error
+24 (int (*)(...))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error
+32 (int (*)(...))__gnu_cxx::__concurrence_unlock_error::what
+
+Class __gnu_cxx::__concurrence_unlock_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_unlock_error (0x0x7f096c465d68) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_unlock_error::_ZTVN9__gnu_cxx26__concurrence_unlock_errorE) + 16)
+ std::exception (0x0x7f096c19c540) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_unlock_error (0x0x7f096c465d68)
+
+Vtable for __gnu_cxx::__concurrence_broadcast_error
+__gnu_cxx::__concurrence_broadcast_error::_ZTVN9__gnu_cxx29__concurrence_broadcast_errorE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx29__concurrence_broadcast_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::~__concurrence_broadcast_error
+24 (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::~__concurrence_broadcast_error
+32 (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::what
+
+Class __gnu_cxx::__concurrence_broadcast_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_broadcast_error (0x0x7f096c465dd0) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_broadcast_error::_ZTVN9__gnu_cxx29__concurrence_broadcast_errorE) + 16)
+ std::exception (0x0x7f096c19c660) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_broadcast_error (0x0x7f096c465dd0)
+
+Vtable for __gnu_cxx::__concurrence_wait_error
+__gnu_cxx::__concurrence_wait_error::_ZTVN9__gnu_cxx24__concurrence_wait_errorE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx24__concurrence_wait_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_wait_error::~__concurrence_wait_error
+24 (int (*)(...))__gnu_cxx::__concurrence_wait_error::~__concurrence_wait_error
+32 (int (*)(...))__gnu_cxx::__concurrence_wait_error::what
+
+Class __gnu_cxx::__concurrence_wait_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_wait_error (0x0x7f096c465ea0) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_wait_error::_ZTVN9__gnu_cxx24__concurrence_wait_errorE) + 16)
+ std::exception (0x0x7f096c19c780) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_wait_error (0x0x7f096c465ea0)
+
+Class __gnu_cxx::__mutex
+ size=40 align=8
+ base size=40 base align=8
+__gnu_cxx::__mutex (0x0x7f096c1c17e0) 0
+
+Class __gnu_cxx::__recursive_mutex
+ size=40 align=8
+ base size=40 base align=8
+__gnu_cxx::__recursive_mutex (0x0x7f096c1c1ae0) 0
+
+Class __gnu_cxx::__scoped_lock
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__scoped_lock (0x0x7f096c1c1de0) 0
+
+Class __gnu_cxx::__cond
+ size=48 align=8
+ base size=48 base align=8
+__gnu_cxx::__cond (0x0x7f096c1e7180) 0
+
+Vtable for std::bad_weak_ptr
+std::bad_weak_ptr::_ZTVSt12bad_weak_ptr: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12bad_weak_ptr)
+16 (int (*)(...))std::bad_weak_ptr::~bad_weak_ptr
+24 (int (*)(...))std::bad_weak_ptr::~bad_weak_ptr
+32 (int (*)(...))std::bad_weak_ptr::what
+
+Class std::bad_weak_ptr
+ size=8 align=8
+ base size=8 base align=8
+std::bad_weak_ptr (0x0x7f096c465f08) 0 nearly-empty
+ vptr=((& std::bad_weak_ptr::_ZTVSt12bad_weak_ptr) + 16)
+ std::exception (0x0x7f096c260360) 0 nearly-empty
+ primary-for std::bad_weak_ptr (0x0x7f096c465f08)
+
+Class std::_Sp_make_shared_tag
+ size=1 align=1
+ base size=0 base align=1
+std::_Sp_make_shared_tag (0x0x7f096c2cb300) 0 empty
+
+Class std::__sp_array_delete
+ size=1 align=1
+ base size=0 base align=1
+std::__sp_array_delete (0x0x7f096c2cb720) 0 empty
+
+Class std::_Sp_locker
+ size=2 align=1
+ base size=2 base align=1
+std::_Sp_locker (0x0x7f096c00c5a0) 0
+
+Class QtSharedPointer::NormalDeleter
+ size=1 align=1
+ base size=0 base align=1
+QtSharedPointer::NormalDeleter (0x0x7f096c041a80) 0 empty
+
+Class QtSharedPointer::ExternalRefCountData
+ size=16 align=8
+ base size=16 base align=8
+QtSharedPointer::ExternalRefCountData (0x0x7f096c041c00) 0
+
+Class QtPrivate::EnableInternalData
+ size=1 align=1
+ base size=0 base align=1
+QtPrivate::EnableInternalData (0x0x7f096c0c6540) 0 empty
+
+Class QDebug::Stream
+ size=80 align=8
+ base size=76 base align=8
+QDebug::Stream (0x0x7f096c0edc00) 0
+
+Class QDebug
+ size=8 align=8
+ base size=8 base align=8
+QDebug (0x0x7f096c0edba0) 0
+
+Class QDebugStateSaver
+ size=8 align=8
+ base size=8 base align=8
+QDebugStateSaver (0x0x7f096be8b540) 0
+
+Class QNoDebug
+ size=1 align=1
+ base size=0 base align=1
+QNoDebug (0x0x7f096be8b600) 0 empty
+
+Class QCborError
+ size=4 align=4
+ base size=4 base align=4
+QCborError (0x0x7f096bf0b840) 0
+
+Class QRegularExpression
+ size=8 align=8
+ base size=8 base align=8
+QRegularExpression (0x0x7f096bf42000) 0
+
+Class QRegularExpressionMatch
+ size=8 align=8
+ base size=8 base align=8
+QRegularExpressionMatch (0x0x7f096bbc5ea0) 0
+
+Class QRegularExpressionMatchIterator
+ size=8 align=8
+ base size=8 base align=8
+QRegularExpressionMatchIterator (0x0x7f096bc2ac60) 0
+
+Class QUrl
+ size=8 align=8
+ base size=8 base align=8
+QUrl (0x0x7f096bcab6c0) 0
+
+Class QUuid
+ size=16 align=4
+ base size=16 base align=4
+QUuid (0x0x7f096b9f4660) 0
+
+Class QCborParserError
+ size=16 align=8
+ base size=12 base align=8
+QCborParserError (0x0x7f096ba771e0) 0
+
+Class QCborValue
+ size=24 align=8
+ base size=20 base align=8
+QCborValue (0x0x7f096ba772a0) 0
+
+Class QCborValueRef
+ size=16 align=8
+ base size=16 base align=8
+QCborValueRef (0x0x7f096b8b5e40) 0
+
+Class QCborArray::Iterator
+ size=16 align=8
+ base size=16 base align=8
+QCborArray::Iterator (0x0x7f096b96f8a0) 0
+
+Class QCborArray::ConstIterator
+ size=16 align=8
+ base size=16 base align=8
+QCborArray::ConstIterator (0x0x7f096b96f900) 0
+
+Class QCborArray
+ size=8 align=8
+ base size=8 base align=8
+QCborArray (0x0x7f096b96f840) 0
+
+Class QCborMap::Iterator
+ size=16 align=8
+ base size=16 base align=8
+QCborMap::Iterator (0x0x7f096b6ee4e0) 0
+
+Class QCborMap::ConstIterator
+ size=16 align=8
+ base size=16 base align=8
+QCborMap::ConstIterator (0x0x7f096b6ee540) 0
+
+Class QCborMap
+ size=8 align=8
+ base size=8 base align=8
+QCborMap (0x0x7f096b6ee480) 0
+
+Class qfloat16::Wrap
+ size=2 align=2
+ base size=2 base align=2
+qfloat16::Wrap (0x0x7f096b4f2cc0) 0
+
+Class qfloat16
+ size=2 align=2
+ base size=2 base align=2
+qfloat16 (0x0x7f096b4f2c60) 0
+
+Class QCborStreamWriter
+ size=8 align=8
+ base size=8 base align=8
+QCborStreamWriter (0x0x7f096b1d5960) 0
+
+Class QCborStreamReader
+ size=24 align=8
+ base size=20 base align=8
+QCborStreamReader (0x0x7f096b20c6c0) 0
+
+Class QCollatorSortKey
+ size=8 align=8
+ base size=8 base align=8
+QCollatorSortKey (0x0x7f096b2947e0) 0
+
+Class QCollator
+ size=8 align=8
+ base size=8 base align=8
+QCollator (0x0x7f096b2949c0) 0
+
+Class QCommandLineOption
+ size=8 align=8
+ base size=8 base align=8
+QCommandLineOption (0x0x7f096afa9000) 0
+
+Vtable for QEvent
+QEvent::_ZTV6QEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QEvent)
+16 (int (*)(...))QEvent::~QEvent
+24 (int (*)(...))QEvent::~QEvent
+
+Class QEvent
+ size=24 align=8
+ base size=20 base align=8
+QEvent (0x0x7f096b084540) 0
+ vptr=((& QEvent::_ZTV6QEvent) + 16)
+
+Vtable for QTimerEvent
+QTimerEvent::_ZTV11QTimerEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTimerEvent)
+16 (int (*)(...))QTimerEvent::~QTimerEvent
+24 (int (*)(...))QTimerEvent::~QTimerEvent
+
+Class QTimerEvent
+ size=24 align=8
+ base size=24 base align=8
+QTimerEvent (0x0x7f096b062958) 0
+ vptr=((& QTimerEvent::_ZTV11QTimerEvent) + 16)
+ QEvent (0x0x7f096b084900) 0
+ primary-for QTimerEvent (0x0x7f096b062958)
+
+Vtable for QChildEvent
+QChildEvent::_ZTV11QChildEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QChildEvent)
+16 (int (*)(...))QChildEvent::~QChildEvent
+24 (int (*)(...))QChildEvent::~QChildEvent
+
+Class QChildEvent
+ size=32 align=8
+ base size=32 base align=8
+QChildEvent (0x0x7f096b0629c0) 0
+ vptr=((& QChildEvent::_ZTV11QChildEvent) + 16)
+ QEvent (0x0x7f096b0849c0) 0
+ primary-for QChildEvent (0x0x7f096b0629c0)
+
+Vtable for QDynamicPropertyChangeEvent
+QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QDynamicPropertyChangeEvent)
+16 (int (*)(...))QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent
+24 (int (*)(...))QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent
+
+Class QDynamicPropertyChangeEvent
+ size=32 align=8
+ base size=32 base align=8
+QDynamicPropertyChangeEvent (0x0x7f096b062f08) 0
+ vptr=((& QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent) + 16)
+ QEvent (0x0x7f096b0c3060) 0
+ primary-for QDynamicPropertyChangeEvent (0x0x7f096b062f08)
+
+Vtable for QDeferredDeleteEvent
+QDeferredDeleteEvent::_ZTV20QDeferredDeleteEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QDeferredDeleteEvent)
+16 (int (*)(...))QDeferredDeleteEvent::~QDeferredDeleteEvent
+24 (int (*)(...))QDeferredDeleteEvent::~QDeferredDeleteEvent
+
+Class QDeferredDeleteEvent
+ size=24 align=8
+ base size=24 base align=8
+QDeferredDeleteEvent (0x0x7f096b062f70) 0
+ vptr=((& QDeferredDeleteEvent::_ZTV20QDeferredDeleteEvent) + 16)
+ QEvent (0x0x7f096b0c3120) 0
+ primary-for QDeferredDeleteEvent (0x0x7f096b062f70)
+
+Class QCoreApplication::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QCoreApplication::QPrivateSignal (0x0x7f096b0c3240) 0 empty
+
+Vtable for QCoreApplication
+QCoreApplication::_ZTV16QCoreApplication: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QCoreApplication)
+16 (int (*)(...))QCoreApplication::metaObject
+24 (int (*)(...))QCoreApplication::qt_metacast
+32 (int (*)(...))QCoreApplication::qt_metacall
+40 (int (*)(...))QCoreApplication::~QCoreApplication
+48 (int (*)(...))QCoreApplication::~QCoreApplication
+56 (int (*)(...))QCoreApplication::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QCoreApplication::notify
+120 (int (*)(...))QCoreApplication::compressEvent
+
+Class QCoreApplication
+ size=16 align=8
+ base size=16 base align=8
+QCoreApplication (0x0x7f096b0cd000) 0
+ vptr=((& QCoreApplication::_ZTV16QCoreApplication) + 16)
+ QObject (0x0x7f096b0c31e0) 0
+ primary-for QCoreApplication (0x0x7f096b0cd000)
+
+Class QCommandLineParser
+ size=8 align=8
+ base size=8 base align=8
+QCommandLineParser (0x0x7f096b0c3480) 0
+
+Class QConcatenateTablesProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QConcatenateTablesProxyModel::QPrivateSignal (0x0x7f096b0c3600) 0 empty
+
+Vtable for QConcatenateTablesProxyModel
+QConcatenateTablesProxyModel::_ZTV28QConcatenateTablesProxyModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI28QConcatenateTablesProxyModel)
+16 (int (*)(...))QConcatenateTablesProxyModel::metaObject
+24 (int (*)(...))QConcatenateTablesProxyModel::qt_metacast
+32 (int (*)(...))QConcatenateTablesProxyModel::qt_metacall
+40 (int (*)(...))QConcatenateTablesProxyModel::~QConcatenateTablesProxyModel
+48 (int (*)(...))QConcatenateTablesProxyModel::~QConcatenateTablesProxyModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QConcatenateTablesProxyModel::index
+120 (int (*)(...))QConcatenateTablesProxyModel::parent
+128 (int (*)(...))QAbstractItemModel::sibling
+136 (int (*)(...))QConcatenateTablesProxyModel::rowCount
+144 (int (*)(...))QConcatenateTablesProxyModel::columnCount
+152 (int (*)(...))QAbstractItemModel::hasChildren
+160 (int (*)(...))QConcatenateTablesProxyModel::data
+168 (int (*)(...))QConcatenateTablesProxyModel::setData
+176 (int (*)(...))QConcatenateTablesProxyModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QConcatenateTablesProxyModel::itemData
+200 (int (*)(...))QConcatenateTablesProxyModel::setItemData
+208 (int (*)(...))QConcatenateTablesProxyModel::mimeTypes
+216 (int (*)(...))QConcatenateTablesProxyModel::mimeData
+224 (int (*)(...))QConcatenateTablesProxyModel::canDropMimeData
+232 (int (*)(...))QConcatenateTablesProxyModel::dropMimeData
+240 (int (*)(...))QAbstractItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QConcatenateTablesProxyModel::flags
+328 (int (*)(...))QAbstractItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QConcatenateTablesProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QConcatenateTablesProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QConcatenateTablesProxyModel (0x0x7f096b0cd068) 0
+ vptr=((& QConcatenateTablesProxyModel::_ZTV28QConcatenateTablesProxyModel) + 16)
+ QAbstractItemModel (0x0x7f096b0cd0d0) 0
+ primary-for QConcatenateTablesProxyModel (0x0x7f096b0cd068)
+ QObject (0x0x7f096b0c35a0) 0
+ primary-for QAbstractItemModel (0x0x7f096b0cd0d0)
+
+Class QCryptographicHash
+ size=8 align=8
+ base size=8 base align=8
+QCryptographicHash (0x0x7f096b0c37e0) 0
+
+Class QDataStream
+ size=32 align=8
+ base size=32 base align=8
+QDataStream (0x0x7f096b0c3900) 0
+
+Class QtPrivate::StreamStateSaver
+ size=16 align=8
+ base size=12 base align=8
+QtPrivate::StreamStateSaver (0x0x7f096b0c3a80) 0
+
+Class QElapsedTimer
+ size=16 align=8
+ base size=16 base align=8
+QElapsedTimer (0x0x7f096b1841e0) 0
+
+Class QDeadlineTimer
+ size=16 align=8
+ base size=16 base align=8
+QDeadlineTimer (0x0x7f096b184900) 0
+
+Class QFileDevice::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFileDevice::QPrivateSignal (0x0x7f096aec6600) 0 empty
+
+Vtable for QFileDevice
+QFileDevice::_ZTV11QFileDevice: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFileDevice)
+16 (int (*)(...))QFileDevice::metaObject
+24 (int (*)(...))QFileDevice::qt_metacast
+32 (int (*)(...))QFileDevice::qt_metacall
+40 (int (*)(...))QFileDevice::~QFileDevice
+48 (int (*)(...))QFileDevice::~QFileDevice
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QFileDevice::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFileDevice::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QFileDevice::writeData
+240 (int (*)(...))QFileDevice::fileName
+248 (int (*)(...))QFileDevice::resize
+256 (int (*)(...))QFileDevice::permissions
+264 (int (*)(...))QFileDevice::setPermissions
+
+Class QFileDevice
+ size=16 align=8
+ base size=16 base align=8
+QFileDevice (0x0x7f096aec92d8) 0
+ vptr=((& QFileDevice::_ZTV11QFileDevice) + 16)
+ QIODevice (0x0x7f096aec9340) 0
+ primary-for QFileDevice (0x0x7f096aec92d8)
+ QObject (0x0x7f096aec65a0) 0
+ primary-for QIODevice (0x0x7f096aec9340)
+
+Class QFile::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFile::QPrivateSignal (0x0x7f096aec6f00) 0 empty
+
+Vtable for QFile
+QFile::_ZTV5QFile: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI5QFile)
+16 (int (*)(...))QFile::metaObject
+24 (int (*)(...))QFile::qt_metacast
+32 (int (*)(...))QFile::qt_metacall
+40 (int (*)(...))QFile::~QFile
+48 (int (*)(...))QFile::~QFile
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QFile::open
+128 (int (*)(...))QFileDevice::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFile::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QFileDevice::writeData
+240 (int (*)(...))QFile::fileName
+248 (int (*)(...))QFile::resize
+256 (int (*)(...))QFile::permissions
+264 (int (*)(...))QFile::setPermissions
+
+Class QFile
+ size=16 align=8
+ base size=16 base align=8
+QFile (0x0x7f096aec9478) 0
+ vptr=((& QFile::_ZTV5QFile) + 16)
+ QFileDevice (0x0x7f096aec94e0) 0
+ primary-for QFile (0x0x7f096aec9478)
+ QIODevice (0x0x7f096aec9548) 0
+ primary-for QFileDevice (0x0x7f096aec94e0)
+ QObject (0x0x7f096aec6ea0) 0
+ primary-for QIODevice (0x0x7f096aec9548)
+
+Class QFileInfo
+ size=8 align=8
+ base size=8 base align=8
+QFileInfo (0x0x7f096af2c5a0) 0
+
+Class QDir
+ size=8 align=8
+ base size=8 base align=8
+QDir (0x0x7f096ac09480) 0
+
+Class QDirIterator
+ size=8 align=8
+ base size=8 base align=8
+QDirIterator (0x0x7f096ad22480) 0
+
+Class QEasingCurve
+ size=8 align=8
+ base size=8 base align=8
+QEasingCurve (0x0x7f096ad22c00) 0
+
+Class QEventTransition::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QEventTransition::QPrivateSignal (0x0x7f096aa5fd20) 0 empty
+
+Vtable for QEventTransition
+QEventTransition::_ZTV16QEventTransition: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QEventTransition)
+16 (int (*)(...))QEventTransition::metaObject
+24 (int (*)(...))QEventTransition::qt_metacast
+32 (int (*)(...))QEventTransition::qt_metacall
+40 (int (*)(...))QEventTransition::~QEventTransition
+48 (int (*)(...))QEventTransition::~QEventTransition
+56 (int (*)(...))QEventTransition::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QEventTransition::eventTest
+120 (int (*)(...))QEventTransition::onTransition
+
+Class QEventTransition
+ size=16 align=8
+ base size=16 base align=8
+QEventTransition (0x0x7f096aa3b208) 0
+ vptr=((& QEventTransition::_ZTV16QEventTransition) + 16)
+ QAbstractTransition (0x0x7f096aa3b270) 0
+ primary-for QEventTransition (0x0x7f096aa3b208)
+ QObject (0x0x7f096aa5fcc0) 0
+ primary-for QAbstractTransition (0x0x7f096aa3b270)
+
+Vtable for QException
+QException::_ZTV10QException: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QException)
+16 (int (*)(...))QException::~QException
+24 (int (*)(...))QException::~QException
+32 (int (*)(...))std::exception::what
+40 (int (*)(...))QException::raise
+48 (int (*)(...))QException::clone
+
+Class QException
+ size=8 align=8
+ base size=8 base align=8
+QException (0x0x7f096aa3b2d8) 0 nearly-empty
+ vptr=((& QException::_ZTV10QException) + 16)
+ std::exception (0x0x7f096aa5ff00) 0 nearly-empty
+ primary-for QException (0x0x7f096aa3b2d8)
+
+Vtable for QUnhandledException
+QUnhandledException::_ZTV19QUnhandledException: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QUnhandledException)
+16 (int (*)(...))QUnhandledException::~QUnhandledException
+24 (int (*)(...))QUnhandledException::~QUnhandledException
+32 (int (*)(...))std::exception::what
+40 (int (*)(...))QUnhandledException::raise
+48 (int (*)(...))QUnhandledException::clone
+
+Class QUnhandledException
+ size=8 align=8
+ base size=8 base align=8
+QUnhandledException (0x0x7f096aa3b340) 0 nearly-empty
+ vptr=((& QUnhandledException::_ZTV19QUnhandledException) + 16)
+ QException (0x0x7f096aa3b3a8) 0 nearly-empty
+ primary-for QUnhandledException (0x0x7f096aa3b340)
+ std::exception (0x0x7f096aa5ff60) 0 nearly-empty
+ primary-for QException (0x0x7f096aa3b3a8)
+
+Class QtPrivate::ExceptionHolder
+ size=8 align=8
+ base size=8 base align=8
+QtPrivate::ExceptionHolder (0x0x7f096aa98000) 0
+
+Class QtPrivate::ExceptionStore
+ size=8 align=8
+ base size=8 base align=8
+QtPrivate::ExceptionStore (0x0x7f096aa980c0) 0
+
+Vtable for QFactoryInterface
+QFactoryInterface::_ZTV17QFactoryInterface: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QFactoryInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QFactoryInterface
+ size=8 align=8
+ base size=8 base align=8
+QFactoryInterface (0x0x7f096aa98120) 0 nearly-empty
+ vptr=((& QFactoryInterface::_ZTV17QFactoryInterface) + 16)
+
+Class QFileSelector::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFileSelector::QPrivateSignal (0x0x7f096aa98360) 0 empty
+
+Vtable for QFileSelector
+QFileSelector::_ZTV13QFileSelector: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QFileSelector)
+16 (int (*)(...))QFileSelector::metaObject
+24 (int (*)(...))QFileSelector::qt_metacast
+32 (int (*)(...))QFileSelector::qt_metacall
+40 (int (*)(...))QFileSelector::~QFileSelector
+48 (int (*)(...))QFileSelector::~QFileSelector
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QFileSelector
+ size=16 align=8
+ base size=16 base align=8
+QFileSelector (0x0x7f096aa3b410) 0
+ vptr=((& QFileSelector::_ZTV13QFileSelector) + 16)
+ QObject (0x0x7f096aa98300) 0
+ primary-for QFileSelector (0x0x7f096aa3b410)
+
+Class QFileSystemWatcher::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFileSystemWatcher::QPrivateSignal (0x0x7f096aa985a0) 0 empty
+
+Vtable for QFileSystemWatcher
+QFileSystemWatcher::_ZTV18QFileSystemWatcher: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QFileSystemWatcher)
+16 (int (*)(...))QFileSystemWatcher::metaObject
+24 (int (*)(...))QFileSystemWatcher::qt_metacast
+32 (int (*)(...))QFileSystemWatcher::qt_metacall
+40 (int (*)(...))QFileSystemWatcher::~QFileSystemWatcher
+48 (int (*)(...))QFileSystemWatcher::~QFileSystemWatcher
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QFileSystemWatcher
+ size=16 align=8
+ base size=16 base align=8
+QFileSystemWatcher (0x0x7f096aa3b478) 0
+ vptr=((& QFileSystemWatcher::_ZTV18QFileSystemWatcher) + 16)
+ QObject (0x0x7f096aa98540) 0
+ primary-for QFileSystemWatcher (0x0x7f096aa3b478)
+
+Class QFinalState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFinalState::QPrivateSignal (0x0x7f096aa987e0) 0 empty
+
+Vtable for QFinalState
+QFinalState::_ZTV11QFinalState: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFinalState)
+16 (int (*)(...))QFinalState::metaObject
+24 (int (*)(...))QFinalState::qt_metacast
+32 (int (*)(...))QFinalState::qt_metacall
+40 (int (*)(...))QFinalState::~QFinalState
+48 (int (*)(...))QFinalState::~QFinalState
+56 (int (*)(...))QFinalState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFinalState::onEntry
+120 (int (*)(...))QFinalState::onExit
+
+Class QFinalState
+ size=16 align=8
+ base size=16 base align=8
+QFinalState (0x0x7f096aa3b4e0) 0
+ vptr=((& QFinalState::_ZTV11QFinalState) + 16)
+ QAbstractState (0x0x7f096aa3b548) 0
+ primary-for QFinalState (0x0x7f096aa3b4e0)
+ QObject (0x0x7f096aa98780) 0
+ primary-for QAbstractState (0x0x7f096aa3b548)
+
+Vtable for QRunnable
+QRunnable::_ZTV9QRunnable: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QRunnable)
+16 (int (*)(...))__cxa_pure_virtual
+24 0
+32 0
+
+Class QRunnable
+ size=16 align=8
+ base size=12 base align=8
+QRunnable (0x0x7f096aa989c0) 0
+ vptr=((& QRunnable::_ZTV9QRunnable) + 16)
+
+Class QBasicMutex
+ size=8 align=8
+ base size=8 base align=8
+QBasicMutex (0x0x7f096aa98c60) 0
+
+Class QMutex
+ size=8 align=8
+ base size=8 base align=8
+QMutex (0x0x7f096aa3b618) 0
+ QBasicMutex (0x0x7f096ab44900) 0
+
+Class QRecursiveMutex
+ size=8 align=8
+ base size=8 base align=8
+QRecursiveMutex (0x0x7f096aa3b680) 0
+ QMutex (0x0x7f096aa3b6e8) 0
+ QBasicMutex (0x0x7f096ab44b40) 0
+
+Class QMutexLocker
+ size=8 align=8
+ base size=8 base align=8
+QMutexLocker (0x0x7f096ab44ba0) 0
+
+Class QtPrivate::ResultItem
+ size=16 align=8
+ base size=16 base align=8
+QtPrivate::ResultItem (0x0x7f096ab6c1e0) 0
+
+Class QtPrivate::ResultIteratorBase
+ size=16 align=8
+ base size=12 base align=8
+QtPrivate::ResultIteratorBase (0x0x7f096ab6c7e0) 0
+
+Vtable for QtPrivate::ResultStoreBase
+QtPrivate::ResultStoreBase::_ZTVN9QtPrivate15ResultStoreBaseE: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9QtPrivate15ResultStoreBaseE)
+16 (int (*)(...))QtPrivate::ResultStoreBase::~ResultStoreBase
+24 (int (*)(...))QtPrivate::ResultStoreBase::~ResultStoreBase
+
+Class QtPrivate::ResultStoreBase
+ size=48 align=8
+ base size=44 base align=8
+QtPrivate::ResultStoreBase (0x0x7f096ab6c9c0) 0
+ vptr=((& QtPrivate::ResultStoreBase::_ZTVN9QtPrivate15ResultStoreBaseE) + 16)
+
+Class std::__mutex_base
+ size=40 align=8
+ base size=40 base align=8
+std::__mutex_base (0x0x7f096a7ff1e0) 0
+
+Class std::mutex
+ size=40 align=8
+ base size=40 base align=8
+std::mutex (0x0x7f096a807000) 0
+ std::__mutex_base (0x0x7f096a7ff240) 0
+
+Class std::defer_lock_t
+ size=1 align=1
+ base size=0 base align=1
+std::defer_lock_t (0x0x7f096a7ff420) 0 empty
+
+Class std::try_to_lock_t
+ size=1 align=1
+ base size=0 base align=1
+std::try_to_lock_t (0x0x7f096a7ff480) 0 empty
+
+Class std::adopt_lock_t
+ size=1 align=1
+ base size=0 base align=1
+std::adopt_lock_t (0x0x7f096a7ff4e0) 0 empty
+
+Class std::__recursive_mutex_base
+ size=40 align=8
+ base size=40 base align=8
+std::__recursive_mutex_base (0x0x7f096a7fff00) 0
+
+Class std::recursive_mutex
+ size=40 align=8
+ base size=40 base align=8
+std::recursive_mutex (0x0x7f096a807068) 0
+ std::__recursive_mutex_base (0x0x7f096a7fff60) 0
+
+Class std::timed_mutex
+ size=40 align=8
+ base size=40 base align=8
+std::timed_mutex (0x0x7f096a80baf0) 0
+ std::__mutex_base (0x0x7f096a83d360) 0
+ std::__timed_mutex_impl<std::timed_mutex> (0x0x7f096a83d3c0) 0 empty
+
+Class std::recursive_timed_mutex
+ size=40 align=8
+ base size=40 base align=8
+std::recursive_timed_mutex (0x0x7f096a80be70) 0
+ std::__recursive_mutex_base (0x0x7f096a83d720) 0
+ std::__timed_mutex_impl<std::recursive_timed_mutex> (0x0x7f096a83d780) 0 empty
+
+Class std::once_flag
+ size=4 align=4
+ base size=4 base align=4
+std::once_flag (0x0x7f096a83dea0) 0
+
+Vtable for QFutureInterfaceBase
+QFutureInterfaceBase::_ZTV20QFutureInterfaceBase: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QFutureInterfaceBase)
+16 (int (*)(...))QFutureInterfaceBase::~QFutureInterfaceBase
+24 (int (*)(...))QFutureInterfaceBase::~QFutureInterfaceBase
+
+Class QFutureInterfaceBase
+ size=16 align=8
+ base size=16 base align=8
+QFutureInterfaceBase (0x0x7f096a884120) 0
+ vptr=((& QFutureInterfaceBase::_ZTV20QFutureInterfaceBase) + 16)
+
+Class QFutureWatcherBase::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFutureWatcherBase::QPrivateSignal (0x0x7f096a929480) 0 empty
+
+Vtable for QFutureWatcherBase
+QFutureWatcherBase::_ZTV18QFutureWatcherBase: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QFutureWatcherBase)
+16 (int (*)(...))QFutureWatcherBase::metaObject
+24 (int (*)(...))QFutureWatcherBase::qt_metacast
+32 (int (*)(...))QFutureWatcherBase::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QFutureWatcherBase::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QFutureWatcherBase::connectNotify
+104 (int (*)(...))QFutureWatcherBase::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QFutureWatcherBase
+ size=16 align=8
+ base size=16 base align=8
+QFutureWatcherBase (0x0x7f096a807e38) 0
+ vptr=((& QFutureWatcherBase::_ZTV18QFutureWatcherBase) + 16)
+ QObject (0x0x7f096a929420) 0
+ primary-for QFutureWatcherBase (0x0x7f096a807e38)
+
+Class QHistoryState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QHistoryState::QPrivateSignal (0x0x7f096a9577e0) 0 empty
+
+Vtable for QHistoryState
+QHistoryState::_ZTV13QHistoryState: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QHistoryState)
+16 (int (*)(...))QHistoryState::metaObject
+24 (int (*)(...))QHistoryState::qt_metacast
+32 (int (*)(...))QHistoryState::qt_metacall
+40 (int (*)(...))QHistoryState::~QHistoryState
+48 (int (*)(...))QHistoryState::~QHistoryState
+56 (int (*)(...))QHistoryState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QHistoryState::onEntry
+120 (int (*)(...))QHistoryState::onExit
+
+Class QHistoryState
+ size=16 align=8
+ base size=16 base align=8
+QHistoryState (0x0x7f096a941680) 0
+ vptr=((& QHistoryState::_ZTV13QHistoryState) + 16)
+ QAbstractState (0x0x7f096a9416e8) 0
+ primary-for QHistoryState (0x0x7f096a941680)
+ QObject (0x0x7f096a957780) 0
+ primary-for QAbstractState (0x0x7f096a9416e8)
+
+Class QIdentityProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QIdentityProxyModel::QPrivateSignal (0x0x7f096a957ae0) 0 empty
+
+Vtable for QIdentityProxyModel
+QIdentityProxyModel::_ZTV19QIdentityProxyModel: 53 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QIdentityProxyModel)
+16 (int (*)(...))QIdentityProxyModel::metaObject
+24 (int (*)(...))QIdentityProxyModel::qt_metacast
+32 (int (*)(...))QIdentityProxyModel::qt_metacall
+40 (int (*)(...))QIdentityProxyModel::~QIdentityProxyModel
+48 (int (*)(...))QIdentityProxyModel::~QIdentityProxyModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QIdentityProxyModel::index
+120 (int (*)(...))QIdentityProxyModel::parent
+128 (int (*)(...))QIdentityProxyModel::sibling
+136 (int (*)(...))QIdentityProxyModel::rowCount
+144 (int (*)(...))QIdentityProxyModel::columnCount
+152 (int (*)(...))QAbstractProxyModel::hasChildren
+160 (int (*)(...))QAbstractProxyModel::data
+168 (int (*)(...))QAbstractProxyModel::setData
+176 (int (*)(...))QIdentityProxyModel::headerData
+184 (int (*)(...))QAbstractProxyModel::setHeaderData
+192 (int (*)(...))QAbstractProxyModel::itemData
+200 (int (*)(...))QAbstractProxyModel::setItemData
+208 (int (*)(...))QAbstractProxyModel::mimeTypes
+216 (int (*)(...))QAbstractProxyModel::mimeData
+224 (int (*)(...))QAbstractProxyModel::canDropMimeData
+232 (int (*)(...))QIdentityProxyModel::dropMimeData
+240 (int (*)(...))QAbstractProxyModel::supportedDropActions
+248 (int (*)(...))QAbstractProxyModel::supportedDragActions
+256 (int (*)(...))QIdentityProxyModel::insertRows
+264 (int (*)(...))QIdentityProxyModel::insertColumns
+272 (int (*)(...))QIdentityProxyModel::removeRows
+280 (int (*)(...))QIdentityProxyModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractProxyModel::fetchMore
+312 (int (*)(...))QAbstractProxyModel::canFetchMore
+320 (int (*)(...))QAbstractProxyModel::flags
+328 (int (*)(...))QAbstractProxyModel::sort
+336 (int (*)(...))QAbstractProxyModel::buddy
+344 (int (*)(...))QIdentityProxyModel::match
+352 (int (*)(...))QAbstractProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractProxyModel::submit
+376 (int (*)(...))QAbstractProxyModel::revert
+384 (int (*)(...))QIdentityProxyModel::setSourceModel
+392 (int (*)(...))QIdentityProxyModel::mapToSource
+400 (int (*)(...))QIdentityProxyModel::mapFromSource
+408 (int (*)(...))QIdentityProxyModel::mapSelectionToSource
+416 (int (*)(...))QIdentityProxyModel::mapSelectionFromSource
+
+Class QIdentityProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QIdentityProxyModel (0x0x7f096a941750) 0
+ vptr=((& QIdentityProxyModel::_ZTV19QIdentityProxyModel) + 16)
+ QAbstractProxyModel (0x0x7f096a9417b8) 0
+ primary-for QIdentityProxyModel (0x0x7f096a941750)
+ QAbstractItemModel (0x0x7f096a941820) 0
+ primary-for QAbstractProxyModel (0x0x7f096a9417b8)
+ QObject (0x0x7f096a957a80) 0
+ primary-for QAbstractItemModel (0x0x7f096a941820)
+
+Class QItemSelectionRange
+ size=16 align=8
+ base size=16 base align=8
+QItemSelectionRange (0x0x7f096a957cc0) 0
+
+Class QItemSelectionModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QItemSelectionModel::QPrivateSignal (0x0x7f096a63d600) 0 empty
+
+Vtable for QItemSelectionModel
+QItemSelectionModel::_ZTV19QItemSelectionModel: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QItemSelectionModel)
+16 (int (*)(...))QItemSelectionModel::metaObject
+24 (int (*)(...))QItemSelectionModel::qt_metacast
+32 (int (*)(...))QItemSelectionModel::qt_metacall
+40 (int (*)(...))QItemSelectionModel::~QItemSelectionModel
+48 (int (*)(...))QItemSelectionModel::~QItemSelectionModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QItemSelectionModel::setCurrentIndex
+120 (int (*)(...))QItemSelectionModel::select
+128 (int (*)(...))QItemSelectionModel::select
+136 (int (*)(...))QItemSelectionModel::clear
+144 (int (*)(...))QItemSelectionModel::reset
+152 (int (*)(...))QItemSelectionModel::clearCurrentIndex
+
+Class QItemSelectionModel
+ size=16 align=8
+ base size=16 base align=8
+QItemSelectionModel (0x0x7f096a6411a0) 0
+ vptr=((& QItemSelectionModel::_ZTV19QItemSelectionModel) + 16)
+ QObject (0x0x7f096a63d5a0) 0
+ primary-for QItemSelectionModel (0x0x7f096a6411a0)
+
+Class QItemSelection
+ size=8 align=8
+ base size=8 base align=8
+QItemSelection (0x0x7f096a641340) 0
+ QList<QItemSelectionRange> (0x0x7f096a6413a8) 0
+ QListSpecialMethods<QItemSelectionRange> (0x0x7f096a685120) 0 empty
+
+Class QJsonValue
+ size=24 align=8
+ base size=20 base align=8
+QJsonValue (0x0x7f096a6eda20) 0
+
+Class QJsonValueRef
+ size=16 align=8
+ base size=12 base align=8
+QJsonValueRef (0x0x7f096a4416c0) 0
+
+Class QJsonValuePtr
+ size=24 align=8
+ base size=24 base align=8
+QJsonValuePtr (0x0x7f096a492660) 0
+
+Class QJsonValueRefPtr
+ size=16 align=8
+ base size=16 base align=8
+QJsonValueRefPtr (0x0x7f096a492900) 0
+
+Class QJsonArray::iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonArray::iterator (0x0x7f096a4d6c60) 0
+
+Class QJsonArray::const_iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonArray::const_iterator (0x0x7f096a4d6cc0) 0
+
+Class QJsonArray
+ size=16 align=8
+ base size=16 base align=8
+QJsonArray (0x0x7f096a4d6c00) 0
+
+Class QJsonParseError
+ size=8 align=4
+ base size=8 base align=4
+QJsonParseError (0x0x7f096a205ba0) 0
+
+Class QJsonDocument
+ size=8 align=8
+ base size=8 base align=8
+QJsonDocument (0x0x7f096a205c00) 0
+
+Class QJsonObject::iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonObject::iterator (0x0x7f096a273420) 0
+
+Class QJsonObject::const_iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonObject::const_iterator (0x0x7f096a273480) 0
+
+Class QJsonObject
+ size=16 align=8
+ base size=16 base align=8
+QJsonObject (0x0x7f096a2733c0) 0
+
+Class QLibrary::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLibrary::QPrivateSignal (0x0x7f0969f938a0) 0 empty
+
+Vtable for QLibrary
+QLibrary::_ZTV8QLibrary: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QLibrary)
+16 (int (*)(...))QLibrary::metaObject
+24 (int (*)(...))QLibrary::qt_metacast
+32 (int (*)(...))QLibrary::qt_metacall
+40 (int (*)(...))QLibrary::~QLibrary
+48 (int (*)(...))QLibrary::~QLibrary
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QLibrary
+ size=32 align=8
+ base size=25 base align=8
+QLibrary (0x0x7f0969fa2000) 0
+ vptr=((& QLibrary::_ZTV8QLibrary) + 16)
+ QObject (0x0x7f0969f93840) 0
+ primary-for QLibrary (0x0x7f0969fa2000)
+
+Class QVersionNumber::SegmentStorage
+ size=8 align=8
+ base size=8 base align=8
+QVersionNumber::SegmentStorage (0x0x7f0969fda720) 0
+
+Class QVersionNumber
+ size=8 align=8
+ base size=8 base align=8
+QVersionNumber (0x0x7f0969fda240) 0
+
+Class QLibraryInfo
+ size=1 align=1
+ base size=0 base align=1
+QLibraryInfo (0x0x7f096a072ea0) 0 empty
+
+Class QPoint
+ size=8 align=4
+ base size=8 base align=4
+QPoint (0x0x7f096a072f00) 0
+
+Class QPointF
+ size=16 align=8
+ base size=16 base align=8
+QPointF (0x0x7f096a0e9d80) 0
+
+Class QLine
+ size=16 align=4
+ base size=16 base align=4
+QLine (0x0x7f096a159f60) 0
+
+Class QLineF
+ size=32 align=8
+ base size=32 base align=8
+QLineF (0x0x7f0969de8360) 0
+
+Class QLinkedListData
+ size=32 align=8
+ base size=25 base align=8
+QLinkedListData (0x0x7f0969e62600) 0
+
+Class QLockFile
+ size=8 align=8
+ base size=8 base align=8
+QLockFile (0x0x7f0969f0db40) 0
+
+Class QLoggingCategory::AtomicBools
+ size=4 align=1
+ base size=4 base align=1
+QLoggingCategory::AtomicBools (0x0x7f0969f0dd80) 0
+
+Class QLoggingCategory
+ size=24 align=8
+ base size=24 base align=8
+QLoggingCategory (0x0x7f0969f0dd20) 0
+
+Class QMargins
+ size=16 align=4
+ base size=16 base align=4
+QMargins (0x0x7f0969f7d1e0) 0
+
+Class QMarginsF
+ size=32 align=8
+ base size=32 base align=8
+QMarginsF (0x0x7f0969bfb120) 0
+
+Class QMessageAuthenticationCode
+ size=8 align=8
+ base size=8 base align=8
+QMessageAuthenticationCode (0x0x7f0969a30900) 0
+
+Class QMetaMethod
+ size=16 align=8
+ base size=12 base align=8
+QMetaMethod (0x0x7f0969a30960) 0
+
+Class QMetaEnum
+ size=16 align=8
+ base size=12 base align=8
+QMetaEnum (0x0x7f0969abc1e0) 0
+
+Class QMetaProperty
+ size=32 align=8
+ base size=32 base align=8
+QMetaProperty (0x0x7f0969b013c0) 0
+
+Class QMetaClassInfo
+ size=16 align=8
+ base size=12 base align=8
+QMetaClassInfo (0x0x7f0969b014e0) 0
+
+Class QMimeData::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMimeData::QPrivateSignal (0x0x7f0969b40a80) 0 empty
+
+Vtable for QMimeData
+QMimeData::_ZTV9QMimeData: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QMimeData)
+16 (int (*)(...))QMimeData::metaObject
+24 (int (*)(...))QMimeData::qt_metacast
+32 (int (*)(...))QMimeData::qt_metacall
+40 (int (*)(...))QMimeData::~QMimeData
+48 (int (*)(...))QMimeData::~QMimeData
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QMimeData::hasFormat
+120 (int (*)(...))QMimeData::formats
+128 (int (*)(...))QMimeData::retrieveData
+
+Class QMimeData
+ size=16 align=8
+ base size=16 base align=8
+QMimeData (0x0x7f0969b3bc30) 0
+ vptr=((& QMimeData::_ZTV9QMimeData) + 16)
+ QObject (0x0x7f0969b40a20) 0
+ primary-for QMimeData (0x0x7f0969b3bc30)
+
+Class QMimeType
+ size=8 align=8
+ base size=8 base align=8
+QMimeType (0x0x7f0969b40c60) 0
+
+Class QMimeDatabase
+ size=8 align=8
+ base size=8 base align=8
+QMimeDatabase (0x0x7f096980cba0) 0
+
+Class QObjectCleanupHandler::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QObjectCleanupHandler::QPrivateSignal (0x0x7f096980cc60) 0 empty
+
+Vtable for QObjectCleanupHandler
+QObjectCleanupHandler::_ZTV21QObjectCleanupHandler: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QObjectCleanupHandler)
+16 (int (*)(...))QObjectCleanupHandler::metaObject
+24 (int (*)(...))QObjectCleanupHandler::qt_metacast
+32 (int (*)(...))QObjectCleanupHandler::qt_metacall
+40 (int (*)(...))QObjectCleanupHandler::~QObjectCleanupHandler
+48 (int (*)(...))QObjectCleanupHandler::~QObjectCleanupHandler
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QObjectCleanupHandler
+ size=24 align=8
+ base size=24 base align=8
+QObjectCleanupHandler (0x0x7f09698167b8) 0
+ vptr=((& QObjectCleanupHandler::_ZTV21QObjectCleanupHandler) + 16)
+ QObject (0x0x7f096980cc00) 0
+ primary-for QObjectCleanupHandler (0x0x7f09698167b8)
+
+Class QOperatingSystemVersion
+ size=16 align=4
+ base size=16 base align=4
+QOperatingSystemVersion (0x0x7f096980cd80) 0
+
+Class QParallelAnimationGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QParallelAnimationGroup::QPrivateSignal (0x0x7f096989a540) 0 empty
+
+Vtable for QParallelAnimationGroup
+QParallelAnimationGroup::_ZTV23QParallelAnimationGroup: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QParallelAnimationGroup)
+16 (int (*)(...))QParallelAnimationGroup::metaObject
+24 (int (*)(...))QParallelAnimationGroup::qt_metacast
+32 (int (*)(...))QParallelAnimationGroup::qt_metacall
+40 (int (*)(...))QParallelAnimationGroup::~QParallelAnimationGroup
+48 (int (*)(...))QParallelAnimationGroup::~QParallelAnimationGroup
+56 (int (*)(...))QParallelAnimationGroup::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QParallelAnimationGroup::duration
+120 (int (*)(...))QParallelAnimationGroup::updateCurrentTime
+128 (int (*)(...))QParallelAnimationGroup::updateState
+136 (int (*)(...))QParallelAnimationGroup::updateDirection
+
+Class QParallelAnimationGroup
+ size=16 align=8
+ base size=16 base align=8
+QParallelAnimationGroup (0x0x7f09698a2068) 0
+ vptr=((& QParallelAnimationGroup::_ZTV23QParallelAnimationGroup) + 16)
+ QAnimationGroup (0x0x7f09698a20d0) 0
+ primary-for QParallelAnimationGroup (0x0x7f09698a2068)
+ QAbstractAnimation (0x0x7f09698a2138) 0
+ primary-for QAnimationGroup (0x0x7f09698a20d0)
+ QObject (0x0x7f096989a4e0) 0
+ primary-for QAbstractAnimation (0x0x7f09698a2138)
+
+Class QPauseAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPauseAnimation::QPrivateSignal (0x0x7f096989a780) 0 empty
+
+Vtable for QPauseAnimation
+QPauseAnimation::_ZTV15QPauseAnimation: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QPauseAnimation)
+16 (int (*)(...))QPauseAnimation::metaObject
+24 (int (*)(...))QPauseAnimation::qt_metacast
+32 (int (*)(...))QPauseAnimation::qt_metacall
+40 (int (*)(...))QPauseAnimation::~QPauseAnimation
+48 (int (*)(...))QPauseAnimation::~QPauseAnimation
+56 (int (*)(...))QPauseAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QPauseAnimation::duration
+120 (int (*)(...))QPauseAnimation::updateCurrentTime
+128 (int (*)(...))QAbstractAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+
+Class QPauseAnimation
+ size=16 align=8
+ base size=16 base align=8
+QPauseAnimation (0x0x7f09698a21a0) 0
+ vptr=((& QPauseAnimation::_ZTV15QPauseAnimation) + 16)
+ QAbstractAnimation (0x0x7f09698a2208) 0
+ primary-for QPauseAnimation (0x0x7f09698a21a0)
+ QObject (0x0x7f096989a720) 0
+ primary-for QAbstractAnimation (0x0x7f09698a2208)
+
+Class QStaticPlugin
+ size=16 align=8
+ base size=16 base align=8
+QStaticPlugin (0x0x7f09698d1300) 0
+
+Class QPluginLoader::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPluginLoader::QPrivateSignal (0x0x7f0969910480) 0 empty
+
+Vtable for QPluginLoader
+QPluginLoader::_ZTV13QPluginLoader: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QPluginLoader)
+16 (int (*)(...))QPluginLoader::metaObject
+24 (int (*)(...))QPluginLoader::qt_metacast
+32 (int (*)(...))QPluginLoader::qt_metacall
+40 (int (*)(...))QPluginLoader::~QPluginLoader
+48 (int (*)(...))QPluginLoader::~QPluginLoader
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QPluginLoader
+ size=32 align=8
+ base size=25 base align=8
+QPluginLoader (0x0x7f096990f548) 0
+ vptr=((& QPluginLoader::_ZTV13QPluginLoader) + 16)
+ QObject (0x0x7f0969910420) 0
+ primary-for QPluginLoader (0x0x7f096990f548)
+
+Class QProcessEnvironment
+ size=8 align=8
+ base size=8 base align=8
+QProcessEnvironment (0x0x7f09699105a0) 0
+
+Class QProcess::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QProcess::QPrivateSignal (0x0x7f09695e1a20) 0 empty
+
+Vtable for QProcess
+QProcess::_ZTV8QProcess: 31 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QProcess)
+16 (int (*)(...))QProcess::metaObject
+24 (int (*)(...))QProcess::qt_metacast
+32 (int (*)(...))QProcess::qt_metacall
+40 (int (*)(...))QProcess::~QProcess
+48 (int (*)(...))QProcess::~QProcess
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QProcess::isSequential
+120 (int (*)(...))QProcess::open
+128 (int (*)(...))QProcess::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QProcess::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QProcess::bytesAvailable
+184 (int (*)(...))QProcess::bytesToWrite
+192 (int (*)(...))QProcess::canReadLine
+200 (int (*)(...))QProcess::waitForReadyRead
+208 (int (*)(...))QProcess::waitForBytesWritten
+216 (int (*)(...))QProcess::readData
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))QProcess::writeData
+240 (int (*)(...))QProcess::setupChildProcess
+
+Class QProcess
+ size=16 align=8
+ base size=16 base align=8
+QProcess (0x0x7f09695e49c0) 0
+ vptr=((& QProcess::_ZTV8QProcess) + 16)
+ QIODevice (0x0x7f09695e4a28) 0
+ primary-for QProcess (0x0x7f09695e49c0)
+ QObject (0x0x7f09695e19c0) 0
+ primary-for QIODevice (0x0x7f09695e4a28)
+
+Class QVariantAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QVariantAnimation::QPrivateSignal (0x0x7f096961e120) 0 empty
+
+Vtable for QVariantAnimation
+QVariantAnimation::_ZTV17QVariantAnimation: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QVariantAnimation)
+16 (int (*)(...))QVariantAnimation::metaObject
+24 (int (*)(...))QVariantAnimation::qt_metacast
+32 (int (*)(...))QVariantAnimation::qt_metacall
+40 (int (*)(...))QVariantAnimation::~QVariantAnimation
+48 (int (*)(...))QVariantAnimation::~QVariantAnimation
+56 (int (*)(...))QVariantAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QVariantAnimation::duration
+120 (int (*)(...))QVariantAnimation::updateCurrentTime
+128 (int (*)(...))QVariantAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+144 (int (*)(...))QVariantAnimation::updateCurrentValue
+152 (int (*)(...))QVariantAnimation::interpolated
+
+Class QVariantAnimation
+ size=16 align=8
+ base size=16 base align=8
+QVariantAnimation (0x0x7f09695e4a90) 0
+ vptr=((& QVariantAnimation::_ZTV17QVariantAnimation) + 16)
+ QAbstractAnimation (0x0x7f09695e4af8) 0
+ primary-for QVariantAnimation (0x0x7f09695e4a90)
+ QObject (0x0x7f096961e0c0) 0
+ primary-for QAbstractAnimation (0x0x7f09695e4af8)
+
+Class QPropertyAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPropertyAnimation::QPrivateSignal (0x0x7f096961e3c0) 0 empty
+
+Vtable for QPropertyAnimation
+QPropertyAnimation::_ZTV18QPropertyAnimation: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QPropertyAnimation)
+16 (int (*)(...))QPropertyAnimation::metaObject
+24 (int (*)(...))QPropertyAnimation::qt_metacast
+32 (int (*)(...))QPropertyAnimation::qt_metacall
+40 (int (*)(...))QPropertyAnimation::~QPropertyAnimation
+48 (int (*)(...))QPropertyAnimation::~QPropertyAnimation
+56 (int (*)(...))QPropertyAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QVariantAnimation::duration
+120 (int (*)(...))QVariantAnimation::updateCurrentTime
+128 (int (*)(...))QPropertyAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+144 (int (*)(...))QPropertyAnimation::updateCurrentValue
+152 (int (*)(...))QVariantAnimation::interpolated
+
+Class QPropertyAnimation
+ size=16 align=8
+ base size=16 base align=8
+QPropertyAnimation (0x0x7f09695e4bc8) 0
+ vptr=((& QPropertyAnimation::_ZTV18QPropertyAnimation) + 16)
+ QVariantAnimation (0x0x7f09695e4c30) 0
+ primary-for QPropertyAnimation (0x0x7f09695e4bc8)
+ QAbstractAnimation (0x0x7f09695e4c98) 0
+ primary-for QVariantAnimation (0x0x7f09695e4c30)
+ QObject (0x0x7f096961e360) 0
+ primary-for QAbstractAnimation (0x0x7f09695e4c98)
+
+Class std::random_device
+ size=5000 align=8
+ base size=5000 base align=8
+std::random_device (0x0x7f09696a5ae0) 0
+
+Class std::bernoulli_distribution::param_type
+ size=8 align=8
+ base size=8 base align=8
+std::bernoulli_distribution::param_type (0x0x7f09693a1840) 0
+
+Class std::bernoulli_distribution
+ size=8 align=8
+ base size=8 base align=8
+std::bernoulli_distribution (0x0x7f09693a17e0) 0
+
+Class std::seed_seq
+ size=24 align=8
+ base size=24 base align=8
+std::seed_seq (0x0x7f09691a25a0) 0
+
+Class QRandomGenerator::Storage
+ size=2504 align=8
+ base size=2504 base align=8
+QRandomGenerator::Storage (0x0x7f0968fd5240) 0
+
+Class QRandomGenerator
+ size=2512 align=8
+ base size=2512 base align=8
+QRandomGenerator (0x0x7f0968fd51e0) 0
+
+Class QRandomGenerator64
+ size=2512 align=8
+ base size=2512 base align=8
+QRandomGenerator64 (0x0x7f0969043958) 0
+ QRandomGenerator (0x0x7f0969056d20) 0
+
+Class QReadWriteLock
+ size=8 align=8
+ base size=8 base align=8
+QReadWriteLock (0x0x7f096907d900) 0
+
+Class QReadLocker
+ size=8 align=8
+ base size=8 base align=8
+QReadLocker (0x0x7f096907dba0) 0
+
+Class QWriteLocker
+ size=8 align=8
+ base size=8 base align=8
+QWriteLocker (0x0x7f09690fe0c0) 0
+
+Class QSize
+ size=8 align=4
+ base size=8 base align=4
+QSize (0x0x7f09690fe5a0) 0
+
+Class QSizeF
+ size=16 align=8
+ base size=16 base align=8
+QSizeF (0x0x7f0969172480) 0
+
+Class QRect
+ size=16 align=4
+ base size=16 base align=4
+QRect (0x0x7f0968dec4e0) 0
+
+Class QRectF
+ size=32 align=8
+ base size=32 base align=8
+QRectF (0x0x7f0968ea3540) 0
+
+Class QResource
+ size=8 align=8
+ base size=8 base align=8
+QResource (0x0x7f0968f63660) 0
+
+Class QSaveFile::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSaveFile::QPrivateSignal (0x0x7f0968f63900) 0 empty
+
+Vtable for QSaveFile
+QSaveFile::_ZTV9QSaveFile: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QSaveFile)
+16 (int (*)(...))QSaveFile::metaObject
+24 (int (*)(...))QSaveFile::qt_metacast
+32 (int (*)(...))QSaveFile::qt_metacall
+40 (int (*)(...))QSaveFile::~QSaveFile
+48 (int (*)(...))QSaveFile::~QSaveFile
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QSaveFile::open
+128 (int (*)(...))QSaveFile::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFileDevice::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QSaveFile::writeData
+240 (int (*)(...))QSaveFile::fileName
+248 (int (*)(...))QFileDevice::resize
+256 (int (*)(...))QFileDevice::permissions
+264 (int (*)(...))QFileDevice::setPermissions
+
+Class QSaveFile
+ size=16 align=8
+ base size=16 base align=8
+QSaveFile (0x0x7f0968f1d340) 0
+ vptr=((& QSaveFile::_ZTV9QSaveFile) + 16)
+ QFileDevice (0x0x7f0968f1d3a8) 0
+ primary-for QSaveFile (0x0x7f0968f1d340)
+ QIODevice (0x0x7f0968f1d410) 0
+ primary-for QFileDevice (0x0x7f0968f1d3a8)
+ QObject (0x0x7f0968f638a0) 0
+ primary-for QIODevice (0x0x7f0968f1d410)
+
+Class QSemaphore
+ size=8 align=8
+ base size=8 base align=8
+QSemaphore (0x0x7f0968f63f00) 0
+
+Class QSemaphoreReleaser
+ size=16 align=8
+ base size=12 base align=8
+QSemaphoreReleaser (0x0x7f0968bb90c0) 0
+
+Class QSequentialAnimationGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSequentialAnimationGroup::QPrivateSignal (0x0x7f0968c66cc0) 0 empty
+
+Vtable for QSequentialAnimationGroup
+QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QSequentialAnimationGroup)
+16 (int (*)(...))QSequentialAnimationGroup::metaObject
+24 (int (*)(...))QSequentialAnimationGroup::qt_metacast
+32 (int (*)(...))QSequentialAnimationGroup::qt_metacall
+40 (int (*)(...))QSequentialAnimationGroup::~QSequentialAnimationGroup
+48 (int (*)(...))QSequentialAnimationGroup::~QSequentialAnimationGroup
+56 (int (*)(...))QSequentialAnimationGroup::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QSequentialAnimationGroup::duration
+120 (int (*)(...))QSequentialAnimationGroup::updateCurrentTime
+128 (int (*)(...))QSequentialAnimationGroup::updateState
+136 (int (*)(...))QSequentialAnimationGroup::updateDirection
+
+Class QSequentialAnimationGroup
+ size=16 align=8
+ base size=16 base align=8
+QSequentialAnimationGroup (0x0x7f0968c73bc8) 0
+ vptr=((& QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup) + 16)
+ QAnimationGroup (0x0x7f0968c73c30) 0
+ primary-for QSequentialAnimationGroup (0x0x7f0968c73bc8)
+ QAbstractAnimation (0x0x7f0968c73c98) 0
+ primary-for QAnimationGroup (0x0x7f0968c73c30)
+ QObject (0x0x7f0968c66c60) 0
+ primary-for QAbstractAnimation (0x0x7f0968c73c98)
+
+Class QSettings::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSettings::QPrivateSignal (0x0x7f0968c66f00) 0 empty
+
+Vtable for QSettings
+QSettings::_ZTV9QSettings: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QSettings)
+16 (int (*)(...))QSettings::metaObject
+24 (int (*)(...))QSettings::qt_metacast
+32 (int (*)(...))QSettings::qt_metacall
+40 (int (*)(...))QSettings::~QSettings
+48 (int (*)(...))QSettings::~QSettings
+56 (int (*)(...))QSettings::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSettings
+ size=16 align=8
+ base size=16 base align=8
+QSettings (0x0x7f0968c73d00) 0
+ vptr=((& QSettings::_ZTV9QSettings) + 16)
+ QObject (0x0x7f0968c66ea0) 0
+ primary-for QSettings (0x0x7f0968c73d00)
+
+Class QSharedMemory::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSharedMemory::QPrivateSignal (0x0x7f0968cae3c0) 0 empty
+
+Vtable for QSharedMemory
+QSharedMemory::_ZTV13QSharedMemory: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSharedMemory)
+16 (int (*)(...))QSharedMemory::metaObject
+24 (int (*)(...))QSharedMemory::qt_metacast
+32 (int (*)(...))QSharedMemory::qt_metacall
+40 (int (*)(...))QSharedMemory::~QSharedMemory
+48 (int (*)(...))QSharedMemory::~QSharedMemory
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSharedMemory
+ size=16 align=8
+ base size=16 base align=8
+QSharedMemory (0x0x7f0968c73d68) 0
+ vptr=((& QSharedMemory::_ZTV13QSharedMemory) + 16)
+ QObject (0x0x7f0968cae360) 0
+ primary-for QSharedMemory (0x0x7f0968c73d68)
+
+Class QSignalMapper::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSignalMapper::QPrivateSignal (0x0x7f0968cae600) 0 empty
+
+Vtable for QSignalMapper
+QSignalMapper::_ZTV13QSignalMapper: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSignalMapper)
+16 (int (*)(...))QSignalMapper::metaObject
+24 (int (*)(...))QSignalMapper::qt_metacast
+32 (int (*)(...))QSignalMapper::qt_metacall
+40 (int (*)(...))QSignalMapper::~QSignalMapper
+48 (int (*)(...))QSignalMapper::~QSignalMapper
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSignalMapper
+ size=16 align=8
+ base size=16 base align=8
+QSignalMapper (0x0x7f0968c73dd0) 0
+ vptr=((& QSignalMapper::_ZTV13QSignalMapper) + 16)
+ QObject (0x0x7f0968cae5a0) 0
+ primary-for QSignalMapper (0x0x7f0968c73dd0)
+
+Class QSignalTransition::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSignalTransition::QPrivateSignal (0x0x7f0968cae840) 0 empty
+
+Vtable for QSignalTransition
+QSignalTransition::_ZTV17QSignalTransition: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QSignalTransition)
+16 (int (*)(...))QSignalTransition::metaObject
+24 (int (*)(...))QSignalTransition::qt_metacast
+32 (int (*)(...))QSignalTransition::qt_metacall
+40 (int (*)(...))QSignalTransition::~QSignalTransition
+48 (int (*)(...))QSignalTransition::~QSignalTransition
+56 (int (*)(...))QSignalTransition::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QSignalTransition::eventTest
+120 (int (*)(...))QSignalTransition::onTransition
+
+Class QSignalTransition
+ size=16 align=8
+ base size=16 base align=8
+QSignalTransition (0x0x7f0968c73e38) 0
+ vptr=((& QSignalTransition::_ZTV17QSignalTransition) + 16)
+ QAbstractTransition (0x0x7f0968c73ea0) 0
+ primary-for QSignalTransition (0x0x7f0968c73e38)
+ QObject (0x0x7f0968cae7e0) 0
+ primary-for QAbstractTransition (0x0x7f0968c73ea0)
+
+Class QSocketNotifier::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSocketNotifier::QPrivateSignal (0x0x7f0968caeae0) 0 empty
+
+Vtable for QSocketNotifier
+QSocketNotifier::_ZTV15QSocketNotifier: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QSocketNotifier)
+16 (int (*)(...))QSocketNotifier::metaObject
+24 (int (*)(...))QSocketNotifier::qt_metacast
+32 (int (*)(...))QSocketNotifier::qt_metacall
+40 (int (*)(...))QSocketNotifier::~QSocketNotifier
+48 (int (*)(...))QSocketNotifier::~QSocketNotifier
+56 (int (*)(...))QSocketNotifier::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSocketNotifier
+ size=16 align=8
+ base size=16 base align=8
+QSocketNotifier (0x0x7f0968c73f08) 0
+ vptr=((& QSocketNotifier::_ZTV15QSocketNotifier) + 16)
+ QObject (0x0x7f0968caea80) 0
+ primary-for QSocketNotifier (0x0x7f0968c73f08)
+
+Class QSortFilterProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSortFilterProxyModel::QPrivateSignal (0x0x7f0968caed20) 0 empty
+
+Vtable for QSortFilterProxyModel
+QSortFilterProxyModel::_ZTV21QSortFilterProxyModel: 56 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QSortFilterProxyModel)
+16 (int (*)(...))QSortFilterProxyModel::metaObject
+24 (int (*)(...))QSortFilterProxyModel::qt_metacast
+32 (int (*)(...))QSortFilterProxyModel::qt_metacall
+40 (int (*)(...))QSortFilterProxyModel::~QSortFilterProxyModel
+48 (int (*)(...))QSortFilterProxyModel::~QSortFilterProxyModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QSortFilterProxyModel::index
+120 (int (*)(...))QSortFilterProxyModel::parent
+128 (int (*)(...))QSortFilterProxyModel::sibling
+136 (int (*)(...))QSortFilterProxyModel::rowCount
+144 (int (*)(...))QSortFilterProxyModel::columnCount
+152 (int (*)(...))QSortFilterProxyModel::hasChildren
+160 (int (*)(...))QSortFilterProxyModel::data
+168 (int (*)(...))QSortFilterProxyModel::setData
+176 (int (*)(...))QSortFilterProxyModel::headerData
+184 (int (*)(...))QSortFilterProxyModel::setHeaderData
+192 (int (*)(...))QAbstractProxyModel::itemData
+200 (int (*)(...))QAbstractProxyModel::setItemData
+208 (int (*)(...))QSortFilterProxyModel::mimeTypes
+216 (int (*)(...))QSortFilterProxyModel::mimeData
+224 (int (*)(...))QAbstractProxyModel::canDropMimeData
+232 (int (*)(...))QSortFilterProxyModel::dropMimeData
+240 (int (*)(...))QSortFilterProxyModel::supportedDropActions
+248 (int (*)(...))QAbstractProxyModel::supportedDragActions
+256 (int (*)(...))QSortFilterProxyModel::insertRows
+264 (int (*)(...))QSortFilterProxyModel::insertColumns
+272 (int (*)(...))QSortFilterProxyModel::removeRows
+280 (int (*)(...))QSortFilterProxyModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QSortFilterProxyModel::fetchMore
+312 (int (*)(...))QSortFilterProxyModel::canFetchMore
+320 (int (*)(...))QSortFilterProxyModel::flags
+328 (int (*)(...))QSortFilterProxyModel::sort
+336 (int (*)(...))QSortFilterProxyModel::buddy
+344 (int (*)(...))QSortFilterProxyModel::match
+352 (int (*)(...))QSortFilterProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractProxyModel::submit
+376 (int (*)(...))QAbstractProxyModel::revert
+384 (int (*)(...))QSortFilterProxyModel::setSourceModel
+392 (int (*)(...))QSortFilterProxyModel::mapToSource
+400 (int (*)(...))QSortFilterProxyModel::mapFromSource
+408 (int (*)(...))QSortFilterProxyModel::mapSelectionToSource
+416 (int (*)(...))QSortFilterProxyModel::mapSelectionFromSource
+424 (int (*)(...))QSortFilterProxyModel::filterAcceptsRow
+432 (int (*)(...))QSortFilterProxyModel::filterAcceptsColumn
+440 (int (*)(...))QSortFilterProxyModel::lessThan
+
+Class QSortFilterProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QSortFilterProxyModel (0x0x7f0968c73f70) 0
+ vptr=((& QSortFilterProxyModel::_ZTV21QSortFilterProxyModel) + 16)
+ QAbstractProxyModel (0x0x7f0968cf0000) 0
+ primary-for QSortFilterProxyModel (0x0x7f0968c73f70)
+ QAbstractItemModel (0x0x7f0968cf0068) 0
+ primary-for QAbstractProxyModel (0x0x7f0968cf0000)
+ QObject (0x0x7f0968caecc0) 0
+ primary-for QAbstractItemModel (0x0x7f0968cf0068)
+
+Class QStandardPaths
+ size=1 align=1
+ base size=0 base align=1
+QStandardPaths (0x0x7f0968d18180) 0 empty
+
+Class QState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QState::QPrivateSignal (0x0x7f0968d18a80) 0 empty
+
+Vtable for QState
+QState::_ZTV6QState: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QState)
+16 (int (*)(...))QState::metaObject
+24 (int (*)(...))QState::qt_metacast
+32 (int (*)(...))QState::qt_metacall
+40 (int (*)(...))QState::~QState
+48 (int (*)(...))QState::~QState
+56 (int (*)(...))QState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QState::onEntry
+120 (int (*)(...))QState::onExit
+
+Class QState
+ size=16 align=8
+ base size=16 base align=8
+QState (0x0x7f0968cf0208) 0
+ vptr=((& QState::_ZTV6QState) + 16)
+ QAbstractState (0x0x7f0968cf0270) 0
+ primary-for QState (0x0x7f0968cf0208)
+ QObject (0x0x7f0968d18a20) 0
+ primary-for QAbstractState (0x0x7f0968cf0270)
+
+Class QStateMachine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStateMachine::QPrivateSignal (0x0x7f0968d18f00) 0 empty
+
+Vtable for QStateMachine::SignalEvent
+QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN13QStateMachine11SignalEventE)
+16 (int (*)(...))QStateMachine::SignalEvent::~SignalEvent
+24 (int (*)(...))QStateMachine::SignalEvent::~SignalEvent
+
+Class QStateMachine::SignalEvent
+ size=48 align=8
+ base size=48 base align=8
+QStateMachine::SignalEvent (0x0x7f0968cf0410) 0
+ vptr=((& QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE) + 16)
+ QEvent (0x0x7f0968d18f60) 0
+ primary-for QStateMachine::SignalEvent (0x0x7f0968cf0410)
+
+Vtable for QStateMachine::WrappedEvent
+QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN13QStateMachine12WrappedEventE)
+16 (int (*)(...))QStateMachine::WrappedEvent::~WrappedEvent
+24 (int (*)(...))QStateMachine::WrappedEvent::~WrappedEvent
+
+Class QStateMachine::WrappedEvent
+ size=40 align=8
+ base size=40 base align=8
+QStateMachine::WrappedEvent (0x0x7f0968cf0478) 0
+ vptr=((& QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE) + 16)
+ QEvent (0x0x7f0968d6f000) 0
+ primary-for QStateMachine::WrappedEvent (0x0x7f0968cf0478)
+
+Vtable for QStateMachine
+QStateMachine::_ZTV13QStateMachine: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QStateMachine)
+16 (int (*)(...))QStateMachine::metaObject
+24 (int (*)(...))QStateMachine::qt_metacast
+32 (int (*)(...))QStateMachine::qt_metacall
+40 (int (*)(...))QStateMachine::~QStateMachine
+48 (int (*)(...))QStateMachine::~QStateMachine
+56 (int (*)(...))QStateMachine::event
+64 (int (*)(...))QStateMachine::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QStateMachine::onEntry
+120 (int (*)(...))QStateMachine::onExit
+128 (int (*)(...))QStateMachine::beginSelectTransitions
+136 (int (*)(...))QStateMachine::endSelectTransitions
+144 (int (*)(...))QStateMachine::beginMicrostep
+152 (int (*)(...))QStateMachine::endMicrostep
+
+Class QStateMachine
+ size=16 align=8
+ base size=16 base align=8
+QStateMachine (0x0x7f0968cf02d8) 0
+ vptr=((& QStateMachine::_ZTV13QStateMachine) + 16)
+ QState (0x0x7f0968cf0340) 0
+ primary-for QStateMachine (0x0x7f0968cf02d8)
+ QAbstractState (0x0x7f0968cf03a8) 0
+ primary-for QState (0x0x7f0968cf0340)
+ QObject (0x0x7f0968d18ea0) 0
+ primary-for QAbstractState (0x0x7f0968cf03a8)
+
+Class QStorageInfo
+ size=8 align=8
+ base size=8 base align=8
+QStorageInfo (0x0x7f0968d6f3c0) 0
+
+Class QAbstractConcatenable
+ size=1 align=1
+ base size=0 base align=1
+QAbstractConcatenable (0x0x7f0968a7b180) 0 empty
+
+Class QStringListModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStringListModel::QPrivateSignal (0x0x7f0968b054e0) 0 empty
+
+Vtable for QStringListModel
+QStringListModel::_ZTV16QStringListModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QStringListModel)
+16 (int (*)(...))QStringListModel::metaObject
+24 (int (*)(...))QStringListModel::qt_metacast
+32 (int (*)(...))QStringListModel::qt_metacall
+40 (int (*)(...))QStringListModel::~QStringListModel
+48 (int (*)(...))QStringListModel::~QStringListModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractListModel::index
+120 (int (*)(...))QAbstractListModel::parent
+128 (int (*)(...))QStringListModel::sibling
+136 (int (*)(...))QStringListModel::rowCount
+144 (int (*)(...))QAbstractListModel::columnCount
+152 (int (*)(...))QAbstractListModel::hasChildren
+160 (int (*)(...))QStringListModel::data
+168 (int (*)(...))QStringListModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QStringListModel::itemData
+200 (int (*)(...))QStringListModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractListModel::dropMimeData
+240 (int (*)(...))QStringListModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QStringListModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QStringListModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QStringListModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QStringListModel::flags
+328 (int (*)(...))QStringListModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QStringListModel
+ size=24 align=8
+ base size=24 base align=8
+QStringListModel (0x0x7f0968ad9d68) 0
+ vptr=((& QStringListModel::_ZTV16QStringListModel) + 16)
+ QAbstractListModel (0x0x7f0968ad9dd0) 0
+ primary-for QStringListModel (0x0x7f0968ad9d68)
+ QAbstractItemModel (0x0x7f0968ad9e38) 0
+ primary-for QAbstractListModel (0x0x7f0968ad9dd0)
+ QObject (0x0x7f0968b05480) 0
+ primary-for QAbstractItemModel (0x0x7f0968ad9e38)
+
+Class QSystemSemaphore
+ size=8 align=8
+ base size=8 base align=8
+QSystemSemaphore (0x0x7f0968b05600) 0
+
+Class QTemporaryDir
+ size=8 align=8
+ base size=8 base align=8
+QTemporaryDir (0x0x7f0968b056c0) 0
+
+Class QTemporaryFile::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTemporaryFile::QPrivateSignal (0x0x7f0968b057e0) 0 empty
+
+Vtable for QTemporaryFile
+QTemporaryFile::_ZTV14QTemporaryFile: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QTemporaryFile)
+16 (int (*)(...))QTemporaryFile::metaObject
+24 (int (*)(...))QTemporaryFile::qt_metacast
+32 (int (*)(...))QTemporaryFile::qt_metacall
+40 (int (*)(...))QTemporaryFile::~QTemporaryFile
+48 (int (*)(...))QTemporaryFile::~QTemporaryFile
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QTemporaryFile::open
+128 (int (*)(...))QFileDevice::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFile::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QFileDevice::writeData
+240 (int (*)(...))QTemporaryFile::fileName
+248 (int (*)(...))QFile::resize
+256 (int (*)(...))QFile::permissions
+264 (int (*)(...))QFile::setPermissions
+
+Class QTemporaryFile
+ size=16 align=8
+ base size=16 base align=8
+QTemporaryFile (0x0x7f0968ad9ea0) 0
+ vptr=((& QTemporaryFile::_ZTV14QTemporaryFile) + 16)
+ QFile (0x0x7f0968ad9f08) 0
+ primary-for QTemporaryFile (0x0x7f0968ad9ea0)
+ QFileDevice (0x0x7f0968ad9f70) 0
+ primary-for QFile (0x0x7f0968ad9f08)
+ QIODevice (0x0x7f0968b43000) 0
+ primary-for QFileDevice (0x0x7f0968ad9f70)
+ QObject (0x0x7f0968b05780) 0
+ primary-for QIODevice (0x0x7f0968b43000)
+
+Class QTextBoundaryFinder
+ size=48 align=8
+ base size=48 base align=8
+QTextBoundaryFinder (0x0x7f0968b05b40) 0
+
+Class QTextCodec::ConverterState
+ size=32 align=8
+ base size=32 base align=8
+QTextCodec::ConverterState (0x0x7f0968b843c0) 0
+
+Vtable for QTextCodec
+QTextCodec::_ZTV10QTextCodec: 9 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTextCodec)
+16 (int (*)(...))__cxa_pure_virtual
+24 (int (*)(...))QTextCodec::aliases
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 0
+64 0
+
+Class QTextCodec
+ size=8 align=8
+ base size=8 base align=8
+QTextCodec (0x0x7f0968b84360) 0 nearly-empty
+ vptr=((& QTextCodec::_ZTV10QTextCodec) + 16)
+
+Class QTextEncoder
+ size=40 align=8
+ base size=40 base align=8
+QTextEncoder (0x0x7f0968b84d80) 0
+
+Class QTextDecoder
+ size=40 align=8
+ base size=40 base align=8
+QTextDecoder (0x0x7f0968b84f60) 0
+
+Vtable for std::thread::_State
+std::thread::_State::_ZTVNSt6thread6_StateE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt6thread6_StateE)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class std::thread::_State
+ size=8 align=8
+ base size=8 base align=8
+std::thread::_State (0x0x7f09687dd1e0) 0 nearly-empty
+ vptr=((& std::thread::_State::_ZTVNSt6thread6_StateE) + 16)
+
+Class std::thread::id
+ size=8 align=8
+ base size=8 base align=8
+std::thread::id (0x0x7f09687dd240) 0
+
+Class std::thread
+ size=8 align=8
+ base size=8 base align=8
+std::thread (0x0x7f09687dd180) 0
+
+Class std::condition_variable
+ size=48 align=8
+ base size=48 base align=8
+std::condition_variable (0x0x7f0968670600) 0
+
+Class std::__at_thread_exit_elt
+ size=16 align=8
+ base size=16 base align=8
+std::__at_thread_exit_elt (0x0x7f09686709c0) 0
+
+Class std::_V2::condition_variable_any
+ size=64 align=8
+ base size=64 base align=8
+std::_V2::condition_variable_any (0x0x7f0968670a20) 0
+
+Class std::__atomic_futex_unsigned_base
+ size=1 align=1
+ base size=0 base align=1
+std::__atomic_futex_unsigned_base (0x0x7f0968401d20) 0 empty
+
+Vtable for std::future_error
+std::future_error::_ZTVSt12future_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12future_error)
+16 (int (*)(...))std::future_error::~future_error
+24 (int (*)(...))std::future_error::~future_error
+32 (int (*)(...))std::future_error::what
+
+Class std::future_error
+ size=32 align=8
+ base size=32 base align=8
+std::future_error (0x0x7f096840e3a8) 0
+ vptr=((& std::future_error::_ZTVSt12future_error) + 16)
+ std::logic_error (0x0x7f096840e410) 0
+ primary-for std::future_error (0x0x7f096840e3a8)
+ std::exception (0x0x7f096842b480) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f096840e410)
+
+Class std::__future_base::_Result_base::_Deleter
+ size=1 align=1
+ base size=0 base align=1
+std::__future_base::_Result_base::_Deleter (0x0x7f096842bba0) 0 empty
+
+Vtable for std::__future_base::_Result_base
+std::__future_base::_Result_base::_ZTVNSt13__future_base12_Result_baseE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt13__future_base12_Result_baseE)
+16 (int (*)(...))__cxa_pure_virtual
+24 0
+32 0
+
+Class std::__future_base::_Result_base
+ size=16 align=8
+ base size=16 base align=8
+std::__future_base::_Result_base (0x0x7f096842bb40) 0
+ vptr=((& std::__future_base::_Result_base::_ZTVNSt13__future_base12_Result_baseE) + 16)
+
+Class std::__future_base::_State_baseV2::__exception_ptr_tag
+ size=1 align=1
+ base size=0 base align=1
+std::__future_base::_State_baseV2::__exception_ptr_tag (0x0x7f096822c300) 0 empty
+
+Class std::__future_base::_State_baseV2::_Make_ready
+ size=32 align=8
+ base size=32 base align=8
+std::__future_base::_State_baseV2::_Make_ready (0x0x7f09681ffc30) 0
+ std::__at_thread_exit_elt (0x0x7f096822c3c0) 0
+
+Vtable for std::__future_base::_State_baseV2
+std::__future_base::_State_baseV2::_ZTVNSt13__future_base13_State_baseV2E: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt13__future_base13_State_baseV2E)
+16 (int (*)(...))std::__future_base::_State_baseV2::~_State_baseV2
+24 (int (*)(...))std::__future_base::_State_baseV2::~_State_baseV2
+32 (int (*)(...))std::__future_base::_State_baseV2::_M_complete_async
+40 (int (*)(...))std::__future_base::_State_baseV2::_M_is_deferred_future
+
+Class std::__future_base::_State_baseV2
+ size=32 align=8
+ base size=28 base align=8
+std::__future_base::_State_baseV2 (0x0x7f096842bd20) 0
+ vptr=((& std::__future_base::_State_baseV2::_ZTVNSt13__future_base13_State_baseV2E) + 16)
+
+Class std::__future_base
+ size=1 align=1
+ base size=0 base align=1
+std::__future_base (0x0x7f096842bae0) 0 empty
+
+Vtable for std::__future_base::_Async_state_commonV2
+std::__future_base::_Async_state_commonV2::_ZTVNSt13__future_base21_Async_state_commonV2E: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt13__future_base21_Async_state_commonV2E)
+16 (int (*)(...))std::__future_base::_Async_state_commonV2::~_Async_state_commonV2
+24 (int (*)(...))std::__future_base::_Async_state_commonV2::~_Async_state_commonV2
+32 (int (*)(...))std::__future_base::_Async_state_commonV2::_M_complete_async
+40 (int (*)(...))std::__future_base::_State_baseV2::_M_is_deferred_future
+
+Class std::__future_base::_Async_state_commonV2
+ size=48 align=8
+ base size=44 base align=8
+std::__future_base::_Async_state_commonV2 (0x0x7f09679a0958) 0
+ vptr=((& std::__future_base::_Async_state_commonV2::_ZTVNSt13__future_base21_Async_state_commonV2E) + 16)
+ std::__future_base::_State_baseV2 (0x0x7f09679e13c0) 0
+ primary-for std::__future_base::_Async_state_commonV2 (0x0x7f09679a0958)
+
+Class QThread::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QThread::QPrivateSignal (0x0x7f09679e1c60) 0 empty
+
+Vtable for QThread
+QThread::_ZTV7QThread: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QThread)
+16 (int (*)(...))QThread::metaObject
+24 (int (*)(...))QThread::qt_metacast
+32 (int (*)(...))QThread::qt_metacall
+40 (int (*)(...))QThread::~QThread
+48 (int (*)(...))QThread::~QThread
+56 (int (*)(...))QThread::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QThread::run
+
+Class QThread
+ size=16 align=8
+ base size=16 base align=8
+QThread (0x0x7f09679a0c98) 0
+ vptr=((& QThread::_ZTV7QThread) + 16)
+ QObject (0x0x7f09679e1c00) 0
+ primary-for QThread (0x0x7f09679a0c98)
+
+Class QThreadPool::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QThreadPool::QPrivateSignal (0x0x7f0967a1f060) 0 empty
+
+Vtable for QThreadPool
+QThreadPool::_ZTV11QThreadPool: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QThreadPool)
+16 (int (*)(...))QThreadPool::metaObject
+24 (int (*)(...))QThreadPool::qt_metacast
+32 (int (*)(...))QThreadPool::qt_metacall
+40 (int (*)(...))QThreadPool::~QThreadPool
+48 (int (*)(...))QThreadPool::~QThreadPool
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QThreadPool
+ size=16 align=8
+ base size=16 base align=8
+QThreadPool (0x0x7f09679a0d00) 0
+ vptr=((& QThreadPool::_ZTV11QThreadPool) + 16)
+ QObject (0x0x7f0967a1f000) 0
+ primary-for QThreadPool (0x0x7f09679a0d00)
+
+Class QThreadStorageData
+ size=4 align=4
+ base size=4 base align=4
+QThreadStorageData (0x0x7f0967a1f240) 0
+
+Class QTimeLine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTimeLine::QPrivateSignal (0x0x7f0967a1f900) 0 empty
+
+Vtable for QTimeLine
+QTimeLine::_ZTV9QTimeLine: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QTimeLine)
+16 (int (*)(...))QTimeLine::metaObject
+24 (int (*)(...))QTimeLine::qt_metacast
+32 (int (*)(...))QTimeLine::qt_metacall
+40 (int (*)(...))QTimeLine::~QTimeLine
+48 (int (*)(...))QTimeLine::~QTimeLine
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QTimeLine::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTimeLine::valueForTime
+
+Class QTimeLine
+ size=16 align=8
+ base size=16 base align=8
+QTimeLine (0x0x7f09679a0d68) 0
+ vptr=((& QTimeLine::_ZTV9QTimeLine) + 16)
+ QObject (0x0x7f0967a1f8a0) 0
+ primary-for QTimeLine (0x0x7f09679a0d68)
+
+Class QTimer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTimer::QPrivateSignal (0x0x7f0967a1fb40) 0 empty
+
+Vtable for QTimer
+QTimer::_ZTV6QTimer: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QTimer)
+16 (int (*)(...))QTimer::metaObject
+24 (int (*)(...))QTimer::qt_metacast
+32 (int (*)(...))QTimer::qt_metacall
+40 (int (*)(...))QTimer::~QTimer
+48 (int (*)(...))QTimer::~QTimer
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QTimer::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTimer
+ size=32 align=8
+ base size=29 base align=8
+QTimer (0x0x7f09679a0dd0) 0
+ vptr=((& QTimer::_ZTV6QTimer) + 16)
+ QObject (0x0x7f0967a1fae0) 0
+ primary-for QTimer (0x0x7f09679a0dd0)
+
+Class QTimeZone::OffsetData
+ size=32 align=8
+ base size=28 base align=8
+QTimeZone::OffsetData (0x0x7f0967a954e0) 0
+
+Class QTimeZone
+ size=8 align=8
+ base size=8 base align=8
+QTimeZone (0x0x7f0967a95480) 0
+
+Class QTranslator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTranslator::QPrivateSignal (0x0x7f0967b325a0) 0 empty
+
+Vtable for QTranslator
+QTranslator::_ZTV11QTranslator: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTranslator)
+16 (int (*)(...))QTranslator::metaObject
+24 (int (*)(...))QTranslator::qt_metacast
+32 (int (*)(...))QTranslator::qt_metacall
+40 (int (*)(...))QTranslator::~QTranslator
+48 (int (*)(...))QTranslator::~QTranslator
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTranslator::translate
+120 (int (*)(...))QTranslator::isEmpty
+
+Class QTranslator
+ size=16 align=8
+ base size=16 base align=8
+QTranslator (0x0x7f0967b304e0) 0
+ vptr=((& QTranslator::_ZTV11QTranslator) + 16)
+ QObject (0x0x7f0967b32540) 0
+ primary-for QTranslator (0x0x7f0967b304e0)
+
+Class QTransposeProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTransposeProxyModel::QPrivateSignal (0x0x7f0967b327e0) 0 empty
+
+Vtable for QTransposeProxyModel
+QTransposeProxyModel::_ZTV20QTransposeProxyModel: 53 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QTransposeProxyModel)
+16 (int (*)(...))QTransposeProxyModel::metaObject
+24 (int (*)(...))QTransposeProxyModel::qt_metacast
+32 (int (*)(...))QTransposeProxyModel::qt_metacall
+40 (int (*)(...))QTransposeProxyModel::~QTransposeProxyModel
+48 (int (*)(...))QTransposeProxyModel::~QTransposeProxyModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTransposeProxyModel::index
+120 (int (*)(...))QTransposeProxyModel::parent
+128 (int (*)(...))QAbstractProxyModel::sibling
+136 (int (*)(...))QTransposeProxyModel::rowCount
+144 (int (*)(...))QTransposeProxyModel::columnCount
+152 (int (*)(...))QAbstractProxyModel::hasChildren
+160 (int (*)(...))QAbstractProxyModel::data
+168 (int (*)(...))QAbstractProxyModel::setData
+176 (int (*)(...))QTransposeProxyModel::headerData
+184 (int (*)(...))QTransposeProxyModel::setHeaderData
+192 (int (*)(...))QTransposeProxyModel::itemData
+200 (int (*)(...))QTransposeProxyModel::setItemData
+208 (int (*)(...))QAbstractProxyModel::mimeTypes
+216 (int (*)(...))QAbstractProxyModel::mimeData
+224 (int (*)(...))QAbstractProxyModel::canDropMimeData
+232 (int (*)(...))QAbstractProxyModel::dropMimeData
+240 (int (*)(...))QAbstractProxyModel::supportedDropActions
+248 (int (*)(...))QAbstractProxyModel::supportedDragActions
+256 (int (*)(...))QTransposeProxyModel::insertRows
+264 (int (*)(...))QTransposeProxyModel::insertColumns
+272 (int (*)(...))QTransposeProxyModel::removeRows
+280 (int (*)(...))QTransposeProxyModel::removeColumns
+288 (int (*)(...))QTransposeProxyModel::moveRows
+296 (int (*)(...))QTransposeProxyModel::moveColumns
+304 (int (*)(...))QAbstractProxyModel::fetchMore
+312 (int (*)(...))QAbstractProxyModel::canFetchMore
+320 (int (*)(...))QAbstractProxyModel::flags
+328 (int (*)(...))QTransposeProxyModel::sort
+336 (int (*)(...))QAbstractProxyModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QTransposeProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractProxyModel::submit
+376 (int (*)(...))QAbstractProxyModel::revert
+384 (int (*)(...))QTransposeProxyModel::setSourceModel
+392 (int (*)(...))QTransposeProxyModel::mapToSource
+400 (int (*)(...))QTransposeProxyModel::mapFromSource
+408 (int (*)(...))QAbstractProxyModel::mapSelectionToSource
+416 (int (*)(...))QAbstractProxyModel::mapSelectionFromSource
+
+Class QTransposeProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QTransposeProxyModel (0x0x7f0967b30548) 0
+ vptr=((& QTransposeProxyModel::_ZTV20QTransposeProxyModel) + 16)
+ QAbstractProxyModel (0x0x7f0967b305b0) 0
+ primary-for QTransposeProxyModel (0x0x7f0967b30548)
+ QAbstractItemModel (0x0x7f0967b30618) 0
+ primary-for QAbstractProxyModel (0x0x7f0967b305b0)
+ QObject (0x0x7f0967b32780) 0
+ primary-for QAbstractItemModel (0x0x7f0967b30618)
+
+Class QUrlQuery
+ size=8 align=8
+ base size=8 base align=8
+QUrlQuery (0x0x7f0967b329c0) 0
+
+Class QWaitCondition
+ size=8 align=8
+ base size=8 base align=8
+QWaitCondition (0x0x7f0967830ea0) 0
+
+Class QXmlStreamStringRef
+ size=16 align=8
+ base size=16 base align=8
+QXmlStreamStringRef (0x0x7f0967852000) 0
+
+Class QXmlStreamAttribute
+ size=80 align=8
+ base size=73 base align=8
+QXmlStreamAttribute (0x0x7f09678de3c0) 0
+
+Class QXmlStreamAttributes
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamAttributes (0x0x7f09679458f0) 0
+ QVector<QXmlStreamAttribute> (0x0x7f0967942ae0) 0
+
+Class QXmlStreamNamespaceDeclaration
+ size=40 align=8
+ base size=40 base align=8
+QXmlStreamNamespaceDeclaration (0x0x7f0967942de0) 0
+
+Class QXmlStreamNotationDeclaration
+ size=56 align=8
+ base size=56 base align=8
+QXmlStreamNotationDeclaration (0x0x7f09675c4d80) 0
+
+Class QXmlStreamEntityDeclaration
+ size=88 align=8
+ base size=88 base align=8
+QXmlStreamEntityDeclaration (0x0x7f0967622d80) 0
+
+Vtable for QXmlStreamEntityResolver
+QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QXmlStreamEntityResolver)
+16 (int (*)(...))QXmlStreamEntityResolver::~QXmlStreamEntityResolver
+24 (int (*)(...))QXmlStreamEntityResolver::~QXmlStreamEntityResolver
+32 (int (*)(...))QXmlStreamEntityResolver::resolveEntity
+40 (int (*)(...))QXmlStreamEntityResolver::resolveUndeclaredEntity
+
+Class QXmlStreamEntityResolver
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamEntityResolver (0x0x7f096768ae40) 0 nearly-empty
+ vptr=((& QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver) + 16)
+
+Class QXmlStreamReader
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamReader (0x0x7f096768aea0) 0
+
+Class QXmlStreamWriter
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamWriter (0x0x7f09676c7d80) 0
+
+Class QAbstractItemModelTester::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractItemModelTester::QPrivateSignal (0x0x7f0967721000) 0 empty
+
+Vtable for QAbstractItemModelTester
+QAbstractItemModelTester::_ZTV24QAbstractItemModelTester: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QAbstractItemModelTester)
+16 (int (*)(...))QAbstractItemModelTester::metaObject
+24 (int (*)(...))QAbstractItemModelTester::qt_metacast
+32 (int (*)(...))QAbstractItemModelTester::qt_metacall
+40 (int (*)(...))QAbstractItemModelTester::~QAbstractItemModelTester
+48 (int (*)(...))QAbstractItemModelTester::~QAbstractItemModelTester
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QAbstractItemModelTester
+ size=16 align=8
+ base size=16 base align=8
+QAbstractItemModelTester (0x0x7f09676d15b0) 0
+ vptr=((& QAbstractItemModelTester::_ZTV24QAbstractItemModelTester) + 16)
+ QObject (0x0x7f09676c7f60) 0
+ primary-for QAbstractItemModelTester (0x0x7f09676d15b0)
+
+Class QTest::QBenchmarkIterationController
+ size=4 align=4
+ base size=4 base align=4
+QTest::QBenchmarkIterationController (0x0x7f0967721240) 0
+
+Class QTestEventLoop::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTestEventLoop::QPrivateSignal (0x0x7f0967721300) 0 empty
+
+Vtable for QTestEventLoop
+QTestEventLoop::_ZTV14QTestEventLoop: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QTestEventLoop)
+16 (int (*)(...))QTestEventLoop::metaObject
+24 (int (*)(...))QTestEventLoop::qt_metacast
+32 (int (*)(...))QTestEventLoop::qt_metacall
+40 (int (*)(...))QTestEventLoop::~QTestEventLoop
+48 (int (*)(...))QTestEventLoop::~QTestEventLoop
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QTestEventLoop::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTestEventLoop
+ size=32 align=8
+ base size=32 base align=8
+QTestEventLoop (0x0x7f09676d1618) 0
+ vptr=((& QTestEventLoop::_ZTV14QTestEventLoop) + 16)
+ QObject (0x0x7f09677212a0) 0
+ primary-for QTestEventLoop (0x0x7f09676d1618)
+
+Vtable for QSignalSpy
+QSignalSpy::_ZTV10QSignalSpy: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QSignalSpy)
+16 (int (*)(...))QObject::metaObject
+24 (int (*)(...))QObject::qt_metacast
+32 (int (*)(...))QSignalSpy::qt_metacall
+40 (int (*)(...))QSignalSpy::~QSignalSpy
+48 (int (*)(...))QSignalSpy::~QSignalSpy
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSignalSpy
+ size=80 align=8
+ base size=73 base align=8
+QSignalSpy (0x0x7f09673c4150) 0
+ vptr=((& QSignalSpy::_ZTV10QSignalSpy) + 16)
+ QObject (0x0x7f09673ab780) 0
+ primary-for QSignalSpy (0x0x7f09673c4150)
+ QList<QList<QVariant> > (0x0x7f09673b02d8) 16
+ QListSpecialMethods<QList<QVariant> > (0x0x7f09673ab7e0) 16 empty
+
+Class QTestData
+ size=8 align=8
+ base size=8 base align=8
+QTestData (0x0x7f09674ac2a0) 0
+
+Class QRgba64
+ size=8 align=8
+ base size=8 base align=8
+QRgba64 (0x0x7f0967186420) 0
+
+Class QColor::CT
+ size=10 align=2
+ base size=10 base align=2
+QColor::CT (0x0x7f09672204e0) 0
+
+Class QColor
+ size=16 align=4
+ base size=14 base align=4
+QColor (0x0x7f0967220480) 0
+
+Class QRegion::QRegionData
+ size=16 align=8
+ base size=16 base align=8
+QRegion::QRegionData (0x0x7f09672e53c0) 0
+
+Class QRegion
+ size=8 align=8
+ base size=8 base align=8
+QRegion (0x0x7f09672e5360) 0
+
+Class QKeySequence
+ size=8 align=8
+ base size=8 base align=8
+QKeySequence (0x0x7f0967071000) 0
+
+Class QVector2D
+ size=8 align=4
+ base size=8 base align=4
+QVector2D (0x0x7f096713db40) 0
+
+Class QTouchDevice
+ size=8 align=8
+ base size=8 base align=8
+QTouchDevice (0x0x7f0966dacc00) 0
+
+Vtable for QInputEvent
+QInputEvent::_ZTV11QInputEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QInputEvent)
+16 (int (*)(...))QInputEvent::~QInputEvent
+24 (int (*)(...))QInputEvent::~QInputEvent
+
+Class QInputEvent
+ size=32 align=8
+ base size=32 base align=8
+QInputEvent (0x0x7f0966d8eea0) 0
+ vptr=((& QInputEvent::_ZTV11QInputEvent) + 16)
+ QEvent (0x0x7f0966df44e0) 0
+ primary-for QInputEvent (0x0x7f0966d8eea0)
+
+Vtable for QEnterEvent
+QEnterEvent::_ZTV11QEnterEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QEnterEvent)
+16 (int (*)(...))QEnterEvent::~QEnterEvent
+24 (int (*)(...))QEnterEvent::~QEnterEvent
+
+Class QEnterEvent
+ size=72 align=8
+ base size=72 base align=8
+QEnterEvent (0x0x7f0966d8ef08) 0
+ vptr=((& QEnterEvent::_ZTV11QEnterEvent) + 16)
+ QEvent (0x0x7f0966df46c0) 0
+ primary-for QEnterEvent (0x0x7f0966d8ef08)
+
+Vtable for QMouseEvent
+QMouseEvent::_ZTV11QMouseEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QMouseEvent)
+16 (int (*)(...))QMouseEvent::~QMouseEvent
+24 (int (*)(...))QMouseEvent::~QMouseEvent
+
+Class QMouseEvent
+ size=104 align=8
+ base size=100 base align=8
+QMouseEvent (0x0x7f0966d8ef70) 0
+ vptr=((& QMouseEvent::_ZTV11QMouseEvent) + 16)
+ QInputEvent (0x0x7f0966e17000) 0
+ primary-for QMouseEvent (0x0x7f0966d8ef70)
+ QEvent (0x0x7f0966df4a80) 0
+ primary-for QInputEvent (0x0x7f0966e17000)
+
+Vtable for QHoverEvent
+QHoverEvent::_ZTV11QHoverEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QHoverEvent)
+16 (int (*)(...))QHoverEvent::~QHoverEvent
+24 (int (*)(...))QHoverEvent::~QHoverEvent
+
+Class QHoverEvent
+ size=64 align=8
+ base size=64 base align=8
+QHoverEvent (0x0x7f0966e17068) 0
+ vptr=((& QHoverEvent::_ZTV11QHoverEvent) + 16)
+ QInputEvent (0x0x7f0966e170d0) 0
+ primary-for QHoverEvent (0x0x7f0966e17068)
+ QEvent (0x0x7f0966df4f60) 0
+ primary-for QInputEvent (0x0x7f0966e170d0)
+
+Vtable for QWheelEvent
+QWheelEvent::_ZTV11QWheelEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QWheelEvent)
+16 (int (*)(...))QWheelEvent::~QWheelEvent
+24 (int (*)(...))QWheelEvent::~QWheelEvent
+
+Class QWheelEvent
+ size=96 align=8
+ base size=96 base align=8
+QWheelEvent (0x0x7f0966e17138) 0
+ vptr=((& QWheelEvent::_ZTV11QWheelEvent) + 16)
+ QInputEvent (0x0x7f0966e171a0) 0
+ primary-for QWheelEvent (0x0x7f0966e17138)
+ QEvent (0x0x7f0966e2e180) 0
+ primary-for QInputEvent (0x0x7f0966e171a0)
+
+Vtable for QTabletEvent
+QTabletEvent::_ZTV12QTabletEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QTabletEvent)
+16 (int (*)(...))QTabletEvent::~QTabletEvent
+24 (int (*)(...))QTabletEvent::~QTabletEvent
+
+Class QTabletEvent
+ size=128 align=8
+ base size=128 base align=8
+QTabletEvent (0x0x7f0966e17208) 0
+ vptr=((& QTabletEvent::_ZTV12QTabletEvent) + 16)
+ QInputEvent (0x0x7f0966e17270) 0
+ primary-for QTabletEvent (0x0x7f0966e17208)
+ QEvent (0x0x7f0966e2e8a0) 0
+ primary-for QInputEvent (0x0x7f0966e17270)
+
+Vtable for QNativeGestureEvent
+QNativeGestureEvent::_ZTV19QNativeGestureEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QNativeGestureEvent)
+16 (int (*)(...))QNativeGestureEvent::~QNativeGestureEvent
+24 (int (*)(...))QNativeGestureEvent::~QNativeGestureEvent
+
+Class QNativeGestureEvent
+ size=112 align=8
+ base size=112 base align=8
+QNativeGestureEvent (0x0x7f0966e172d8) 0
+ vptr=((& QNativeGestureEvent::_ZTV19QNativeGestureEvent) + 16)
+ QInputEvent (0x0x7f0966e17340) 0
+ primary-for QNativeGestureEvent (0x0x7f0966e172d8)
+ QEvent (0x0x7f0966e6c1e0) 0
+ primary-for QInputEvent (0x0x7f0966e17340)
+
+Vtable for QKeyEvent
+QKeyEvent::_ZTV9QKeyEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QKeyEvent)
+16 (int (*)(...))QKeyEvent::~QKeyEvent
+24 (int (*)(...))QKeyEvent::~QKeyEvent
+
+Class QKeyEvent
+ size=64 align=8
+ base size=59 base align=8
+QKeyEvent (0x0x7f0966e173a8) 0
+ vptr=((& QKeyEvent::_ZTV9QKeyEvent) + 16)
+ QInputEvent (0x0x7f0966e17410) 0
+ primary-for QKeyEvent (0x0x7f0966e173a8)
+ QEvent (0x0x7f0966e6c4e0) 0
+ primary-for QInputEvent (0x0x7f0966e17410)
+
+Vtable for QFocusEvent
+QFocusEvent::_ZTV11QFocusEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFocusEvent)
+16 (int (*)(...))QFocusEvent::~QFocusEvent
+24 (int (*)(...))QFocusEvent::~QFocusEvent
+
+Class QFocusEvent
+ size=24 align=8
+ base size=24 base align=8
+QFocusEvent (0x0x7f0966e17478) 0
+ vptr=((& QFocusEvent::_ZTV11QFocusEvent) + 16)
+ QEvent (0x0x7f0966e6c7e0) 0
+ primary-for QFocusEvent (0x0x7f0966e17478)
+
+Vtable for QPaintEvent
+QPaintEvent::_ZTV11QPaintEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QPaintEvent)
+16 (int (*)(...))QPaintEvent::~QPaintEvent
+24 (int (*)(...))QPaintEvent::~QPaintEvent
+
+Class QPaintEvent
+ size=56 align=8
+ base size=49 base align=8
+QPaintEvent (0x0x7f0966e174e0) 0
+ vptr=((& QPaintEvent::_ZTV11QPaintEvent) + 16)
+ QEvent (0x0x7f0966e6c900) 0
+ primary-for QPaintEvent (0x0x7f0966e174e0)
+
+Vtable for QMoveEvent
+QMoveEvent::_ZTV10QMoveEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QMoveEvent)
+16 (int (*)(...))QMoveEvent::~QMoveEvent
+24 (int (*)(...))QMoveEvent::~QMoveEvent
+
+Class QMoveEvent
+ size=40 align=8
+ base size=36 base align=8
+QMoveEvent (0x0x7f0966e17548) 0
+ vptr=((& QMoveEvent::_ZTV10QMoveEvent) + 16)
+ QEvent (0x0x7f0966e6ca20) 0
+ primary-for QMoveEvent (0x0x7f0966e17548)
+
+Vtable for QExposeEvent
+QExposeEvent::_ZTV12QExposeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QExposeEvent)
+16 (int (*)(...))QExposeEvent::~QExposeEvent
+24 (int (*)(...))QExposeEvent::~QExposeEvent
+
+Class QExposeEvent
+ size=32 align=8
+ base size=32 base align=8
+QExposeEvent (0x0x7f0966e175b0) 0
+ vptr=((& QExposeEvent::_ZTV12QExposeEvent) + 16)
+ QEvent (0x0x7f0966e6cb40) 0
+ primary-for QExposeEvent (0x0x7f0966e175b0)
+
+Vtable for QPlatformSurfaceEvent
+QPlatformSurfaceEvent::_ZTV21QPlatformSurfaceEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QPlatformSurfaceEvent)
+16 (int (*)(...))QPlatformSurfaceEvent::~QPlatformSurfaceEvent
+24 (int (*)(...))QPlatformSurfaceEvent::~QPlatformSurfaceEvent
+
+Class QPlatformSurfaceEvent
+ size=24 align=8
+ base size=24 base align=8
+QPlatformSurfaceEvent (0x0x7f0966e17618) 0
+ vptr=((& QPlatformSurfaceEvent::_ZTV21QPlatformSurfaceEvent) + 16)
+ QEvent (0x0x7f0966e6cc00) 0
+ primary-for QPlatformSurfaceEvent (0x0x7f0966e17618)
+
+Vtable for QResizeEvent
+QResizeEvent::_ZTV12QResizeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QResizeEvent)
+16 (int (*)(...))QResizeEvent::~QResizeEvent
+24 (int (*)(...))QResizeEvent::~QResizeEvent
+
+Class QResizeEvent
+ size=40 align=8
+ base size=36 base align=8
+QResizeEvent (0x0x7f0966e17680) 0
+ vptr=((& QResizeEvent::_ZTV12QResizeEvent) + 16)
+ QEvent (0x0x7f0966e6ccc0) 0
+ primary-for QResizeEvent (0x0x7f0966e17680)
+
+Vtable for QCloseEvent
+QCloseEvent::_ZTV11QCloseEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QCloseEvent)
+16 (int (*)(...))QCloseEvent::~QCloseEvent
+24 (int (*)(...))QCloseEvent::~QCloseEvent
+
+Class QCloseEvent
+ size=24 align=8
+ base size=20 base align=8
+QCloseEvent (0x0x7f0966e176e8) 0
+ vptr=((& QCloseEvent::_ZTV11QCloseEvent) + 16)
+ QEvent (0x0x7f0966e6cde0) 0
+ primary-for QCloseEvent (0x0x7f0966e176e8)
+
+Vtable for QIconDragEvent
+QIconDragEvent::_ZTV14QIconDragEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QIconDragEvent)
+16 (int (*)(...))QIconDragEvent::~QIconDragEvent
+24 (int (*)(...))QIconDragEvent::~QIconDragEvent
+
+Class QIconDragEvent
+ size=24 align=8
+ base size=20 base align=8
+QIconDragEvent (0x0x7f0966e17750) 0
+ vptr=((& QIconDragEvent::_ZTV14QIconDragEvent) + 16)
+ QEvent (0x0x7f0966e6ce40) 0
+ primary-for QIconDragEvent (0x0x7f0966e17750)
+
+Vtable for QShowEvent
+QShowEvent::_ZTV10QShowEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QShowEvent)
+16 (int (*)(...))QShowEvent::~QShowEvent
+24 (int (*)(...))QShowEvent::~QShowEvent
+
+Class QShowEvent
+ size=24 align=8
+ base size=20 base align=8
+QShowEvent (0x0x7f0966e177b8) 0
+ vptr=((& QShowEvent::_ZTV10QShowEvent) + 16)
+ QEvent (0x0x7f0966e6cea0) 0
+ primary-for QShowEvent (0x0x7f0966e177b8)
+
+Vtable for QHideEvent
+QHideEvent::_ZTV10QHideEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QHideEvent)
+16 (int (*)(...))QHideEvent::~QHideEvent
+24 (int (*)(...))QHideEvent::~QHideEvent
+
+Class QHideEvent
+ size=24 align=8
+ base size=20 base align=8
+QHideEvent (0x0x7f0966e17820) 0
+ vptr=((& QHideEvent::_ZTV10QHideEvent) + 16)
+ QEvent (0x0x7f0966e6cf00) 0
+ primary-for QHideEvent (0x0x7f0966e17820)
+
+Vtable for QContextMenuEvent
+QContextMenuEvent::_ZTV17QContextMenuEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QContextMenuEvent)
+16 (int (*)(...))QContextMenuEvent::~QContextMenuEvent
+24 (int (*)(...))QContextMenuEvent::~QContextMenuEvent
+
+Class QContextMenuEvent
+ size=56 align=8
+ base size=49 base align=8
+QContextMenuEvent (0x0x7f0966e17888) 0
+ vptr=((& QContextMenuEvent::_ZTV17QContextMenuEvent) + 16)
+ QInputEvent (0x0x7f0966e178f0) 0
+ primary-for QContextMenuEvent (0x0x7f0966e17888)
+ QEvent (0x0x7f0966e6cf60) 0
+ primary-for QInputEvent (0x0x7f0966e178f0)
+
+Class QInputMethodEvent::Attribute
+ size=32 align=8
+ base size=32 base align=8
+QInputMethodEvent::Attribute (0x0x7f0966ebb300) 0
+
+Vtable for QInputMethodEvent
+QInputMethodEvent::_ZTV17QInputMethodEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QInputMethodEvent)
+16 (int (*)(...))QInputMethodEvent::~QInputMethodEvent
+24 (int (*)(...))QInputMethodEvent::~QInputMethodEvent
+
+Class QInputMethodEvent
+ size=56 align=8
+ base size=56 base align=8
+QInputMethodEvent (0x0x7f0966e17958) 0
+ vptr=((& QInputMethodEvent::_ZTV17QInputMethodEvent) + 16)
+ QEvent (0x0x7f0966ebb2a0) 0
+ primary-for QInputMethodEvent (0x0x7f0966e17958)
+
+Class QInputMethodQueryEvent::QueryPair
+ size=24 align=8
+ base size=24 base align=8
+QInputMethodQueryEvent::QueryPair (0x0x7f0966f38660) 0
+
+Vtable for QInputMethodQueryEvent
+QInputMethodQueryEvent::_ZTV22QInputMethodQueryEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QInputMethodQueryEvent)
+16 (int (*)(...))QInputMethodQueryEvent::~QInputMethodQueryEvent
+24 (int (*)(...))QInputMethodQueryEvent::~QInputMethodQueryEvent
+
+Class QInputMethodQueryEvent
+ size=32 align=8
+ base size=32 base align=8
+QInputMethodQueryEvent (0x0x7f0966f2db60) 0
+ vptr=((& QInputMethodQueryEvent::_ZTV22QInputMethodQueryEvent) + 16)
+ QEvent (0x0x7f0966f38600) 0
+ primary-for QInputMethodQueryEvent (0x0x7f0966f2db60)
+
+Vtable for QDropEvent
+QDropEvent::_ZTV10QDropEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QDropEvent)
+16 (int (*)(...))QDropEvent::~QDropEvent
+24 (int (*)(...))QDropEvent::~QDropEvent
+
+Class QDropEvent
+ size=72 align=8
+ base size=72 base align=8
+QDropEvent (0x0x7f0966ba5c30) 0
+ vptr=((& QDropEvent::_ZTV10QDropEvent) + 16)
+ QEvent (0x0x7f0966bb63c0) 0
+ primary-for QDropEvent (0x0x7f0966ba5c30)
+
+Vtable for QDragMoveEvent
+QDragMoveEvent::_ZTV14QDragMoveEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QDragMoveEvent)
+16 (int (*)(...))QDragMoveEvent::~QDragMoveEvent
+24 (int (*)(...))QDragMoveEvent::~QDragMoveEvent
+
+Class QDragMoveEvent
+ size=88 align=8
+ base size=88 base align=8
+QDragMoveEvent (0x0x7f0966ba5c98) 0
+ vptr=((& QDragMoveEvent::_ZTV14QDragMoveEvent) + 16)
+ QDropEvent (0x0x7f0966ba5d00) 0
+ primary-for QDragMoveEvent (0x0x7f0966ba5c98)
+ QEvent (0x0x7f0966bb6780) 0
+ primary-for QDropEvent (0x0x7f0966ba5d00)
+
+Vtable for QDragEnterEvent
+QDragEnterEvent::_ZTV15QDragEnterEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QDragEnterEvent)
+16 (int (*)(...))QDragEnterEvent::~QDragEnterEvent
+24 (int (*)(...))QDragEnterEvent::~QDragEnterEvent
+
+Class QDragEnterEvent
+ size=88 align=8
+ base size=88 base align=8
+QDragEnterEvent (0x0x7f0966ba5d68) 0
+ vptr=((& QDragEnterEvent::_ZTV15QDragEnterEvent) + 16)
+ QDragMoveEvent (0x0x7f0966ba5dd0) 0
+ primary-for QDragEnterEvent (0x0x7f0966ba5d68)
+ QDropEvent (0x0x7f0966ba5e38) 0
+ primary-for QDragMoveEvent (0x0x7f0966ba5dd0)
+ QEvent (0x0x7f0966bb69c0) 0
+ primary-for QDropEvent (0x0x7f0966ba5e38)
+
+Vtable for QDragLeaveEvent
+QDragLeaveEvent::_ZTV15QDragLeaveEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QDragLeaveEvent)
+16 (int (*)(...))QDragLeaveEvent::~QDragLeaveEvent
+24 (int (*)(...))QDragLeaveEvent::~QDragLeaveEvent
+
+Class QDragLeaveEvent
+ size=24 align=8
+ base size=20 base align=8
+QDragLeaveEvent (0x0x7f0966ba5ea0) 0
+ vptr=((& QDragLeaveEvent::_ZTV15QDragLeaveEvent) + 16)
+ QEvent (0x0x7f0966bb6a20) 0
+ primary-for QDragLeaveEvent (0x0x7f0966ba5ea0)
+
+Vtable for QHelpEvent
+QHelpEvent::_ZTV10QHelpEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QHelpEvent)
+16 (int (*)(...))QHelpEvent::~QHelpEvent
+24 (int (*)(...))QHelpEvent::~QHelpEvent
+
+Class QHelpEvent
+ size=40 align=8
+ base size=36 base align=8
+QHelpEvent (0x0x7f0966ba5f08) 0
+ vptr=((& QHelpEvent::_ZTV10QHelpEvent) + 16)
+ QEvent (0x0x7f0966bb6a80) 0
+ primary-for QHelpEvent (0x0x7f0966ba5f08)
+
+Vtable for QStatusTipEvent
+QStatusTipEvent::_ZTV15QStatusTipEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QStatusTipEvent)
+16 (int (*)(...))QStatusTipEvent::~QStatusTipEvent
+24 (int (*)(...))QStatusTipEvent::~QStatusTipEvent
+
+Class QStatusTipEvent
+ size=32 align=8
+ base size=32 base align=8
+QStatusTipEvent (0x0x7f0966ba5f70) 0
+ vptr=((& QStatusTipEvent::_ZTV15QStatusTipEvent) + 16)
+ QEvent (0x0x7f0966bb6d20) 0
+ primary-for QStatusTipEvent (0x0x7f0966ba5f70)
+
+Vtable for QWhatsThisClickedEvent
+QWhatsThisClickedEvent::_ZTV22QWhatsThisClickedEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QWhatsThisClickedEvent)
+16 (int (*)(...))QWhatsThisClickedEvent::~QWhatsThisClickedEvent
+24 (int (*)(...))QWhatsThisClickedEvent::~QWhatsThisClickedEvent
+
+Class QWhatsThisClickedEvent
+ size=32 align=8
+ base size=32 base align=8
+QWhatsThisClickedEvent (0x0x7f0966be5000) 0
+ vptr=((& QWhatsThisClickedEvent::_ZTV22QWhatsThisClickedEvent) + 16)
+ QEvent (0x0x7f0966bb6de0) 0
+ primary-for QWhatsThisClickedEvent (0x0x7f0966be5000)
+
+Vtable for QActionEvent
+QActionEvent::_ZTV12QActionEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QActionEvent)
+16 (int (*)(...))QActionEvent::~QActionEvent
+24 (int (*)(...))QActionEvent::~QActionEvent
+
+Class QActionEvent
+ size=40 align=8
+ base size=40 base align=8
+QActionEvent (0x0x7f0966be5068) 0
+ vptr=((& QActionEvent::_ZTV12QActionEvent) + 16)
+ QEvent (0x0x7f0966bb6ea0) 0
+ primary-for QActionEvent (0x0x7f0966be5068)
+
+Vtable for QFileOpenEvent
+QFileOpenEvent::_ZTV14QFileOpenEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QFileOpenEvent)
+16 (int (*)(...))QFileOpenEvent::~QFileOpenEvent
+24 (int (*)(...))QFileOpenEvent::~QFileOpenEvent
+
+Class QFileOpenEvent
+ size=40 align=8
+ base size=40 base align=8
+QFileOpenEvent (0x0x7f0966be50d0) 0
+ vptr=((& QFileOpenEvent::_ZTV14QFileOpenEvent) + 16)
+ QEvent (0x0x7f0966bee000) 0
+ primary-for QFileOpenEvent (0x0x7f0966be50d0)
+
+Vtable for QToolBarChangeEvent
+QToolBarChangeEvent::_ZTV19QToolBarChangeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QToolBarChangeEvent)
+16 (int (*)(...))QToolBarChangeEvent::~QToolBarChangeEvent
+24 (int (*)(...))QToolBarChangeEvent::~QToolBarChangeEvent
+
+Class QToolBarChangeEvent
+ size=24 align=8
+ base size=21 base align=8
+QToolBarChangeEvent (0x0x7f0966be5138) 0
+ vptr=((& QToolBarChangeEvent::_ZTV19QToolBarChangeEvent) + 16)
+ QEvent (0x0x7f0966bee120) 0
+ primary-for QToolBarChangeEvent (0x0x7f0966be5138)
+
+Vtable for QShortcutEvent
+QShortcutEvent::_ZTV14QShortcutEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QShortcutEvent)
+16 (int (*)(...))QShortcutEvent::~QShortcutEvent
+24 (int (*)(...))QShortcutEvent::~QShortcutEvent
+
+Class QShortcutEvent
+ size=40 align=8
+ base size=40 base align=8
+QShortcutEvent (0x0x7f0966be51a0) 0
+ vptr=((& QShortcutEvent::_ZTV14QShortcutEvent) + 16)
+ QEvent (0x0x7f0966bee1e0) 0
+ primary-for QShortcutEvent (0x0x7f0966be51a0)
+
+Vtable for QWindowStateChangeEvent
+QWindowStateChangeEvent::_ZTV23QWindowStateChangeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QWindowStateChangeEvent)
+16 (int (*)(...))QWindowStateChangeEvent::~QWindowStateChangeEvent
+24 (int (*)(...))QWindowStateChangeEvent::~QWindowStateChangeEvent
+
+Class QWindowStateChangeEvent
+ size=32 align=8
+ base size=25 base align=8
+QWindowStateChangeEvent (0x0x7f0966be5208) 0
+ vptr=((& QWindowStateChangeEvent::_ZTV23QWindowStateChangeEvent) + 16)
+ QEvent (0x0x7f0966bee360) 0
+ primary-for QWindowStateChangeEvent (0x0x7f0966be5208)
+
+Class QPointingDeviceUniqueId
+ size=8 align=8
+ base size=8 base align=8
+QPointingDeviceUniqueId (0x0x7f0966bee4e0) 0
+
+Class QTouchEvent::TouchPoint
+ size=8 align=8
+ base size=8 base align=8
+QTouchEvent::TouchPoint (0x0x7f0966c448a0) 0
+
+Vtable for QTouchEvent
+QTouchEvent::_ZTV11QTouchEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTouchEvent)
+16 (int (*)(...))QTouchEvent::~QTouchEvent
+24 (int (*)(...))QTouchEvent::~QTouchEvent
+
+Class QTouchEvent
+ size=72 align=8
+ base size=72 base align=8
+QTouchEvent (0x0x7f0966c41a28) 0
+ vptr=((& QTouchEvent::_ZTV11QTouchEvent) + 16)
+ QInputEvent (0x0x7f0966c41a90) 0
+ primary-for QTouchEvent (0x0x7f0966c41a28)
+ QEvent (0x0x7f0966c44840) 0
+ primary-for QInputEvent (0x0x7f0966c41a90)
+
+Vtable for QScrollPrepareEvent
+QScrollPrepareEvent::_ZTV19QScrollPrepareEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QScrollPrepareEvent)
+16 (int (*)(...))QScrollPrepareEvent::~QScrollPrepareEvent
+24 (int (*)(...))QScrollPrepareEvent::~QScrollPrepareEvent
+
+Class QScrollPrepareEvent
+ size=112 align=8
+ base size=112 base align=8
+QScrollPrepareEvent (0x0x7f0966d57750) 0
+ vptr=((& QScrollPrepareEvent::_ZTV19QScrollPrepareEvent) + 16)
+ QEvent (0x0x7f0966d51e40) 0
+ primary-for QScrollPrepareEvent (0x0x7f0966d57750)
+
+Vtable for QScrollEvent
+QScrollEvent::_ZTV12QScrollEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QScrollEvent)
+16 (int (*)(...))QScrollEvent::~QScrollEvent
+24 (int (*)(...))QScrollEvent::~QScrollEvent
+
+Class QScrollEvent
+ size=64 align=8
+ base size=60 base align=8
+QScrollEvent (0x0x7f0966d577b8) 0
+ vptr=((& QScrollEvent::_ZTV12QScrollEvent) + 16)
+ QEvent (0x0x7f0966d51ea0) 0
+ primary-for QScrollEvent (0x0x7f0966d577b8)
+
+Vtable for QScreenOrientationChangeEvent
+QScreenOrientationChangeEvent::_ZTV29QScreenOrientationChangeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI29QScreenOrientationChangeEvent)
+16 (int (*)(...))QScreenOrientationChangeEvent::~QScreenOrientationChangeEvent
+24 (int (*)(...))QScreenOrientationChangeEvent::~QScreenOrientationChangeEvent
+
+Class QScreenOrientationChangeEvent
+ size=40 align=8
+ base size=36 base align=8
+QScreenOrientationChangeEvent (0x0x7f0966d57820) 0
+ vptr=((& QScreenOrientationChangeEvent::_ZTV29QScreenOrientationChangeEvent) + 16)
+ QEvent (0x0x7f0966d51f00) 0
+ primary-for QScreenOrientationChangeEvent (0x0x7f0966d57820)
+
+Vtable for QApplicationStateChangeEvent
+QApplicationStateChangeEvent::_ZTV28QApplicationStateChangeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI28QApplicationStateChangeEvent)
+16 (int (*)(...))QApplicationStateChangeEvent::~QApplicationStateChangeEvent
+24 (int (*)(...))QApplicationStateChangeEvent::~QApplicationStateChangeEvent
+
+Class QApplicationStateChangeEvent
+ size=24 align=8
+ base size=24 base align=8
+QApplicationStateChangeEvent (0x0x7f0966d57888) 0
+ vptr=((& QApplicationStateChangeEvent::_ZTV28QApplicationStateChangeEvent) + 16)
+ QEvent (0x0x7f0966d51f60) 0
+ primary-for QApplicationStateChangeEvent (0x0x7f0966d57888)
+
+Class QFont
+ size=16 align=8
+ base size=12 base align=8
+QFont (0x0x7f096699b000) 0
+
+Class QPolygon
+ size=8 align=8
+ base size=8 base align=8
+QPolygon (0x0x7f0966a86d00) 0
+ QVector<QPoint> (0x0x7f0966abb060) 0
+
+Class QPolygonF
+ size=8 align=8
+ base size=8 base align=8
+QPolygonF (0x0x7f0966b63068) 0
+ QVector<QPointF> (0x0x7f0966b48180) 0
+
+Class QMatrix
+ size=48 align=8
+ base size=48 base align=8
+QMatrix (0x0x7f09667e9060) 0
+
+Class QPainterPath::Element
+ size=24 align=8
+ base size=24 base align=8
+QPainterPath::Element (0x0x7f0966835e40) 0
+
+Class QPainterPath
+ size=8 align=8
+ base size=8 base align=8
+QPainterPath (0x0x7f0966835de0) 0
+
+Class QPainterPathStroker
+ size=8 align=8
+ base size=8 base align=8
+QPainterPathStroker (0x0x7f096658a1e0) 0
+
+Class QTransform
+ size=88 align=8
+ base size=88 base align=8
+QTransform (0x0x7f096658a8a0) 0
+
+Vtable for QPaintDevice
+QPaintDevice::_ZTV12QPaintDevice: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QPaintDevice)
+16 0
+24 0
+32 (int (*)(...))QPaintDevice::devType
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))QPaintDevice::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QPaintDevice
+ size=24 align=8
+ base size=24 base align=8
+QPaintDevice (0x0x7f096665f360) 0
+ vptr=((& QPaintDevice::_ZTV12QPaintDevice) + 16)
+
+Class QPixelFormat
+ size=8 align=8
+ base size=8 base align=8
+QPixelFormat (0x0x7f096665f960) 0
+
+Vtable for QImage
+QImage::_ZTV6QImage: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QImage)
+16 (int (*)(...))QImage::~QImage
+24 (int (*)(...))QImage::~QImage
+32 (int (*)(...))QImage::devType
+40 (int (*)(...))QImage::paintEngine
+48 (int (*)(...))QImage::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QImage
+ size=32 align=8
+ base size=32 base align=8
+QImage (0x0x7f0966707ea0) 0
+ vptr=((& QImage::_ZTV6QImage) + 16)
+ QPaintDevice (0x0x7f096672d2a0) 0
+ primary-for QImage (0x0x7f0966707ea0)
+
+Vtable for QPixmap
+QPixmap::_ZTV7QPixmap: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QPixmap)
+16 (int (*)(...))QPixmap::~QPixmap
+24 (int (*)(...))QPixmap::~QPixmap
+32 (int (*)(...))QPixmap::devType
+40 (int (*)(...))QPixmap::paintEngine
+48 (int (*)(...))QPixmap::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QPixmap
+ size=32 align=8
+ base size=32 base align=8
+QPixmap (0x0x7f09664278f0) 0
+ vptr=((& QPixmap::_ZTV7QPixmap) + 16)
+ QPaintDevice (0x0x7f096643b060) 0
+ primary-for QPixmap (0x0x7f09664278f0)
+
+Class QBrush
+ size=8 align=8
+ base size=8 base align=8
+QBrush (0x0x7f0966517360) 0
+
+Class QBrushData
+ size=112 align=8
+ base size=112 base align=8
+QBrushData (0x0x7f09661dd8a0) 0
+
+Class QGradient
+ size=64 align=8
+ base size=64 base align=8
+QGradient (0x0x7f09661ddae0) 0
+
+Class QLinearGradient
+ size=64 align=8
+ base size=64 base align=8
+QLinearGradient (0x0x7f09661e42d8) 0
+ QGradient (0x0x7f096623f240) 0
+
+Class QRadialGradient
+ size=64 align=8
+ base size=64 base align=8
+QRadialGradient (0x0x7f09661e4340) 0
+ QGradient (0x0x7f096623f360) 0
+
+Class QConicalGradient
+ size=64 align=8
+ base size=64 base align=8
+QConicalGradient (0x0x7f09661e43a8) 0
+ QGradient (0x0x7f096623f480) 0
+
+Class QPen
+ size=8 align=8
+ base size=8 base align=8
+QPen (0x0x7f096623f540) 0
+
+Class QTextOption::Tab
+ size=16 align=8
+ base size=14 base align=8
+QTextOption::Tab (0x0x7f09662fcea0) 0
+
+Class QTextOption
+ size=32 align=8
+ base size=32 base align=8
+QTextOption (0x0x7f09662fce40) 0
+
+Class QTextLength
+ size=16 align=8
+ base size=16 base align=8
+QTextLength (0x0x7f0966369600) 0
+
+Class QTextFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextFormat (0x0x7f0965fbdf60) 0
+
+Class QTextCharFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextCharFormat (0x0x7f09661420d0) 0
+ QTextFormat (0x0x7f0966143660) 0
+
+Class QTextBlockFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextBlockFormat (0x0x7f0965de14e0) 0
+ QTextFormat (0x0x7f0965dee060) 0
+
+Class QTextListFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextListFormat (0x0x7f0965e3ea28) 0
+ QTextFormat (0x0x7f0965e31de0) 0
+
+Class QTextImageFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextImageFormat (0x0x7f0965e80e38) 0
+ QTextCharFormat (0x0x7f0965e80ea0) 0
+ QTextFormat (0x0x7f0965e925a0) 0
+
+Class QTextFrameFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextFrameFormat (0x0x7f0965ed9410) 0
+ QTextFormat (0x0x7f0965ed1c00) 0
+
+Class QTextTableFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextTableFormat (0x0x7f0965f2c958) 0
+ QTextFrameFormat (0x0x7f0965f2c9c0) 0
+ QTextFormat (0x0x7f0965f33840) 0
+
+Class QTextTableCellFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextTableCellFormat (0x0x7f0965f7ff08) 0
+ QTextCharFormat (0x0x7f0965f7ff70) 0
+ QTextFormat (0x0x7f0965b961e0) 0
+
+Class QFontDatabase
+ size=8 align=8
+ base size=8 base align=8
+QFontDatabase (0x0x7f0965c06060) 0
+
+Class QRawFont
+ size=8 align=8
+ base size=8 base align=8
+QRawFont (0x0x7f0965c06240) 0
+
+Class QGlyphRun
+ size=8 align=8
+ base size=8 base align=8
+QGlyphRun (0x0x7f0965cf1a20) 0
+
+Class QTextCursor
+ size=8 align=8
+ base size=8 base align=8
+QTextCursor (0x0x7f09659dd960) 0
+
+Class QTextInlineObject
+ size=16 align=8
+ base size=16 base align=8
+QTextInlineObject (0x0x7f0965aba600) 0
+
+Class QTextLayout::FormatRange
+ size=24 align=8
+ base size=24 base align=8
+QTextLayout::FormatRange (0x0x7f0965abaa20) 0
+
+Class QTextLayout
+ size=8 align=8
+ base size=8 base align=8
+QTextLayout (0x0x7f0965aba9c0) 0
+
+Class QTextLine
+ size=16 align=8
+ base size=16 base align=8
+QTextLine (0x0x7f0965b6e120) 0
+
+Vtable for QAbstractUndoItem
+QAbstractUndoItem::_ZTV17QAbstractUndoItem: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAbstractUndoItem)
+16 (int (*)(...))__cxa_pure_virtual
+24 (int (*)(...))__cxa_pure_virtual
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractUndoItem
+ size=8 align=8
+ base size=8 base align=8
+QAbstractUndoItem (0x0x7f0965b6e5a0) 0 nearly-empty
+ vptr=((& QAbstractUndoItem::_ZTV17QAbstractUndoItem) + 16)
+
+Class QTextDocument::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextDocument::QPrivateSignal (0x0x7f0965b6e840) 0 empty
+
+Vtable for QTextDocument
+QTextDocument::_ZTV13QTextDocument: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QTextDocument)
+16 (int (*)(...))QTextDocument::metaObject
+24 (int (*)(...))QTextDocument::qt_metacast
+32 (int (*)(...))QTextDocument::qt_metacall
+40 (int (*)(...))QTextDocument::~QTextDocument
+48 (int (*)(...))QTextDocument::~QTextDocument
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTextDocument::clear
+120 (int (*)(...))QTextDocument::createObject
+128 (int (*)(...))QTextDocument::loadResource
+
+Class QTextDocument
+ size=16 align=8
+ base size=16 base align=8
+QTextDocument (0x0x7f0965b66750) 0
+ vptr=((& QTextDocument::_ZTV13QTextDocument) + 16)
+ QObject (0x0x7f0965b6e7e0) 0
+ primary-for QTextDocument (0x0x7f0965b66750)
+
+Class QPalette::Data
+ size=4 align=4
+ base size=4 base align=4
+QPalette::Data (0x0x7f09657e1840) 0
+
+Class QPalette
+ size=16 align=8
+ base size=12 base align=8
+QPalette (0x0x7f09657e17e0) 0
+
+Class QAbstractTextDocumentLayout::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractTextDocumentLayout::QPrivateSignal (0x0x7f09658cec00) 0 empty
+
+Class QAbstractTextDocumentLayout::Selection
+ size=24 align=8
+ base size=24 base align=8
+QAbstractTextDocumentLayout::Selection (0x0x7f09658cec60) 0
+
+Class QAbstractTextDocumentLayout::PaintContext
+ size=64 align=8
+ base size=64 base align=8
+QAbstractTextDocumentLayout::PaintContext (0x0x7f09658cecc0) 0
+
+Vtable for QAbstractTextDocumentLayout
+QAbstractTextDocumentLayout::_ZTV27QAbstractTextDocumentLayout: 24 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QAbstractTextDocumentLayout)
+16 (int (*)(...))QAbstractTextDocumentLayout::metaObject
+24 (int (*)(...))QAbstractTextDocumentLayout::qt_metacast
+32 (int (*)(...))QAbstractTextDocumentLayout::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))__cxa_pure_virtual
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QAbstractTextDocumentLayout::resizeInlineObject
+176 (int (*)(...))QAbstractTextDocumentLayout::positionInlineObject
+184 (int (*)(...))QAbstractTextDocumentLayout::drawInlineObject
+
+Class QAbstractTextDocumentLayout
+ size=16 align=8
+ base size=16 base align=8
+QAbstractTextDocumentLayout (0x0x7f09658d4548) 0
+ vptr=((& QAbstractTextDocumentLayout::_ZTV27QAbstractTextDocumentLayout) + 16)
+ QObject (0x0x7f09658ceba0) 0
+ primary-for QAbstractTextDocumentLayout (0x0x7f09658d4548)
+
+Vtable for QTextObjectInterface
+QTextObjectInterface::_ZTV20QTextObjectInterface: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QTextObjectInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QTextObjectInterface
+ size=8 align=8
+ base size=8 base align=8
+QTextObjectInterface (0x0x7f096559c8a0) 0 nearly-empty
+ vptr=((& QTextObjectInterface::_ZTV20QTextObjectInterface) + 16)
+
+Class QAccessible::State
+ size=8 align=8
+ base size=5 base align=8
+QAccessible::State (0x0x7f096559cae0) 0
+
+Vtable for QAccessible::ActivationObserver
+QAccessible::ActivationObserver::_ZTVN11QAccessible18ActivationObserverE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN11QAccessible18ActivationObserverE)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessible::ActivationObserver
+ size=8 align=8
+ base size=8 base align=8
+QAccessible::ActivationObserver (0x0x7f096559cb40) 0 nearly-empty
+ vptr=((& QAccessible::ActivationObserver::_ZTVN11QAccessible18ActivationObserverE) + 16)
+
+Class QAccessible
+ size=1 align=1
+ base size=0 base align=1
+QAccessible (0x0x7f096559ca80) 0 empty
+
+Vtable for QAccessibleInterface
+QAccessibleInterface::_ZTV20QAccessibleInterface: 23 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QAccessibleInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))QAccessibleInterface::window
+56 (int (*)(...))QAccessibleInterface::relations
+64 (int (*)(...))QAccessibleInterface::focusChild
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))__cxa_pure_virtual
+96 (int (*)(...))__cxa_pure_virtual
+104 (int (*)(...))__cxa_pure_virtual
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAccessibleInterface::foregroundColor
+160 (int (*)(...))QAccessibleInterface::backgroundColor
+168 (int (*)(...))QAccessibleInterface::virtual_hook
+176 (int (*)(...))QAccessibleInterface::interface_cast
+
+Class QAccessibleInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleInterface (0x0x7f09655d8720) 0 nearly-empty
+ vptr=((& QAccessibleInterface::_ZTV20QAccessibleInterface) + 16)
+
+Vtable for QAccessibleTextInterface
+QAccessibleTextInterface::_ZTV24QAccessibleTextInterface: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QAccessibleTextInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))__cxa_pure_virtual
+96 (int (*)(...))QAccessibleTextInterface::textBeforeOffset
+104 (int (*)(...))QAccessibleTextInterface::textAfterOffset
+112 (int (*)(...))QAccessibleTextInterface::textAtOffset
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleTextInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleTextInterface (0x0x7f09655d8a80) 0 nearly-empty
+ vptr=((& QAccessibleTextInterface::_ZTV24QAccessibleTextInterface) + 16)
+
+Vtable for QAccessibleEditableTextInterface
+QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI32QAccessibleEditableTextInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleEditableTextInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleEditableTextInterface (0x0x7f09655d8ae0) 0 nearly-empty
+ vptr=((& QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface) + 16)
+
+Vtable for QAccessibleValueInterface
+QAccessibleValueInterface::_ZTV25QAccessibleValueInterface: 9 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QAccessibleValueInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleValueInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleValueInterface (0x0x7f09655d8b40) 0 nearly-empty
+ vptr=((& QAccessibleValueInterface::_ZTV25QAccessibleValueInterface) + 16)
+
+Vtable for QAccessibleTableCellInterface
+QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface: 12 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI29QAccessibleTableCellInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleTableCellInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleTableCellInterface (0x0x7f09655d8ba0) 0 nearly-empty
+ vptr=((& QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface) + 16)
+
+Vtable for QAccessibleTableInterface
+QAccessibleTableInterface::_ZTV25QAccessibleTableInterface: 24 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QAccessibleTableInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))__cxa_pure_virtual
+96 (int (*)(...))__cxa_pure_virtual
+104 (int (*)(...))__cxa_pure_virtual
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))__cxa_pure_virtual
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))__cxa_pure_virtual
+176 (int (*)(...))__cxa_pure_virtual
+184 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleTableInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleTableInterface (0x0x7f09655d8c00) 0 nearly-empty
+ vptr=((& QAccessibleTableInterface::_ZTV25QAccessibleTableInterface) + 16)
+
+Vtable for QAccessibleActionInterface
+QAccessibleActionInterface::_ZTV26QAccessibleActionInterface: 9 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAccessibleActionInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))QAccessibleActionInterface::localizedActionName
+48 (int (*)(...))QAccessibleActionInterface::localizedActionDescription
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleActionInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleActionInterface (0x0x7f09655d8c60) 0 nearly-empty
+ vptr=((& QAccessibleActionInterface::_ZTV26QAccessibleActionInterface) + 16)
+
+Vtable for QAccessibleImageInterface
+QAccessibleImageInterface::_ZTV25QAccessibleImageInterface: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QAccessibleImageInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleImageInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleImageInterface (0x0x7f09655d8d80) 0 nearly-empty
+ vptr=((& QAccessibleImageInterface::_ZTV25QAccessibleImageInterface) + 16)
+
+Vtable for QAccessibleEvent
+QAccessibleEvent::_ZTV16QAccessibleEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QAccessibleEvent)
+16 (int (*)(...))QAccessibleEvent::~QAccessibleEvent
+24 (int (*)(...))QAccessibleEvent::~QAccessibleEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleEvent
+ size=32 align=8
+ base size=28 base align=8
+QAccessibleEvent (0x0x7f09655d8de0) 0
+ vptr=((& QAccessibleEvent::_ZTV16QAccessibleEvent) + 16)
+
+Vtable for QAccessibleStateChangeEvent
+QAccessibleStateChangeEvent::_ZTV27QAccessibleStateChangeEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QAccessibleStateChangeEvent)
+16 (int (*)(...))QAccessibleStateChangeEvent::~QAccessibleStateChangeEvent
+24 (int (*)(...))QAccessibleStateChangeEvent::~QAccessibleStateChangeEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleStateChangeEvent
+ size=40 align=8
+ base size=40 base align=8
+QAccessibleStateChangeEvent (0x0x7f09655a5b60) 0
+ vptr=((& QAccessibleStateChangeEvent::_ZTV27QAccessibleStateChangeEvent) + 16)
+ QAccessibleEvent (0x0x7f09656407e0) 0
+ primary-for QAccessibleStateChangeEvent (0x0x7f09655a5b60)
+
+Vtable for QAccessibleTextCursorEvent
+QAccessibleTextCursorEvent::_ZTV26QAccessibleTextCursorEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAccessibleTextCursorEvent)
+16 (int (*)(...))QAccessibleTextCursorEvent::~QAccessibleTextCursorEvent
+24 (int (*)(...))QAccessibleTextCursorEvent::~QAccessibleTextCursorEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleTextCursorEvent
+ size=32 align=8
+ base size=32 base align=8
+QAccessibleTextCursorEvent (0x0x7f09655a5bc8) 0
+ vptr=((& QAccessibleTextCursorEvent::_ZTV26QAccessibleTextCursorEvent) + 16)
+ QAccessibleEvent (0x0x7f0965640ba0) 0
+ primary-for QAccessibleTextCursorEvent (0x0x7f09655a5bc8)
+
+Vtable for QAccessibleTextSelectionEvent
+QAccessibleTextSelectionEvent::_ZTV29QAccessibleTextSelectionEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI29QAccessibleTextSelectionEvent)
+16 (int (*)(...))QAccessibleTextSelectionEvent::~QAccessibleTextSelectionEvent
+24 (int (*)(...))QAccessibleTextSelectionEvent::~QAccessibleTextSelectionEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleTextSelectionEvent
+ size=40 align=8
+ base size=40 base align=8
+QAccessibleTextSelectionEvent (0x0x7f09655a5c30) 0
+ vptr=((& QAccessibleTextSelectionEvent::_ZTV29QAccessibleTextSelectionEvent) + 16)
+ QAccessibleTextCursorEvent (0x0x7f09655a5c98) 0
+ primary-for QAccessibleTextSelectionEvent (0x0x7f09655a5c30)
+ QAccessibleEvent (0x0x7f09656a9000) 0
+ primary-for QAccessibleTextCursorEvent (0x0x7f09655a5c98)
+
+Vtable for QAccessibleTextInsertEvent
+QAccessibleTextInsertEvent::_ZTV26QAccessibleTextInsertEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAccessibleTextInsertEvent)
+16 (int (*)(...))QAccessibleTextInsertEvent::~QAccessibleTextInsertEvent
+24 (int (*)(...))QAccessibleTextInsertEvent::~QAccessibleTextInsertEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleTextInsertEvent
+ size=48 align=8
+ base size=48 base align=8
+QAccessibleTextInsertEvent (0x0x7f09655a5d00) 0
+ vptr=((& QAccessibleTextInsertEvent::_ZTV26QAccessibleTextInsertEvent) + 16)
+ QAccessibleTextCursorEvent (0x0x7f09655a5d68) 0
+ primary-for QAccessibleTextInsertEvent (0x0x7f09655a5d00)
+ QAccessibleEvent (0x0x7f09656a9480) 0
+ primary-for QAccessibleTextCursorEvent (0x0x7f09655a5d68)
+
+Vtable for QAccessibleTextRemoveEvent
+QAccessibleTextRemoveEvent::_ZTV26QAccessibleTextRemoveEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAccessibleTextRemoveEvent)
+16 (int (*)(...))QAccessibleTextRemoveEvent::~QAccessibleTextRemoveEvent
+24 (int (*)(...))QAccessibleTextRemoveEvent::~QAccessibleTextRemoveEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleTextRemoveEvent
+ size=48 align=8
+ base size=48 base align=8
+QAccessibleTextRemoveEvent (0x0x7f09655a5dd0) 0
+ vptr=((& QAccessibleTextRemoveEvent::_ZTV26QAccessibleTextRemoveEvent) + 16)
+ QAccessibleTextCursorEvent (0x0x7f09655a5e38) 0
+ primary-for QAccessibleTextRemoveEvent (0x0x7f09655a5dd0)
+ QAccessibleEvent (0x0x7f09656a98a0) 0
+ primary-for QAccessibleTextCursorEvent (0x0x7f09655a5e38)
+
+Vtable for QAccessibleTextUpdateEvent
+QAccessibleTextUpdateEvent::_ZTV26QAccessibleTextUpdateEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAccessibleTextUpdateEvent)
+16 (int (*)(...))QAccessibleTextUpdateEvent::~QAccessibleTextUpdateEvent
+24 (int (*)(...))QAccessibleTextUpdateEvent::~QAccessibleTextUpdateEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleTextUpdateEvent
+ size=56 align=8
+ base size=56 base align=8
+QAccessibleTextUpdateEvent (0x0x7f09655a5ea0) 0
+ vptr=((& QAccessibleTextUpdateEvent::_ZTV26QAccessibleTextUpdateEvent) + 16)
+ QAccessibleTextCursorEvent (0x0x7f09655a5f08) 0
+ primary-for QAccessibleTextUpdateEvent (0x0x7f09655a5ea0)
+ QAccessibleEvent (0x0x7f09656a9cc0) 0
+ primary-for QAccessibleTextCursorEvent (0x0x7f09655a5f08)
+
+Vtable for QAccessibleValueChangeEvent
+QAccessibleValueChangeEvent::_ZTV27QAccessibleValueChangeEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QAccessibleValueChangeEvent)
+16 (int (*)(...))QAccessibleValueChangeEvent::~QAccessibleValueChangeEvent
+24 (int (*)(...))QAccessibleValueChangeEvent::~QAccessibleValueChangeEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleValueChangeEvent
+ size=48 align=8
+ base size=48 base align=8
+QAccessibleValueChangeEvent (0x0x7f09655a5f70) 0
+ vptr=((& QAccessibleValueChangeEvent::_ZTV27QAccessibleValueChangeEvent) + 16)
+ QAccessibleEvent (0x0x7f09656de180) 0
+ primary-for QAccessibleValueChangeEvent (0x0x7f09655a5f70)
+
+Vtable for QAccessibleTableModelChangeEvent
+QAccessibleTableModelChangeEvent::_ZTV32QAccessibleTableModelChangeEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI32QAccessibleTableModelChangeEvent)
+16 (int (*)(...))QAccessibleTableModelChangeEvent::~QAccessibleTableModelChangeEvent
+24 (int (*)(...))QAccessibleTableModelChangeEvent::~QAccessibleTableModelChangeEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleTableModelChangeEvent
+ size=48 align=8
+ base size=48 base align=8
+QAccessibleTableModelChangeEvent (0x0x7f09656ee000) 0
+ vptr=((& QAccessibleTableModelChangeEvent::_ZTV32QAccessibleTableModelChangeEvent) + 16)
+ QAccessibleEvent (0x0x7f09656de5a0) 0
+ primary-for QAccessibleTableModelChangeEvent (0x0x7f09656ee000)
+
+Vtable for QAccessibleBridge
+QAccessibleBridge::_ZTV17QAccessibleBridge: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAccessibleBridge)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleBridge
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleBridge (0x0x7f09656dee40) 0 nearly-empty
+ vptr=((& QAccessibleBridge::_ZTV17QAccessibleBridge) + 16)
+
+Class QAccessibleBridgePlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAccessibleBridgePlugin::QPrivateSignal (0x0x7f096570d120) 0 empty
+
+Vtable for QAccessibleBridgePlugin
+QAccessibleBridgePlugin::_ZTV23QAccessibleBridgePlugin: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QAccessibleBridgePlugin)
+16 (int (*)(...))QAccessibleBridgePlugin::metaObject
+24 (int (*)(...))QAccessibleBridgePlugin::qt_metacast
+32 (int (*)(...))QAccessibleBridgePlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleBridgePlugin
+ size=16 align=8
+ base size=16 base align=8
+QAccessibleBridgePlugin (0x0x7f09656ee068) 0
+ vptr=((& QAccessibleBridgePlugin::_ZTV23QAccessibleBridgePlugin) + 16)
+ QObject (0x0x7f096570d0c0) 0
+ primary-for QAccessibleBridgePlugin (0x0x7f09656ee068)
+
+Vtable for QAccessibleObject
+QAccessibleObject::_ZTV17QAccessibleObject: 23 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAccessibleObject)
+16 0
+24 0
+32 (int (*)(...))QAccessibleObject::isValid
+40 (int (*)(...))QAccessibleObject::object
+48 (int (*)(...))QAccessibleInterface::window
+56 (int (*)(...))QAccessibleInterface::relations
+64 (int (*)(...))QAccessibleInterface::focusChild
+72 (int (*)(...))QAccessibleObject::childAt
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))__cxa_pure_virtual
+96 (int (*)(...))__cxa_pure_virtual
+104 (int (*)(...))__cxa_pure_virtual
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))QAccessibleObject::setText
+128 (int (*)(...))QAccessibleObject::rect
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAccessibleInterface::foregroundColor
+160 (int (*)(...))QAccessibleInterface::backgroundColor
+168 (int (*)(...))QAccessibleInterface::virtual_hook
+176 (int (*)(...))QAccessibleInterface::interface_cast
+
+Class QAccessibleObject
+ size=16 align=8
+ base size=16 base align=8
+QAccessibleObject (0x0x7f09656ee0d0) 0
+ vptr=((& QAccessibleObject::_ZTV17QAccessibleObject) + 16)
+ QAccessibleInterface (0x0x7f096570d240) 0 nearly-empty
+ primary-for QAccessibleObject (0x0x7f09656ee0d0)
+
+Vtable for QAccessibleApplication
+QAccessibleApplication::_ZTV22QAccessibleApplication: 23 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QAccessibleApplication)
+16 (int (*)(...))QAccessibleApplication::~QAccessibleApplication
+24 (int (*)(...))QAccessibleApplication::~QAccessibleApplication
+32 (int (*)(...))QAccessibleObject::isValid
+40 (int (*)(...))QAccessibleObject::object
+48 (int (*)(...))QAccessibleApplication::window
+56 (int (*)(...))QAccessibleInterface::relations
+64 (int (*)(...))QAccessibleApplication::focusChild
+72 (int (*)(...))QAccessibleObject::childAt
+80 (int (*)(...))QAccessibleApplication::parent
+88 (int (*)(...))QAccessibleApplication::child
+96 (int (*)(...))QAccessibleApplication::childCount
+104 (int (*)(...))QAccessibleApplication::indexOfChild
+112 (int (*)(...))QAccessibleApplication::text
+120 (int (*)(...))QAccessibleObject::setText
+128 (int (*)(...))QAccessibleObject::rect
+136 (int (*)(...))QAccessibleApplication::role
+144 (int (*)(...))QAccessibleApplication::state
+152 (int (*)(...))QAccessibleInterface::foregroundColor
+160 (int (*)(...))QAccessibleInterface::backgroundColor
+168 (int (*)(...))QAccessibleInterface::virtual_hook
+176 (int (*)(...))QAccessibleInterface::interface_cast
+
+Class QAccessibleApplication
+ size=16 align=8
+ base size=16 base align=8
+QAccessibleApplication (0x0x7f09656ee138) 0
+ vptr=((& QAccessibleApplication::_ZTV22QAccessibleApplication) + 16)
+ QAccessibleObject (0x0x7f09656ee1a0) 0
+ primary-for QAccessibleApplication (0x0x7f09656ee138)
+ QAccessibleInterface (0x0x7f096570d2a0) 0 nearly-empty
+ primary-for QAccessibleObject (0x0x7f09656ee1a0)
+
+Class QAccessiblePlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAccessiblePlugin::QPrivateSignal (0x0x7f096570d360) 0 empty
+
+Vtable for QAccessiblePlugin
+QAccessiblePlugin::_ZTV17QAccessiblePlugin: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAccessiblePlugin)
+16 (int (*)(...))QAccessiblePlugin::metaObject
+24 (int (*)(...))QAccessiblePlugin::qt_metacast
+32 (int (*)(...))QAccessiblePlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessiblePlugin
+ size=16 align=8
+ base size=16 base align=8
+QAccessiblePlugin (0x0x7f09656ee208) 0
+ vptr=((& QAccessiblePlugin::_ZTV17QAccessiblePlugin) + 16)
+ QObject (0x0x7f096570d300) 0
+ primary-for QAccessiblePlugin (0x0x7f09656ee208)
+
+Class QSurfaceFormat
+ size=8 align=8
+ base size=8 base align=8
+QSurfaceFormat (0x0x7f096570d480) 0
+
+Vtable for QSurface
+QSurface::_ZTV8QSurface: 8 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QSurface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+
+Class QSurface
+ size=24 align=8
+ base size=24 base align=8
+QSurface (0x0x7f0965777000) 0
+ vptr=((& QSurface::_ZTV8QSurface) + 16)
+
+Class QIcon
+ size=8 align=8
+ base size=8 base align=8
+QIcon (0x0x7f09657773c0) 0
+
+Class QCursor
+ size=8 align=8
+ base size=8 base align=8
+QCursor (0x0x7f0965436f00) 0
+
+Class QWindow::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QWindow::QPrivateSignal (0x0x7f09654ffcc0) 0 empty
+
+Vtable for QWindow
+QWindow::_ZTV7QWindow: 45 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QWindow)
+16 (int (*)(...))QWindow::metaObject
+24 (int (*)(...))QWindow::qt_metacast
+32 (int (*)(...))QWindow::qt_metacall
+40 (int (*)(...))QWindow::~QWindow
+48 (int (*)(...))QWindow::~QWindow
+56 (int (*)(...))QWindow::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWindow::surfaceType
+120 (int (*)(...))QWindow::format
+128 (int (*)(...))QWindow::size
+136 (int (*)(...))QWindow::accessibleRoot
+144 (int (*)(...))QWindow::focusObject
+152 (int (*)(...))QWindow::exposeEvent
+160 (int (*)(...))QWindow::resizeEvent
+168 (int (*)(...))QWindow::moveEvent
+176 (int (*)(...))QWindow::focusInEvent
+184 (int (*)(...))QWindow::focusOutEvent
+192 (int (*)(...))QWindow::showEvent
+200 (int (*)(...))QWindow::hideEvent
+208 (int (*)(...))QWindow::keyPressEvent
+216 (int (*)(...))QWindow::keyReleaseEvent
+224 (int (*)(...))QWindow::mousePressEvent
+232 (int (*)(...))QWindow::mouseReleaseEvent
+240 (int (*)(...))QWindow::mouseDoubleClickEvent
+248 (int (*)(...))QWindow::mouseMoveEvent
+256 (int (*)(...))QWindow::wheelEvent
+264 (int (*)(...))QWindow::touchEvent
+272 (int (*)(...))QWindow::tabletEvent
+280 (int (*)(...))QWindow::nativeEvent
+288 (int (*)(...))QWindow::surfaceHandle
+296 (int (*)(...))-16
+304 (int (*)(...))(& _ZTI7QWindow)
+312 (int (*)(...))QWindow::_ZThn16_N7QWindowD1Ev
+320 (int (*)(...))QWindow::_ZThn16_N7QWindowD0Ev
+328 (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
+336 (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
+344 (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
+352 (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv
+
+Class QWindow
+ size=40 align=8
+ base size=40 base align=8
+QWindow (0x0x7f09655085b0) 0
+ vptr=((& QWindow::_ZTV7QWindow) + 16)
+ QObject (0x0x7f09654ffc00) 0
+ primary-for QWindow (0x0x7f09655085b0)
+ QSurface (0x0x7f09654ffc60) 16
+ vptr=((& QWindow::_ZTV7QWindow) + 312)
+
+Class QBackingStore
+ size=8 align=8
+ base size=8 base align=8
+QBackingStore (0x0x7f09655515a0) 0
+
+Vtable for QBitmap
+QBitmap::_ZTV7QBitmap: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QBitmap)
+16 (int (*)(...))QBitmap::~QBitmap
+24 (int (*)(...))QBitmap::~QBitmap
+32 (int (*)(...))QPixmap::devType
+40 (int (*)(...))QPixmap::paintEngine
+48 (int (*)(...))QPixmap::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QBitmap
+ size=32 align=8
+ base size=32 base align=8
+QBitmap (0x0x7f09655114e0) 0
+ vptr=((& QBitmap::_ZTV7QBitmap) + 16)
+ QPixmap (0x0x7f0965511548) 0
+ primary-for QBitmap (0x0x7f09655114e0)
+ QPaintDevice (0x0x7f0965551660) 0
+ primary-for QPixmap (0x0x7f0965511548)
+
+Class QClipboard::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QClipboard::QPrivateSignal (0x0x7f09651a9ba0) 0 empty
+
+Vtable for QClipboard
+QClipboard::_ZTV10QClipboard: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QClipboard)
+16 (int (*)(...))QClipboard::metaObject
+24 (int (*)(...))QClipboard::qt_metacast
+32 (int (*)(...))QClipboard::qt_metacall
+40 (int (*)(...))QClipboard::~QClipboard
+48 (int (*)(...))QClipboard::~QClipboard
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QClipboard
+ size=16 align=8
+ base size=16 base align=8
+QClipboard (0x0x7f09651af820) 0
+ vptr=((& QClipboard::_ZTV10QClipboard) + 16)
+ QObject (0x0x7f09651a9b40) 0
+ primary-for QClipboard (0x0x7f09651af820)
+
+Class QColorTransform
+ size=8 align=8
+ base size=8 base align=8
+QColorTransform (0x0x7f09651a9cc0) 0
+
+Class QColorSpace
+ size=8 align=8
+ base size=8 base align=8
+QColorSpace (0x0x7f0965273e40) 0
+
+Class QDesktopServices
+ size=1 align=1
+ base size=0 base align=1
+QDesktopServices (0x0x7f0965348c00) 0 empty
+
+Class QDrag::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDrag::QPrivateSignal (0x0x7f0965348cc0) 0 empty
+
+Vtable for QDrag
+QDrag::_ZTV5QDrag: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI5QDrag)
+16 (int (*)(...))QDrag::metaObject
+24 (int (*)(...))QDrag::qt_metacast
+32 (int (*)(...))QDrag::qt_metacall
+40 (int (*)(...))QDrag::~QDrag
+48 (int (*)(...))QDrag::~QDrag
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QDrag
+ size=16 align=8
+ base size=16 base align=8
+QDrag (0x0x7f09653554e0) 0
+ vptr=((& QDrag::_ZTV5QDrag) + 16)
+ QObject (0x0x7f0965348c60) 0
+ primary-for QDrag (0x0x7f09653554e0)
+
+Class QFontInfo
+ size=8 align=8
+ base size=8 base align=8
+QFontInfo (0x0x7f0965348ea0) 0
+
+Class QFontMetrics
+ size=8 align=8
+ base size=8 base align=8
+QFontMetrics (0x0x7f0964fa1f00) 0
+
+Class QFontMetricsF
+ size=8 align=8
+ base size=8 base align=8
+QFontMetricsF (0x0x7f096500a2a0) 0
+
+Class QGenericPlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGenericPlugin::QPrivateSignal (0x0x7f096515f420) 0 empty
+
+Vtable for QGenericPlugin
+QGenericPlugin::_ZTV14QGenericPlugin: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QGenericPlugin)
+16 (int (*)(...))QGenericPlugin::metaObject
+24 (int (*)(...))QGenericPlugin::qt_metacast
+32 (int (*)(...))QGenericPlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QGenericPlugin
+ size=16 align=8
+ base size=16 base align=8
+QGenericPlugin (0x0x7f09650c20d0) 0
+ vptr=((& QGenericPlugin::_ZTV14QGenericPlugin) + 16)
+ QObject (0x0x7f096515f3c0) 0
+ primary-for QGenericPlugin (0x0x7f09650c20d0)
+
+Class QGenericPluginFactory
+ size=1 align=1
+ base size=0 base align=1
+QGenericPluginFactory (0x0x7f096515f540) 0 empty
+
+Class QInputMethod::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QInputMethod::QPrivateSignal (0x0x7f096515f600) 0 empty
+
+Vtable for QInputMethod
+QInputMethod::_ZTV12QInputMethod: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QInputMethod)
+16 (int (*)(...))QInputMethod::metaObject
+24 (int (*)(...))QInputMethod::qt_metacast
+32 (int (*)(...))QInputMethod::qt_metacall
+40 (int (*)(...))QInputMethod::~QInputMethod
+48 (int (*)(...))QInputMethod::~QInputMethod
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QInputMethod
+ size=16 align=8
+ base size=16 base align=8
+QInputMethod (0x0x7f09650c2138) 0
+ vptr=((& QInputMethod::_ZTV12QInputMethod) + 16)
+ QObject (0x0x7f096515f5a0) 0
+ primary-for QInputMethod (0x0x7f09650c2138)
+
+Class QGuiApplication::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGuiApplication::QPrivateSignal (0x0x7f096515f900) 0 empty
+
+Vtable for QGuiApplication
+QGuiApplication::_ZTV15QGuiApplication: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QGuiApplication)
+16 (int (*)(...))QGuiApplication::metaObject
+24 (int (*)(...))QGuiApplication::qt_metacast
+32 (int (*)(...))QGuiApplication::qt_metacall
+40 (int (*)(...))QGuiApplication::~QGuiApplication
+48 (int (*)(...))QGuiApplication::~QGuiApplication
+56 (int (*)(...))QGuiApplication::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGuiApplication::notify
+120 (int (*)(...))QGuiApplication::compressEvent
+
+Class QGuiApplication
+ size=16 align=8
+ base size=16 base align=8
+QGuiApplication (0x0x7f09650c21a0) 0
+ vptr=((& QGuiApplication::_ZTV15QGuiApplication) + 16)
+ QCoreApplication (0x0x7f09650c2208) 0
+ primary-for QGuiApplication (0x0x7f09650c21a0)
+ QObject (0x0x7f096515f8a0) 0
+ primary-for QCoreApplication (0x0x7f09650c2208)
+
+Class QIconEngine::AvailableSizesArgument
+ size=16 align=8
+ base size=16 base align=8
+QIconEngine::AvailableSizesArgument (0x0x7f0964d520c0) 0
+
+Class QIconEngine::ScaledPixmapArgument
+ size=56 align=8
+ base size=56 base align=8
+QIconEngine::ScaledPixmapArgument (0x0x7f0964d52240) 0
+
+Vtable for QIconEngine
+QIconEngine::_ZTV11QIconEngine: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QIconEngine)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))QIconEngine::actualSize
+48 (int (*)(...))QIconEngine::pixmap
+56 (int (*)(...))QIconEngine::addPixmap
+64 (int (*)(...))QIconEngine::addFile
+72 (int (*)(...))QIconEngine::key
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))QIconEngine::read
+96 (int (*)(...))QIconEngine::write
+104 (int (*)(...))QIconEngine::availableSizes
+112 (int (*)(...))QIconEngine::iconName
+120 (int (*)(...))QIconEngine::virtual_hook
+
+Class QIconEngine
+ size=8 align=8
+ base size=8 base align=8
+QIconEngine (0x0x7f0964d52060) 0 nearly-empty
+ vptr=((& QIconEngine::_ZTV11QIconEngine) + 16)
+
+Class QIconEnginePlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QIconEnginePlugin::QPrivateSignal (0x0x7f0964d52300) 0 empty
+
+Vtable for QIconEnginePlugin
+QIconEnginePlugin::_ZTV17QIconEnginePlugin: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QIconEnginePlugin)
+16 (int (*)(...))QIconEnginePlugin::metaObject
+24 (int (*)(...))QIconEnginePlugin::qt_metacast
+32 (int (*)(...))QIconEnginePlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QIconEnginePlugin
+ size=16 align=8
+ base size=16 base align=8
+QIconEnginePlugin (0x0x7f09650c27b8) 0
+ vptr=((& QIconEnginePlugin::_ZTV17QIconEnginePlugin) + 16)
+ QObject (0x0x7f0964d522a0) 0
+ primary-for QIconEnginePlugin (0x0x7f09650c27b8)
+
+Vtable for QImageIOHandler
+QImageIOHandler::_ZTV15QImageIOHandler: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QImageIOHandler)
+16 0
+24 0
+32 (int (*)(...))QImageIOHandler::name
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))QImageIOHandler::write
+64 (int (*)(...))QImageIOHandler::option
+72 (int (*)(...))QImageIOHandler::setOption
+80 (int (*)(...))QImageIOHandler::supportsOption
+88 (int (*)(...))QImageIOHandler::jumpToNextImage
+96 (int (*)(...))QImageIOHandler::jumpToImage
+104 (int (*)(...))QImageIOHandler::loopCount
+112 (int (*)(...))QImageIOHandler::imageCount
+120 (int (*)(...))QImageIOHandler::nextImageDelay
+128 (int (*)(...))QImageIOHandler::currentImageNumber
+136 (int (*)(...))QImageIOHandler::currentImageRect
+
+Class QImageIOHandler
+ size=16 align=8
+ base size=16 base align=8
+QImageIOHandler (0x0x7f0964d52420) 0
+ vptr=((& QImageIOHandler::_ZTV15QImageIOHandler) + 16)
+
+Class QImageIOPlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QImageIOPlugin::QPrivateSignal (0x0x7f0964d52660) 0 empty
+
+Vtable for QImageIOPlugin
+QImageIOPlugin::_ZTV14QImageIOPlugin: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QImageIOPlugin)
+16 (int (*)(...))QImageIOPlugin::metaObject
+24 (int (*)(...))QImageIOPlugin::qt_metacast
+32 (int (*)(...))QImageIOPlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QImageIOPlugin
+ size=16 align=8
+ base size=16 base align=8
+QImageIOPlugin (0x0x7f09650c2820) 0
+ vptr=((& QImageIOPlugin::_ZTV14QImageIOPlugin) + 16)
+ QObject (0x0x7f0964d52600) 0
+ primary-for QImageIOPlugin (0x0x7f09650c2820)
+
+Class QImageReader
+ size=8 align=8
+ base size=8 base align=8
+QImageReader (0x0x7f0964d52e40) 0
+
+Class QImageWriter
+ size=8 align=8
+ base size=8 base align=8
+QImageWriter (0x0x7f0964d52f60) 0
+
+Class QVector3D
+ size=12 align=4
+ base size=12 base align=4
+QVector3D (0x0x7f0964e000c0) 0
+
+Class QVector4D
+ size=16 align=4
+ base size=16 base align=4
+QVector4D (0x0x7f0964e80240) 0
+
+Class QQuaternion
+ size=16 align=4
+ base size=16 base align=4
+QQuaternion (0x0x7f0964efe480) 0
+
+Class QMatrix4x4
+ size=68 align=4
+ base size=68 base align=4
+QMatrix4x4 (0x0x7f0964b8dd80) 0
+
+Class QMovie::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMovie::QPrivateSignal (0x0x7f0964c5ac00) 0 empty
+
+Vtable for QMovie
+QMovie::_ZTV6QMovie: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QMovie)
+16 (int (*)(...))QMovie::metaObject
+24 (int (*)(...))QMovie::qt_metacast
+32 (int (*)(...))QMovie::qt_metacall
+40 (int (*)(...))QMovie::~QMovie
+48 (int (*)(...))QMovie::~QMovie
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QMovie
+ size=16 align=8
+ base size=16 base align=8
+QMovie (0x0x7f0964c1cf70) 0
+ vptr=((& QMovie::_ZTV6QMovie) + 16)
+ QObject (0x0x7f0964c5aba0) 0
+ primary-for QMovie (0x0x7f0964c1cf70)
+
+Class QOffscreenSurface::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOffscreenSurface::QPrivateSignal (0x0x7f0964953060) 0 empty
+
+Vtable for QOffscreenSurface
+QOffscreenSurface::_ZTV17QOffscreenSurface: 26 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QOffscreenSurface)
+16 (int (*)(...))QOffscreenSurface::metaObject
+24 (int (*)(...))QOffscreenSurface::qt_metacast
+32 (int (*)(...))QOffscreenSurface::qt_metacall
+40 (int (*)(...))QOffscreenSurface::~QOffscreenSurface
+48 (int (*)(...))QOffscreenSurface::~QOffscreenSurface
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QOffscreenSurface::surfaceType
+120 (int (*)(...))QOffscreenSurface::format
+128 (int (*)(...))QOffscreenSurface::size
+136 (int (*)(...))QOffscreenSurface::surfaceHandle
+144 (int (*)(...))-16
+152 (int (*)(...))(& _ZTI17QOffscreenSurface)
+160 (int (*)(...))QOffscreenSurface::_ZThn16_N17QOffscreenSurfaceD1Ev
+168 (int (*)(...))QOffscreenSurface::_ZThn16_N17QOffscreenSurfaceD0Ev
+176 (int (*)(...))QOffscreenSurface::_ZThn16_NK17QOffscreenSurface6formatEv
+184 (int (*)(...))QOffscreenSurface::_ZThn16_NK17QOffscreenSurface13surfaceHandleEv
+192 (int (*)(...))QOffscreenSurface::_ZThn16_NK17QOffscreenSurface11surfaceTypeEv
+200 (int (*)(...))QOffscreenSurface::_ZThn16_NK17QOffscreenSurface4sizeEv
+
+Class QOffscreenSurface
+ size=40 align=8
+ base size=40 base align=8
+QOffscreenSurface (0x0x7f0964c4b5b0) 0
+ vptr=((& QOffscreenSurface::_ZTV17QOffscreenSurface) + 16)
+ QObject (0x0x7f0964c5af60) 0
+ primary-for QOffscreenSurface (0x0x7f0964c4b5b0)
+ QSurface (0x0x7f0964953000) 16
+ vptr=((& QOffscreenSurface::_ZTV17QOffscreenSurface) + 160)
+
+Class QOpenGLBuffer
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLBuffer (0x0x7f09649532a0) 0
+
+Class QOpenGLVersionStatus
+ size=12 align=4
+ base size=12 base align=4
+QOpenGLVersionStatus (0x0x7f0964953ae0) 0
+
+Class QOpenGLVersionFunctionsBackend
+ size=16 align=8
+ base size=12 base align=8
+QOpenGLVersionFunctionsBackend (0x0x7f09646116c0) 0
+
+Class QOpenGLVersionFunctionsStorage
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLVersionFunctionsStorage (0x0x7f09646118a0) 0
+
+Class QAbstractOpenGLFunctionsPrivate
+ size=16 align=8
+ base size=9 base align=8
+QAbstractOpenGLFunctionsPrivate (0x0x7f0964611900) 0
+
+Vtable for QAbstractOpenGLFunctions
+QAbstractOpenGLFunctions::_ZTV24QAbstractOpenGLFunctions: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QAbstractOpenGLFunctions)
+16 (int (*)(...))QAbstractOpenGLFunctions::~QAbstractOpenGLFunctions
+24 (int (*)(...))QAbstractOpenGLFunctions::~QAbstractOpenGLFunctions
+32 (int (*)(...))QAbstractOpenGLFunctions::initializeOpenGLFunctions
+
+Class QAbstractOpenGLFunctions
+ size=16 align=8
+ base size=16 base align=8
+QAbstractOpenGLFunctions (0x0x7f0964611ae0) 0
+ vptr=((& QAbstractOpenGLFunctions::_ZTV24QAbstractOpenGLFunctions) + 16)
+
+Class QOpenGLFunctions_1_0_CoreBackend::Functions
+ size=384 align=8
+ base size=384 base align=8
+QOpenGLFunctions_1_0_CoreBackend::Functions (0x0x7f0964611cc0) 0
+
+Class QOpenGLFunctions_1_0_CoreBackend
+ size=400 align=8
+ base size=400 base align=8
+QOpenGLFunctions_1_0_CoreBackend (0x0x7f0964600e38) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f0964611c60) 0
+
+Class QOpenGLFunctions_1_1_CoreBackend::Functions
+ size=128 align=8
+ base size=128 base align=8
+QOpenGLFunctions_1_1_CoreBackend::Functions (0x0x7f0964646000) 0
+
+Class QOpenGLFunctions_1_1_CoreBackend
+ size=144 align=8
+ base size=144 base align=8
+QOpenGLFunctions_1_1_CoreBackend (0x0x7f0964600ea0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f0964611f60) 0
+
+Class QOpenGLFunctions_1_2_CoreBackend::Functions
+ size=48 align=8
+ base size=48 base align=8
+QOpenGLFunctions_1_2_CoreBackend::Functions (0x0x7f0964646300) 0
+
+Class QOpenGLFunctions_1_2_CoreBackend
+ size=64 align=8
+ base size=64 base align=8
+QOpenGLFunctions_1_2_CoreBackend (0x0x7f0964600f08) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f09646462a0) 0
+
+Class QOpenGLFunctions_1_3_CoreBackend::Functions
+ size=72 align=8
+ base size=72 base align=8
+QOpenGLFunctions_1_3_CoreBackend::Functions (0x0x7f0964646600) 0
+
+Class QOpenGLFunctions_1_3_CoreBackend
+ size=88 align=8
+ base size=88 base align=8
+QOpenGLFunctions_1_3_CoreBackend (0x0x7f0964600f70) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f09646465a0) 0
+
+Class QOpenGLFunctions_1_4_CoreBackend::Functions
+ size=56 align=8
+ base size=56 base align=8
+QOpenGLFunctions_1_4_CoreBackend::Functions (0x0x7f0964646960) 0
+
+Class QOpenGLFunctions_1_4_CoreBackend
+ size=72 align=8
+ base size=72 base align=8
+QOpenGLFunctions_1_4_CoreBackend (0x0x7f0964662000) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f0964646900) 0
+
+Class QOpenGLFunctions_1_5_CoreBackend::Functions
+ size=152 align=8
+ base size=152 base align=8
+QOpenGLFunctions_1_5_CoreBackend::Functions (0x0x7f0964646c60) 0
+
+Class QOpenGLFunctions_1_5_CoreBackend
+ size=168 align=8
+ base size=168 base align=8
+QOpenGLFunctions_1_5_CoreBackend (0x0x7f0964662068) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f0964646c00) 0
+
+Class QOpenGLFunctions_2_0_CoreBackend::Functions
+ size=744 align=8
+ base size=744 base align=8
+QOpenGLFunctions_2_0_CoreBackend::Functions (0x0x7f0964646f60) 0
+
+Class QOpenGLFunctions_2_0_CoreBackend
+ size=760 align=8
+ base size=760 base align=8
+QOpenGLFunctions_2_0_CoreBackend (0x0x7f09646620d0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f0964646f00) 0
+
+Class QOpenGLFunctions_2_1_CoreBackend::Functions
+ size=48 align=8
+ base size=48 base align=8
+QOpenGLFunctions_2_1_CoreBackend::Functions (0x0x7f09646862a0) 0
+
+Class QOpenGLFunctions_2_1_CoreBackend
+ size=64 align=8
+ base size=64 base align=8
+QOpenGLFunctions_2_1_CoreBackend (0x0x7f0964662138) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f0964686240) 0
+
+Class QOpenGLFunctions_3_0_CoreBackend::Functions
+ size=672 align=8
+ base size=672 base align=8
+QOpenGLFunctions_3_0_CoreBackend::Functions (0x0x7f09646865a0) 0
+
+Class QOpenGLFunctions_3_0_CoreBackend
+ size=688 align=8
+ base size=688 base align=8
+QOpenGLFunctions_3_0_CoreBackend (0x0x7f09646621a0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f0964686540) 0
+
+Class QOpenGLFunctions_3_1_CoreBackend::Functions
+ size=96 align=8
+ base size=96 base align=8
+QOpenGLFunctions_3_1_CoreBackend::Functions (0x0x7f09646868a0) 0
+
+Class QOpenGLFunctions_3_1_CoreBackend
+ size=112 align=8
+ base size=112 base align=8
+QOpenGLFunctions_3_1_CoreBackend (0x0x7f0964662208) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f0964686840) 0
+
+Class QOpenGLFunctions_3_2_CoreBackend::Functions
+ size=152 align=8
+ base size=152 base align=8
+QOpenGLFunctions_3_2_CoreBackend::Functions (0x0x7f0964686ba0) 0
+
+Class QOpenGLFunctions_3_2_CoreBackend
+ size=168 align=8
+ base size=168 base align=8
+QOpenGLFunctions_3_2_CoreBackend (0x0x7f0964662270) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f0964686b40) 0
+
+Class QOpenGLFunctions_3_3_CoreBackend::Functions
+ size=464 align=8
+ base size=464 base align=8
+QOpenGLFunctions_3_3_CoreBackend::Functions (0x0x7f0964686ea0) 0
+
+Class QOpenGLFunctions_3_3_CoreBackend
+ size=480 align=8
+ base size=480 base align=8
+QOpenGLFunctions_3_3_CoreBackend (0x0x7f09646622d8) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f0964686e40) 0
+
+Class QOpenGLFunctions_4_0_CoreBackend::Functions
+ size=368 align=8
+ base size=368 base align=8
+QOpenGLFunctions_4_0_CoreBackend::Functions (0x0x7f09646d31e0) 0
+
+Class QOpenGLFunctions_4_0_CoreBackend
+ size=384 align=8
+ base size=384 base align=8
+QOpenGLFunctions_4_0_CoreBackend (0x0x7f0964662340) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f09646d3180) 0
+
+Class QOpenGLFunctions_4_1_CoreBackend::Functions
+ size=704 align=8
+ base size=704 base align=8
+QOpenGLFunctions_4_1_CoreBackend::Functions (0x0x7f09646d34e0) 0
+
+Class QOpenGLFunctions_4_1_CoreBackend
+ size=720 align=8
+ base size=720 base align=8
+QOpenGLFunctions_4_1_CoreBackend (0x0x7f09646623a8) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f09646d3480) 0
+
+Class QOpenGLFunctions_4_2_CoreBackend::Functions
+ size=96 align=8
+ base size=96 base align=8
+QOpenGLFunctions_4_2_CoreBackend::Functions (0x0x7f09646d37e0) 0
+
+Class QOpenGLFunctions_4_2_CoreBackend
+ size=112 align=8
+ base size=112 base align=8
+QOpenGLFunctions_4_2_CoreBackend (0x0x7f0964662410) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f09646d3780) 0
+
+Class QOpenGLFunctions_4_3_CoreBackend::Functions
+ size=344 align=8
+ base size=344 base align=8
+QOpenGLFunctions_4_3_CoreBackend::Functions (0x0x7f09646d3ae0) 0
+
+Class QOpenGLFunctions_4_3_CoreBackend
+ size=360 align=8
+ base size=360 base align=8
+QOpenGLFunctions_4_3_CoreBackend (0x0x7f0964662478) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f09646d3a80) 0
+
+Class QOpenGLFunctions_4_4_CoreBackend::Functions
+ size=72 align=8
+ base size=72 base align=8
+QOpenGLFunctions_4_4_CoreBackend::Functions (0x0x7f09646d3de0) 0
+
+Class QOpenGLFunctions_4_4_CoreBackend
+ size=88 align=8
+ base size=88 base align=8
+QOpenGLFunctions_4_4_CoreBackend (0x0x7f09646624e0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f09646d3d80) 0
+
+Class QOpenGLFunctions_4_5_CoreBackend::Functions
+ size=848 align=8
+ base size=848 base align=8
+QOpenGLFunctions_4_5_CoreBackend::Functions (0x0x7f096432a180) 0
+
+Class QOpenGLFunctions_4_5_CoreBackend
+ size=864 align=8
+ base size=864 base align=8
+QOpenGLFunctions_4_5_CoreBackend (0x0x7f0964662548) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f096432a120) 0
+
+Class QOpenGLFunctions_1_0_DeprecatedBackend::Functions
+ size=2064 align=8
+ base size=2064 base align=8
+QOpenGLFunctions_1_0_DeprecatedBackend::Functions (0x0x7f097557fd80) 0
+
+Class QOpenGLFunctions_1_0_DeprecatedBackend
+ size=2080 align=8
+ base size=2080 base align=8
+QOpenGLFunctions_1_0_DeprecatedBackend (0x0x7f0967c12dd0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f09754e87e0) 0
+
+Class QOpenGLFunctions_1_1_DeprecatedBackend::Functions
+ size=136 align=8
+ base size=136 base align=8
+QOpenGLFunctions_1_1_DeprecatedBackend::Functions (0x0x7f0971d12cc0) 0
+
+Class QOpenGLFunctions_1_1_DeprecatedBackend
+ size=152 align=8
+ base size=152 base align=8
+QOpenGLFunctions_1_1_DeprecatedBackend (0x0x7f0967c12e38) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f0971d12c60) 0
+
+Class QOpenGLFunctions_1_2_DeprecatedBackend::Functions
+ size=256 align=8
+ base size=256 base align=8
+QOpenGLFunctions_1_2_DeprecatedBackend::Functions (0x0x7f0971d66b40) 0
+
+Class QOpenGLFunctions_1_2_DeprecatedBackend
+ size=272 align=8
+ base size=272 base align=8
+QOpenGLFunctions_1_2_DeprecatedBackend (0x0x7f09680a8af8) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f0971d66ae0) 0
+
+Class QOpenGLFunctions_1_3_DeprecatedBackend::Functions
+ size=296 align=8
+ base size=296 base align=8
+QOpenGLFunctions_1_3_DeprecatedBackend::Functions (0x0x7f097198af00) 0
+
+Class QOpenGLFunctions_1_3_DeprecatedBackend
+ size=312 align=8
+ base size=312 base align=8
+QOpenGLFunctions_1_3_DeprecatedBackend (0x0x7f09680a8b60) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f097198aea0) 0
+
+Class QOpenGLFunctions_1_4_DeprecatedBackend::Functions
+ size=304 align=8
+ base size=304 base align=8
+QOpenGLFunctions_1_4_DeprecatedBackend::Functions (0x0x7f09719a6f00) 0
+
+Class QOpenGLFunctions_1_4_DeprecatedBackend
+ size=320 align=8
+ base size=320 base align=8
+QOpenGLFunctions_1_4_DeprecatedBackend (0x0x7f09680a8bc8) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f09719a6540) 0
+
+Class QOpenGLFunctions_2_0_DeprecatedBackend::Functions
+ size=288 align=8
+ base size=288 base align=8
+QOpenGLFunctions_2_0_DeprecatedBackend::Functions (0x0x7f09719e8a80) 0
+
+Class QOpenGLFunctions_2_0_DeprecatedBackend
+ size=304 align=8
+ base size=304 base align=8
+QOpenGLFunctions_2_0_DeprecatedBackend (0x0x7f09680a8c30) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f09719e89c0) 0
+
+Class QOpenGLFunctions_3_0_DeprecatedBackend::Functions
+ size=160 align=8
+ base size=160 base align=8
+QOpenGLFunctions_3_0_DeprecatedBackend::Functions (0x0x7f0971a29720) 0
+
+Class QOpenGLFunctions_3_0_DeprecatedBackend
+ size=176 align=8
+ base size=176 base align=8
+QOpenGLFunctions_3_0_DeprecatedBackend (0x0x7f09680a8d00) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f0971a29540) 0
+
+Class QOpenGLFunctions_3_3_DeprecatedBackend::Functions
+ size=240 align=8
+ base size=240 base align=8
+QOpenGLFunctions_3_3_DeprecatedBackend::Functions (0x0x7f0971a43c60) 0
+
+Class QOpenGLFunctions_3_3_DeprecatedBackend
+ size=256 align=8
+ base size=256 base align=8
+QOpenGLFunctions_3_3_DeprecatedBackend (0x0x7f09680a8d68) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f0971a43480) 0
+
+Class QOpenGLFunctions_4_5_DeprecatedBackend::Functions
+ size=96 align=8
+ base size=96 base align=8
+QOpenGLFunctions_4_5_DeprecatedBackend::Functions (0x0x7f0971a63ea0) 0
+
+Class QOpenGLFunctions_4_5_DeprecatedBackend
+ size=112 align=8
+ base size=112 base align=8
+QOpenGLFunctions_4_5_DeprecatedBackend (0x0x7f09680a8e38) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f0971a63e40) 0
+
+Class QOpenGLVersionProfile
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLVersionProfile (0x0x7f0971a81ba0) 0
+
+Class QOpenGLContextGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLContextGroup::QPrivateSignal (0x0x7f0971b17ea0) 0 empty
+
+Vtable for QOpenGLContextGroup
+QOpenGLContextGroup::_ZTV19QOpenGLContextGroup: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QOpenGLContextGroup)
+16 (int (*)(...))QOpenGLContextGroup::metaObject
+24 (int (*)(...))QOpenGLContextGroup::qt_metacast
+32 (int (*)(...))QOpenGLContextGroup::qt_metacall
+40 (int (*)(...))QOpenGLContextGroup::~QOpenGLContextGroup
+48 (int (*)(...))QOpenGLContextGroup::~QOpenGLContextGroup
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLContextGroup
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLContextGroup (0x0x7f09719d69c0) 0
+ vptr=((& QOpenGLContextGroup::_ZTV19QOpenGLContextGroup) + 16)
+ QObject (0x0x7f0971b17840) 0
+ primary-for QOpenGLContextGroup (0x0x7f09719d69c0)
+
+Class QOpenGLContext::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLContext::QPrivateSignal (0x0x7f0971b54000) 0 empty
+
+Vtable for QOpenGLContext
+QOpenGLContext::_ZTV14QOpenGLContext: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QOpenGLContext)
+16 (int (*)(...))QOpenGLContext::metaObject
+24 (int (*)(...))QOpenGLContext::qt_metacast
+32 (int (*)(...))QOpenGLContext::qt_metacall
+40 (int (*)(...))QOpenGLContext::~QOpenGLContext
+48 (int (*)(...))QOpenGLContext::~QOpenGLContext
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLContext
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLContext (0x0x7f09719d6bc8) 0
+ vptr=((& QOpenGLContext::_ZTV14QOpenGLContext) + 16)
+ QObject (0x0x7f0971b33960) 0
+ primary-for QOpenGLContext (0x0x7f09719d6bc8)
+
+Class QOpenGLDebugMessage
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLDebugMessage (0x0x7f0971b71240) 0
+
+Class QOpenGLDebugLogger::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLDebugLogger::QPrivateSignal (0x0x7f096f4c1060) 0 empty
+
+Vtable for QOpenGLDebugLogger
+QOpenGLDebugLogger::_ZTV18QOpenGLDebugLogger: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QOpenGLDebugLogger)
+16 (int (*)(...))QOpenGLDebugLogger::metaObject
+24 (int (*)(...))QOpenGLDebugLogger::qt_metacast
+32 (int (*)(...))QOpenGLDebugLogger::qt_metacall
+40 (int (*)(...))QOpenGLDebugLogger::~QOpenGLDebugLogger
+48 (int (*)(...))QOpenGLDebugLogger::~QOpenGLDebugLogger
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLDebugLogger
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLDebugLogger (0x0x7f096f4c4c30) 0
+ vptr=((& QOpenGLDebugLogger::_ZTV18QOpenGLDebugLogger) + 16)
+ QObject (0x0x7f096f4a6f00) 0
+ primary-for QOpenGLDebugLogger (0x0x7f096f4c4c30)
+
+Class QOpenGLFunctions
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLFunctions (0x0x7f096f4c1b40) 0
+
+Class QOpenGLFunctionsPrivate::Functions
+ size=1152 align=8
+ base size=1152 base align=8
+QOpenGLFunctionsPrivate::Functions (0x0x7f096eb92e40) 0
+
+Class QOpenGLFunctionsPrivate
+ size=1152 align=8
+ base size=1152 base align=8
+QOpenGLFunctionsPrivate (0x0x7f096eb92de0) 0
+
+Class QOpenGLExtraFunctions
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLExtraFunctions (0x0x7f096f4dce38) 0
+ QOpenGLFunctions (0x0x7f096bd9b720) 0
+
+Class QOpenGLExtraFunctionsPrivate::Functions
+ size=1728 align=8
+ base size=1728 base align=8
+QOpenGLExtraFunctionsPrivate::Functions (0x0x7f096be8b2a0) 0
+
+Class QOpenGLExtraFunctionsPrivate
+ size=2880 align=8
+ base size=2880 base align=8
+QOpenGLExtraFunctionsPrivate (0x0x7f096f4dcea0) 0
+ QOpenGLFunctionsPrivate (0x0x7f096be6de40) 0
+
+Vtable for QOpenGLFramebufferObject
+QOpenGLFramebufferObject::_ZTV24QOpenGLFramebufferObject: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QOpenGLFramebufferObject)
+16 (int (*)(...))QOpenGLFramebufferObject::~QOpenGLFramebufferObject
+24 (int (*)(...))QOpenGLFramebufferObject::~QOpenGLFramebufferObject
+
+Class QOpenGLFramebufferObject
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLFramebufferObject (0x0x7f096adec480) 0
+ vptr=((& QOpenGLFramebufferObject::_ZTV24QOpenGLFramebufferObject) + 16)
+
+Class QOpenGLFramebufferObjectFormat
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLFramebufferObjectFormat (0x0x7f096ae423c0) 0
+
+Vtable for QOpenGLPaintDevice
+QOpenGLPaintDevice::_ZTV18QOpenGLPaintDevice: 11 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QOpenGLPaintDevice)
+16 (int (*)(...))QOpenGLPaintDevice::~QOpenGLPaintDevice
+24 (int (*)(...))QOpenGLPaintDevice::~QOpenGLPaintDevice
+32 (int (*)(...))QOpenGLPaintDevice::devType
+40 (int (*)(...))QOpenGLPaintDevice::paintEngine
+48 (int (*)(...))QOpenGLPaintDevice::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+80 (int (*)(...))QOpenGLPaintDevice::ensureActiveTarget
+
+Class QOpenGLPaintDevice
+ size=32 align=8
+ base size=32 base align=8
+QOpenGLPaintDevice (0x0x7f096bd97618) 0
+ vptr=((& QOpenGLPaintDevice::_ZTV18QOpenGLPaintDevice) + 16)
+ QPaintDevice (0x0x7f096ae425a0) 0
+ primary-for QOpenGLPaintDevice (0x0x7f096bd97618)
+
+Class QOpenGLPixelTransferOptions
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLPixelTransferOptions (0x0x7f096ae8d660) 0
+
+Class QOpenGLShader::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLShader::QPrivateSignal (0x0x7f096a7e2f60) 0 empty
+
+Vtable for QOpenGLShader
+QOpenGLShader::_ZTV13QOpenGLShader: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QOpenGLShader)
+16 (int (*)(...))QOpenGLShader::metaObject
+24 (int (*)(...))QOpenGLShader::qt_metacast
+32 (int (*)(...))QOpenGLShader::qt_metacall
+40 (int (*)(...))QOpenGLShader::~QOpenGLShader
+48 (int (*)(...))QOpenGLShader::~QOpenGLShader
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLShader
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLShader (0x0x7f096b82aea0) 0
+ vptr=((& QOpenGLShader::_ZTV13QOpenGLShader) + 16)
+ QObject (0x0x7f096a7e2c60) 0
+ primary-for QOpenGLShader (0x0x7f096b82aea0)
+
+Class QOpenGLShaderProgram::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLShaderProgram::QPrivateSignal (0x0x7f096a685840) 0 empty
+
+Vtable for QOpenGLShaderProgram
+QOpenGLShaderProgram::_ZTV20QOpenGLShaderProgram: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QOpenGLShaderProgram)
+16 (int (*)(...))QOpenGLShaderProgram::metaObject
+24 (int (*)(...))QOpenGLShaderProgram::qt_metacast
+32 (int (*)(...))QOpenGLShaderProgram::qt_metacall
+40 (int (*)(...))QOpenGLShaderProgram::~QOpenGLShaderProgram
+48 (int (*)(...))QOpenGLShaderProgram::~QOpenGLShaderProgram
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QOpenGLShaderProgram::link
+
+Class QOpenGLShaderProgram
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLShaderProgram (0x0x7f096b84c208) 0
+ vptr=((& QOpenGLShaderProgram::_ZTV20QOpenGLShaderProgram) + 16)
+ QObject (0x0x7f096a6857e0) 0
+ primary-for QOpenGLShaderProgram (0x0x7f096b84c208)
+
+Class QOpenGLTexture
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLTexture (0x0x7f096a685d80) 0
+
+Class QOpenGLTextureBlitter
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLTextureBlitter (0x0x7f096a4d63c0) 0
+
+Class QOpenGLTimerQuery::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLTimerQuery::QPrivateSignal (0x0x7f096a521ea0) 0 empty
+
+Vtable for QOpenGLTimerQuery
+QOpenGLTimerQuery::_ZTV17QOpenGLTimerQuery: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QOpenGLTimerQuery)
+16 (int (*)(...))QOpenGLTimerQuery::metaObject
+24 (int (*)(...))QOpenGLTimerQuery::qt_metacast
+32 (int (*)(...))QOpenGLTimerQuery::qt_metacall
+40 (int (*)(...))QOpenGLTimerQuery::~QOpenGLTimerQuery
+48 (int (*)(...))QOpenGLTimerQuery::~QOpenGLTimerQuery
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLTimerQuery
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLTimerQuery (0x0x7f096b84cc98) 0
+ vptr=((& QOpenGLTimerQuery::_ZTV17QOpenGLTimerQuery) + 16)
+ QObject (0x0x7f096a521cc0) 0
+ primary-for QOpenGLTimerQuery (0x0x7f096b84cc98)
+
+Class QOpenGLTimeMonitor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLTimeMonitor::QPrivateSignal (0x0x7f096a566180) 0 empty
+
+Vtable for QOpenGLTimeMonitor
+QOpenGLTimeMonitor::_ZTV18QOpenGLTimeMonitor: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QOpenGLTimeMonitor)
+16 (int (*)(...))QOpenGLTimeMonitor::metaObject
+24 (int (*)(...))QOpenGLTimeMonitor::qt_metacast
+32 (int (*)(...))QOpenGLTimeMonitor::qt_metacall
+40 (int (*)(...))QOpenGLTimeMonitor::~QOpenGLTimeMonitor
+48 (int (*)(...))QOpenGLTimeMonitor::~QOpenGLTimeMonitor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLTimeMonitor
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLTimeMonitor (0x0x7f096b84cd00) 0
+ vptr=((& QOpenGLTimeMonitor::_ZTV18QOpenGLTimeMonitor) + 16)
+ QObject (0x0x7f096a5660c0) 0
+ primary-for QOpenGLTimeMonitor (0x0x7f096b84cd00)
+
+Class QOpenGLVertexArrayObject::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLVertexArrayObject::QPrivateSignal (0x0x7f096a566f00) 0 empty
+
+Class QOpenGLVertexArrayObject::Binder
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLVertexArrayObject::Binder (0x0x7f096a566f60) 0
+
+Vtable for QOpenGLVertexArrayObject
+QOpenGLVertexArrayObject::_ZTV24QOpenGLVertexArrayObject: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QOpenGLVertexArrayObject)
+16 (int (*)(...))QOpenGLVertexArrayObject::metaObject
+24 (int (*)(...))QOpenGLVertexArrayObject::qt_metacast
+32 (int (*)(...))QOpenGLVertexArrayObject::qt_metacall
+40 (int (*)(...))QOpenGLVertexArrayObject::~QOpenGLVertexArrayObject
+48 (int (*)(...))QOpenGLVertexArrayObject::~QOpenGLVertexArrayObject
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLVertexArrayObject
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLVertexArrayObject (0x0x7f096b868068) 0
+ vptr=((& QOpenGLVertexArrayObject::_ZTV24QOpenGLVertexArrayObject) + 16)
+ QObject (0x0x7f096a566d20) 0
+ primary-for QOpenGLVertexArrayObject (0x0x7f096b868068)
+
+Class QPaintDeviceWindow::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPaintDeviceWindow::QPrivateSignal (0x0x7f096a254a20) 0 empty
+
+Vtable for QPaintDeviceWindow
+QPaintDeviceWindow::_ZTV18QPaintDeviceWindow: 58 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QPaintDeviceWindow)
+16 (int (*)(...))QPaintDeviceWindow::metaObject
+24 (int (*)(...))QPaintDeviceWindow::qt_metacast
+32 (int (*)(...))QPaintDeviceWindow::qt_metacall
+40 (int (*)(...))QPaintDeviceWindow::~QPaintDeviceWindow
+48 (int (*)(...))QPaintDeviceWindow::~QPaintDeviceWindow
+56 (int (*)(...))QPaintDeviceWindow::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWindow::surfaceType
+120 (int (*)(...))QWindow::format
+128 (int (*)(...))QWindow::size
+136 (int (*)(...))QWindow::accessibleRoot
+144 (int (*)(...))QWindow::focusObject
+152 (int (*)(...))QPaintDeviceWindow::exposeEvent
+160 (int (*)(...))QWindow::resizeEvent
+168 (int (*)(...))QWindow::moveEvent
+176 (int (*)(...))QWindow::focusInEvent
+184 (int (*)(...))QWindow::focusOutEvent
+192 (int (*)(...))QWindow::showEvent
+200 (int (*)(...))QWindow::hideEvent
+208 (int (*)(...))QWindow::keyPressEvent
+216 (int (*)(...))QWindow::keyReleaseEvent
+224 (int (*)(...))QWindow::mousePressEvent
+232 (int (*)(...))QWindow::mouseReleaseEvent
+240 (int (*)(...))QWindow::mouseDoubleClickEvent
+248 (int (*)(...))QWindow::mouseMoveEvent
+256 (int (*)(...))QWindow::wheelEvent
+264 (int (*)(...))QWindow::touchEvent
+272 (int (*)(...))QWindow::tabletEvent
+280 (int (*)(...))QWindow::nativeEvent
+288 (int (*)(...))QWindow::surfaceHandle
+296 (int (*)(...))QPaintDeviceWindow::paintEvent
+304 (int (*)(...))QPaintDeviceWindow::metric
+312 (int (*)(...))QPaintDeviceWindow::paintEngine
+320 (int (*)(...))-16
+328 (int (*)(...))(& _ZTI18QPaintDeviceWindow)
+336 (int (*)(...))QPaintDeviceWindow::_ZThn16_N18QPaintDeviceWindowD1Ev
+344 (int (*)(...))QPaintDeviceWindow::_ZThn16_N18QPaintDeviceWindowD0Ev
+352 (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
+360 (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
+368 (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
+376 (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv
+384 (int (*)(...))-40
+392 (int (*)(...))(& _ZTI18QPaintDeviceWindow)
+400 (int (*)(...))QPaintDeviceWindow::_ZThn40_N18QPaintDeviceWindowD1Ev
+408 (int (*)(...))QPaintDeviceWindow::_ZThn40_N18QPaintDeviceWindowD0Ev
+416 (int (*)(...))QPaintDevice::devType
+424 (int (*)(...))QPaintDeviceWindow::_ZThn40_NK18QPaintDeviceWindow11paintEngineEv
+432 (int (*)(...))QPaintDeviceWindow::_ZThn40_NK18QPaintDeviceWindow6metricEN12QPaintDevice17PaintDeviceMetricE
+440 (int (*)(...))QPaintDevice::initPainter
+448 (int (*)(...))QPaintDevice::redirected
+456 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QPaintDeviceWindow
+ size=64 align=8
+ base size=64 base align=8
+QPaintDeviceWindow (0x0x7f097216cee0) 0
+ vptr=((& QPaintDeviceWindow::_ZTV18QPaintDeviceWindow) + 16)
+ QWindow (0x0x7f097216cf50) 0
+ primary-for QPaintDeviceWindow (0x0x7f097216cee0)
+ QObject (0x0x7f096a234c60) 0
+ primary-for QWindow (0x0x7f097216cf50)
+ QSurface (0x0x7f096a234d80) 16
+ vptr=((& QPaintDeviceWindow::_ZTV18QPaintDeviceWindow) + 336)
+ QPaintDevice (0x0x7f096a234de0) 40
+ vptr=((& QPaintDeviceWindow::_ZTV18QPaintDeviceWindow) + 400)
+
+Class QOpenGLWindow::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLWindow::QPrivateSignal (0x0x7f096a2ce420) 0 empty
+
+Vtable for QOpenGLWindow
+QOpenGLWindow::_ZTV13QOpenGLWindow: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QOpenGLWindow)
+16 (int (*)(...))QOpenGLWindow::metaObject
+24 (int (*)(...))QOpenGLWindow::qt_metacast
+32 (int (*)(...))QOpenGLWindow::qt_metacall
+40 (int (*)(...))QOpenGLWindow::~QOpenGLWindow
+48 (int (*)(...))QOpenGLWindow::~QOpenGLWindow
+56 (int (*)(...))QPaintDeviceWindow::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWindow::surfaceType
+120 (int (*)(...))QWindow::format
+128 (int (*)(...))QWindow::size
+136 (int (*)(...))QWindow::accessibleRoot
+144 (int (*)(...))QWindow::focusObject
+152 (int (*)(...))QPaintDeviceWindow::exposeEvent
+160 (int (*)(...))QOpenGLWindow::resizeEvent
+168 (int (*)(...))QWindow::moveEvent
+176 (int (*)(...))QWindow::focusInEvent
+184 (int (*)(...))QWindow::focusOutEvent
+192 (int (*)(...))QWindow::showEvent
+200 (int (*)(...))QWindow::hideEvent
+208 (int (*)(...))QWindow::keyPressEvent
+216 (int (*)(...))QWindow::keyReleaseEvent
+224 (int (*)(...))QWindow::mousePressEvent
+232 (int (*)(...))QWindow::mouseReleaseEvent
+240 (int (*)(...))QWindow::mouseDoubleClickEvent
+248 (int (*)(...))QWindow::mouseMoveEvent
+256 (int (*)(...))QWindow::wheelEvent
+264 (int (*)(...))QWindow::touchEvent
+272 (int (*)(...))QWindow::tabletEvent
+280 (int (*)(...))QWindow::nativeEvent
+288 (int (*)(...))QWindow::surfaceHandle
+296 (int (*)(...))QOpenGLWindow::paintEvent
+304 (int (*)(...))QOpenGLWindow::metric
+312 (int (*)(...))QPaintDeviceWindow::paintEngine
+320 (int (*)(...))QOpenGLWindow::initializeGL
+328 (int (*)(...))QOpenGLWindow::resizeGL
+336 (int (*)(...))QOpenGLWindow::paintGL
+344 (int (*)(...))QOpenGLWindow::paintUnderGL
+352 (int (*)(...))QOpenGLWindow::paintOverGL
+360 (int (*)(...))QOpenGLWindow::redirected
+368 (int (*)(...))-16
+376 (int (*)(...))(& _ZTI13QOpenGLWindow)
+384 (int (*)(...))QOpenGLWindow::_ZThn16_N13QOpenGLWindowD1Ev
+392 (int (*)(...))QOpenGLWindow::_ZThn16_N13QOpenGLWindowD0Ev
+400 (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
+408 (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
+416 (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
+424 (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv
+432 (int (*)(...))-40
+440 (int (*)(...))(& _ZTI13QOpenGLWindow)
+448 (int (*)(...))QOpenGLWindow::_ZThn40_N13QOpenGLWindowD1Ev
+456 (int (*)(...))QOpenGLWindow::_ZThn40_N13QOpenGLWindowD0Ev
+464 (int (*)(...))QPaintDevice::devType
+472 (int (*)(...))QPaintDeviceWindow::_ZThn40_NK18QPaintDeviceWindow11paintEngineEv
+480 (int (*)(...))QOpenGLWindow::_ZThn40_NK13QOpenGLWindow6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QPaintDevice::initPainter
+496 (int (*)(...))QOpenGLWindow::_ZThn40_NK13QOpenGLWindow10redirectedEP6QPoint
+504 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QOpenGLWindow
+ size=64 align=8
+ base size=64 base align=8
+QOpenGLWindow (0x0x7f096b868c30) 0
+ vptr=((& QOpenGLWindow::_ZTV13QOpenGLWindow) + 16)
+ QPaintDeviceWindow (0x0x7f0971e641c0) 0
+ primary-for QOpenGLWindow (0x0x7f096b868c30)
+ QWindow (0x0x7f0971e64230) 0
+ primary-for QPaintDeviceWindow (0x0x7f0971e641c0)
+ QObject (0x0x7f096a254ea0) 0
+ primary-for QWindow (0x0x7f0971e64230)
+ QSurface (0x0x7f096a2ce300) 16
+ vptr=((& QOpenGLWindow::_ZTV13QOpenGLWindow) + 384)
+ QPaintDevice (0x0x7f096a2ce360) 40
+ vptr=((& QOpenGLWindow::_ZTV13QOpenGLWindow) + 448)
+
+Class QPageSize
+ size=8 align=8
+ base size=8 base align=8
+QPageSize (0x0x7f096a2ef780) 0
+
+Class QPageLayout
+ size=8 align=8
+ base size=8 base align=8
+QPageLayout (0x0x7f0968decf60) 0
+
+Class QPagedPaintDevice::Margins
+ size=32 align=8
+ base size=32 base align=8
+QPagedPaintDevice::Margins (0x0x7f09678300c0) 0
+
+Vtable for QPagedPaintDevice
+QPagedPaintDevice::_ZTV17QPagedPaintDevice: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QPagedPaintDevice)
+16 0
+24 0
+32 (int (*)(...))QPaintDevice::devType
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))QPaintDevice::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))QPagedPaintDevice::setPageSize
+96 (int (*)(...))QPagedPaintDevice::setPageSizeMM
+104 (int (*)(...))QPagedPaintDevice::setMargins
+
+Class QPagedPaintDevice
+ size=32 align=8
+ base size=32 base align=8
+QPagedPaintDevice (0x0x7f0968f1dd00) 0
+ vptr=((& QPagedPaintDevice::_ZTV17QPagedPaintDevice) + 16)
+ QPaintDevice (0x0x7f0967830060) 0
+ primary-for QPagedPaintDevice (0x0x7f0968f1dd00)
+
+Class QPainter::PixmapFragment
+ size=80 align=8
+ base size=80 base align=8
+QPainter::PixmapFragment (0x0x7f0967830c60) 0
+
+Class QPainter
+ size=8 align=8
+ base size=8 base align=8
+QPainter (0x0x7f0967830c00) 0
+
+Class QTextItem
+ size=1 align=1
+ base size=0 base align=1
+QTextItem (0x0x7f09667a7f60) 0 empty
+
+Vtable for QPaintEngine
+QPaintEngine::_ZTV12QPaintEngine: 24 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QPaintEngine)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))QPaintEngine::drawRects
+64 (int (*)(...))QPaintEngine::drawRects
+72 (int (*)(...))QPaintEngine::drawLines
+80 (int (*)(...))QPaintEngine::drawLines
+88 (int (*)(...))QPaintEngine::drawEllipse
+96 (int (*)(...))QPaintEngine::drawEllipse
+104 (int (*)(...))QPaintEngine::drawPath
+112 (int (*)(...))QPaintEngine::drawPoints
+120 (int (*)(...))QPaintEngine::drawPoints
+128 (int (*)(...))QPaintEngine::drawPolygon
+136 (int (*)(...))QPaintEngine::drawPolygon
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QPaintEngine::drawTextItem
+160 (int (*)(...))QPaintEngine::drawTiledPixmap
+168 (int (*)(...))QPaintEngine::drawImage
+176 (int (*)(...))QPaintEngine::coordinateOffset
+184 (int (*)(...))__cxa_pure_virtual
+
+Class QPaintEngine
+ size=32 align=8
+ base size=32 base align=8
+QPaintEngine (0x0x7f09665dd600) 0
+ vptr=((& QPaintEngine::_ZTV12QPaintEngine) + 16)
+
+Class QPaintEngineState
+ size=4 align=4
+ base size=4 base align=4
+QPaintEngineState (0x0x7f0966705c60) 0
+
+Class QPdfWriter::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPdfWriter::QPrivateSignal (0x0x7f09661baea0) 0 empty
+
+Vtable for QPdfWriter
+QPdfWriter::_ZTV10QPdfWriter: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QPdfWriter)
+16 (int (*)(...))QPdfWriter::metaObject
+24 (int (*)(...))QPdfWriter::qt_metacast
+32 (int (*)(...))QPdfWriter::qt_metacall
+40 (int (*)(...))QPdfWriter::~QPdfWriter
+48 (int (*)(...))QPdfWriter::~QPdfWriter
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QPdfWriter::newPage
+120 (int (*)(...))QPdfWriter::setPageSize
+128 (int (*)(...))QPdfWriter::setPageSizeMM
+136 (int (*)(...))QPdfWriter::setMargins
+144 (int (*)(...))QPdfWriter::paintEngine
+152 (int (*)(...))QPdfWriter::metric
+160 (int (*)(...))-16
+168 (int (*)(...))(& _ZTI10QPdfWriter)
+176 (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriterD1Ev
+184 (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriterD0Ev
+192 (int (*)(...))QPaintDevice::devType
+200 (int (*)(...))QPdfWriter::_ZThn16_NK10QPdfWriter11paintEngineEv
+208 (int (*)(...))QPdfWriter::_ZThn16_NK10QPdfWriter6metricEN12QPaintDevice17PaintDeviceMetricE
+216 (int (*)(...))QPaintDevice::initPainter
+224 (int (*)(...))QPaintDevice::redirected
+232 (int (*)(...))QPaintDevice::sharedPainter
+240 (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriter7newPageEv
+248 (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriter11setPageSizeEN17QPagedPaintDevice8PageSizeE
+256 (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriter13setPageSizeMMERK6QSizeF
+264 (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriter10setMarginsERKN17QPagedPaintDevice7MarginsE
+
+Class QPdfWriter
+ size=48 align=8
+ base size=48 base align=8
+QPdfWriter (0x0x7f0971380000) 0
+ vptr=((& QPdfWriter::_ZTV10QPdfWriter) + 16)
+ QObject (0x0x7f09661ba120) 0
+ primary-for QPdfWriter (0x0x7f0971380000)
+ QPagedPaintDevice (0x0x7f096787f270) 16
+ vptr=((& QPdfWriter::_ZTV10QPdfWriter) + 176)
+ QPaintDevice (0x0x7f09661ba180) 16
+ primary-for QPagedPaintDevice (0x0x7f096787f270)
+
+Vtable for QPicture
+QPicture::_ZTV8QPicture: 11 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QPicture)
+16 (int (*)(...))QPicture::~QPicture
+24 (int (*)(...))QPicture::~QPicture
+32 (int (*)(...))QPicture::devType
+40 (int (*)(...))QPicture::paintEngine
+48 (int (*)(...))QPicture::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+80 (int (*)(...))QPicture::setData
+
+Class QPicture
+ size=32 align=8
+ base size=32 base align=8
+QPicture (0x0x7f096787fa28) 0
+ vptr=((& QPicture::_ZTV8QPicture) + 16)
+ QPaintDevice (0x0x7f09662814e0) 0
+ primary-for QPicture (0x0x7f096787fa28)
+
+Class QPictureIO
+ size=8 align=8
+ base size=8 base align=8
+QPictureIO (0x0x7f096582e120) 0
+
+Class QPictureFormatPlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPictureFormatPlugin::QPrivateSignal (0x0x7f096582e480) 0 empty
+
+Vtable for QPictureFormatPlugin
+QPictureFormatPlugin::_ZTV20QPictureFormatPlugin: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QPictureFormatPlugin)
+16 (int (*)(...))QPictureFormatPlugin::metaObject
+24 (int (*)(...))QPictureFormatPlugin::qt_metacast
+32 (int (*)(...))QPictureFormatPlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QPictureFormatPlugin::loadPicture
+120 (int (*)(...))QPictureFormatPlugin::savePicture
+128 (int (*)(...))__cxa_pure_virtual
+
+Class QPictureFormatPlugin
+ size=16 align=8
+ base size=16 base align=8
+QPictureFormatPlugin (0x0x7f09666043a8) 0
+ vptr=((& QPictureFormatPlugin::_ZTV20QPictureFormatPlugin) + 16)
+ QObject (0x0x7f096582e420) 0
+ primary-for QPictureFormatPlugin (0x0x7f09666043a8)
+
+Class QPixmapCache::Key
+ size=8 align=8
+ base size=8 base align=8
+QPixmapCache::Key (0x0x7f096582ea80) 0
+
+Class QPixmapCache
+ size=1 align=1
+ base size=0 base align=1
+QPixmapCache (0x0x7f096582e8a0) 0 empty
+
+Class QRasterWindow::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QRasterWindow::QPrivateSignal (0x0x7f0964be6840) 0 empty
+
+Vtable for QRasterWindow
+QRasterWindow::_ZTV13QRasterWindow: 59 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QRasterWindow)
+16 (int (*)(...))QRasterWindow::metaObject
+24 (int (*)(...))QRasterWindow::qt_metacast
+32 (int (*)(...))QRasterWindow::qt_metacall
+40 (int (*)(...))QRasterWindow::~QRasterWindow
+48 (int (*)(...))QRasterWindow::~QRasterWindow
+56 (int (*)(...))QPaintDeviceWindow::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWindow::surfaceType
+120 (int (*)(...))QWindow::format
+128 (int (*)(...))QWindow::size
+136 (int (*)(...))QWindow::accessibleRoot
+144 (int (*)(...))QWindow::focusObject
+152 (int (*)(...))QPaintDeviceWindow::exposeEvent
+160 (int (*)(...))QWindow::resizeEvent
+168 (int (*)(...))QWindow::moveEvent
+176 (int (*)(...))QWindow::focusInEvent
+184 (int (*)(...))QWindow::focusOutEvent
+192 (int (*)(...))QWindow::showEvent
+200 (int (*)(...))QWindow::hideEvent
+208 (int (*)(...))QWindow::keyPressEvent
+216 (int (*)(...))QWindow::keyReleaseEvent
+224 (int (*)(...))QWindow::mousePressEvent
+232 (int (*)(...))QWindow::mouseReleaseEvent
+240 (int (*)(...))QWindow::mouseDoubleClickEvent
+248 (int (*)(...))QWindow::mouseMoveEvent
+256 (int (*)(...))QWindow::wheelEvent
+264 (int (*)(...))QWindow::touchEvent
+272 (int (*)(...))QWindow::tabletEvent
+280 (int (*)(...))QWindow::nativeEvent
+288 (int (*)(...))QWindow::surfaceHandle
+296 (int (*)(...))QPaintDeviceWindow::paintEvent
+304 (int (*)(...))QRasterWindow::metric
+312 (int (*)(...))QPaintDeviceWindow::paintEngine
+320 (int (*)(...))QRasterWindow::redirected
+328 (int (*)(...))-16
+336 (int (*)(...))(& _ZTI13QRasterWindow)
+344 (int (*)(...))QRasterWindow::_ZThn16_N13QRasterWindowD1Ev
+352 (int (*)(...))QRasterWindow::_ZThn16_N13QRasterWindowD0Ev
+360 (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
+368 (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
+376 (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
+384 (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv
+392 (int (*)(...))-40
+400 (int (*)(...))(& _ZTI13QRasterWindow)
+408 (int (*)(...))QRasterWindow::_ZThn40_N13QRasterWindowD1Ev
+416 (int (*)(...))QRasterWindow::_ZThn40_N13QRasterWindowD0Ev
+424 (int (*)(...))QPaintDevice::devType
+432 (int (*)(...))QPaintDeviceWindow::_ZThn40_NK18QPaintDeviceWindow11paintEngineEv
+440 (int (*)(...))QRasterWindow::_ZThn40_NK13QRasterWindow6metricEN12QPaintDevice17PaintDeviceMetricE
+448 (int (*)(...))QPaintDevice::initPainter
+456 (int (*)(...))QRasterWindow::_ZThn40_NK13QRasterWindow10redirectedEP6QPoint
+464 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QRasterWindow
+ size=64 align=8
+ base size=64 base align=8
+QRasterWindow (0x0x7f096524d270) 0
+ vptr=((& QRasterWindow::_ZTV13QRasterWindow) + 16)
+ QPaintDeviceWindow (0x0x7f09706e9700) 0
+ primary-for QRasterWindow (0x0x7f096524d270)
+ QWindow (0x0x7f09706e9770) 0
+ primary-for QPaintDeviceWindow (0x0x7f09706e9700)
+ QObject (0x0x7f0964b653c0) 0
+ primary-for QWindow (0x0x7f09706e9770)
+ QSurface (0x0x7f0964b65420) 16
+ vptr=((& QRasterWindow::_ZTV13QRasterWindow) + 344)
+ QPaintDevice (0x0x7f0964be67e0) 40
+ vptr=((& QRasterWindow::_ZTV13QRasterWindow) + 408)
+
+Class QScreen::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QScreen::QPrivateSignal (0x0x7f0964c03ae0) 0 empty
+
+Vtable for QScreen
+QScreen::_ZTV7QScreen: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QScreen)
+16 (int (*)(...))QScreen::metaObject
+24 (int (*)(...))QScreen::qt_metacast
+32 (int (*)(...))QScreen::qt_metacall
+40 (int (*)(...))QScreen::~QScreen
+48 (int (*)(...))QScreen::~QScreen
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QScreen
+ size=16 align=8
+ base size=16 base align=8
+QScreen (0x0x7f096524d958) 0
+ vptr=((& QScreen::_ZTV7QScreen) + 16)
+ QObject (0x0x7f0964c03a80) 0
+ primary-for QScreen (0x0x7f096524d958)
+
+Class QSessionManager::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSessionManager::QPrivateSignal (0x0x7f0964953f00) 0 empty
+
+Vtable for QSessionManager
+QSessionManager::_ZTV15QSessionManager: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QSessionManager)
+16 (int (*)(...))QSessionManager::metaObject
+24 (int (*)(...))QSessionManager::qt_metacast
+32 (int (*)(...))QSessionManager::qt_metacall
+40 (int (*)(...))QSessionManager::~QSessionManager
+48 (int (*)(...))QSessionManager::~QSessionManager
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSessionManager
+ size=16 align=8
+ base size=16 base align=8
+QSessionManager (0x0x7f096524daf8) 0
+ vptr=((& QSessionManager::_ZTV15QSessionManager) + 16)
+ QObject (0x0x7f0964953e40) 0
+ primary-for QSessionManager (0x0x7f096524daf8)
+
+Vtable for QStandardItem
+QStandardItem::_ZTV13QStandardItem: 11 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QStandardItem)
+16 (int (*)(...))QStandardItem::~QStandardItem
+24 (int (*)(...))QStandardItem::~QStandardItem
+32 (int (*)(...))QStandardItem::data
+40 (int (*)(...))QStandardItem::setData
+48 (int (*)(...))QStandardItem::clone
+56 (int (*)(...))QStandardItem::type
+64 (int (*)(...))QStandardItem::read
+72 (int (*)(...))QStandardItem::write
+80 (int (*)(...))QStandardItem::operator<
+
+Class QStandardItem
+ size=16 align=8
+ base size=16 base align=8
+QStandardItem (0x0x7f096432a4e0) 0
+ vptr=((& QStandardItem::_ZTV13QStandardItem) + 16)
+
+Class QStandardItemModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStandardItemModel::QPrivateSignal (0x0x7f096583fc60) 0 empty
+
+Vtable for QStandardItemModel
+QStandardItemModel::_ZTV18QStandardItemModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QStandardItemModel)
+16 (int (*)(...))QStandardItemModel::metaObject
+24 (int (*)(...))QStandardItemModel::qt_metacast
+32 (int (*)(...))QStandardItemModel::qt_metacall
+40 (int (*)(...))QStandardItemModel::~QStandardItemModel
+48 (int (*)(...))QStandardItemModel::~QStandardItemModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QStandardItemModel::index
+120 (int (*)(...))QStandardItemModel::parent
+128 (int (*)(...))QStandardItemModel::sibling
+136 (int (*)(...))QStandardItemModel::rowCount
+144 (int (*)(...))QStandardItemModel::columnCount
+152 (int (*)(...))QStandardItemModel::hasChildren
+160 (int (*)(...))QStandardItemModel::data
+168 (int (*)(...))QStandardItemModel::setData
+176 (int (*)(...))QStandardItemModel::headerData
+184 (int (*)(...))QStandardItemModel::setHeaderData
+192 (int (*)(...))QStandardItemModel::itemData
+200 (int (*)(...))QStandardItemModel::setItemData
+208 (int (*)(...))QStandardItemModel::mimeTypes
+216 (int (*)(...))QStandardItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QStandardItemModel::dropMimeData
+240 (int (*)(...))QStandardItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QStandardItemModel::insertRows
+264 (int (*)(...))QStandardItemModel::insertColumns
+272 (int (*)(...))QStandardItemModel::removeRows
+280 (int (*)(...))QStandardItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QStandardItemModel::flags
+328 (int (*)(...))QStandardItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QStandardItemModel
+ size=16 align=8
+ base size=16 base align=8
+QStandardItemModel (0x0x7f09652c4340) 0
+ vptr=((& QStandardItemModel::_ZTV18QStandardItemModel) + 16)
+ QAbstractItemModel (0x0x7f09652c44e0) 0
+ primary-for QStandardItemModel (0x0x7f09652c4340)
+ QObject (0x0x7f096583fc00) 0
+ primary-for QAbstractItemModel (0x0x7f09652c44e0)
+
+Class QStaticText
+ size=8 align=8
+ base size=8 base align=8
+QStaticText (0x0x7f0964c71060) 0
+
+Class QStyleHints::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStyleHints::QPrivateSignal (0x0x7f0964a26360) 0 empty
+
+Vtable for QStyleHints
+QStyleHints::_ZTV11QStyleHints: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QStyleHints)
+16 (int (*)(...))QStyleHints::metaObject
+24 (int (*)(...))QStyleHints::qt_metacast
+32 (int (*)(...))QStyleHints::qt_metacall
+40 (int (*)(...))QStyleHints::~QStyleHints
+48 (int (*)(...))QStyleHints::~QStyleHints
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QStyleHints
+ size=16 align=8
+ base size=16 base align=8
+QStyleHints (0x0x7f0964a220d0) 0
+ vptr=((& QStyleHints::_ZTV11QStyleHints) + 16)
+ QObject (0x0x7f0964a26300) 0
+ primary-for QStyleHints (0x0x7f0964a220d0)
+
+Class QTextObject::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextObject::QPrivateSignal (0x0x7f0964a265a0) 0 empty
+
+Vtable for QTextObject
+QTextObject::_ZTV11QTextObject: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTextObject)
+16 (int (*)(...))QTextObject::metaObject
+24 (int (*)(...))QTextObject::qt_metacast
+32 (int (*)(...))QTextObject::qt_metacall
+40 (int (*)(...))QTextObject::~QTextObject
+48 (int (*)(...))QTextObject::~QTextObject
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTextObject
+ size=16 align=8
+ base size=16 base align=8
+QTextObject (0x0x7f0964a22138) 0
+ vptr=((& QTextObject::_ZTV11QTextObject) + 16)
+ QObject (0x0x7f0964a26540) 0
+ primary-for QTextObject (0x0x7f0964a22138)
+
+Class QTextBlockGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextBlockGroup::QPrivateSignal (0x0x7f0964a267e0) 0 empty
+
+Vtable for QTextBlockGroup
+QTextBlockGroup::_ZTV15QTextBlockGroup: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QTextBlockGroup)
+16 (int (*)(...))QTextBlockGroup::metaObject
+24 (int (*)(...))QTextBlockGroup::qt_metacast
+32 (int (*)(...))QTextBlockGroup::qt_metacall
+40 (int (*)(...))QTextBlockGroup::~QTextBlockGroup
+48 (int (*)(...))QTextBlockGroup::~QTextBlockGroup
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTextBlockGroup::blockInserted
+120 (int (*)(...))QTextBlockGroup::blockRemoved
+128 (int (*)(...))QTextBlockGroup::blockFormatChanged
+
+Class QTextBlockGroup
+ size=16 align=8
+ base size=16 base align=8
+QTextBlockGroup (0x0x7f0964a221a0) 0
+ vptr=((& QTextBlockGroup::_ZTV15QTextBlockGroup) + 16)
+ QTextObject (0x0x7f0964a22208) 0
+ primary-for QTextBlockGroup (0x0x7f0964a221a0)
+ QObject (0x0x7f0964a26780) 0
+ primary-for QTextObject (0x0x7f0964a22208)
+
+Vtable for QTextFrameLayoutData
+QTextFrameLayoutData::_ZTV20QTextFrameLayoutData: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QTextFrameLayoutData)
+16 (int (*)(...))QTextFrameLayoutData::~QTextFrameLayoutData
+24 (int (*)(...))QTextFrameLayoutData::~QTextFrameLayoutData
+
+Class QTextFrameLayoutData
+ size=8 align=8
+ base size=8 base align=8
+QTextFrameLayoutData (0x0x7f0964a269c0) 0 nearly-empty
+ vptr=((& QTextFrameLayoutData::_ZTV20QTextFrameLayoutData) + 16)
+
+Class QTextFrame::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextFrame::QPrivateSignal (0x0x7f0964a26a80) 0 empty
+
+Class QTextFrame::iterator
+ size=32 align=8
+ base size=28 base align=8
+QTextFrame::iterator (0x0x7f0964a26ae0) 0
+
+Vtable for QTextFrame
+QTextFrame::_ZTV10QTextFrame: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTextFrame)
+16 (int (*)(...))QTextFrame::metaObject
+24 (int (*)(...))QTextFrame::qt_metacast
+32 (int (*)(...))QTextFrame::qt_metacall
+40 (int (*)(...))QTextFrame::~QTextFrame
+48 (int (*)(...))QTextFrame::~QTextFrame
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTextFrame
+ size=16 align=8
+ base size=16 base align=8
+QTextFrame (0x0x7f0964a22270) 0
+ vptr=((& QTextFrame::_ZTV10QTextFrame) + 16)
+ QTextObject (0x0x7f0964a222d8) 0
+ primary-for QTextFrame (0x0x7f0964a22270)
+ QObject (0x0x7f0964a26a20) 0
+ primary-for QTextObject (0x0x7f0964a222d8)
+
+Vtable for QTextBlockUserData
+QTextBlockUserData::_ZTV18QTextBlockUserData: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QTextBlockUserData)
+16 (int (*)(...))QTextBlockUserData::~QTextBlockUserData
+24 (int (*)(...))QTextBlockUserData::~QTextBlockUserData
+
+Class QTextBlockUserData
+ size=8 align=8
+ base size=8 base align=8
+QTextBlockUserData (0x0x7f0964ab8480) 0 nearly-empty
+ vptr=((& QTextBlockUserData::_ZTV18QTextBlockUserData) + 16)
+
+Class QTextBlock::iterator
+ size=24 align=8
+ base size=20 base align=8
+QTextBlock::iterator (0x0x7f0964ab8540) 0
+
+Class QTextBlock
+ size=16 align=8
+ base size=12 base align=8
+QTextBlock (0x0x7f0964ab84e0) 0
+
+Class QTextFragment
+ size=16 align=8
+ base size=16 base align=8
+QTextFragment (0x0x7f096470f240) 0
+
+Class QSyntaxHighlighter::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSyntaxHighlighter::QPrivateSignal (0x0x7f0964737a20) 0 empty
+
+Vtable for QSyntaxHighlighter
+QSyntaxHighlighter::_ZTV18QSyntaxHighlighter: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QSyntaxHighlighter)
+16 (int (*)(...))QSyntaxHighlighter::metaObject
+24 (int (*)(...))QSyntaxHighlighter::qt_metacast
+32 (int (*)(...))QSyntaxHighlighter::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QSyntaxHighlighter
+ size=16 align=8
+ base size=16 base align=8
+QSyntaxHighlighter (0x0x7f0964739548) 0
+ vptr=((& QSyntaxHighlighter::_ZTV18QSyntaxHighlighter) + 16)
+ QObject (0x0x7f09647379c0) 0
+ primary-for QSyntaxHighlighter (0x0x7f0964739548)
+
+Class QTextDocumentFragment
+ size=8 align=8
+ base size=8 base align=8
+QTextDocumentFragment (0x0x7f0964737c00) 0
+
+Class QTextDocumentWriter
+ size=8 align=8
+ base size=8 base align=8
+QTextDocumentWriter (0x0x7f0964737c60) 0
+
+Class QTextList::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextList::QPrivateSignal (0x0x7f0964737d20) 0 empty
+
+Vtable for QTextList
+QTextList::_ZTV9QTextList: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QTextList)
+16 (int (*)(...))QTextList::metaObject
+24 (int (*)(...))QTextList::qt_metacast
+32 (int (*)(...))QTextList::qt_metacall
+40 (int (*)(...))QTextList::~QTextList
+48 (int (*)(...))QTextList::~QTextList
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTextBlockGroup::blockInserted
+120 (int (*)(...))QTextBlockGroup::blockRemoved
+128 (int (*)(...))QTextBlockGroup::blockFormatChanged
+
+Class QTextList
+ size=16 align=8
+ base size=16 base align=8
+QTextList (0x0x7f09647395b0) 0
+ vptr=((& QTextList::_ZTV9QTextList) + 16)
+ QTextBlockGroup (0x0x7f0964739618) 0
+ primary-for QTextList (0x0x7f09647395b0)
+ QTextObject (0x0x7f0964739680) 0
+ primary-for QTextBlockGroup (0x0x7f0964739618)
+ QObject (0x0x7f0964737cc0) 0
+ primary-for QTextObject (0x0x7f0964739680)
+
+Class QTextTableCell
+ size=16 align=8
+ base size=12 base align=8
+QTextTableCell (0x0x7f096477f360) 0
+
+Class QTextTable::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextTable::QPrivateSignal (0x0x7f096477fba0) 0 empty
+
+Vtable for QTextTable
+QTextTable::_ZTV10QTextTable: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTextTable)
+16 (int (*)(...))QTextTable::metaObject
+24 (int (*)(...))QTextTable::qt_metacast
+32 (int (*)(...))QTextTable::qt_metacall
+40 (int (*)(...))QTextTable::~QTextTable
+48 (int (*)(...))QTextTable::~QTextTable
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTextTable
+ size=16 align=8
+ base size=16 base align=8
+QTextTable (0x0x7f09647396e8) 0
+ vptr=((& QTextTable::_ZTV10QTextTable) + 16)
+ QTextFrame (0x0x7f0964739750) 0
+ primary-for QTextTable (0x0x7f09647396e8)
+ QTextObject (0x0x7f09647397b8) 0
+ primary-for QTextFrame (0x0x7f0964739750)
+ QObject (0x0x7f096477fb40) 0
+ primary-for QTextObject (0x0x7f09647397b8)
+
+Class QValidator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QValidator::QPrivateSignal (0x0x7f09647b4180) 0 empty
+
+Vtable for QValidator
+QValidator::_ZTV10QValidator: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QValidator)
+16 (int (*)(...))QValidator::metaObject
+24 (int (*)(...))QValidator::qt_metacast
+32 (int (*)(...))QValidator::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))QValidator::fixup
+
+Class QValidator
+ size=16 align=8
+ base size=16 base align=8
+QValidator (0x0x7f0964739820) 0
+ vptr=((& QValidator::_ZTV10QValidator) + 16)
+ QObject (0x0x7f09647b4120) 0
+ primary-for QValidator (0x0x7f0964739820)
+
+Class QIntValidator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QIntValidator::QPrivateSignal (0x0x7f09647b4480) 0 empty
+
+Vtable for QIntValidator
+QIntValidator::_ZTV13QIntValidator: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QIntValidator)
+16 (int (*)(...))QIntValidator::metaObject
+24 (int (*)(...))QIntValidator::qt_metacast
+32 (int (*)(...))QIntValidator::qt_metacall
+40 (int (*)(...))QIntValidator::~QIntValidator
+48 (int (*)(...))QIntValidator::~QIntValidator
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QIntValidator::validate
+120 (int (*)(...))QIntValidator::fixup
+128 (int (*)(...))QIntValidator::setRange
+
+Class QIntValidator
+ size=24 align=8
+ base size=24 base align=8
+QIntValidator (0x0x7f0964739888) 0
+ vptr=((& QIntValidator::_ZTV13QIntValidator) + 16)
+ QValidator (0x0x7f09647398f0) 0
+ primary-for QIntValidator (0x0x7f0964739888)
+ QObject (0x0x7f09647b4420) 0
+ primary-for QValidator (0x0x7f09647398f0)
+
+Class QDoubleValidator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDoubleValidator::QPrivateSignal (0x0x7f09647b46c0) 0 empty
+
+Vtable for QDoubleValidator
+QDoubleValidator::_ZTV16QDoubleValidator: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QDoubleValidator)
+16 (int (*)(...))QDoubleValidator::metaObject
+24 (int (*)(...))QDoubleValidator::qt_metacast
+32 (int (*)(...))QDoubleValidator::qt_metacall
+40 (int (*)(...))QDoubleValidator::~QDoubleValidator
+48 (int (*)(...))QDoubleValidator::~QDoubleValidator
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QDoubleValidator::validate
+120 (int (*)(...))QValidator::fixup
+128 (int (*)(...))QDoubleValidator::setRange
+
+Class QDoubleValidator
+ size=40 align=8
+ base size=36 base align=8
+QDoubleValidator (0x0x7f0964739958) 0
+ vptr=((& QDoubleValidator::_ZTV16QDoubleValidator) + 16)
+ QValidator (0x0x7f09647399c0) 0
+ primary-for QDoubleValidator (0x0x7f0964739958)
+ QObject (0x0x7f09647b4660) 0
+ primary-for QValidator (0x0x7f09647399c0)
+
+Class QRegExpValidator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QRegExpValidator::QPrivateSignal (0x0x7f09647b4b40) 0 empty
+
+Vtable for QRegExpValidator
+QRegExpValidator::_ZTV16QRegExpValidator: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QRegExpValidator)
+16 (int (*)(...))QRegExpValidator::metaObject
+24 (int (*)(...))QRegExpValidator::qt_metacast
+32 (int (*)(...))QRegExpValidator::qt_metacall
+40 (int (*)(...))QRegExpValidator::~QRegExpValidator
+48 (int (*)(...))QRegExpValidator::~QRegExpValidator
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QRegExpValidator::validate
+120 (int (*)(...))QValidator::fixup
+
+Class QRegExpValidator
+ size=24 align=8
+ base size=24 base align=8
+QRegExpValidator (0x0x7f0964739a28) 0
+ vptr=((& QRegExpValidator::_ZTV16QRegExpValidator) + 16)
+ QValidator (0x0x7f0964739a90) 0
+ primary-for QRegExpValidator (0x0x7f0964739a28)
+ QObject (0x0x7f09647b4ae0) 0
+ primary-for QValidator (0x0x7f0964739a90)
+
+Class QRegularExpressionValidator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QRegularExpressionValidator::QPrivateSignal (0x0x7f09647b4d20) 0 empty
+
+Vtable for QRegularExpressionValidator
+QRegularExpressionValidator::_ZTV27QRegularExpressionValidator: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QRegularExpressionValidator)
+16 (int (*)(...))QRegularExpressionValidator::metaObject
+24 (int (*)(...))QRegularExpressionValidator::qt_metacast
+32 (int (*)(...))QRegularExpressionValidator::qt_metacall
+40 (int (*)(...))QRegularExpressionValidator::~QRegularExpressionValidator
+48 (int (*)(...))QRegularExpressionValidator::~QRegularExpressionValidator
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QRegularExpressionValidator::validate
+120 (int (*)(...))QValidator::fixup
+
+Class QRegularExpressionValidator
+ size=16 align=8
+ base size=16 base align=8
+QRegularExpressionValidator (0x0x7f0964739af8) 0
+ vptr=((& QRegularExpressionValidator::_ZTV27QRegularExpressionValidator) + 16)
+ QValidator (0x0x7f0964739b60) 0
+ primary-for QRegularExpressionValidator (0x0x7f0964739af8)
+ QObject (0x0x7f09647b4cc0) 0
+ primary-for QValidator (0x0x7f0964739b60)
+
+Class QSizePolicy::Bits
+ size=4 align=4
+ base size=4 base align=4
+QSizePolicy::Bits (0x0x7f09647b4f60) 0
+
+Class QSizePolicy
+ size=4 align=4
+ base size=4 base align=4
+QSizePolicy (0x0x7f09647b4f00) 0
+
+Class QWidgetData
+ size=88 align=8
+ base size=88 base align=8
+QWidgetData (0x0x7f0964862c00) 0
+
+Class QWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QWidget::QPrivateSignal (0x0x7f0964862d20) 0 empty
+
+Vtable for QWidget
+QWidget::_ZTV7QWidget: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QWidget)
+16 (int (*)(...))QWidget::metaObject
+24 (int (*)(...))QWidget::qt_metacast
+32 (int (*)(...))QWidget::qt_metacall
+40 (int (*)(...))QWidget::~QWidget
+48 (int (*)(...))QWidget::~QWidget
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI7QWidget)
+448 (int (*)(...))QWidget::_ZThn16_N7QWidgetD1Ev
+456 (int (*)(...))QWidget::_ZThn16_N7QWidgetD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QWidget
+ size=48 align=8
+ base size=48 base align=8
+QWidget (0x0x7f096f225540) 0
+ vptr=((& QWidget::_ZTV7QWidget) + 16)
+ QObject (0x0x7f0964862c60) 0
+ primary-for QWidget (0x0x7f096f225540)
+ QPaintDevice (0x0x7f0964862cc0) 16
+ vptr=((& QWidget::_ZTV7QWidget) + 448)
+
+Class QAbstractButton::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractButton::QPrivateSignal (0x0x7f09645666c0) 0 empty
+
+Vtable for QAbstractButton
+QAbstractButton::_ZTV15QAbstractButton: 67 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QAbstractButton)
+16 (int (*)(...))QAbstractButton::metaObject
+24 (int (*)(...))QAbstractButton::qt_metacast
+32 (int (*)(...))QAbstractButton::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAbstractButton::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractButton::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractButton::mousePressEvent
+176 (int (*)(...))QAbstractButton::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractButton::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QAbstractButton::keyPressEvent
+216 (int (*)(...))QAbstractButton::keyReleaseEvent
+224 (int (*)(...))QAbstractButton::focusInEvent
+232 (int (*)(...))QAbstractButton::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))__cxa_pure_virtual
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractButton::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QAbstractButton::hitButton
+440 (int (*)(...))QAbstractButton::checkStateSet
+448 (int (*)(...))QAbstractButton::nextCheckState
+456 (int (*)(...))-16
+464 (int (*)(...))(& _ZTI15QAbstractButton)
+472 0
+480 0
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QAbstractButton
+ size=48 align=8
+ base size=48 base align=8
+QAbstractButton (0x0x7f0964866f70) 0
+ vptr=((& QAbstractButton::_ZTV15QAbstractButton) + 16)
+ QWidget (0x0x7f096efd63f0) 0
+ primary-for QAbstractButton (0x0x7f0964866f70)
+ QObject (0x0x7f0964566600) 0
+ primary-for QWidget (0x0x7f096efd63f0)
+ QPaintDevice (0x0x7f0964566660) 16
+ vptr=((& QAbstractButton::_ZTV15QAbstractButton) + 472)
+
+Class QAbstractSpinBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractSpinBox::QPrivateSignal (0x0x7f0964566960) 0 empty
+
+Vtable for QAbstractSpinBox
+QAbstractSpinBox::_ZTV16QAbstractSpinBox: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QAbstractSpinBox)
+16 (int (*)(...))QAbstractSpinBox::metaObject
+24 (int (*)(...))QAbstractSpinBox::qt_metacast
+32 (int (*)(...))QAbstractSpinBox::qt_metacall
+40 (int (*)(...))QAbstractSpinBox::~QAbstractSpinBox
+48 (int (*)(...))QAbstractSpinBox::~QAbstractSpinBox
+56 (int (*)(...))QAbstractSpinBox::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSpinBox::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractSpinBox::sizeHint
+136 (int (*)(...))QAbstractSpinBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractSpinBox::mousePressEvent
+176 (int (*)(...))QAbstractSpinBox::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractSpinBox::mouseMoveEvent
+200 (int (*)(...))QAbstractSpinBox::wheelEvent
+208 (int (*)(...))QAbstractSpinBox::keyPressEvent
+216 (int (*)(...))QAbstractSpinBox::keyReleaseEvent
+224 (int (*)(...))QAbstractSpinBox::focusInEvent
+232 (int (*)(...))QAbstractSpinBox::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QAbstractSpinBox::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractSpinBox::resizeEvent
+280 (int (*)(...))QAbstractSpinBox::closeEvent
+288 (int (*)(...))QAbstractSpinBox::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QAbstractSpinBox::showEvent
+352 (int (*)(...))QAbstractSpinBox::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSpinBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QAbstractSpinBox::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QAbstractSpinBox::validate
+440 (int (*)(...))QAbstractSpinBox::fixup
+448 (int (*)(...))QAbstractSpinBox::stepBy
+456 (int (*)(...))QAbstractSpinBox::clear
+464 (int (*)(...))QAbstractSpinBox::stepEnabled
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI16QAbstractSpinBox)
+488 (int (*)(...))QAbstractSpinBox::_ZThn16_N16QAbstractSpinBoxD1Ev
+496 (int (*)(...))QAbstractSpinBox::_ZThn16_N16QAbstractSpinBoxD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QAbstractSpinBox
+ size=48 align=8
+ base size=48 base align=8
+QAbstractSpinBox (0x0x7f0964590000) 0
+ vptr=((& QAbstractSpinBox::_ZTV16QAbstractSpinBox) + 16)
+ QWidget (0x0x7f096efd6460) 0
+ primary-for QAbstractSpinBox (0x0x7f0964590000)
+ QObject (0x0x7f09645668a0) 0
+ primary-for QWidget (0x0x7f096efd6460)
+ QPaintDevice (0x0x7f0964566900) 16
+ vptr=((& QAbstractSpinBox::_ZTV16QAbstractSpinBox) + 488)
+
+Class QAbstractSlider::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractSlider::QPrivateSignal (0x0x7f09646c7540) 0 empty
+
+Vtable for QAbstractSlider
+QAbstractSlider::_ZTV15QAbstractSlider: 65 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QAbstractSlider)
+16 (int (*)(...))QAbstractSlider::metaObject
+24 (int (*)(...))QAbstractSlider::qt_metacast
+32 (int (*)(...))QAbstractSlider::qt_metacall
+40 (int (*)(...))QAbstractSlider::~QAbstractSlider
+48 (int (*)(...))QAbstractSlider::~QAbstractSlider
+56 (int (*)(...))QAbstractSlider::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSlider::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QAbstractSlider::wheelEvent
+208 (int (*)(...))QAbstractSlider::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSlider::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QAbstractSlider::sliderChange
+440 (int (*)(...))-16
+448 (int (*)(...))(& _ZTI15QAbstractSlider)
+456 (int (*)(...))QAbstractSlider::_ZThn16_N15QAbstractSliderD1Ev
+464 (int (*)(...))QAbstractSlider::_ZThn16_N15QAbstractSliderD0Ev
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QAbstractSlider
+ size=48 align=8
+ base size=48 base align=8
+QAbstractSlider (0x0x7f0964590138) 0
+ vptr=((& QAbstractSlider::_ZTV15QAbstractSlider) + 16)
+ QWidget (0x0x7f096eda2380) 0
+ primary-for QAbstractSlider (0x0x7f0964590138)
+ QObject (0x0x7f09646c7480) 0
+ primary-for QWidget (0x0x7f096eda2380)
+ QPaintDevice (0x0x7f09646c74e0) 16
+ vptr=((& QAbstractSlider::_ZTV15QAbstractSlider) + 456)
+
+Class QSlider::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSlider::QPrivateSignal (0x0x7f09646c77e0) 0 empty
+
+Vtable for QSlider
+QSlider::_ZTV7QSlider: 65 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QSlider)
+16 (int (*)(...))QSlider::metaObject
+24 (int (*)(...))QSlider::qt_metacast
+32 (int (*)(...))QSlider::qt_metacall
+40 (int (*)(...))QSlider::~QSlider
+48 (int (*)(...))QSlider::~QSlider
+56 (int (*)(...))QSlider::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSlider::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QSlider::sizeHint
+136 (int (*)(...))QSlider::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QSlider::mousePressEvent
+176 (int (*)(...))QSlider::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QSlider::mouseMoveEvent
+200 (int (*)(...))QAbstractSlider::wheelEvent
+208 (int (*)(...))QAbstractSlider::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QSlider::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSlider::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QAbstractSlider::sliderChange
+440 (int (*)(...))-16
+448 (int (*)(...))(& _ZTI7QSlider)
+456 (int (*)(...))QSlider::_ZThn16_N7QSliderD1Ev
+464 (int (*)(...))QSlider::_ZThn16_N7QSliderD0Ev
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QSlider
+ size=48 align=8
+ base size=48 base align=8
+QSlider (0x0x7f09645901a0) 0
+ vptr=((& QSlider::_ZTV7QSlider) + 16)
+ QAbstractSlider (0x0x7f0964590208) 0
+ primary-for QSlider (0x0x7f09645901a0)
+ QWidget (0x0x7f096eda2a10) 0
+ primary-for QAbstractSlider (0x0x7f0964590208)
+ QObject (0x0x7f09646c7720) 0
+ primary-for QWidget (0x0x7f096eda2a10)
+ QPaintDevice (0x0x7f09646c7780) 16
+ vptr=((& QSlider::_ZTV7QSlider) + 456)
+
+Class QStyle::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStyle::QPrivateSignal (0x0x7f09646c7ae0) 0 empty
+
+Vtable for QStyle
+QStyle::_ZTV6QStyle: 37 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QStyle)
+16 (int (*)(...))QStyle::metaObject
+24 (int (*)(...))QStyle::qt_metacast
+32 (int (*)(...))QStyle::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QStyle::polish
+120 (int (*)(...))QStyle::unpolish
+128 (int (*)(...))QStyle::polish
+136 (int (*)(...))QStyle::unpolish
+144 (int (*)(...))QStyle::polish
+152 (int (*)(...))QStyle::itemTextRect
+160 (int (*)(...))QStyle::itemPixmapRect
+168 (int (*)(...))QStyle::drawItemText
+176 (int (*)(...))QStyle::drawItemPixmap
+184 (int (*)(...))QStyle::standardPalette
+192 (int (*)(...))__cxa_pure_virtual
+200 (int (*)(...))__cxa_pure_virtual
+208 (int (*)(...))__cxa_pure_virtual
+216 (int (*)(...))__cxa_pure_virtual
+224 (int (*)(...))__cxa_pure_virtual
+232 (int (*)(...))__cxa_pure_virtual
+240 (int (*)(...))__cxa_pure_virtual
+248 (int (*)(...))__cxa_pure_virtual
+256 (int (*)(...))__cxa_pure_virtual
+264 (int (*)(...))__cxa_pure_virtual
+272 (int (*)(...))__cxa_pure_virtual
+280 (int (*)(...))__cxa_pure_virtual
+288 (int (*)(...))__cxa_pure_virtual
+
+Class QStyle
+ size=16 align=8
+ base size=16 base align=8
+QStyle (0x0x7f09645902d8) 0
+ vptr=((& QStyle::_ZTV6QStyle) + 16)
+ QObject (0x0x7f09646c7a80) 0
+ primary-for QStyle (0x0x7f09645902d8)
+
+Class QTabBar::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTabBar::QPrivateSignal (0x0x7f096fd873c0) 0 empty
+
+Vtable for QTabBar
+QTabBar::_ZTV7QTabBar: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QTabBar)
+16 (int (*)(...))QTabBar::metaObject
+24 (int (*)(...))QTabBar::qt_metacast
+32 (int (*)(...))QTabBar::qt_metacall
+40 (int (*)(...))QTabBar::~QTabBar
+48 (int (*)(...))QTabBar::~QTabBar
+56 (int (*)(...))QTabBar::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QTabBar::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QTabBar::sizeHint
+136 (int (*)(...))QTabBar::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QTabBar::mousePressEvent
+176 (int (*)(...))QTabBar::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QTabBar::mouseMoveEvent
+200 (int (*)(...))QTabBar::wheelEvent
+208 (int (*)(...))QTabBar::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QTabBar::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QTabBar::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QTabBar::showEvent
+352 (int (*)(...))QTabBar::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QTabBar::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QTabBar::tabSizeHint
+440 (int (*)(...))QTabBar::minimumTabSizeHint
+448 (int (*)(...))QTabBar::tabInserted
+456 (int (*)(...))QTabBar::tabRemoved
+464 (int (*)(...))QTabBar::tabLayoutChange
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI7QTabBar)
+488 (int (*)(...))QTabBar::_ZThn16_N7QTabBarD1Ev
+496 (int (*)(...))QTabBar::_ZThn16_N7QTabBarD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QTabBar
+ size=48 align=8
+ base size=48 base align=8
+QTabBar (0x0x7f09645904e0) 0
+ vptr=((& QTabBar::_ZTV7QTabBar) + 16)
+ QWidget (0x0x7f096e6809a0) 0
+ primary-for QTabBar (0x0x7f09645904e0)
+ QObject (0x0x7f096fd87300) 0
+ primary-for QWidget (0x0x7f096e6809a0)
+ QPaintDevice (0x0x7f096fd87360) 16
+ vptr=((& QTabBar::_ZTV7QTabBar) + 488)
+
+Class QTabWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTabWidget::QPrivateSignal (0x0x7f096fd87720) 0 empty
+
+Vtable for QTabWidget
+QTabWidget::_ZTV10QTabWidget: 66 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTabWidget)
+16 (int (*)(...))QTabWidget::metaObject
+24 (int (*)(...))QTabWidget::qt_metacast
+32 (int (*)(...))QTabWidget::qt_metacall
+40 (int (*)(...))QTabWidget::~QTabWidget
+48 (int (*)(...))QTabWidget::~QTabWidget
+56 (int (*)(...))QTabWidget::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QTabWidget::sizeHint
+136 (int (*)(...))QTabWidget::minimumSizeHint
+144 (int (*)(...))QTabWidget::heightForWidth
+152 (int (*)(...))QTabWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QTabWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QTabWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QTabWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QTabWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QTabWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QTabWidget::tabInserted
+440 (int (*)(...))QTabWidget::tabRemoved
+448 (int (*)(...))-16
+456 (int (*)(...))(& _ZTI10QTabWidget)
+464 (int (*)(...))QTabWidget::_ZThn16_N10QTabWidgetD1Ev
+472 (int (*)(...))QTabWidget::_ZThn16_N10QTabWidgetD0Ev
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QTabWidget
+ size=48 align=8
+ base size=48 base align=8
+QTabWidget (0x0x7f0964590548) 0
+ vptr=((& QTabWidget::_ZTV10QTabWidget) + 16)
+ QWidget (0x0x7f096e6c5690) 0
+ primary-for QTabWidget (0x0x7f0964590548)
+ QObject (0x0x7f096fd87660) 0
+ primary-for QWidget (0x0x7f096e6c5690)
+ QPaintDevice (0x0x7f096fd876c0) 16
+ vptr=((& QTabWidget::_ZTV10QTabWidget) + 464)
+
+Class QRubberBand::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QRubberBand::QPrivateSignal (0x0x7f096fd87b40) 0 empty
+
+Vtable for QRubberBand
+QRubberBand::_ZTV11QRubberBand: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QRubberBand)
+16 (int (*)(...))QRubberBand::metaObject
+24 (int (*)(...))QRubberBand::qt_metacast
+32 (int (*)(...))QRubberBand::qt_metacall
+40 (int (*)(...))QRubberBand::~QRubberBand
+48 (int (*)(...))QRubberBand::~QRubberBand
+56 (int (*)(...))QRubberBand::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QRubberBand::paintEvent
+264 (int (*)(...))QRubberBand::moveEvent
+272 (int (*)(...))QRubberBand::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QRubberBand::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QRubberBand::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI11QRubberBand)
+448 (int (*)(...))QRubberBand::_ZThn16_N11QRubberBandD1Ev
+456 (int (*)(...))QRubberBand::_ZThn16_N11QRubberBandD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QRubberBand
+ size=48 align=8
+ base size=48 base align=8
+QRubberBand (0x0x7f09645905b0) 0
+ vptr=((& QRubberBand::_ZTV11QRubberBand) + 16)
+ QWidget (0x0x7f096e6c5d20) 0
+ primary-for QRubberBand (0x0x7f09645905b0)
+ QObject (0x0x7f096fd87a80) 0
+ primary-for QWidget (0x0x7f096e6c5d20)
+ QPaintDevice (0x0x7f096fd87ae0) 16
+ vptr=((& QRubberBand::_ZTV11QRubberBand) + 448)
+
+Class QFrame::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFrame::QPrivateSignal (0x0x7f096e4e3000) 0 empty
+
+Vtable for QFrame
+QFrame::_ZTV6QFrame: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QFrame)
+16 (int (*)(...))QFrame::metaObject
+24 (int (*)(...))QFrame::qt_metacast
+32 (int (*)(...))QFrame::qt_metacall
+40 (int (*)(...))QFrame::~QFrame
+48 (int (*)(...))QFrame::~QFrame
+56 (int (*)(...))QFrame::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QFrame::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QFrame::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI6QFrame)
+448 (int (*)(...))QFrame::_ZThn16_N6QFrameD1Ev
+456 (int (*)(...))QFrame::_ZThn16_N6QFrameD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QFrame
+ size=48 align=8
+ base size=48 base align=8
+QFrame (0x0x7f0964590618) 0
+ vptr=((& QFrame::_ZTV6QFrame) + 16)
+ QWidget (0x0x7f096e730150) 0
+ primary-for QFrame (0x0x7f0964590618)
+ QObject (0x0x7f096fd87f00) 0
+ primary-for QWidget (0x0x7f096e730150)
+ QPaintDevice (0x0x7f096fd87f60) 16
+ vptr=((& QFrame::_ZTV6QFrame) + 448)
+
+Class QStyleOption
+ size=64 align=8
+ base size=64 base align=8
+QStyleOption (0x0x7f096e4e3360) 0
+
+Class QStyleOptionFocusRect
+ size=80 align=8
+ base size=80 base align=8
+QStyleOptionFocusRect (0x0x7f0964590680) 0
+ QStyleOption (0x0x7f096e4e3420) 0
+
+Class QStyleOptionFrame
+ size=80 align=8
+ base size=80 base align=8
+QStyleOptionFrame (0x0x7f09645906e8) 0
+ QStyleOption (0x0x7f096e4e3660) 0
+
+Class QStyleOptionTabWidgetFrame
+ size=136 align=8
+ base size=132 base align=8
+QStyleOptionTabWidgetFrame (0x0x7f0964590820) 0
+ QStyleOption (0x0x7f096e4e3f60) 0
+
+Class QStyleOptionTabBarBase
+ size=104 align=8
+ base size=101 base align=8
+QStyleOptionTabBarBase (0x0x7f0964590888) 0
+ QStyleOption (0x0x7f096c8351e0) 0
+
+Class QStyleOptionHeader
+ size=120 align=8
+ base size=116 base align=8
+QStyleOptionHeader (0x0x7f09645908f0) 0
+ QStyleOption (0x0x7f096c835480) 0
+
+Class QStyleOptionButton
+ size=96 align=8
+ base size=96 base align=8
+QStyleOptionButton (0x0x7f0964590958) 0
+ QStyleOption (0x0x7f096c8356c0) 0
+
+Class QStyleOptionTab
+ size=136 align=8
+ base size=136 base align=8
+QStyleOptionTab (0x0x7f0964590a90) 0
+ QStyleOption (0x0x7f096bee2000) 0
+
+Class QStyleOptionToolBar
+ size=88 align=8
+ base size=88 base align=8
+QStyleOptionToolBar (0x0x7f0964590c98) 0
+ QStyleOption (0x0x7f096bee2a80) 0
+
+Class QStyleOptionProgressBar
+ size=104 align=8
+ base size=102 base align=8
+QStyleOptionProgressBar (0x0x7f0964590dd0) 0
+ QStyleOption (0x0x7f096b3f23c0) 0
+
+Class QStyleOptionMenuItem
+ size=136 align=8
+ base size=136 base align=8
+QStyleOptionMenuItem (0x0x7f0964590e38) 0
+ QStyleOption (0x0x7f096b3f2600) 0
+
+Class QStyleOptionDockWidget
+ size=80 align=8
+ base size=76 base align=8
+QStyleOptionDockWidget (0x0x7f0964590ea0) 0
+ QStyleOption (0x0x7f096b3f2840) 0
+
+Class QStyleOptionViewItem
+ size=192 align=8
+ base size=192 base align=8
+QStyleOptionViewItem (0x0x7f0964590f70) 0
+ QStyleOption (0x0x7f096b3f2a80) 0
+
+Class QStyleOptionToolBox
+ size=88 align=8
+ base size=88 base align=8
+QStyleOptionToolBox (0x0x7f096adc50d0) 0
+ QStyleOption (0x0x7f096ac4a3c0) 0
+
+Class QStyleOptionRubberBand
+ size=72 align=8
+ base size=69 base align=8
+QStyleOptionRubberBand (0x0x7f096adc5138) 0
+ QStyleOption (0x0x7f096ac4a600) 0
+
+Class QStyleOptionComplex
+ size=72 align=8
+ base size=72 base align=8
+QStyleOptionComplex (0x0x7f096adc51a0) 0
+ QStyleOption (0x0x7f096ac4a840) 0
+
+Class QStyleOptionSlider
+ size=128 align=8
+ base size=121 base align=8
+QStyleOptionSlider (0x0x7f096adc5208) 0
+ QStyleOptionComplex (0x0x7f096adc5270) 0
+ QStyleOption (0x0x7f096ac4aa80) 0
+
+Class QStyleOptionSpinBox
+ size=88 align=8
+ base size=81 base align=8
+QStyleOptionSpinBox (0x0x7f096adc52d8) 0
+ QStyleOptionComplex (0x0x7f096adc5340) 0
+ QStyleOption (0x0x7f096ac4ae40) 0
+
+Class QStyleOptionToolButton
+ size=136 align=8
+ base size=136 base align=8
+QStyleOptionToolButton (0x0x7f096adc53a8) 0
+ QStyleOptionComplex (0x0x7f096adc5410) 0
+ QStyleOption (0x0x7f096a3c30c0) 0
+
+Class QStyleOptionComboBox
+ size=120 align=8
+ base size=120 base align=8
+QStyleOptionComboBox (0x0x7f096adc5548) 0
+ QStyleOptionComplex (0x0x7f096adc55b0) 0
+ QStyleOption (0x0x7f096a3c39c0) 0
+
+Class QStyleOptionTitleBar
+ size=96 align=8
+ base size=96 base align=8
+QStyleOptionTitleBar (0x0x7f096adc5618) 0
+ QStyleOptionComplex (0x0x7f096adc5680) 0
+ QStyleOption (0x0x7f096a3c3c00) 0
+
+Class QStyleOptionGroupBox
+ size=120 align=8
+ base size=116 base align=8
+QStyleOptionGroupBox (0x0x7f096adc56e8) 0
+ QStyleOptionComplex (0x0x7f096adc5750) 0
+ QStyleOption (0x0x7f096a3c3ea0) 0
+
+Class QStyleOptionSizeGrip
+ size=80 align=8
+ base size=76 base align=8
+QStyleOptionSizeGrip (0x0x7f096adc57b8) 0
+ QStyleOptionComplex (0x0x7f096adc5820) 0
+ QStyleOption (0x0x7f096a0b2120) 0
+
+Class QStyleOptionGraphicsItem
+ size=152 align=8
+ base size=152 base align=8
+QStyleOptionGraphicsItem (0x0x7f096adc5888) 0
+ QStyleOption (0x0x7f096a0b2360) 0
+
+Class QStyleHintReturn
+ size=8 align=4
+ base size=8 base align=4
+QStyleHintReturn (0x0x7f096a0b2ae0) 0
+
+Class QStyleHintReturnMask
+ size=16 align=8
+ base size=16 base align=8
+QStyleHintReturnMask (0x0x7f096adc5e38) 0
+ QStyleHintReturn (0x0x7f096a0b2b40) 0
+
+Class QStyleHintReturnVariant
+ size=24 align=8
+ base size=24 base align=8
+QStyleHintReturnVariant (0x0x7f096adc5ea0) 0
+ QStyleHintReturn (0x0x7f096a0b2ba0) 0
+
+Class QAbstractItemDelegate::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractItemDelegate::QPrivateSignal (0x0x7f09698fb1e0) 0 empty
+
+Vtable for QAbstractItemDelegate
+QAbstractItemDelegate::_ZTV21QAbstractItemDelegate: 24 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QAbstractItemDelegate)
+16 (int (*)(...))QAbstractItemDelegate::metaObject
+24 (int (*)(...))QAbstractItemDelegate::qt_metacast
+32 (int (*)(...))QAbstractItemDelegate::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractItemDelegate::createEditor
+136 (int (*)(...))QAbstractItemDelegate::destroyEditor
+144 (int (*)(...))QAbstractItemDelegate::setEditorData
+152 (int (*)(...))QAbstractItemDelegate::setModelData
+160 (int (*)(...))QAbstractItemDelegate::updateEditorGeometry
+168 (int (*)(...))QAbstractItemDelegate::editorEvent
+176 (int (*)(...))QAbstractItemDelegate::helpEvent
+184 (int (*)(...))QAbstractItemDelegate::paintingRoles
+
+Class QAbstractItemDelegate
+ size=16 align=8
+ base size=16 base align=8
+QAbstractItemDelegate (0x0x7f09698e1410) 0
+ vptr=((& QAbstractItemDelegate::_ZTV21QAbstractItemDelegate) + 16)
+ QObject (0x0x7f09698fb180) 0
+ primary-for QAbstractItemDelegate (0x0x7f09698e1410)
+
+Class QAbstractScrollArea::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractScrollArea::QPrivateSignal (0x0x7f09698fb4e0) 0 empty
+
+Vtable for QAbstractScrollArea
+QAbstractScrollArea::_ZTV19QAbstractScrollArea: 68 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractScrollArea)
+16 (int (*)(...))QAbstractScrollArea::metaObject
+24 (int (*)(...))QAbstractScrollArea::qt_metacast
+32 (int (*)(...))QAbstractScrollArea::qt_metacall
+40 (int (*)(...))QAbstractScrollArea::~QAbstractScrollArea
+48 (int (*)(...))QAbstractScrollArea::~QAbstractScrollArea
+56 (int (*)(...))QAbstractScrollArea::event
+64 (int (*)(...))QAbstractScrollArea::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractScrollArea::mousePressEvent
+176 (int (*)(...))QAbstractScrollArea::mouseReleaseEvent
+184 (int (*)(...))QAbstractScrollArea::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractScrollArea::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QAbstractScrollArea::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QAbstractScrollArea::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractScrollArea::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractScrollArea::dragEnterEvent
+320 (int (*)(...))QAbstractScrollArea::dragMoveEvent
+328 (int (*)(...))QAbstractScrollArea::dragLeaveEvent
+336 (int (*)(...))QAbstractScrollArea::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractScrollArea::viewportEvent
+448 (int (*)(...))QAbstractScrollArea::scrollContentsBy
+456 (int (*)(...))QAbstractScrollArea::viewportSizeHint
+464 (int (*)(...))-16
+472 (int (*)(...))(& _ZTI19QAbstractScrollArea)
+480 (int (*)(...))QAbstractScrollArea::_ZThn16_N19QAbstractScrollAreaD1Ev
+488 (int (*)(...))QAbstractScrollArea::_ZThn16_N19QAbstractScrollAreaD0Ev
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QAbstractScrollArea
+ size=48 align=8
+ base size=48 base align=8
+QAbstractScrollArea (0x0x7f09698e1478) 0
+ vptr=((& QAbstractScrollArea::_ZTV19QAbstractScrollArea) + 16)
+ QFrame (0x0x7f09698e14e0) 0
+ primary-for QAbstractScrollArea (0x0x7f09698e1478)
+ QWidget (0x0x7f096deefa10) 0
+ primary-for QFrame (0x0x7f09698e14e0)
+ QObject (0x0x7f09698fb420) 0
+ primary-for QWidget (0x0x7f096deefa10)
+ QPaintDevice (0x0x7f09698fb480) 16
+ vptr=((& QAbstractScrollArea::_ZTV19QAbstractScrollArea) + 480)
+
+Class QAbstractItemView::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractItemView::QPrivateSignal (0x0x7f09698fb840) 0 empty
+
+Vtable for QAbstractItemView
+QAbstractItemView::_ZTV17QAbstractItemView: 106 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAbstractItemView)
+16 (int (*)(...))QAbstractItemView::metaObject
+24 (int (*)(...))QAbstractItemView::qt_metacast
+32 (int (*)(...))QAbstractItemView::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAbstractItemView::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QAbstractItemView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractItemView::mousePressEvent
+176 (int (*)(...))QAbstractItemView::mouseReleaseEvent
+184 (int (*)(...))QAbstractItemView::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractItemView::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QAbstractItemView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QAbstractScrollArea::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractItemView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QAbstractItemView::dragMoveEvent
+328 (int (*)(...))QAbstractItemView::dragLeaveEvent
+336 (int (*)(...))QAbstractItemView::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractItemView::viewportEvent
+448 (int (*)(...))QAbstractScrollArea::scrollContentsBy
+456 (int (*)(...))QAbstractItemView::viewportSizeHint
+464 (int (*)(...))QAbstractItemView::setModel
+472 (int (*)(...))QAbstractItemView::setSelectionModel
+480 (int (*)(...))QAbstractItemView::keyboardSearch
+488 (int (*)(...))__cxa_pure_virtual
+496 (int (*)(...))__cxa_pure_virtual
+504 (int (*)(...))__cxa_pure_virtual
+512 (int (*)(...))QAbstractItemView::sizeHintForRow
+520 (int (*)(...))QAbstractItemView::sizeHintForColumn
+528 (int (*)(...))QAbstractItemView::reset
+536 (int (*)(...))QAbstractItemView::setRootIndex
+544 (int (*)(...))QAbstractItemView::doItemsLayout
+552 (int (*)(...))QAbstractItemView::selectAll
+560 (int (*)(...))QAbstractItemView::dataChanged
+568 (int (*)(...))QAbstractItemView::rowsInserted
+576 (int (*)(...))QAbstractItemView::rowsAboutToBeRemoved
+584 (int (*)(...))QAbstractItemView::selectionChanged
+592 (int (*)(...))QAbstractItemView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QAbstractItemView::updateGeometries
+624 (int (*)(...))QAbstractItemView::verticalScrollbarAction
+632 (int (*)(...))QAbstractItemView::horizontalScrollbarAction
+640 (int (*)(...))QAbstractItemView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))__cxa_pure_virtual
+688 (int (*)(...))__cxa_pure_virtual
+696 (int (*)(...))__cxa_pure_virtual
+704 (int (*)(...))__cxa_pure_virtual
+712 (int (*)(...))__cxa_pure_virtual
+720 (int (*)(...))__cxa_pure_virtual
+728 (int (*)(...))QAbstractItemView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QAbstractItemView::startDrag
+760 (int (*)(...))QAbstractItemView::viewOptions
+768 (int (*)(...))-16
+776 (int (*)(...))(& _ZTI17QAbstractItemView)
+784 0
+792 0
+800 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+808 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+816 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+824 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+832 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+840 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QAbstractItemView
+ size=48 align=8
+ base size=48 base align=8
+QAbstractItemView (0x0x7f09698e1548) 0
+ vptr=((& QAbstractItemView::_ZTV17QAbstractItemView) + 16)
+ QAbstractScrollArea (0x0x7f09698e15b0) 0
+ primary-for QAbstractItemView (0x0x7f09698e1548)
+ QFrame (0x0x7f09698e1618) 0
+ primary-for QAbstractScrollArea (0x0x7f09698e15b0)
+ QWidget (0x0x7f096deefc40) 0
+ primary-for QFrame (0x0x7f09698e1618)
+ QObject (0x0x7f09698fb780) 0
+ primary-for QWidget (0x0x7f096deefc40)
+ QPaintDevice (0x0x7f09698fb7e0) 16
+ vptr=((& QAbstractItemView::_ZTV17QAbstractItemView) + 784)
+
+Vtable for QAccessibleWidget
+QAccessibleWidget::_ZTV17QAccessibleWidget: 35 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAccessibleWidget)
+16 (int (*)(...))QAccessibleWidget::~QAccessibleWidget
+24 (int (*)(...))QAccessibleWidget::~QAccessibleWidget
+32 (int (*)(...))QAccessibleWidget::isValid
+40 (int (*)(...))QAccessibleObject::object
+48 (int (*)(...))QAccessibleWidget::window
+56 (int (*)(...))QAccessibleWidget::relations
+64 (int (*)(...))QAccessibleWidget::focusChild
+72 (int (*)(...))QAccessibleObject::childAt
+80 (int (*)(...))QAccessibleWidget::parent
+88 (int (*)(...))QAccessibleWidget::child
+96 (int (*)(...))QAccessibleWidget::childCount
+104 (int (*)(...))QAccessibleWidget::indexOfChild
+112 (int (*)(...))QAccessibleWidget::text
+120 (int (*)(...))QAccessibleObject::setText
+128 (int (*)(...))QAccessibleWidget::rect
+136 (int (*)(...))QAccessibleWidget::role
+144 (int (*)(...))QAccessibleWidget::state
+152 (int (*)(...))QAccessibleWidget::foregroundColor
+160 (int (*)(...))QAccessibleWidget::backgroundColor
+168 (int (*)(...))QAccessibleInterface::virtual_hook
+176 (int (*)(...))QAccessibleWidget::interface_cast
+184 (int (*)(...))QAccessibleWidget::actionNames
+192 (int (*)(...))QAccessibleWidget::doAction
+200 (int (*)(...))QAccessibleWidget::keyBindingsForAction
+208 (int (*)(...))-16
+216 (int (*)(...))(& _ZTI17QAccessibleWidget)
+224 (int (*)(...))QAccessibleWidget::_ZThn16_N17QAccessibleWidgetD1Ev
+232 (int (*)(...))QAccessibleWidget::_ZThn16_N17QAccessibleWidgetD0Ev
+240 (int (*)(...))QAccessibleWidget::_ZThn16_NK17QAccessibleWidget11actionNamesEv
+248 (int (*)(...))QAccessibleActionInterface::localizedActionName
+256 (int (*)(...))QAccessibleActionInterface::localizedActionDescription
+264 (int (*)(...))QAccessibleWidget::_ZThn16_N17QAccessibleWidget8doActionERK7QString
+272 (int (*)(...))QAccessibleWidget::_ZThn16_NK17QAccessibleWidget20keyBindingsForActionERK7QString
+
+Class QAccessibleWidget
+ size=32 align=8
+ base size=32 base align=8
+QAccessibleWidget (0x0x7f096db8dd90) 0
+ vptr=((& QAccessibleWidget::_ZTV17QAccessibleWidget) + 16)
+ QAccessibleObject (0x0x7f09698e1750) 0
+ primary-for QAccessibleWidget (0x0x7f096db8dd90)
+ QAccessibleInterface (0x0x7f09680f95a0) 0 nearly-empty
+ primary-for QAccessibleObject (0x0x7f09698e1750)
+ QAccessibleActionInterface (0x0x7f09680f9600) 16 nearly-empty
+ vptr=((& QAccessibleWidget::_ZTV17QAccessibleWidget) + 224)
+
+Class QAction::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAction::QPrivateSignal (0x0x7f09680f9720) 0 empty
+
+Vtable for QAction
+QAction::_ZTV7QAction: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QAction)
+16 (int (*)(...))QAction::metaObject
+24 (int (*)(...))QAction::qt_metacast
+32 (int (*)(...))QAction::qt_metacall
+40 (int (*)(...))QAction::~QAction
+48 (int (*)(...))QAction::~QAction
+56 (int (*)(...))QAction::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QAction
+ size=16 align=8
+ base size=16 base align=8
+QAction (0x0x7f09698e17b8) 0
+ vptr=((& QAction::_ZTV7QAction) + 16)
+ QObject (0x0x7f09680f96c0) 0
+ primary-for QAction (0x0x7f09698e17b8)
+
+Class QActionGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QActionGroup::QPrivateSignal (0x0x7f09680f9c00) 0 empty
+
+Vtable for QActionGroup
+QActionGroup::_ZTV12QActionGroup: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QActionGroup)
+16 (int (*)(...))QActionGroup::metaObject
+24 (int (*)(...))QActionGroup::qt_metacast
+32 (int (*)(...))QActionGroup::qt_metacall
+40 (int (*)(...))QActionGroup::~QActionGroup
+48 (int (*)(...))QActionGroup::~QActionGroup
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QActionGroup
+ size=16 align=8
+ base size=16 base align=8
+QActionGroup (0x0x7f09698e1820) 0
+ vptr=((& QActionGroup::_ZTV12QActionGroup) + 16)
+ QObject (0x0x7f09680f9ba0) 0
+ primary-for QActionGroup (0x0x7f09698e1820)
+
+Class QApplication::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QApplication::QPrivateSignal (0x0x7f09680f9f60) 0 empty
+
+Vtable for QApplication
+QApplication::_ZTV12QApplication: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QApplication)
+16 (int (*)(...))QApplication::metaObject
+24 (int (*)(...))QApplication::qt_metacast
+32 (int (*)(...))QApplication::qt_metacall
+40 (int (*)(...))QApplication::~QApplication
+48 (int (*)(...))QApplication::~QApplication
+56 (int (*)(...))QApplication::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QApplication::notify
+120 (int (*)(...))QApplication::compressEvent
+
+Class QApplication
+ size=16 align=8
+ base size=16 base align=8
+QApplication (0x0x7f09698e1888) 0
+ vptr=((& QApplication::_ZTV12QApplication) + 16)
+ QGuiApplication (0x0x7f09698e18f0) 0
+ primary-for QApplication (0x0x7f09698e1888)
+ QCoreApplication (0x0x7f09698e1958) 0
+ primary-for QGuiApplication (0x0x7f09698e18f0)
+ QObject (0x0x7f09680f9f00) 0
+ primary-for QCoreApplication (0x0x7f09698e1958)
+
+Vtable for QLayoutItem
+QLayoutItem::_ZTV11QLayoutItem: 19 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QLayoutItem)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))QLayoutItem::hasHeightForWidth
+96 (int (*)(...))QLayoutItem::heightForWidth
+104 (int (*)(...))QLayoutItem::minimumHeightForWidth
+112 (int (*)(...))QLayoutItem::invalidate
+120 (int (*)(...))QLayoutItem::widget
+128 (int (*)(...))QLayoutItem::layout
+136 (int (*)(...))QLayoutItem::spacerItem
+144 (int (*)(...))QLayoutItem::controlTypes
+
+Class QLayoutItem
+ size=16 align=8
+ base size=12 base align=8
+QLayoutItem (0x0x7f0967767240) 0
+ vptr=((& QLayoutItem::_ZTV11QLayoutItem) + 16)
+
+Vtable for QSpacerItem
+QSpacerItem::_ZTV11QSpacerItem: 19 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QSpacerItem)
+16 (int (*)(...))QSpacerItem::~QSpacerItem
+24 (int (*)(...))QSpacerItem::~QSpacerItem
+32 (int (*)(...))QSpacerItem::sizeHint
+40 (int (*)(...))QSpacerItem::minimumSize
+48 (int (*)(...))QSpacerItem::maximumSize
+56 (int (*)(...))QSpacerItem::expandingDirections
+64 (int (*)(...))QSpacerItem::setGeometry
+72 (int (*)(...))QSpacerItem::geometry
+80 (int (*)(...))QSpacerItem::isEmpty
+88 (int (*)(...))QLayoutItem::hasHeightForWidth
+96 (int (*)(...))QLayoutItem::heightForWidth
+104 (int (*)(...))QLayoutItem::minimumHeightForWidth
+112 (int (*)(...))QLayoutItem::invalidate
+120 (int (*)(...))QLayoutItem::widget
+128 (int (*)(...))QLayoutItem::layout
+136 (int (*)(...))QSpacerItem::spacerItem
+144 (int (*)(...))QLayoutItem::controlTypes
+
+Class QSpacerItem
+ size=40 align=8
+ base size=40 base align=8
+QSpacerItem (0x0x7f09698e19c0) 0
+ vptr=((& QSpacerItem::_ZTV11QSpacerItem) + 16)
+ QLayoutItem (0x0x7f0967767660) 0
+ primary-for QSpacerItem (0x0x7f09698e19c0)
+
+Vtable for QWidgetItem
+QWidgetItem::_ZTV11QWidgetItem: 19 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QWidgetItem)
+16 (int (*)(...))QWidgetItem::~QWidgetItem
+24 (int (*)(...))QWidgetItem::~QWidgetItem
+32 (int (*)(...))QWidgetItem::sizeHint
+40 (int (*)(...))QWidgetItem::minimumSize
+48 (int (*)(...))QWidgetItem::maximumSize
+56 (int (*)(...))QWidgetItem::expandingDirections
+64 (int (*)(...))QWidgetItem::setGeometry
+72 (int (*)(...))QWidgetItem::geometry
+80 (int (*)(...))QWidgetItem::isEmpty
+88 (int (*)(...))QWidgetItem::hasHeightForWidth
+96 (int (*)(...))QWidgetItem::heightForWidth
+104 (int (*)(...))QLayoutItem::minimumHeightForWidth
+112 (int (*)(...))QLayoutItem::invalidate
+120 (int (*)(...))QWidgetItem::widget
+128 (int (*)(...))QLayoutItem::layout
+136 (int (*)(...))QLayoutItem::spacerItem
+144 (int (*)(...))QWidgetItem::controlTypes
+
+Class QWidgetItem
+ size=24 align=8
+ base size=24 base align=8
+QWidgetItem (0x0x7f09698e1a28) 0
+ vptr=((& QWidgetItem::_ZTV11QWidgetItem) + 16)
+ QLayoutItem (0x0x7f09677678a0) 0
+ primary-for QWidgetItem (0x0x7f09698e1a28)
+
+Vtable for QWidgetItemV2
+QWidgetItemV2::_ZTV13QWidgetItemV2: 19 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QWidgetItemV2)
+16 (int (*)(...))QWidgetItemV2::~QWidgetItemV2
+24 (int (*)(...))QWidgetItemV2::~QWidgetItemV2
+32 (int (*)(...))QWidgetItemV2::sizeHint
+40 (int (*)(...))QWidgetItemV2::minimumSize
+48 (int (*)(...))QWidgetItemV2::maximumSize
+56 (int (*)(...))QWidgetItem::expandingDirections
+64 (int (*)(...))QWidgetItem::setGeometry
+72 (int (*)(...))QWidgetItem::geometry
+80 (int (*)(...))QWidgetItem::isEmpty
+88 (int (*)(...))QWidgetItem::hasHeightForWidth
+96 (int (*)(...))QWidgetItemV2::heightForWidth
+104 (int (*)(...))QLayoutItem::minimumHeightForWidth
+112 (int (*)(...))QLayoutItem::invalidate
+120 (int (*)(...))QWidgetItem::widget
+128 (int (*)(...))QLayoutItem::layout
+136 (int (*)(...))QLayoutItem::spacerItem
+144 (int (*)(...))QWidgetItem::controlTypes
+
+Class QWidgetItemV2
+ size=88 align=8
+ base size=88 base align=8
+QWidgetItemV2 (0x0x7f09698e1a90) 0
+ vptr=((& QWidgetItemV2::_ZTV13QWidgetItemV2) + 16)
+ QWidgetItem (0x0x7f09698e1af8) 0
+ primary-for QWidgetItemV2 (0x0x7f09698e1a90)
+ QLayoutItem (0x0x7f0967767a80) 0
+ primary-for QWidgetItem (0x0x7f09698e1af8)
+
+Class QLayout::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLayout::QPrivateSignal (0x0x7f0967767c00) 0 empty
+
+Vtable for QLayout
+QLayout::_ZTV7QLayout: 47 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QLayout)
+16 (int (*)(...))QLayout::metaObject
+24 (int (*)(...))QLayout::qt_metacast
+32 (int (*)(...))QLayout::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QLayout::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QLayout::invalidate
+120 (int (*)(...))QLayout::geometry
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))QLayout::expandingDirections
+144 (int (*)(...))QLayout::minimumSize
+152 (int (*)(...))QLayout::maximumSize
+160 (int (*)(...))QLayout::setGeometry
+168 (int (*)(...))__cxa_pure_virtual
+176 (int (*)(...))__cxa_pure_virtual
+184 (int (*)(...))QLayout::indexOf
+192 (int (*)(...))__cxa_pure_virtual
+200 (int (*)(...))QLayout::isEmpty
+208 (int (*)(...))QLayout::controlTypes
+216 (int (*)(...))QLayout::layout
+224 (int (*)(...))-16
+232 (int (*)(...))(& _ZTI7QLayout)
+240 0
+248 0
+256 (int (*)(...))__cxa_pure_virtual
+264 (int (*)(...))QLayout::_ZThn16_NK7QLayout11minimumSizeEv
+272 (int (*)(...))QLayout::_ZThn16_NK7QLayout11maximumSizeEv
+280 (int (*)(...))QLayout::_ZThn16_NK7QLayout19expandingDirectionsEv
+288 (int (*)(...))QLayout::_ZThn16_N7QLayout11setGeometryERK5QRect
+296 (int (*)(...))QLayout::_ZThn16_NK7QLayout8geometryEv
+304 (int (*)(...))QLayout::_ZThn16_NK7QLayout7isEmptyEv
+312 (int (*)(...))QLayoutItem::hasHeightForWidth
+320 (int (*)(...))QLayoutItem::heightForWidth
+328 (int (*)(...))QLayoutItem::minimumHeightForWidth
+336 (int (*)(...))QLayout::_ZThn16_N7QLayout10invalidateEv
+344 (int (*)(...))QLayoutItem::widget
+352 (int (*)(...))QLayout::_ZThn16_N7QLayout6layoutEv
+360 (int (*)(...))QLayoutItem::spacerItem
+368 (int (*)(...))QLayout::_ZThn16_NK7QLayout12controlTypesEv
+
+Class QLayout
+ size=32 align=8
+ base size=28 base align=8
+QLayout (0x0x7f096dc34310) 0
+ vptr=((& QLayout::_ZTV7QLayout) + 16)
+ QObject (0x0x7f0967767b40) 0
+ primary-for QLayout (0x0x7f096dc34310)
+ QLayoutItem (0x0x7f0967767ba0) 16
+ vptr=((& QLayout::_ZTV7QLayout) + 240)
+
+Class QGridLayout::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGridLayout::QPrivateSignal (0x0x7f0966d3d180) 0 empty
+
+Vtable for QGridLayout
+QGridLayout::_ZTV11QGridLayout: 51 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QGridLayout)
+16 (int (*)(...))QGridLayout::metaObject
+24 (int (*)(...))QGridLayout::qt_metacast
+32 (int (*)(...))QGridLayout::qt_metacall
+40 (int (*)(...))QGridLayout::~QGridLayout
+48 (int (*)(...))QGridLayout::~QGridLayout
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QLayout::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGridLayout::invalidate
+120 (int (*)(...))QLayout::geometry
+128 (int (*)(...))QGridLayout::addItem
+136 (int (*)(...))QGridLayout::expandingDirections
+144 (int (*)(...))QGridLayout::minimumSize
+152 (int (*)(...))QGridLayout::maximumSize
+160 (int (*)(...))QGridLayout::setGeometry
+168 (int (*)(...))QGridLayout::itemAt
+176 (int (*)(...))QGridLayout::takeAt
+184 (int (*)(...))QLayout::indexOf
+192 (int (*)(...))QGridLayout::count
+200 (int (*)(...))QLayout::isEmpty
+208 (int (*)(...))QLayout::controlTypes
+216 (int (*)(...))QLayout::layout
+224 (int (*)(...))QGridLayout::sizeHint
+232 (int (*)(...))QGridLayout::hasHeightForWidth
+240 (int (*)(...))QGridLayout::heightForWidth
+248 (int (*)(...))QGridLayout::minimumHeightForWidth
+256 (int (*)(...))-16
+264 (int (*)(...))(& _ZTI11QGridLayout)
+272 (int (*)(...))QGridLayout::_ZThn16_N11QGridLayoutD1Ev
+280 (int (*)(...))QGridLayout::_ZThn16_N11QGridLayoutD0Ev
+288 (int (*)(...))QGridLayout::_ZThn16_NK11QGridLayout8sizeHintEv
+296 (int (*)(...))QGridLayout::_ZThn16_NK11QGridLayout11minimumSizeEv
+304 (int (*)(...))QGridLayout::_ZThn16_NK11QGridLayout11maximumSizeEv
+312 (int (*)(...))QGridLayout::_ZThn16_NK11QGridLayout19expandingDirectionsEv
+320 (int (*)(...))QGridLayout::_ZThn16_N11QGridLayout11setGeometryERK5QRect
+328 (int (*)(...))QLayout::_ZThn16_NK7QLayout8geometryEv
+336 (int (*)(...))QLayout::_ZThn16_NK7QLayout7isEmptyEv
+344 (int (*)(...))QGridLayout::_ZThn16_NK11QGridLayout17hasHeightForWidthEv
+352 (int (*)(...))QGridLayout::_ZThn16_NK11QGridLayout14heightForWidthEi
+360 (int (*)(...))QGridLayout::_ZThn16_NK11QGridLayout21minimumHeightForWidthEi
+368 (int (*)(...))QGridLayout::_ZThn16_N11QGridLayout10invalidateEv
+376 (int (*)(...))QLayoutItem::widget
+384 (int (*)(...))QLayout::_ZThn16_N7QLayout6layoutEv
+392 (int (*)(...))QLayoutItem::spacerItem
+400 (int (*)(...))QLayout::_ZThn16_NK7QLayout12controlTypesEv
+
+Class QGridLayout
+ size=32 align=8
+ base size=28 base align=8
+QGridLayout (0x0x7f09698e1b60) 0
+ vptr=((& QGridLayout::_ZTV11QGridLayout) + 16)
+ QLayout (0x0x7f096dc34b60) 0
+ primary-for QGridLayout (0x0x7f09698e1b60)
+ QObject (0x0x7f0966d3d0c0) 0
+ primary-for QLayout (0x0x7f096dc34b60)
+ QLayoutItem (0x0x7f0966d3d120) 16
+ vptr=((& QGridLayout::_ZTV11QGridLayout) + 272)
+
+Class QBoxLayout::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QBoxLayout::QPrivateSignal (0x0x7f0966d3d480) 0 empty
+
+Vtable for QBoxLayout
+QBoxLayout::_ZTV10QBoxLayout: 51 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QBoxLayout)
+16 (int (*)(...))QBoxLayout::metaObject
+24 (int (*)(...))QBoxLayout::qt_metacast
+32 (int (*)(...))QBoxLayout::qt_metacall
+40 (int (*)(...))QBoxLayout::~QBoxLayout
+48 (int (*)(...))QBoxLayout::~QBoxLayout
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QLayout::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QBoxLayout::invalidate
+120 (int (*)(...))QLayout::geometry
+128 (int (*)(...))QBoxLayout::addItem
+136 (int (*)(...))QBoxLayout::expandingDirections
+144 (int (*)(...))QBoxLayout::minimumSize
+152 (int (*)(...))QBoxLayout::maximumSize
+160 (int (*)(...))QBoxLayout::setGeometry
+168 (int (*)(...))QBoxLayout::itemAt
+176 (int (*)(...))QBoxLayout::takeAt
+184 (int (*)(...))QLayout::indexOf
+192 (int (*)(...))QBoxLayout::count
+200 (int (*)(...))QLayout::isEmpty
+208 (int (*)(...))QLayout::controlTypes
+216 (int (*)(...))QLayout::layout
+224 (int (*)(...))QBoxLayout::sizeHint
+232 (int (*)(...))QBoxLayout::hasHeightForWidth
+240 (int (*)(...))QBoxLayout::heightForWidth
+248 (int (*)(...))QBoxLayout::minimumHeightForWidth
+256 (int (*)(...))-16
+264 (int (*)(...))(& _ZTI10QBoxLayout)
+272 (int (*)(...))QBoxLayout::_ZThn16_N10QBoxLayoutD1Ev
+280 (int (*)(...))QBoxLayout::_ZThn16_N10QBoxLayoutD0Ev
+288 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout8sizeHintEv
+296 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout11minimumSizeEv
+304 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout11maximumSizeEv
+312 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout19expandingDirectionsEv
+320 (int (*)(...))QBoxLayout::_ZThn16_N10QBoxLayout11setGeometryERK5QRect
+328 (int (*)(...))QLayout::_ZThn16_NK7QLayout8geometryEv
+336 (int (*)(...))QLayout::_ZThn16_NK7QLayout7isEmptyEv
+344 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout17hasHeightForWidthEv
+352 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout14heightForWidthEi
+360 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout21minimumHeightForWidthEi
+368 (int (*)(...))QBoxLayout::_ZThn16_N10QBoxLayout10invalidateEv
+376 (int (*)(...))QLayoutItem::widget
+384 (int (*)(...))QLayout::_ZThn16_N7QLayout6layoutEv
+392 (int (*)(...))QLayoutItem::spacerItem
+400 (int (*)(...))QLayout::_ZThn16_NK7QLayout12controlTypesEv
+
+Class QBoxLayout
+ size=32 align=8
+ base size=28 base align=8
+QBoxLayout (0x0x7f09698e1bc8) 0
+ vptr=((& QBoxLayout::_ZTV10QBoxLayout) + 16)
+ QLayout (0x0x7f096dc34ee0) 0
+ primary-for QBoxLayout (0x0x7f09698e1bc8)
+ QObject (0x0x7f0966d3d3c0) 0
+ primary-for QLayout (0x0x7f096dc34ee0)
+ QLayoutItem (0x0x7f0966d3d420) 16
+ vptr=((& QBoxLayout::_ZTV10QBoxLayout) + 272)
+
+Class QHBoxLayout::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QHBoxLayout::QPrivateSignal (0x0x7f0966d3d720) 0 empty
+
+Vtable for QHBoxLayout
+QHBoxLayout::_ZTV11QHBoxLayout: 51 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QHBoxLayout)
+16 (int (*)(...))QHBoxLayout::metaObject
+24 (int (*)(...))QHBoxLayout::qt_metacast
+32 (int (*)(...))QHBoxLayout::qt_metacall
+40 (int (*)(...))QHBoxLayout::~QHBoxLayout
+48 (int (*)(...))QHBoxLayout::~QHBoxLayout
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QLayout::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QBoxLayout::invalidate
+120 (int (*)(...))QLayout::geometry
+128 (int (*)(...))QBoxLayout::addItem
+136 (int (*)(...))QBoxLayout::expandingDirections
+144 (int (*)(...))QBoxLayout::minimumSize
+152 (int (*)(...))QBoxLayout::maximumSize
+160 (int (*)(...))QBoxLayout::setGeometry
+168 (int (*)(...))QBoxLayout::itemAt
+176 (int (*)(...))QBoxLayout::takeAt
+184 (int (*)(...))QLayout::indexOf
+192 (int (*)(...))QBoxLayout::count
+200 (int (*)(...))QLayout::isEmpty
+208 (int (*)(...))QLayout::controlTypes
+216 (int (*)(...))QLayout::layout
+224 (int (*)(...))QBoxLayout::sizeHint
+232 (int (*)(...))QBoxLayout::hasHeightForWidth
+240 (int (*)(...))QBoxLayout::heightForWidth
+248 (int (*)(...))QBoxLayout::minimumHeightForWidth
+256 (int (*)(...))-16
+264 (int (*)(...))(& _ZTI11QHBoxLayout)
+272 (int (*)(...))QHBoxLayout::_ZThn16_N11QHBoxLayoutD1Ev
+280 (int (*)(...))QHBoxLayout::_ZThn16_N11QHBoxLayoutD0Ev
+288 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout8sizeHintEv
+296 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout11minimumSizeEv
+304 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout11maximumSizeEv
+312 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout19expandingDirectionsEv
+320 (int (*)(...))QBoxLayout::_ZThn16_N10QBoxLayout11setGeometryERK5QRect
+328 (int (*)(...))QLayout::_ZThn16_NK7QLayout8geometryEv
+336 (int (*)(...))QLayout::_ZThn16_NK7QLayout7isEmptyEv
+344 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout17hasHeightForWidthEv
+352 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout14heightForWidthEi
+360 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout21minimumHeightForWidthEi
+368 (int (*)(...))QBoxLayout::_ZThn16_N10QBoxLayout10invalidateEv
+376 (int (*)(...))QLayoutItem::widget
+384 (int (*)(...))QLayout::_ZThn16_N7QLayout6layoutEv
+392 (int (*)(...))QLayoutItem::spacerItem
+400 (int (*)(...))QLayout::_ZThn16_NK7QLayout12controlTypesEv
+
+Class QHBoxLayout
+ size=32 align=8
+ base size=28 base align=8
+QHBoxLayout (0x0x7f09698e1c98) 0
+ vptr=((& QHBoxLayout::_ZTV11QHBoxLayout) + 16)
+ QBoxLayout (0x0x7f09698e1d00) 0
+ primary-for QHBoxLayout (0x0x7f09698e1c98)
+ QLayout (0x0x7f096dc733f0) 0
+ primary-for QBoxLayout (0x0x7f09698e1d00)
+ QObject (0x0x7f0966d3d660) 0
+ primary-for QLayout (0x0x7f096dc733f0)
+ QLayoutItem (0x0x7f0966d3d6c0) 16
+ vptr=((& QHBoxLayout::_ZTV11QHBoxLayout) + 272)
+
+Class QVBoxLayout::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QVBoxLayout::QPrivateSignal (0x0x7f0966d3d900) 0 empty
+
+Vtable for QVBoxLayout
+QVBoxLayout::_ZTV11QVBoxLayout: 51 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QVBoxLayout)
+16 (int (*)(...))QVBoxLayout::metaObject
+24 (int (*)(...))QVBoxLayout::qt_metacast
+32 (int (*)(...))QVBoxLayout::qt_metacall
+40 (int (*)(...))QVBoxLayout::~QVBoxLayout
+48 (int (*)(...))QVBoxLayout::~QVBoxLayout
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QLayout::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QBoxLayout::invalidate
+120 (int (*)(...))QLayout::geometry
+128 (int (*)(...))QBoxLayout::addItem
+136 (int (*)(...))QBoxLayout::expandingDirections
+144 (int (*)(...))QBoxLayout::minimumSize
+152 (int (*)(...))QBoxLayout::maximumSize
+160 (int (*)(...))QBoxLayout::setGeometry
+168 (int (*)(...))QBoxLayout::itemAt
+176 (int (*)(...))QBoxLayout::takeAt
+184 (int (*)(...))QLayout::indexOf
+192 (int (*)(...))QBoxLayout::count
+200 (int (*)(...))QLayout::isEmpty
+208 (int (*)(...))QLayout::controlTypes
+216 (int (*)(...))QLayout::layout
+224 (int (*)(...))QBoxLayout::sizeHint
+232 (int (*)(...))QBoxLayout::hasHeightForWidth
+240 (int (*)(...))QBoxLayout::heightForWidth
+248 (int (*)(...))QBoxLayout::minimumHeightForWidth
+256 (int (*)(...))-16
+264 (int (*)(...))(& _ZTI11QVBoxLayout)
+272 (int (*)(...))QVBoxLayout::_ZThn16_N11QVBoxLayoutD1Ev
+280 (int (*)(...))QVBoxLayout::_ZThn16_N11QVBoxLayoutD0Ev
+288 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout8sizeHintEv
+296 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout11minimumSizeEv
+304 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout11maximumSizeEv
+312 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout19expandingDirectionsEv
+320 (int (*)(...))QBoxLayout::_ZThn16_N10QBoxLayout11setGeometryERK5QRect
+328 (int (*)(...))QLayout::_ZThn16_NK7QLayout8geometryEv
+336 (int (*)(...))QLayout::_ZThn16_NK7QLayout7isEmptyEv
+344 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout17hasHeightForWidthEv
+352 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout14heightForWidthEi
+360 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout21minimumHeightForWidthEi
+368 (int (*)(...))QBoxLayout::_ZThn16_N10QBoxLayout10invalidateEv
+376 (int (*)(...))QLayoutItem::widget
+384 (int (*)(...))QLayout::_ZThn16_N7QLayout6layoutEv
+392 (int (*)(...))QLayoutItem::spacerItem
+400 (int (*)(...))QLayout::_ZThn16_NK7QLayout12controlTypesEv
+
+Class QVBoxLayout
+ size=32 align=8
+ base size=28 base align=8
+QVBoxLayout (0x0x7f09698e1d68) 0
+ vptr=((& QVBoxLayout::_ZTV11QVBoxLayout) + 16)
+ QBoxLayout (0x0x7f09698e1dd0) 0
+ primary-for QVBoxLayout (0x0x7f09698e1d68)
+ QLayout (0x0x7f096dc73540) 0
+ primary-for QBoxLayout (0x0x7f09698e1dd0)
+ QObject (0x0x7f0966d3d840) 0
+ primary-for QLayout (0x0x7f096dc73540)
+ QLayoutItem (0x0x7f0966d3d8a0) 16
+ vptr=((& QVBoxLayout::_ZTV11QVBoxLayout) + 272)
+
+Class QButtonGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QButtonGroup::QPrivateSignal (0x0x7f0966d3da80) 0 empty
+
+Vtable for QButtonGroup
+QButtonGroup::_ZTV12QButtonGroup: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QButtonGroup)
+16 (int (*)(...))QButtonGroup::metaObject
+24 (int (*)(...))QButtonGroup::qt_metacast
+32 (int (*)(...))QButtonGroup::qt_metacall
+40 (int (*)(...))QButtonGroup::~QButtonGroup
+48 (int (*)(...))QButtonGroup::~QButtonGroup
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QButtonGroup
+ size=16 align=8
+ base size=16 base align=8
+QButtonGroup (0x0x7f09698e1e38) 0
+ vptr=((& QButtonGroup::_ZTV12QButtonGroup) + 16)
+ QObject (0x0x7f0966d3da20) 0
+ primary-for QButtonGroup (0x0x7f09698e1e38)
+
+Class QCalendarWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QCalendarWidget::QPrivateSignal (0x0x7f0966d3dd20) 0 empty
+
+Vtable for QCalendarWidget
+QCalendarWidget::_ZTV15QCalendarWidget: 65 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QCalendarWidget)
+16 (int (*)(...))QCalendarWidget::metaObject
+24 (int (*)(...))QCalendarWidget::qt_metacast
+32 (int (*)(...))QCalendarWidget::qt_metacall
+40 (int (*)(...))QCalendarWidget::~QCalendarWidget
+48 (int (*)(...))QCalendarWidget::~QCalendarWidget
+56 (int (*)(...))QCalendarWidget::event
+64 (int (*)(...))QCalendarWidget::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QCalendarWidget::sizeHint
+136 (int (*)(...))QCalendarWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QCalendarWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QCalendarWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QCalendarWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QCalendarWidget::paintCell
+440 (int (*)(...))-16
+448 (int (*)(...))(& _ZTI15QCalendarWidget)
+456 (int (*)(...))QCalendarWidget::_ZThn16_N15QCalendarWidgetD1Ev
+464 (int (*)(...))QCalendarWidget::_ZThn16_N15QCalendarWidgetD0Ev
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QCalendarWidget
+ size=48 align=8
+ base size=48 base align=8
+QCalendarWidget (0x0x7f09698e1ea0) 0
+ vptr=((& QCalendarWidget::_ZTV15QCalendarWidget) + 16)
+ QWidget (0x0x7f096dc73770) 0
+ primary-for QCalendarWidget (0x0x7f09698e1ea0)
+ QObject (0x0x7f0966d3dc60) 0
+ primary-for QWidget (0x0x7f096dc73770)
+ QPaintDevice (0x0x7f0966d3dcc0) 16
+ vptr=((& QCalendarWidget::_ZTV15QCalendarWidget) + 456)
+
+Class QCheckBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QCheckBox::QPrivateSignal (0x0x7f0965c51240) 0 empty
+
+Vtable for QCheckBox
+QCheckBox::_ZTV9QCheckBox: 67 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QCheckBox)
+16 (int (*)(...))QCheckBox::metaObject
+24 (int (*)(...))QCheckBox::qt_metacast
+32 (int (*)(...))QCheckBox::qt_metacall
+40 (int (*)(...))QCheckBox::~QCheckBox
+48 (int (*)(...))QCheckBox::~QCheckBox
+56 (int (*)(...))QCheckBox::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractButton::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QCheckBox::sizeHint
+136 (int (*)(...))QCheckBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractButton::mousePressEvent
+176 (int (*)(...))QAbstractButton::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QCheckBox::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QAbstractButton::keyPressEvent
+216 (int (*)(...))QAbstractButton::keyReleaseEvent
+224 (int (*)(...))QAbstractButton::focusInEvent
+232 (int (*)(...))QAbstractButton::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QCheckBox::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractButton::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QCheckBox::hitButton
+440 (int (*)(...))QCheckBox::checkStateSet
+448 (int (*)(...))QCheckBox::nextCheckState
+456 (int (*)(...))-16
+464 (int (*)(...))(& _ZTI9QCheckBox)
+472 (int (*)(...))QCheckBox::_ZThn16_N9QCheckBoxD1Ev
+480 (int (*)(...))QCheckBox::_ZThn16_N9QCheckBoxD0Ev
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QCheckBox
+ size=48 align=8
+ base size=48 base align=8
+QCheckBox (0x0x7f09698e1f08) 0
+ vptr=((& QCheckBox::_ZTV9QCheckBox) + 16)
+ QAbstractButton (0x0x7f09698e1f70) 0
+ primary-for QCheckBox (0x0x7f09698e1f08)
+ QWidget (0x0x7f096dc73ee0) 0
+ primary-for QAbstractButton (0x0x7f09698e1f70)
+ QObject (0x0x7f0965c51180) 0
+ primary-for QWidget (0x0x7f096dc73ee0)
+ QPaintDevice (0x0x7f0965c511e0) 16
+ vptr=((& QCheckBox::_ZTV9QCheckBox) + 472)
+
+Class QDialog::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDialog::QPrivateSignal (0x0x7f0965c514e0) 0 empty
+
+Vtable for QDialog
+QDialog::_ZTV7QDialog: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QDialog)
+16 (int (*)(...))QDialog::metaObject
+24 (int (*)(...))QDialog::qt_metacast
+32 (int (*)(...))QDialog::qt_metacall
+40 (int (*)(...))QDialog::~QDialog
+48 (int (*)(...))QDialog::~QDialog
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QDialog::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QDialog::setVisible
+128 (int (*)(...))QDialog::sizeHint
+136 (int (*)(...))QDialog::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QDialog::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QDialog::resizeEvent
+280 (int (*)(...))QDialog::closeEvent
+288 (int (*)(...))QDialog::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QDialog::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDialog::open
+440 (int (*)(...))QDialog::exec
+448 (int (*)(...))QDialog::done
+456 (int (*)(...))QDialog::accept
+464 (int (*)(...))QDialog::reject
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI7QDialog)
+488 (int (*)(...))QDialog::_ZThn16_N7QDialogD1Ev
+496 (int (*)(...))QDialog::_ZThn16_N7QDialogD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QDialog
+ size=48 align=8
+ base size=48 base align=8
+QDialog (0x0x7f09659bb000) 0
+ vptr=((& QDialog::_ZTV7QDialog) + 16)
+ QWidget (0x0x7f096dce7070) 0
+ primary-for QDialog (0x0x7f09659bb000)
+ QObject (0x0x7f0965c51420) 0
+ primary-for QWidget (0x0x7f096dce7070)
+ QPaintDevice (0x0x7f0965c51480) 16
+ vptr=((& QDialog::_ZTV7QDialog) + 488)
+
+Class QColorDialog::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QColorDialog::QPrivateSignal (0x0x7f0965c51780) 0 empty
+
+Vtable for QColorDialog
+QColorDialog::_ZTV12QColorDialog: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QColorDialog)
+16 (int (*)(...))QColorDialog::metaObject
+24 (int (*)(...))QColorDialog::qt_metacast
+32 (int (*)(...))QColorDialog::qt_metacall
+40 (int (*)(...))QColorDialog::~QColorDialog
+48 (int (*)(...))QColorDialog::~QColorDialog
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QDialog::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QColorDialog::setVisible
+128 (int (*)(...))QDialog::sizeHint
+136 (int (*)(...))QDialog::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QDialog::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QDialog::resizeEvent
+280 (int (*)(...))QDialog::closeEvent
+288 (int (*)(...))QDialog::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QDialog::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QColorDialog::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDialog::open
+440 (int (*)(...))QDialog::exec
+448 (int (*)(...))QColorDialog::done
+456 (int (*)(...))QDialog::accept
+464 (int (*)(...))QDialog::reject
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI12QColorDialog)
+488 (int (*)(...))QColorDialog::_ZThn16_N12QColorDialogD1Ev
+496 (int (*)(...))QColorDialog::_ZThn16_N12QColorDialogD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QColorDialog
+ size=48 align=8
+ base size=48 base align=8
+QColorDialog (0x0x7f09659bb068) 0
+ vptr=((& QColorDialog::_ZTV12QColorDialog) + 16)
+ QDialog (0x0x7f09659bb0d0) 0
+ primary-for QColorDialog (0x0x7f09659bb068)
+ QWidget (0x0x7f096dce7380) 0
+ primary-for QDialog (0x0x7f09659bb0d0)
+ QObject (0x0x7f0965c516c0) 0
+ primary-for QWidget (0x0x7f096dce7380)
+ QPaintDevice (0x0x7f0965c51720) 16
+ vptr=((& QColorDialog::_ZTV12QColorDialog) + 488)
+
+Class QColormap
+ size=8 align=8
+ base size=8 base align=8
+QColormap (0x0x7f09652ae360) 0
+
+Class QColumnView::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QColumnView::QPrivateSignal (0x0x7f09652ae480) 0 empty
+
+Vtable for QColumnView
+QColumnView::_ZTV11QColumnView: 107 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QColumnView)
+16 (int (*)(...))QColumnView::metaObject
+24 (int (*)(...))QColumnView::qt_metacast
+32 (int (*)(...))QColumnView::qt_metacall
+40 (int (*)(...))QColumnView::~QColumnView
+48 (int (*)(...))QColumnView::~QColumnView
+56 (int (*)(...))QAbstractItemView::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QAbstractItemView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QColumnView::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractItemView::mousePressEvent
+176 (int (*)(...))QAbstractItemView::mouseReleaseEvent
+184 (int (*)(...))QAbstractItemView::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractItemView::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QAbstractItemView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QAbstractScrollArea::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QColumnView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QAbstractItemView::dragMoveEvent
+328 (int (*)(...))QAbstractItemView::dragLeaveEvent
+336 (int (*)(...))QAbstractItemView::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractItemView::viewportEvent
+448 (int (*)(...))QColumnView::scrollContentsBy
+456 (int (*)(...))QAbstractItemView::viewportSizeHint
+464 (int (*)(...))QColumnView::setModel
+472 (int (*)(...))QColumnView::setSelectionModel
+480 (int (*)(...))QAbstractItemView::keyboardSearch
+488 (int (*)(...))QColumnView::visualRect
+496 (int (*)(...))QColumnView::scrollTo
+504 (int (*)(...))QColumnView::indexAt
+512 (int (*)(...))QAbstractItemView::sizeHintForRow
+520 (int (*)(...))QAbstractItemView::sizeHintForColumn
+528 (int (*)(...))QAbstractItemView::reset
+536 (int (*)(...))QColumnView::setRootIndex
+544 (int (*)(...))QAbstractItemView::doItemsLayout
+552 (int (*)(...))QColumnView::selectAll
+560 (int (*)(...))QAbstractItemView::dataChanged
+568 (int (*)(...))QColumnView::rowsInserted
+576 (int (*)(...))QAbstractItemView::rowsAboutToBeRemoved
+584 (int (*)(...))QAbstractItemView::selectionChanged
+592 (int (*)(...))QColumnView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QAbstractItemView::updateGeometries
+624 (int (*)(...))QAbstractItemView::verticalScrollbarAction
+632 (int (*)(...))QAbstractItemView::horizontalScrollbarAction
+640 (int (*)(...))QAbstractItemView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))QColumnView::moveCursor
+688 (int (*)(...))QColumnView::horizontalOffset
+696 (int (*)(...))QColumnView::verticalOffset
+704 (int (*)(...))QColumnView::isIndexHidden
+712 (int (*)(...))QColumnView::setSelection
+720 (int (*)(...))QColumnView::visualRegionForSelection
+728 (int (*)(...))QAbstractItemView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QAbstractItemView::startDrag
+760 (int (*)(...))QAbstractItemView::viewOptions
+768 (int (*)(...))QColumnView::createColumn
+776 (int (*)(...))-16
+784 (int (*)(...))(& _ZTI11QColumnView)
+792 (int (*)(...))QColumnView::_ZThn16_N11QColumnViewD1Ev
+800 (int (*)(...))QColumnView::_ZThn16_N11QColumnViewD0Ev
+808 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+816 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+824 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+832 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+840 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+848 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QColumnView
+ size=48 align=8
+ base size=48 base align=8
+QColumnView (0x0x7f09659bb208) 0
+ vptr=((& QColumnView::_ZTV11QColumnView) + 16)
+ QAbstractItemView (0x0x7f09659bb270) 0
+ primary-for QColumnView (0x0x7f09659bb208)
+ QAbstractScrollArea (0x0x7f09659bb2d8) 0
+ primary-for QAbstractItemView (0x0x7f09659bb270)
+ QFrame (0x0x7f09659bb340) 0
+ primary-for QAbstractScrollArea (0x0x7f09659bb2d8)
+ QWidget (0x0x7f096dd33380) 0
+ primary-for QFrame (0x0x7f09659bb340)
+ QObject (0x0x7f09652ae3c0) 0
+ primary-for QWidget (0x0x7f096dd33380)
+ QPaintDevice (0x0x7f09652ae420) 16
+ vptr=((& QColumnView::_ZTV11QColumnView) + 792)
+
+Class QComboBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QComboBox::QPrivateSignal (0x0x7f09652ae720) 0 empty
+
+Vtable for QComboBox
+QComboBox::_ZTV9QComboBox: 66 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QComboBox)
+16 (int (*)(...))QComboBox::metaObject
+24 (int (*)(...))QComboBox::qt_metacast
+32 (int (*)(...))QComboBox::qt_metacall
+40 (int (*)(...))QComboBox::~QComboBox
+48 (int (*)(...))QComboBox::~QComboBox
+56 (int (*)(...))QComboBox::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QComboBox::sizeHint
+136 (int (*)(...))QComboBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QComboBox::mousePressEvent
+176 (int (*)(...))QComboBox::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QComboBox::wheelEvent
+208 (int (*)(...))QComboBox::keyPressEvent
+216 (int (*)(...))QComboBox::keyReleaseEvent
+224 (int (*)(...))QComboBox::focusInEvent
+232 (int (*)(...))QComboBox::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QComboBox::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QComboBox::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QComboBox::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QComboBox::showEvent
+352 (int (*)(...))QComboBox::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QComboBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QComboBox::inputMethodEvent
+416 (int (*)(...))QComboBox::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QComboBox::showPopup
+440 (int (*)(...))QComboBox::hidePopup
+448 (int (*)(...))-16
+456 (int (*)(...))(& _ZTI9QComboBox)
+464 (int (*)(...))QComboBox::_ZThn16_N9QComboBoxD1Ev
+472 (int (*)(...))QComboBox::_ZThn16_N9QComboBoxD0Ev
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QComboBox
+ size=48 align=8
+ base size=48 base align=8
+QComboBox (0x0x7f09659bb3a8) 0
+ vptr=((& QComboBox::_ZTV9QComboBox) + 16)
+ QWidget (0x0x7f096dd333f0) 0
+ primary-for QComboBox (0x0x7f09659bb3a8)
+ QObject (0x0x7f09652ae660) 0
+ primary-for QWidget (0x0x7f096dd333f0)
+ QPaintDevice (0x0x7f09652ae6c0) 16
+ vptr=((& QComboBox::_ZTV9QComboBox) + 464)
+
+Class QPushButton::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPushButton::QPrivateSignal (0x0x7f09652aed20) 0 empty
+
+Vtable for QPushButton
+QPushButton::_ZTV11QPushButton: 67 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QPushButton)
+16 (int (*)(...))QPushButton::metaObject
+24 (int (*)(...))QPushButton::qt_metacast
+32 (int (*)(...))QPushButton::qt_metacall
+40 (int (*)(...))QPushButton::~QPushButton
+48 (int (*)(...))QPushButton::~QPushButton
+56 (int (*)(...))QPushButton::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractButton::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QPushButton::sizeHint
+136 (int (*)(...))QPushButton::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractButton::mousePressEvent
+176 (int (*)(...))QAbstractButton::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractButton::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QPushButton::keyPressEvent
+216 (int (*)(...))QAbstractButton::keyReleaseEvent
+224 (int (*)(...))QPushButton::focusInEvent
+232 (int (*)(...))QPushButton::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QPushButton::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractButton::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QAbstractButton::hitButton
+440 (int (*)(...))QAbstractButton::checkStateSet
+448 (int (*)(...))QAbstractButton::nextCheckState
+456 (int (*)(...))-16
+464 (int (*)(...))(& _ZTI11QPushButton)
+472 (int (*)(...))QPushButton::_ZThn16_N11QPushButtonD1Ev
+480 (int (*)(...))QPushButton::_ZThn16_N11QPushButtonD0Ev
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QPushButton
+ size=48 align=8
+ base size=48 base align=8
+QPushButton (0x0x7f09659bb410) 0
+ vptr=((& QPushButton::_ZTV11QPushButton) + 16)
+ QAbstractButton (0x0x7f09659bb478) 0
+ primary-for QPushButton (0x0x7f09659bb410)
+ QWidget (0x0x7f096dd33cb0) 0
+ primary-for QAbstractButton (0x0x7f09659bb478)
+ QObject (0x0x7f09652aec60) 0
+ primary-for QWidget (0x0x7f096dd33cb0)
+ QPaintDevice (0x0x7f09652aecc0) 16
+ vptr=((& QPushButton::_ZTV11QPushButton) + 472)
+
+Class QCommandLinkButton::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QCommandLinkButton::QPrivateSignal (0x0x7f096fd85000) 0 empty
+
+Vtable for QCommandLinkButton
+QCommandLinkButton::_ZTV18QCommandLinkButton: 67 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QCommandLinkButton)
+16 (int (*)(...))QCommandLinkButton::metaObject
+24 (int (*)(...))QCommandLinkButton::qt_metacast
+32 (int (*)(...))QCommandLinkButton::qt_metacall
+40 (int (*)(...))QCommandLinkButton::~QCommandLinkButton
+48 (int (*)(...))QCommandLinkButton::~QCommandLinkButton
+56 (int (*)(...))QCommandLinkButton::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractButton::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QCommandLinkButton::sizeHint
+136 (int (*)(...))QCommandLinkButton::minimumSizeHint
+144 (int (*)(...))QCommandLinkButton::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractButton::mousePressEvent
+176 (int (*)(...))QAbstractButton::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractButton::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QPushButton::keyPressEvent
+216 (int (*)(...))QAbstractButton::keyReleaseEvent
+224 (int (*)(...))QPushButton::focusInEvent
+232 (int (*)(...))QPushButton::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QCommandLinkButton::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractButton::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QAbstractButton::hitButton
+440 (int (*)(...))QAbstractButton::checkStateSet
+448 (int (*)(...))QAbstractButton::nextCheckState
+456 (int (*)(...))-16
+464 (int (*)(...))(& _ZTI18QCommandLinkButton)
+472 (int (*)(...))QCommandLinkButton::_ZThn16_N18QCommandLinkButtonD1Ev
+480 (int (*)(...))QCommandLinkButton::_ZThn16_N18QCommandLinkButtonD0Ev
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QCommandLinkButton
+ size=48 align=8
+ base size=48 base align=8
+QCommandLinkButton (0x0x7f09659bb4e0) 0
+ vptr=((& QCommandLinkButton::_ZTV18QCommandLinkButton) + 16)
+ QPushButton (0x0x7f09659bb548) 0
+ primary-for QCommandLinkButton (0x0x7f09659bb4e0)
+ QAbstractButton (0x0x7f09659bb5b0) 0
+ primary-for QPushButton (0x0x7f09659bb548)
+ QWidget (0x0x7f096dd33e00) 0
+ primary-for QAbstractButton (0x0x7f09659bb5b0)
+ QObject (0x0x7f09652aef00) 0
+ primary-for QWidget (0x0x7f096dd33e00)
+ QPaintDevice (0x0x7f09652aef60) 16
+ vptr=((& QCommandLinkButton::_ZTV18QCommandLinkButton) + 472)
+
+Class QCommonStyle::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QCommonStyle::QPrivateSignal (0x0x7f096fd85240) 0 empty
+
+Vtable for QCommonStyle
+QCommonStyle::_ZTV12QCommonStyle: 37 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QCommonStyle)
+16 (int (*)(...))QCommonStyle::metaObject
+24 (int (*)(...))QCommonStyle::qt_metacast
+32 (int (*)(...))QCommonStyle::qt_metacall
+40 (int (*)(...))QCommonStyle::~QCommonStyle
+48 (int (*)(...))QCommonStyle::~QCommonStyle
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QCommonStyle::polish
+120 (int (*)(...))QCommonStyle::unpolish
+128 (int (*)(...))QCommonStyle::polish
+136 (int (*)(...))QCommonStyle::unpolish
+144 (int (*)(...))QCommonStyle::polish
+152 (int (*)(...))QStyle::itemTextRect
+160 (int (*)(...))QStyle::itemPixmapRect
+168 (int (*)(...))QStyle::drawItemText
+176 (int (*)(...))QStyle::drawItemPixmap
+184 (int (*)(...))QStyle::standardPalette
+192 (int (*)(...))QCommonStyle::drawPrimitive
+200 (int (*)(...))QCommonStyle::drawControl
+208 (int (*)(...))QCommonStyle::subElementRect
+216 (int (*)(...))QCommonStyle::drawComplexControl
+224 (int (*)(...))QCommonStyle::hitTestComplexControl
+232 (int (*)(...))QCommonStyle::subControlRect
+240 (int (*)(...))QCommonStyle::pixelMetric
+248 (int (*)(...))QCommonStyle::sizeFromContents
+256 (int (*)(...))QCommonStyle::styleHint
+264 (int (*)(...))QCommonStyle::standardPixmap
+272 (int (*)(...))QCommonStyle::standardIcon
+280 (int (*)(...))QCommonStyle::generatedIconPixmap
+288 (int (*)(...))QCommonStyle::layoutSpacing
+
+Class QCommonStyle
+ size=16 align=8
+ base size=16 base align=8
+QCommonStyle (0x0x7f09659bb618) 0
+ vptr=((& QCommonStyle::_ZTV12QCommonStyle) + 16)
+ QStyle (0x0x7f09659bb680) 0
+ primary-for QCommonStyle (0x0x7f09659bb618)
+ QObject (0x0x7f096fd851e0) 0
+ primary-for QStyle (0x0x7f09659bb680)
+
+Class QCompleter::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QCompleter::QPrivateSignal (0x0x7f096fd85480) 0 empty
+
+Vtable for QCompleter
+QCompleter::_ZTV10QCompleter: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QCompleter)
+16 (int (*)(...))QCompleter::metaObject
+24 (int (*)(...))QCompleter::qt_metacast
+32 (int (*)(...))QCompleter::qt_metacall
+40 (int (*)(...))QCompleter::~QCompleter
+48 (int (*)(...))QCompleter::~QCompleter
+56 (int (*)(...))QCompleter::event
+64 (int (*)(...))QCompleter::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QCompleter::pathFromIndex
+120 (int (*)(...))QCompleter::splitPath
+
+Class QCompleter
+ size=16 align=8
+ base size=16 base align=8
+QCompleter (0x0x7f09659bb6e8) 0
+ vptr=((& QCompleter::_ZTV10QCompleter) + 16)
+ QObject (0x0x7f096fd85420) 0
+ primary-for QCompleter (0x0x7f09659bb6e8)
+
+Class QDataWidgetMapper::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDataWidgetMapper::QPrivateSignal (0x0x7f096fd85840) 0 empty
+
+Vtable for QDataWidgetMapper
+QDataWidgetMapper::_ZTV17QDataWidgetMapper: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QDataWidgetMapper)
+16 (int (*)(...))QDataWidgetMapper::metaObject
+24 (int (*)(...))QDataWidgetMapper::qt_metacast
+32 (int (*)(...))QDataWidgetMapper::qt_metacall
+40 (int (*)(...))QDataWidgetMapper::~QDataWidgetMapper
+48 (int (*)(...))QDataWidgetMapper::~QDataWidgetMapper
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QDataWidgetMapper::setCurrentIndex
+
+Class QDataWidgetMapper
+ size=16 align=8
+ base size=16 base align=8
+QDataWidgetMapper (0x0x7f09659bb750) 0
+ vptr=((& QDataWidgetMapper::_ZTV17QDataWidgetMapper) + 16)
+ QObject (0x0x7f096fd857e0) 0
+ primary-for QDataWidgetMapper (0x0x7f09659bb750)
+
+Class QDateTimeEdit::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDateTimeEdit::QPrivateSignal (0x0x7f096fd85ba0) 0 empty
+
+Vtable for QDateTimeEdit
+QDateTimeEdit::_ZTV13QDateTimeEdit: 71 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QDateTimeEdit)
+16 (int (*)(...))QDateTimeEdit::metaObject
+24 (int (*)(...))QDateTimeEdit::qt_metacast
+32 (int (*)(...))QDateTimeEdit::qt_metacall
+40 (int (*)(...))QDateTimeEdit::~QDateTimeEdit
+48 (int (*)(...))QDateTimeEdit::~QDateTimeEdit
+56 (int (*)(...))QDateTimeEdit::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSpinBox::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QDateTimeEdit::sizeHint
+136 (int (*)(...))QAbstractSpinBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QDateTimeEdit::mousePressEvent
+176 (int (*)(...))QAbstractSpinBox::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractSpinBox::mouseMoveEvent
+200 (int (*)(...))QDateTimeEdit::wheelEvent
+208 (int (*)(...))QDateTimeEdit::keyPressEvent
+216 (int (*)(...))QAbstractSpinBox::keyReleaseEvent
+224 (int (*)(...))QDateTimeEdit::focusInEvent
+232 (int (*)(...))QAbstractSpinBox::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QDateTimeEdit::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractSpinBox::resizeEvent
+280 (int (*)(...))QAbstractSpinBox::closeEvent
+288 (int (*)(...))QAbstractSpinBox::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QAbstractSpinBox::showEvent
+352 (int (*)(...))QAbstractSpinBox::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSpinBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QAbstractSpinBox::inputMethodQuery
+424 (int (*)(...))QDateTimeEdit::focusNextPrevChild
+432 (int (*)(...))QDateTimeEdit::validate
+440 (int (*)(...))QDateTimeEdit::fixup
+448 (int (*)(...))QDateTimeEdit::stepBy
+456 (int (*)(...))QDateTimeEdit::clear
+464 (int (*)(...))QDateTimeEdit::stepEnabled
+472 (int (*)(...))QDateTimeEdit::dateTimeFromText
+480 (int (*)(...))QDateTimeEdit::textFromDateTime
+488 (int (*)(...))-16
+496 (int (*)(...))(& _ZTI13QDateTimeEdit)
+504 (int (*)(...))QDateTimeEdit::_ZThn16_N13QDateTimeEditD1Ev
+512 (int (*)(...))QDateTimeEdit::_ZThn16_N13QDateTimeEditD0Ev
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+552 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+560 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QDateTimeEdit
+ size=48 align=8
+ base size=48 base align=8
+QDateTimeEdit (0x0x7f09659bb7b8) 0
+ vptr=((& QDateTimeEdit::_ZTV13QDateTimeEdit) + 16)
+ QAbstractSpinBox (0x0x7f09659bb820) 0
+ primary-for QDateTimeEdit (0x0x7f09659bb7b8)
+ QWidget (0x0x7f096dd4f930) 0
+ primary-for QAbstractSpinBox (0x0x7f09659bb820)
+ QObject (0x0x7f096fd85ae0) 0
+ primary-for QWidget (0x0x7f096dd4f930)
+ QPaintDevice (0x0x7f096fd85b40) 16
+ vptr=((& QDateTimeEdit::_ZTV13QDateTimeEdit) + 504)
+
+Class QTimeEdit::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTimeEdit::QPrivateSignal (0x0x7f096c155180) 0 empty
+
+Vtable for QTimeEdit
+QTimeEdit::_ZTV9QTimeEdit: 71 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QTimeEdit)
+16 (int (*)(...))QTimeEdit::metaObject
+24 (int (*)(...))QTimeEdit::qt_metacast
+32 (int (*)(...))QTimeEdit::qt_metacall
+40 (int (*)(...))QTimeEdit::~QTimeEdit
+48 (int (*)(...))QTimeEdit::~QTimeEdit
+56 (int (*)(...))QDateTimeEdit::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSpinBox::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QDateTimeEdit::sizeHint
+136 (int (*)(...))QAbstractSpinBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QDateTimeEdit::mousePressEvent
+176 (int (*)(...))QAbstractSpinBox::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractSpinBox::mouseMoveEvent
+200 (int (*)(...))QDateTimeEdit::wheelEvent
+208 (int (*)(...))QDateTimeEdit::keyPressEvent
+216 (int (*)(...))QAbstractSpinBox::keyReleaseEvent
+224 (int (*)(...))QDateTimeEdit::focusInEvent
+232 (int (*)(...))QAbstractSpinBox::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QDateTimeEdit::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractSpinBox::resizeEvent
+280 (int (*)(...))QAbstractSpinBox::closeEvent
+288 (int (*)(...))QAbstractSpinBox::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QAbstractSpinBox::showEvent
+352 (int (*)(...))QAbstractSpinBox::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSpinBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QAbstractSpinBox::inputMethodQuery
+424 (int (*)(...))QDateTimeEdit::focusNextPrevChild
+432 (int (*)(...))QDateTimeEdit::validate
+440 (int (*)(...))QDateTimeEdit::fixup
+448 (int (*)(...))QDateTimeEdit::stepBy
+456 (int (*)(...))QDateTimeEdit::clear
+464 (int (*)(...))QDateTimeEdit::stepEnabled
+472 (int (*)(...))QDateTimeEdit::dateTimeFromText
+480 (int (*)(...))QDateTimeEdit::textFromDateTime
+488 (int (*)(...))-16
+496 (int (*)(...))(& _ZTI9QTimeEdit)
+504 (int (*)(...))QTimeEdit::_ZThn16_N9QTimeEditD1Ev
+512 (int (*)(...))QTimeEdit::_ZThn16_N9QTimeEditD0Ev
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+552 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+560 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QTimeEdit
+ size=48 align=8
+ base size=48 base align=8
+QTimeEdit (0x0x7f09659bb958) 0
+ vptr=((& QTimeEdit::_ZTV9QTimeEdit) + 16)
+ QDateTimeEdit (0x0x7f09659bb9c0) 0
+ primary-for QTimeEdit (0x0x7f09659bb958)
+ QAbstractSpinBox (0x0x7f09659bba28) 0
+ primary-for QDateTimeEdit (0x0x7f09659bb9c0)
+ QWidget (0x0x7f096da00a10) 0
+ primary-for QAbstractSpinBox (0x0x7f09659bba28)
+ QObject (0x0x7f096c1550c0) 0
+ primary-for QWidget (0x0x7f096da00a10)
+ QPaintDevice (0x0x7f096c155120) 16
+ vptr=((& QTimeEdit::_ZTV9QTimeEdit) + 504)
+
+Class QDateEdit::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDateEdit::QPrivateSignal (0x0x7f096c155360) 0 empty
+
+Vtable for QDateEdit
+QDateEdit::_ZTV9QDateEdit: 71 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QDateEdit)
+16 (int (*)(...))QDateEdit::metaObject
+24 (int (*)(...))QDateEdit::qt_metacast
+32 (int (*)(...))QDateEdit::qt_metacall
+40 (int (*)(...))QDateEdit::~QDateEdit
+48 (int (*)(...))QDateEdit::~QDateEdit
+56 (int (*)(...))QDateTimeEdit::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSpinBox::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QDateTimeEdit::sizeHint
+136 (int (*)(...))QAbstractSpinBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QDateTimeEdit::mousePressEvent
+176 (int (*)(...))QAbstractSpinBox::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractSpinBox::mouseMoveEvent
+200 (int (*)(...))QDateTimeEdit::wheelEvent
+208 (int (*)(...))QDateTimeEdit::keyPressEvent
+216 (int (*)(...))QAbstractSpinBox::keyReleaseEvent
+224 (int (*)(...))QDateTimeEdit::focusInEvent
+232 (int (*)(...))QAbstractSpinBox::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QDateTimeEdit::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractSpinBox::resizeEvent
+280 (int (*)(...))QAbstractSpinBox::closeEvent
+288 (int (*)(...))QAbstractSpinBox::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QAbstractSpinBox::showEvent
+352 (int (*)(...))QAbstractSpinBox::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSpinBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QAbstractSpinBox::inputMethodQuery
+424 (int (*)(...))QDateTimeEdit::focusNextPrevChild
+432 (int (*)(...))QDateTimeEdit::validate
+440 (int (*)(...))QDateTimeEdit::fixup
+448 (int (*)(...))QDateTimeEdit::stepBy
+456 (int (*)(...))QDateTimeEdit::clear
+464 (int (*)(...))QDateTimeEdit::stepEnabled
+472 (int (*)(...))QDateTimeEdit::dateTimeFromText
+480 (int (*)(...))QDateTimeEdit::textFromDateTime
+488 (int (*)(...))-16
+496 (int (*)(...))(& _ZTI9QDateEdit)
+504 (int (*)(...))QDateEdit::_ZThn16_N9QDateEditD1Ev
+512 (int (*)(...))QDateEdit::_ZThn16_N9QDateEditD0Ev
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+552 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+560 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QDateEdit
+ size=48 align=8
+ base size=48 base align=8
+QDateEdit (0x0x7f09659bba90) 0
+ vptr=((& QDateEdit::_ZTV9QDateEdit) + 16)
+ QDateTimeEdit (0x0x7f09659bbaf8) 0
+ primary-for QDateEdit (0x0x7f09659bba90)
+ QAbstractSpinBox (0x0x7f09659bbb60) 0
+ primary-for QDateTimeEdit (0x0x7f09659bbaf8)
+ QWidget (0x0x7f096da00000) 0
+ primary-for QAbstractSpinBox (0x0x7f09659bbb60)
+ QObject (0x0x7f096c1552a0) 0
+ primary-for QWidget (0x0x7f096da00000)
+ QPaintDevice (0x0x7f096c155300) 16
+ vptr=((& QDateEdit::_ZTV9QDateEdit) + 504)
+
+Class QDesktopWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDesktopWidget::QPrivateSignal (0x0x7f096c155a80) 0 empty
+
+Vtable for QDesktopWidget
+QDesktopWidget::_ZTV14QDesktopWidget: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QDesktopWidget)
+16 (int (*)(...))QDesktopWidget::metaObject
+24 (int (*)(...))QDesktopWidget::qt_metacast
+32 (int (*)(...))QDesktopWidget::qt_metacall
+40 (int (*)(...))QDesktopWidget::~QDesktopWidget
+48 (int (*)(...))QDesktopWidget::~QDesktopWidget
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QDesktopWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI14QDesktopWidget)
+448 (int (*)(...))QDesktopWidget::_ZThn16_N14QDesktopWidgetD1Ev
+456 (int (*)(...))QDesktopWidget::_ZThn16_N14QDesktopWidgetD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QDesktopWidget
+ size=48 align=8
+ base size=48 base align=8
+QDesktopWidget (0x0x7f09659bbbc8) 0
+ vptr=((& QDesktopWidget::_ZTV14QDesktopWidget) + 16)
+ QWidget (0x0x7f096da00770) 0
+ primary-for QDesktopWidget (0x0x7f09659bbbc8)
+ QObject (0x0x7f096c1559c0) 0
+ primary-for QWidget (0x0x7f096da00770)
+ QPaintDevice (0x0x7f096c155a20) 16
+ vptr=((& QDesktopWidget::_ZTV14QDesktopWidget) + 448)
+
+Class QDial::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDial::QPrivateSignal (0x0x7f096c155e40) 0 empty
+
+Vtable for QDial
+QDial::_ZTV5QDial: 65 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI5QDial)
+16 (int (*)(...))QDial::metaObject
+24 (int (*)(...))QDial::qt_metacast
+32 (int (*)(...))QDial::qt_metacall
+40 (int (*)(...))QDial::~QDial
+48 (int (*)(...))QDial::~QDial
+56 (int (*)(...))QDial::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSlider::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QDial::sizeHint
+136 (int (*)(...))QDial::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QDial::mousePressEvent
+176 (int (*)(...))QDial::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QDial::mouseMoveEvent
+200 (int (*)(...))QAbstractSlider::wheelEvent
+208 (int (*)(...))QAbstractSlider::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QDial::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QDial::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSlider::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDial::sliderChange
+440 (int (*)(...))-16
+448 (int (*)(...))(& _ZTI5QDial)
+456 (int (*)(...))QDial::_ZThn16_N5QDialD1Ev
+464 (int (*)(...))QDial::_ZThn16_N5QDialD0Ev
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QDial
+ size=48 align=8
+ base size=48 base align=8
+QDial (0x0x7f09659bbc30) 0
+ vptr=((& QDial::_ZTV5QDial) + 16)
+ QAbstractSlider (0x0x7f09659bbc98) 0
+ primary-for QDial (0x0x7f09659bbc30)
+ QWidget (0x0x7f096da007e0) 0
+ primary-for QAbstractSlider (0x0x7f09659bbc98)
+ QObject (0x0x7f096c155d80) 0
+ primary-for QWidget (0x0x7f096da007e0)
+ QPaintDevice (0x0x7f096c155de0) 16
+ vptr=((& QDial::_ZTV5QDial) + 456)
+
+Class QDialogButtonBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDialogButtonBox::QPrivateSignal (0x0x7f096b639120) 0 empty
+
+Vtable for QDialogButtonBox
+QDialogButtonBox::_ZTV16QDialogButtonBox: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QDialogButtonBox)
+16 (int (*)(...))QDialogButtonBox::metaObject
+24 (int (*)(...))QDialogButtonBox::qt_metacast
+32 (int (*)(...))QDialogButtonBox::qt_metacall
+40 (int (*)(...))QDialogButtonBox::~QDialogButtonBox
+48 (int (*)(...))QDialogButtonBox::~QDialogButtonBox
+56 (int (*)(...))QDialogButtonBox::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QDialogButtonBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI16QDialogButtonBox)
+448 (int (*)(...))QDialogButtonBox::_ZThn16_N16QDialogButtonBoxD1Ev
+456 (int (*)(...))QDialogButtonBox::_ZThn16_N16QDialogButtonBoxD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QDialogButtonBox
+ size=48 align=8
+ base size=48 base align=8
+QDialogButtonBox (0x0x7f09659bbd00) 0
+ vptr=((& QDialogButtonBox::_ZTV16QDialogButtonBox) + 16)
+ QWidget (0x0x7f096da00c40) 0
+ primary-for QDialogButtonBox (0x0x7f09659bbd00)
+ QObject (0x0x7f096b639060) 0
+ primary-for QWidget (0x0x7f096da00c40)
+ QPaintDevice (0x0x7f096b6390c0) 16
+ vptr=((& QDialogButtonBox::_ZTV16QDialogButtonBox) + 448)
+
+Vtable for QFileIconProvider
+QFileIconProvider::_ZTV17QFileIconProvider: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QFileIconProvider)
+16 (int (*)(...))QFileIconProvider::~QFileIconProvider
+24 (int (*)(...))QFileIconProvider::~QFileIconProvider
+32 (int (*)(...))QFileIconProvider::icon
+40 (int (*)(...))QFileIconProvider::icon
+48 (int (*)(...))QFileIconProvider::type
+
+Class QFileIconProvider
+ size=16 align=8
+ base size=16 base align=8
+QFileIconProvider (0x0x7f096b639a80) 0
+ vptr=((& QFileIconProvider::_ZTV17QFileIconProvider) + 16)
+
+Class QDirModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDirModel::QPrivateSignal (0x0x7f096a6063c0) 0 empty
+
+Vtable for QDirModel
+QDirModel::_ZTV9QDirModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QDirModel)
+16 (int (*)(...))QDirModel::metaObject
+24 (int (*)(...))QDirModel::qt_metacast
+32 (int (*)(...))QDirModel::qt_metacall
+40 (int (*)(...))QDirModel::~QDirModel
+48 (int (*)(...))QDirModel::~QDirModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QDirModel::index
+120 (int (*)(...))QDirModel::parent
+128 (int (*)(...))QAbstractItemModel::sibling
+136 (int (*)(...))QDirModel::rowCount
+144 (int (*)(...))QDirModel::columnCount
+152 (int (*)(...))QDirModel::hasChildren
+160 (int (*)(...))QDirModel::data
+168 (int (*)(...))QDirModel::setData
+176 (int (*)(...))QDirModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QDirModel::mimeTypes
+216 (int (*)(...))QDirModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QDirModel::dropMimeData
+240 (int (*)(...))QDirModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QDirModel::flags
+328 (int (*)(...))QDirModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QDirModel
+ size=16 align=8
+ base size=16 base align=8
+QDirModel (0x0x7f09659bbf08) 0
+ vptr=((& QDirModel::_ZTV9QDirModel) + 16)
+ QAbstractItemModel (0x0x7f09659bbf70) 0
+ primary-for QDirModel (0x0x7f09659bbf08)
+ QObject (0x0x7f096a606360) 0
+ primary-for QAbstractItemModel (0x0x7f09659bbf70)
+
+Class QDockWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDockWidget::QPrivateSignal (0x0x7f096a606660) 0 empty
+
+Vtable for QDockWidget
+QDockWidget::_ZTV11QDockWidget: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QDockWidget)
+16 (int (*)(...))QDockWidget::metaObject
+24 (int (*)(...))QDockWidget::qt_metacast
+32 (int (*)(...))QDockWidget::qt_metacall
+40 (int (*)(...))QDockWidget::~QDockWidget
+48 (int (*)(...))QDockWidget::~QDockWidget
+56 (int (*)(...))QDockWidget::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QDockWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QDockWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QDockWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI11QDockWidget)
+448 (int (*)(...))QDockWidget::_ZThn16_N11QDockWidgetD1Ev
+456 (int (*)(...))QDockWidget::_ZThn16_N11QDockWidgetD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QDockWidget
+ size=48 align=8
+ base size=48 base align=8
+QDockWidget (0x0x7f096a54f000) 0
+ vptr=((& QDockWidget::_ZTV11QDockWidget) + 16)
+ QWidget (0x0x7f096c7da620) 0
+ primary-for QDockWidget (0x0x7f096a54f000)
+ QObject (0x0x7f096a6065a0) 0
+ primary-for QWidget (0x0x7f096c7da620)
+ QPaintDevice (0x0x7f096a606600) 16
+ vptr=((& QDockWidget::_ZTV11QDockWidget) + 448)
+
+Class QTileRules
+ size=8 align=4
+ base size=8 base align=4
+QTileRules (0x0x7f0969b2a540) 0
+
+Class QErrorMessage::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QErrorMessage::QPrivateSignal (0x0x7f0969b2ad20) 0 empty
+
+Vtable for QErrorMessage
+QErrorMessage::_ZTV13QErrorMessage: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QErrorMessage)
+16 (int (*)(...))QErrorMessage::metaObject
+24 (int (*)(...))QErrorMessage::qt_metacast
+32 (int (*)(...))QErrorMessage::qt_metacall
+40 (int (*)(...))QErrorMessage::~QErrorMessage
+48 (int (*)(...))QErrorMessage::~QErrorMessage
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QDialog::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QDialog::setVisible
+128 (int (*)(...))QDialog::sizeHint
+136 (int (*)(...))QDialog::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QDialog::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QDialog::resizeEvent
+280 (int (*)(...))QDialog::closeEvent
+288 (int (*)(...))QDialog::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QDialog::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QErrorMessage::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDialog::open
+440 (int (*)(...))QDialog::exec
+448 (int (*)(...))QErrorMessage::done
+456 (int (*)(...))QDialog::accept
+464 (int (*)(...))QDialog::reject
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI13QErrorMessage)
+488 (int (*)(...))QErrorMessage::_ZThn16_N13QErrorMessageD1Ev
+496 (int (*)(...))QErrorMessage::_ZThn16_N13QErrorMessageD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QErrorMessage
+ size=48 align=8
+ base size=48 base align=8
+QErrorMessage (0x0x7f096a54f6e8) 0
+ vptr=((& QErrorMessage::_ZTV13QErrorMessage) + 16)
+ QDialog (0x0x7f096a54f750) 0
+ primary-for QErrorMessage (0x0x7f096a54f6e8)
+ QWidget (0x0x7f096c84dcb0) 0
+ primary-for QDialog (0x0x7f096a54f750)
+ QObject (0x0x7f0969b2ac60) 0
+ primary-for QWidget (0x0x7f096c84dcb0)
+ QPaintDevice (0x0x7f0969b2acc0) 16
+ vptr=((& QErrorMessage::_ZTV13QErrorMessage) + 488)
+
+Class QFileDialog::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFileDialog::QPrivateSignal (0x0x7f09683b6000) 0 empty
+
+Vtable for QFileDialog
+QFileDialog::_ZTV11QFileDialog: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFileDialog)
+16 (int (*)(...))QFileDialog::metaObject
+24 (int (*)(...))QFileDialog::qt_metacast
+32 (int (*)(...))QFileDialog::qt_metacall
+40 (int (*)(...))QFileDialog::~QFileDialog
+48 (int (*)(...))QFileDialog::~QFileDialog
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QDialog::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QFileDialog::setVisible
+128 (int (*)(...))QDialog::sizeHint
+136 (int (*)(...))QDialog::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QDialog::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QDialog::resizeEvent
+280 (int (*)(...))QDialog::closeEvent
+288 (int (*)(...))QDialog::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QDialog::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFileDialog::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDialog::open
+440 (int (*)(...))QDialog::exec
+448 (int (*)(...))QFileDialog::done
+456 (int (*)(...))QFileDialog::accept
+464 (int (*)(...))QDialog::reject
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI11QFileDialog)
+488 (int (*)(...))QFileDialog::_ZThn16_N11QFileDialogD1Ev
+496 (int (*)(...))QFileDialog::_ZThn16_N11QFileDialogD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QFileDialog
+ size=48 align=8
+ base size=48 base align=8
+QFileDialog (0x0x7f096a54f7b8) 0
+ vptr=((& QFileDialog::_ZTV11QFileDialog) + 16)
+ QDialog (0x0x7f096a54f820) 0
+ primary-for QFileDialog (0x0x7f096a54f7b8)
+ QWidget (0x0x7f096c84de00) 0
+ primary-for QDialog (0x0x7f096a54f820)
+ QObject (0x0x7f0969b2af00) 0
+ primary-for QWidget (0x0x7f096c84de00)
+ QPaintDevice (0x0x7f0969b2af60) 16
+ vptr=((& QFileDialog::_ZTV11QFileDialog) + 488)
+
+Class QFileSystemModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFileSystemModel::QPrivateSignal (0x0x7f09683b6f00) 0 empty
+
+Vtable for QFileSystemModel
+QFileSystemModel::_ZTV16QFileSystemModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QFileSystemModel)
+16 (int (*)(...))QFileSystemModel::metaObject
+24 (int (*)(...))QFileSystemModel::qt_metacast
+32 (int (*)(...))QFileSystemModel::qt_metacall
+40 (int (*)(...))QFileSystemModel::~QFileSystemModel
+48 (int (*)(...))QFileSystemModel::~QFileSystemModel
+56 (int (*)(...))QFileSystemModel::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QFileSystemModel::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileSystemModel::index
+120 (int (*)(...))QFileSystemModel::parent
+128 (int (*)(...))QFileSystemModel::sibling
+136 (int (*)(...))QFileSystemModel::rowCount
+144 (int (*)(...))QFileSystemModel::columnCount
+152 (int (*)(...))QFileSystemModel::hasChildren
+160 (int (*)(...))QFileSystemModel::data
+168 (int (*)(...))QFileSystemModel::setData
+176 (int (*)(...))QFileSystemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QFileSystemModel::mimeTypes
+216 (int (*)(...))QFileSystemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QFileSystemModel::dropMimeData
+240 (int (*)(...))QFileSystemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QFileSystemModel::fetchMore
+312 (int (*)(...))QFileSystemModel::canFetchMore
+320 (int (*)(...))QFileSystemModel::flags
+328 (int (*)(...))QFileSystemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QFileSystemModel
+ size=16 align=8
+ base size=16 base align=8
+QFileSystemModel (0x0x7f096a54f958) 0
+ vptr=((& QFileSystemModel::_ZTV16QFileSystemModel) + 16)
+ QAbstractItemModel (0x0x7f096a54f9c0) 0
+ primary-for QFileSystemModel (0x0x7f096a54f958)
+ QObject (0x0x7f09683b6ea0) 0
+ primary-for QAbstractItemModel (0x0x7f096a54f9c0)
+
+Class QFocusFrame::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFocusFrame::QPrivateSignal (0x0x7f0966a7aa20) 0 empty
+
+Vtable for QFocusFrame
+QFocusFrame::_ZTV11QFocusFrame: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFocusFrame)
+16 (int (*)(...))QFocusFrame::metaObject
+24 (int (*)(...))QFocusFrame::qt_metacast
+32 (int (*)(...))QFocusFrame::qt_metacall
+40 (int (*)(...))QFocusFrame::~QFocusFrame
+48 (int (*)(...))QFocusFrame::~QFocusFrame
+56 (int (*)(...))QFocusFrame::event
+64 (int (*)(...))QFocusFrame::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QFocusFrame::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI11QFocusFrame)
+448 (int (*)(...))QFocusFrame::_ZThn16_N11QFocusFrameD1Ev
+456 (int (*)(...))QFocusFrame::_ZThn16_N11QFocusFrameD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QFocusFrame
+ size=48 align=8
+ base size=48 base align=8
+QFocusFrame (0x0x7f096a54faf8) 0
+ vptr=((& QFocusFrame::_ZTV11QFocusFrame) + 16)
+ QWidget (0x0x7f096c6299a0) 0
+ primary-for QFocusFrame (0x0x7f096a54faf8)
+ QObject (0x0x7f0966a7a960) 0
+ primary-for QWidget (0x0x7f096c6299a0)
+ QPaintDevice (0x0x7f0966a7a9c0) 16
+ vptr=((& QFocusFrame::_ZTV11QFocusFrame) + 448)
+
+Class QFontComboBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFontComboBox::QPrivateSignal (0x0x7f0966a7acc0) 0 empty
+
+Vtable for QFontComboBox
+QFontComboBox::_ZTV13QFontComboBox: 66 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QFontComboBox)
+16 (int (*)(...))QFontComboBox::metaObject
+24 (int (*)(...))QFontComboBox::qt_metacast
+32 (int (*)(...))QFontComboBox::qt_metacall
+40 (int (*)(...))QFontComboBox::~QFontComboBox
+48 (int (*)(...))QFontComboBox::~QFontComboBox
+56 (int (*)(...))QFontComboBox::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QFontComboBox::sizeHint
+136 (int (*)(...))QComboBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QComboBox::mousePressEvent
+176 (int (*)(...))QComboBox::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QComboBox::wheelEvent
+208 (int (*)(...))QComboBox::keyPressEvent
+216 (int (*)(...))QComboBox::keyReleaseEvent
+224 (int (*)(...))QComboBox::focusInEvent
+232 (int (*)(...))QComboBox::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QComboBox::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QComboBox::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QComboBox::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QComboBox::showEvent
+352 (int (*)(...))QComboBox::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QComboBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QComboBox::inputMethodEvent
+416 (int (*)(...))QComboBox::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QComboBox::showPopup
+440 (int (*)(...))QComboBox::hidePopup
+448 (int (*)(...))-16
+456 (int (*)(...))(& _ZTI13QFontComboBox)
+464 (int (*)(...))QFontComboBox::_ZThn16_N13QFontComboBoxD1Ev
+472 (int (*)(...))QFontComboBox::_ZThn16_N13QFontComboBoxD0Ev
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QFontComboBox
+ size=48 align=8
+ base size=48 base align=8
+QFontComboBox (0x0x7f096a54fb60) 0
+ vptr=((& QFontComboBox::_ZTV13QFontComboBox) + 16)
+ QComboBox (0x0x7f096a54fbc8) 0
+ primary-for QFontComboBox (0x0x7f096a54fb60)
+ QWidget (0x0x7f096c629a10) 0
+ primary-for QComboBox (0x0x7f096a54fbc8)
+ QObject (0x0x7f0966a7ac00) 0
+ primary-for QWidget (0x0x7f096c629a10)
+ QPaintDevice (0x0x7f0966a7ac60) 16
+ vptr=((& QFontComboBox::_ZTV13QFontComboBox) + 464)
+
+Class QFontDialog::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFontDialog::QPrivateSignal (0x0x7f0966029720) 0 empty
+
+Vtable for QFontDialog
+QFontDialog::_ZTV11QFontDialog: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFontDialog)
+16 (int (*)(...))QFontDialog::metaObject
+24 (int (*)(...))QFontDialog::qt_metacast
+32 (int (*)(...))QFontDialog::qt_metacall
+40 (int (*)(...))QFontDialog::~QFontDialog
+48 (int (*)(...))QFontDialog::~QFontDialog
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QFontDialog::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QFontDialog::setVisible
+128 (int (*)(...))QDialog::sizeHint
+136 (int (*)(...))QDialog::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QDialog::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QDialog::resizeEvent
+280 (int (*)(...))QDialog::closeEvent
+288 (int (*)(...))QDialog::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QDialog::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFontDialog::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDialog::open
+440 (int (*)(...))QDialog::exec
+448 (int (*)(...))QFontDialog::done
+456 (int (*)(...))QDialog::accept
+464 (int (*)(...))QDialog::reject
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI11QFontDialog)
+488 (int (*)(...))QFontDialog::_ZThn16_N11QFontDialogD1Ev
+496 (int (*)(...))QFontDialog::_ZThn16_N11QFontDialogD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QFontDialog
+ size=48 align=8
+ base size=48 base align=8
+QFontDialog (0x0x7f096a54fd68) 0
+ vptr=((& QFontDialog::_ZTV11QFontDialog) + 16)
+ QDialog (0x0x7f096a54fdd0) 0
+ primary-for QFontDialog (0x0x7f096a54fd68)
+ QWidget (0x0x7f096c6758c0) 0
+ primary-for QDialog (0x0x7f096a54fdd0)
+ QObject (0x0x7f0966029660) 0
+ primary-for QWidget (0x0x7f096c6758c0)
+ QPaintDevice (0x0x7f09660296c0) 16
+ vptr=((& QFontDialog::_ZTV11QFontDialog) + 488)
+
+Class QFormLayout::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFormLayout::QPrivateSignal (0x0x7f09658b9360) 0 empty
+
+Class QFormLayout::TakeRowResult
+ size=16 align=8
+ base size=16 base align=8
+QFormLayout::TakeRowResult (0x0x7f09658b93c0) 0
+
+Vtable for QFormLayout
+QFormLayout::_ZTV11QFormLayout: 50 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFormLayout)
+16 (int (*)(...))QFormLayout::metaObject
+24 (int (*)(...))QFormLayout::qt_metacast
+32 (int (*)(...))QFormLayout::qt_metacall
+40 (int (*)(...))QFormLayout::~QFormLayout
+48 (int (*)(...))QFormLayout::~QFormLayout
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QLayout::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFormLayout::invalidate
+120 (int (*)(...))QLayout::geometry
+128 (int (*)(...))QFormLayout::addItem
+136 (int (*)(...))QFormLayout::expandingDirections
+144 (int (*)(...))QFormLayout::minimumSize
+152 (int (*)(...))QLayout::maximumSize
+160 (int (*)(...))QFormLayout::setGeometry
+168 (int (*)(...))QFormLayout::itemAt
+176 (int (*)(...))QFormLayout::takeAt
+184 (int (*)(...))QLayout::indexOf
+192 (int (*)(...))QFormLayout::count
+200 (int (*)(...))QLayout::isEmpty
+208 (int (*)(...))QLayout::controlTypes
+216 (int (*)(...))QLayout::layout
+224 (int (*)(...))QFormLayout::sizeHint
+232 (int (*)(...))QFormLayout::hasHeightForWidth
+240 (int (*)(...))QFormLayout::heightForWidth
+248 (int (*)(...))-16
+256 (int (*)(...))(& _ZTI11QFormLayout)
+264 (int (*)(...))QFormLayout::_ZThn16_N11QFormLayoutD1Ev
+272 (int (*)(...))QFormLayout::_ZThn16_N11QFormLayoutD0Ev
+280 (int (*)(...))QFormLayout::_ZThn16_NK11QFormLayout8sizeHintEv
+288 (int (*)(...))QFormLayout::_ZThn16_NK11QFormLayout11minimumSizeEv
+296 (int (*)(...))QLayout::_ZThn16_NK7QLayout11maximumSizeEv
+304 (int (*)(...))QFormLayout::_ZThn16_NK11QFormLayout19expandingDirectionsEv
+312 (int (*)(...))QFormLayout::_ZThn16_N11QFormLayout11setGeometryERK5QRect
+320 (int (*)(...))QLayout::_ZThn16_NK7QLayout8geometryEv
+328 (int (*)(...))QLayout::_ZThn16_NK7QLayout7isEmptyEv
+336 (int (*)(...))QFormLayout::_ZThn16_NK11QFormLayout17hasHeightForWidthEv
+344 (int (*)(...))QFormLayout::_ZThn16_NK11QFormLayout14heightForWidthEi
+352 (int (*)(...))QLayoutItem::minimumHeightForWidth
+360 (int (*)(...))QFormLayout::_ZThn16_N11QFormLayout10invalidateEv
+368 (int (*)(...))QLayoutItem::widget
+376 (int (*)(...))QLayout::_ZThn16_N7QLayout6layoutEv
+384 (int (*)(...))QLayoutItem::spacerItem
+392 (int (*)(...))QLayout::_ZThn16_NK7QLayout12controlTypesEv
+
+Class QFormLayout
+ size=32 align=8
+ base size=28 base align=8
+QFormLayout (0x0x7f096a54ff08) 0
+ vptr=((& QFormLayout::_ZTV11QFormLayout) + 16)
+ QLayout (0x0x7f096c6bbaf0) 0
+ primary-for QFormLayout (0x0x7f096a54ff08)
+ QObject (0x0x7f09658b92a0) 0
+ primary-for QLayout (0x0x7f096c6bbaf0)
+ QLayoutItem (0x0x7f09658b9300) 16
+ vptr=((& QFormLayout::_ZTV11QFormLayout) + 264)
+
+Class QGesture::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGesture::QPrivateSignal (0x0x7f096503b7e0) 0 empty
+
+Vtable for QGesture
+QGesture::_ZTV8QGesture: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QGesture)
+16 (int (*)(...))QGesture::metaObject
+24 (int (*)(...))QGesture::qt_metacast
+32 (int (*)(...))QGesture::qt_metacall
+40 (int (*)(...))QGesture::~QGesture
+48 (int (*)(...))QGesture::~QGesture
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QGesture
+ size=16 align=8
+ base size=16 base align=8
+QGesture (0x0x7f0964eb1270) 0
+ vptr=((& QGesture::_ZTV8QGesture) + 16)
+ QObject (0x0x7f096503b780) 0
+ primary-for QGesture (0x0x7f0964eb1270)
+
+Class QPanGesture::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPanGesture::QPrivateSignal (0x0x7f096503ba20) 0 empty
+
+Vtable for QPanGesture
+QPanGesture::_ZTV11QPanGesture: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QPanGesture)
+16 (int (*)(...))QPanGesture::metaObject
+24 (int (*)(...))QPanGesture::qt_metacast
+32 (int (*)(...))QPanGesture::qt_metacall
+40 (int (*)(...))QPanGesture::~QPanGesture
+48 (int (*)(...))QPanGesture::~QPanGesture
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QPanGesture
+ size=16 align=8
+ base size=16 base align=8
+QPanGesture (0x0x7f0964eb12d8) 0
+ vptr=((& QPanGesture::_ZTV11QPanGesture) + 16)
+ QGesture (0x0x7f0964eb1340) 0
+ primary-for QPanGesture (0x0x7f0964eb12d8)
+ QObject (0x0x7f096503b9c0) 0
+ primary-for QGesture (0x0x7f0964eb1340)
+
+Class QPinchGesture::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPinchGesture::QPrivateSignal (0x0x7f096503bc60) 0 empty
+
+Vtable for QPinchGesture
+QPinchGesture::_ZTV13QPinchGesture: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QPinchGesture)
+16 (int (*)(...))QPinchGesture::metaObject
+24 (int (*)(...))QPinchGesture::qt_metacast
+32 (int (*)(...))QPinchGesture::qt_metacall
+40 (int (*)(...))QPinchGesture::~QPinchGesture
+48 (int (*)(...))QPinchGesture::~QPinchGesture
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QPinchGesture
+ size=16 align=8
+ base size=16 base align=8
+QPinchGesture (0x0x7f0964eb13a8) 0
+ vptr=((& QPinchGesture::_ZTV13QPinchGesture) + 16)
+ QGesture (0x0x7f0964eb1410) 0
+ primary-for QPinchGesture (0x0x7f0964eb13a8)
+ QObject (0x0x7f096503bc00) 0
+ primary-for QGesture (0x0x7f0964eb1410)
+
+Class QSwipeGesture::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSwipeGesture::QPrivateSignal (0x0x7f0966469900) 0 empty
+
+Vtable for QSwipeGesture
+QSwipeGesture::_ZTV13QSwipeGesture: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSwipeGesture)
+16 (int (*)(...))QSwipeGesture::metaObject
+24 (int (*)(...))QSwipeGesture::qt_metacast
+32 (int (*)(...))QSwipeGesture::qt_metacall
+40 (int (*)(...))QSwipeGesture::~QSwipeGesture
+48 (int (*)(...))QSwipeGesture::~QSwipeGesture
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSwipeGesture
+ size=16 align=8
+ base size=16 base align=8
+QSwipeGesture (0x0x7f0964eb1548) 0
+ vptr=((& QSwipeGesture::_ZTV13QSwipeGesture) + 16)
+ QGesture (0x0x7f0964eb15b0) 0
+ primary-for QSwipeGesture (0x0x7f0964eb1548)
+ QObject (0x0x7f09664698a0) 0
+ primary-for QGesture (0x0x7f0964eb15b0)
+
+Class QTapGesture::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTapGesture::QPrivateSignal (0x0x7f0966469c60) 0 empty
+
+Vtable for QTapGesture
+QTapGesture::_ZTV11QTapGesture: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTapGesture)
+16 (int (*)(...))QTapGesture::metaObject
+24 (int (*)(...))QTapGesture::qt_metacast
+32 (int (*)(...))QTapGesture::qt_metacall
+40 (int (*)(...))QTapGesture::~QTapGesture
+48 (int (*)(...))QTapGesture::~QTapGesture
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTapGesture
+ size=16 align=8
+ base size=16 base align=8
+QTapGesture (0x0x7f0964eb1618) 0
+ vptr=((& QTapGesture::_ZTV11QTapGesture) + 16)
+ QGesture (0x0x7f0964eb1680) 0
+ primary-for QTapGesture (0x0x7f0964eb1618)
+ QObject (0x0x7f0966469c00) 0
+ primary-for QGesture (0x0x7f0964eb1680)
+
+Class QTapAndHoldGesture::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTapAndHoldGesture::QPrivateSignal (0x0x7f0966469ea0) 0 empty
+
+Vtable for QTapAndHoldGesture
+QTapAndHoldGesture::_ZTV18QTapAndHoldGesture: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QTapAndHoldGesture)
+16 (int (*)(...))QTapAndHoldGesture::metaObject
+24 (int (*)(...))QTapAndHoldGesture::qt_metacast
+32 (int (*)(...))QTapAndHoldGesture::qt_metacall
+40 (int (*)(...))QTapAndHoldGesture::~QTapAndHoldGesture
+48 (int (*)(...))QTapAndHoldGesture::~QTapAndHoldGesture
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTapAndHoldGesture
+ size=16 align=8
+ base size=16 base align=8
+QTapAndHoldGesture (0x0x7f0964eb16e8) 0
+ vptr=((& QTapAndHoldGesture::_ZTV18QTapAndHoldGesture) + 16)
+ QGesture (0x0x7f0964eb1750) 0
+ primary-for QTapAndHoldGesture (0x0x7f0964eb16e8)
+ QObject (0x0x7f0966469e40) 0
+ primary-for QGesture (0x0x7f0964eb1750)
+
+Vtable for QGestureEvent
+QGestureEvent::_ZTV13QGestureEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QGestureEvent)
+16 (int (*)(...))QGestureEvent::~QGestureEvent
+24 (int (*)(...))QGestureEvent::~QGestureEvent
+
+Class QGestureEvent
+ size=56 align=8
+ base size=56 base align=8
+QGestureEvent (0x0x7f0964eb17b8) 0
+ vptr=((& QGestureEvent::_ZTV13QGestureEvent) + 16)
+ QEvent (0x0x7f096e54b0c0) 0
+ primary-for QGestureEvent (0x0x7f0964eb17b8)
+
+Vtable for QGestureRecognizer
+QGestureRecognizer::_ZTV18QGestureRecognizer: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QGestureRecognizer)
+16 0
+24 0
+32 (int (*)(...))QGestureRecognizer::create
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))QGestureRecognizer::reset
+
+Class QGestureRecognizer
+ size=8 align=8
+ base size=8 base align=8
+QGestureRecognizer (0x0x7f096e54b540) 0 nearly-empty
+ vptr=((& QGestureRecognizer::_ZTV18QGestureRecognizer) + 16)
+
+Vtable for QGraphicsItem
+QGraphicsItem::_ZTV13QGraphicsItem: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QGraphicsItem)
+16 0
+24 0
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))QGraphicsItem::shape
+56 (int (*)(...))QGraphicsItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QGraphicsItem::isObscuredBy
+88 (int (*)(...))QGraphicsItem::opaqueArea
+96 (int (*)(...))__cxa_pure_virtual
+104 (int (*)(...))QGraphicsItem::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsItem::supportsExtension
+296 (int (*)(...))QGraphicsItem::setExtension
+304 (int (*)(...))QGraphicsItem::extension
+
+Class QGraphicsItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsItem (0x0x7f096e54bc60) 0
+ vptr=((& QGraphicsItem::_ZTV13QGraphicsItem) + 16)
+
+Class QGraphicsObject::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsObject::QPrivateSignal (0x0x7f09645c8240) 0 empty
+
+Vtable for QGraphicsObject
+QGraphicsObject::_ZTV15QGraphicsObject: 53 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QGraphicsObject)
+16 (int (*)(...))QGraphicsObject::metaObject
+24 (int (*)(...))QGraphicsObject::qt_metacast
+32 (int (*)(...))QGraphicsObject::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QGraphicsObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))-16
+120 (int (*)(...))(& _ZTI15QGraphicsObject)
+128 0
+136 0
+144 (int (*)(...))QGraphicsItem::advance
+152 (int (*)(...))__cxa_pure_virtual
+160 (int (*)(...))QGraphicsItem::shape
+168 (int (*)(...))QGraphicsItem::contains
+176 (int (*)(...))QGraphicsItem::collidesWithItem
+184 (int (*)(...))QGraphicsItem::collidesWithPath
+192 (int (*)(...))QGraphicsItem::isObscuredBy
+200 (int (*)(...))QGraphicsItem::opaqueArea
+208 (int (*)(...))__cxa_pure_virtual
+216 (int (*)(...))QGraphicsItem::type
+224 (int (*)(...))QGraphicsItem::sceneEventFilter
+232 (int (*)(...))QGraphicsItem::sceneEvent
+240 (int (*)(...))QGraphicsItem::contextMenuEvent
+248 (int (*)(...))QGraphicsItem::dragEnterEvent
+256 (int (*)(...))QGraphicsItem::dragLeaveEvent
+264 (int (*)(...))QGraphicsItem::dragMoveEvent
+272 (int (*)(...))QGraphicsItem::dropEvent
+280 (int (*)(...))QGraphicsItem::focusInEvent
+288 (int (*)(...))QGraphicsItem::focusOutEvent
+296 (int (*)(...))QGraphicsItem::hoverEnterEvent
+304 (int (*)(...))QGraphicsItem::hoverMoveEvent
+312 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+320 (int (*)(...))QGraphicsItem::keyPressEvent
+328 (int (*)(...))QGraphicsItem::keyReleaseEvent
+336 (int (*)(...))QGraphicsItem::mousePressEvent
+344 (int (*)(...))QGraphicsItem::mouseMoveEvent
+352 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+360 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+368 (int (*)(...))QGraphicsItem::wheelEvent
+376 (int (*)(...))QGraphicsItem::inputMethodEvent
+384 (int (*)(...))QGraphicsItem::inputMethodQuery
+392 (int (*)(...))QGraphicsItem::itemChange
+400 (int (*)(...))QGraphicsItem::supportsExtension
+408 (int (*)(...))QGraphicsItem::setExtension
+416 (int (*)(...))QGraphicsItem::extension
+
+Class QGraphicsObject
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsObject (0x0x7f096c2bc460) 0
+ vptr=((& QGraphicsObject::_ZTV15QGraphicsObject) + 16)
+ QObject (0x0x7f09645c8180) 0
+ primary-for QGraphicsObject (0x0x7f096c2bc460)
+ QGraphicsItem (0x0x7f09645c81e0) 16
+ vptr=((& QGraphicsObject::_ZTV15QGraphicsObject) + 128)
+
+Vtable for QAbstractGraphicsShapeItem
+QAbstractGraphicsShapeItem::_ZTV26QAbstractGraphicsShapeItem: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAbstractGraphicsShapeItem)
+16 0
+24 0
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))QGraphicsItem::shape
+56 (int (*)(...))QGraphicsItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QAbstractGraphicsShapeItem::isObscuredBy
+88 (int (*)(...))QAbstractGraphicsShapeItem::opaqueArea
+96 (int (*)(...))__cxa_pure_virtual
+104 (int (*)(...))QGraphicsItem::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsItem::supportsExtension
+296 (int (*)(...))QGraphicsItem::setExtension
+304 (int (*)(...))QGraphicsItem::extension
+
+Class QAbstractGraphicsShapeItem
+ size=16 align=8
+ base size=16 base align=8
+QAbstractGraphicsShapeItem (0x0x7f0964eb1a28) 0
+ vptr=((& QAbstractGraphicsShapeItem::_ZTV26QAbstractGraphicsShapeItem) + 16)
+ QGraphicsItem (0x0x7f09645c8360) 0
+ primary-for QAbstractGraphicsShapeItem (0x0x7f0964eb1a28)
+
+Vtable for QGraphicsPathItem
+QGraphicsPathItem::_ZTV17QGraphicsPathItem: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QGraphicsPathItem)
+16 (int (*)(...))QGraphicsPathItem::~QGraphicsPathItem
+24 (int (*)(...))QGraphicsPathItem::~QGraphicsPathItem
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))QGraphicsPathItem::boundingRect
+48 (int (*)(...))QGraphicsPathItem::shape
+56 (int (*)(...))QGraphicsPathItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QGraphicsPathItem::isObscuredBy
+88 (int (*)(...))QGraphicsPathItem::opaqueArea
+96 (int (*)(...))QGraphicsPathItem::paint
+104 (int (*)(...))QGraphicsPathItem::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsPathItem::supportsExtension
+296 (int (*)(...))QGraphicsPathItem::setExtension
+304 (int (*)(...))QGraphicsPathItem::extension
+
+Class QGraphicsPathItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsPathItem (0x0x7f0964eb1a90) 0
+ vptr=((& QGraphicsPathItem::_ZTV17QGraphicsPathItem) + 16)
+ QAbstractGraphicsShapeItem (0x0x7f0964eb1af8) 0
+ primary-for QGraphicsPathItem (0x0x7f0964eb1a90)
+ QGraphicsItem (0x0x7f09645c8480) 0
+ primary-for QAbstractGraphicsShapeItem (0x0x7f0964eb1af8)
+
+Vtable for QGraphicsRectItem
+QGraphicsRectItem::_ZTV17QGraphicsRectItem: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QGraphicsRectItem)
+16 (int (*)(...))QGraphicsRectItem::~QGraphicsRectItem
+24 (int (*)(...))QGraphicsRectItem::~QGraphicsRectItem
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))QGraphicsRectItem::boundingRect
+48 (int (*)(...))QGraphicsRectItem::shape
+56 (int (*)(...))QGraphicsRectItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QGraphicsRectItem::isObscuredBy
+88 (int (*)(...))QGraphicsRectItem::opaqueArea
+96 (int (*)(...))QGraphicsRectItem::paint
+104 (int (*)(...))QGraphicsRectItem::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsRectItem::supportsExtension
+296 (int (*)(...))QGraphicsRectItem::setExtension
+304 (int (*)(...))QGraphicsRectItem::extension
+
+Class QGraphicsRectItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsRectItem (0x0x7f0964eb1b60) 0
+ vptr=((& QGraphicsRectItem::_ZTV17QGraphicsRectItem) + 16)
+ QAbstractGraphicsShapeItem (0x0x7f0964eb1bc8) 0
+ primary-for QGraphicsRectItem (0x0x7f0964eb1b60)
+ QGraphicsItem (0x0x7f09645c85a0) 0
+ primary-for QAbstractGraphicsShapeItem (0x0x7f0964eb1bc8)
+
+Vtable for QGraphicsEllipseItem
+QGraphicsEllipseItem::_ZTV20QGraphicsEllipseItem: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QGraphicsEllipseItem)
+16 (int (*)(...))QGraphicsEllipseItem::~QGraphicsEllipseItem
+24 (int (*)(...))QGraphicsEllipseItem::~QGraphicsEllipseItem
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))QGraphicsEllipseItem::boundingRect
+48 (int (*)(...))QGraphicsEllipseItem::shape
+56 (int (*)(...))QGraphicsEllipseItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QGraphicsEllipseItem::isObscuredBy
+88 (int (*)(...))QGraphicsEllipseItem::opaqueArea
+96 (int (*)(...))QGraphicsEllipseItem::paint
+104 (int (*)(...))QGraphicsEllipseItem::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsEllipseItem::supportsExtension
+296 (int (*)(...))QGraphicsEllipseItem::setExtension
+304 (int (*)(...))QGraphicsEllipseItem::extension
+
+Class QGraphicsEllipseItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsEllipseItem (0x0x7f0964eb1c30) 0
+ vptr=((& QGraphicsEllipseItem::_ZTV20QGraphicsEllipseItem) + 16)
+ QAbstractGraphicsShapeItem (0x0x7f0964eb1c98) 0
+ primary-for QGraphicsEllipseItem (0x0x7f0964eb1c30)
+ QGraphicsItem (0x0x7f09645c8720) 0
+ primary-for QAbstractGraphicsShapeItem (0x0x7f0964eb1c98)
+
+Vtable for QGraphicsPolygonItem
+QGraphicsPolygonItem::_ZTV20QGraphicsPolygonItem: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QGraphicsPolygonItem)
+16 (int (*)(...))QGraphicsPolygonItem::~QGraphicsPolygonItem
+24 (int (*)(...))QGraphicsPolygonItem::~QGraphicsPolygonItem
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))QGraphicsPolygonItem::boundingRect
+48 (int (*)(...))QGraphicsPolygonItem::shape
+56 (int (*)(...))QGraphicsPolygonItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QGraphicsPolygonItem::isObscuredBy
+88 (int (*)(...))QGraphicsPolygonItem::opaqueArea
+96 (int (*)(...))QGraphicsPolygonItem::paint
+104 (int (*)(...))QGraphicsPolygonItem::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsPolygonItem::supportsExtension
+296 (int (*)(...))QGraphicsPolygonItem::setExtension
+304 (int (*)(...))QGraphicsPolygonItem::extension
+
+Class QGraphicsPolygonItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsPolygonItem (0x0x7f0964eb1d00) 0
+ vptr=((& QGraphicsPolygonItem::_ZTV20QGraphicsPolygonItem) + 16)
+ QAbstractGraphicsShapeItem (0x0x7f0964eb1d68) 0
+ primary-for QGraphicsPolygonItem (0x0x7f0964eb1d00)
+ QGraphicsItem (0x0x7f09645c88a0) 0
+ primary-for QAbstractGraphicsShapeItem (0x0x7f0964eb1d68)
+
+Vtable for QGraphicsLineItem
+QGraphicsLineItem::_ZTV17QGraphicsLineItem: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QGraphicsLineItem)
+16 (int (*)(...))QGraphicsLineItem::~QGraphicsLineItem
+24 (int (*)(...))QGraphicsLineItem::~QGraphicsLineItem
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))QGraphicsLineItem::boundingRect
+48 (int (*)(...))QGraphicsLineItem::shape
+56 (int (*)(...))QGraphicsLineItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QGraphicsLineItem::isObscuredBy
+88 (int (*)(...))QGraphicsLineItem::opaqueArea
+96 (int (*)(...))QGraphicsLineItem::paint
+104 (int (*)(...))QGraphicsLineItem::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsLineItem::supportsExtension
+296 (int (*)(...))QGraphicsLineItem::setExtension
+304 (int (*)(...))QGraphicsLineItem::extension
+
+Class QGraphicsLineItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsLineItem (0x0x7f0964eb1dd0) 0
+ vptr=((& QGraphicsLineItem::_ZTV17QGraphicsLineItem) + 16)
+ QGraphicsItem (0x0x7f09645c89c0) 0
+ primary-for QGraphicsLineItem (0x0x7f0964eb1dd0)
+
+Vtable for QGraphicsPixmapItem
+QGraphicsPixmapItem::_ZTV19QGraphicsPixmapItem: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QGraphicsPixmapItem)
+16 (int (*)(...))QGraphicsPixmapItem::~QGraphicsPixmapItem
+24 (int (*)(...))QGraphicsPixmapItem::~QGraphicsPixmapItem
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))QGraphicsPixmapItem::boundingRect
+48 (int (*)(...))QGraphicsPixmapItem::shape
+56 (int (*)(...))QGraphicsPixmapItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QGraphicsPixmapItem::isObscuredBy
+88 (int (*)(...))QGraphicsPixmapItem::opaqueArea
+96 (int (*)(...))QGraphicsPixmapItem::paint
+104 (int (*)(...))QGraphicsPixmapItem::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsPixmapItem::supportsExtension
+296 (int (*)(...))QGraphicsPixmapItem::setExtension
+304 (int (*)(...))QGraphicsPixmapItem::extension
+
+Class QGraphicsPixmapItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsPixmapItem (0x0x7f0964eb1e38) 0
+ vptr=((& QGraphicsPixmapItem::_ZTV19QGraphicsPixmapItem) + 16)
+ QGraphicsItem (0x0x7f09645c8b40) 0
+ primary-for QGraphicsPixmapItem (0x0x7f0964eb1e38)
+
+Class QGraphicsTextItem::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsTextItem::QPrivateSignal (0x0x7f09645c8d80) 0 empty
+
+Vtable for QGraphicsTextItem
+QGraphicsTextItem::_ZTV17QGraphicsTextItem: 82 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QGraphicsTextItem)
+16 (int (*)(...))QGraphicsTextItem::metaObject
+24 (int (*)(...))QGraphicsTextItem::qt_metacast
+32 (int (*)(...))QGraphicsTextItem::qt_metacall
+40 (int (*)(...))QGraphicsTextItem::~QGraphicsTextItem
+48 (int (*)(...))QGraphicsTextItem::~QGraphicsTextItem
+56 (int (*)(...))QGraphicsObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsTextItem::boundingRect
+120 (int (*)(...))QGraphicsTextItem::shape
+128 (int (*)(...))QGraphicsTextItem::contains
+136 (int (*)(...))QGraphicsTextItem::paint
+144 (int (*)(...))QGraphicsTextItem::isObscuredBy
+152 (int (*)(...))QGraphicsTextItem::opaqueArea
+160 (int (*)(...))QGraphicsTextItem::type
+168 (int (*)(...))QGraphicsTextItem::sceneEvent
+176 (int (*)(...))QGraphicsTextItem::mousePressEvent
+184 (int (*)(...))QGraphicsTextItem::mouseMoveEvent
+192 (int (*)(...))QGraphicsTextItem::mouseReleaseEvent
+200 (int (*)(...))QGraphicsTextItem::mouseDoubleClickEvent
+208 (int (*)(...))QGraphicsTextItem::contextMenuEvent
+216 (int (*)(...))QGraphicsTextItem::keyPressEvent
+224 (int (*)(...))QGraphicsTextItem::keyReleaseEvent
+232 (int (*)(...))QGraphicsTextItem::focusInEvent
+240 (int (*)(...))QGraphicsTextItem::focusOutEvent
+248 (int (*)(...))QGraphicsTextItem::dragEnterEvent
+256 (int (*)(...))QGraphicsTextItem::dragLeaveEvent
+264 (int (*)(...))QGraphicsTextItem::dragMoveEvent
+272 (int (*)(...))QGraphicsTextItem::dropEvent
+280 (int (*)(...))QGraphicsTextItem::inputMethodEvent
+288 (int (*)(...))QGraphicsTextItem::hoverEnterEvent
+296 (int (*)(...))QGraphicsTextItem::hoverMoveEvent
+304 (int (*)(...))QGraphicsTextItem::hoverLeaveEvent
+312 (int (*)(...))QGraphicsTextItem::inputMethodQuery
+320 (int (*)(...))QGraphicsTextItem::supportsExtension
+328 (int (*)(...))QGraphicsTextItem::setExtension
+336 (int (*)(...))QGraphicsTextItem::extension
+344 (int (*)(...))-16
+352 (int (*)(...))(& _ZTI17QGraphicsTextItem)
+360 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItemD1Ev
+368 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItemD0Ev
+376 (int (*)(...))QGraphicsItem::advance
+384 (int (*)(...))QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem12boundingRectEv
+392 (int (*)(...))QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem5shapeEv
+400 (int (*)(...))QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem8containsERK7QPointF
+408 (int (*)(...))QGraphicsItem::collidesWithItem
+416 (int (*)(...))QGraphicsItem::collidesWithPath
+424 (int (*)(...))QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem12isObscuredByEPK13QGraphicsItem
+432 (int (*)(...))QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem10opaqueAreaEv
+440 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget
+448 (int (*)(...))QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem4typeEv
+456 (int (*)(...))QGraphicsItem::sceneEventFilter
+464 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem10sceneEventEP6QEvent
+472 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem16contextMenuEventEP30QGraphicsSceneContextMenuEvent
+480 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem14dragEnterEventEP27QGraphicsSceneDragDropEvent
+488 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem14dragLeaveEventEP27QGraphicsSceneDragDropEvent
+496 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem13dragMoveEventEP27QGraphicsSceneDragDropEvent
+504 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem9dropEventEP27QGraphicsSceneDragDropEvent
+512 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem12focusInEventEP11QFocusEvent
+520 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem13focusOutEventEP11QFocusEvent
+528 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem15hoverEnterEventEP24QGraphicsSceneHoverEvent
+536 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem14hoverMoveEventEP24QGraphicsSceneHoverEvent
+544 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem15hoverLeaveEventEP24QGraphicsSceneHoverEvent
+552 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem13keyPressEventEP9QKeyEvent
+560 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem15keyReleaseEventEP9QKeyEvent
+568 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem15mousePressEventEP24QGraphicsSceneMouseEvent
+576 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem14mouseMoveEventEP24QGraphicsSceneMouseEvent
+584 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem17mouseReleaseEventEP24QGraphicsSceneMouseEvent
+592 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent
+600 (int (*)(...))QGraphicsItem::wheelEvent
+608 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem16inputMethodEventEP17QInputMethodEvent
+616 (int (*)(...))QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem16inputMethodQueryEN2Qt16InputMethodQueryE
+624 (int (*)(...))QGraphicsItem::itemChange
+632 (int (*)(...))QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem17supportsExtensionEN13QGraphicsItem9ExtensionE
+640 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem12setExtensionEN13QGraphicsItem9ExtensionERK8QVariant
+648 (int (*)(...))QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem9extensionERK8QVariant
+
+Class QGraphicsTextItem
+ size=40 align=8
+ base size=40 base align=8
+QGraphicsTextItem (0x0x7f0964eb1ea0) 0
+ vptr=((& QGraphicsTextItem::_ZTV17QGraphicsTextItem) + 16)
+ QGraphicsObject (0x0x7f096c30e310) 0
+ primary-for QGraphicsTextItem (0x0x7f0964eb1ea0)
+ QObject (0x0x7f09645c8cc0) 0
+ primary-for QGraphicsObject (0x0x7f096c30e310)
+ QGraphicsItem (0x0x7f09645c8d20) 16
+ vptr=((& QGraphicsTextItem::_ZTV17QGraphicsTextItem) + 360)
+
+Vtable for QGraphicsSimpleTextItem
+QGraphicsSimpleTextItem::_ZTV23QGraphicsSimpleTextItem: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QGraphicsSimpleTextItem)
+16 (int (*)(...))QGraphicsSimpleTextItem::~QGraphicsSimpleTextItem
+24 (int (*)(...))QGraphicsSimpleTextItem::~QGraphicsSimpleTextItem
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))QGraphicsSimpleTextItem::boundingRect
+48 (int (*)(...))QGraphicsSimpleTextItem::shape
+56 (int (*)(...))QGraphicsSimpleTextItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QGraphicsSimpleTextItem::isObscuredBy
+88 (int (*)(...))QGraphicsSimpleTextItem::opaqueArea
+96 (int (*)(...))QGraphicsSimpleTextItem::paint
+104 (int (*)(...))QGraphicsSimpleTextItem::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsSimpleTextItem::supportsExtension
+296 (int (*)(...))QGraphicsSimpleTextItem::setExtension
+304 (int (*)(...))QGraphicsSimpleTextItem::extension
+
+Class QGraphicsSimpleTextItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsSimpleTextItem (0x0x7f0967d58000) 0
+ vptr=((& QGraphicsSimpleTextItem::_ZTV23QGraphicsSimpleTextItem) + 16)
+ QAbstractGraphicsShapeItem (0x0x7f0967d58068) 0
+ primary-for QGraphicsSimpleTextItem (0x0x7f0967d58000)
+ QGraphicsItem (0x0x7f0967cf60c0) 0
+ primary-for QAbstractGraphicsShapeItem (0x0x7f0967d58068)
+
+Vtable for QGraphicsItemGroup
+QGraphicsItemGroup::_ZTV18QGraphicsItemGroup: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QGraphicsItemGroup)
+16 (int (*)(...))QGraphicsItemGroup::~QGraphicsItemGroup
+24 (int (*)(...))QGraphicsItemGroup::~QGraphicsItemGroup
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))QGraphicsItemGroup::boundingRect
+48 (int (*)(...))QGraphicsItem::shape
+56 (int (*)(...))QGraphicsItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QGraphicsItemGroup::isObscuredBy
+88 (int (*)(...))QGraphicsItemGroup::opaqueArea
+96 (int (*)(...))QGraphicsItemGroup::paint
+104 (int (*)(...))QGraphicsItemGroup::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsItem::supportsExtension
+296 (int (*)(...))QGraphicsItem::setExtension
+304 (int (*)(...))QGraphicsItem::extension
+
+Class QGraphicsItemGroup
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsItemGroup (0x0x7f0967d580d0) 0
+ vptr=((& QGraphicsItemGroup::_ZTV18QGraphicsItemGroup) + 16)
+ QGraphicsItem (0x0x7f0967cf61e0) 0
+ primary-for QGraphicsItemGroup (0x0x7f0967d580d0)
+
+Vtable for QGraphicsLayoutItem
+QGraphicsLayoutItem::_ZTV19QGraphicsLayoutItem: 8 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QGraphicsLayoutItem)
+16 0
+24 0
+32 (int (*)(...))QGraphicsLayoutItem::setGeometry
+40 (int (*)(...))QGraphicsLayoutItem::getContentsMargins
+48 (int (*)(...))QGraphicsLayoutItem::updateGeometry
+56 (int (*)(...))__cxa_pure_virtual
+
+Class QGraphicsLayoutItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsLayoutItem (0x0x7f0967cf65a0) 0
+ vptr=((& QGraphicsLayoutItem::_ZTV19QGraphicsLayoutItem) + 16)
+
+Vtable for QGraphicsLayout
+QGraphicsLayout::_ZTV15QGraphicsLayout: 13 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QGraphicsLayout)
+16 0
+24 0
+32 (int (*)(...))QGraphicsLayoutItem::setGeometry
+40 (int (*)(...))QGraphicsLayout::getContentsMargins
+48 (int (*)(...))QGraphicsLayout::updateGeometry
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))QGraphicsLayout::invalidate
+72 (int (*)(...))QGraphicsLayout::widgetEvent
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))__cxa_pure_virtual
+96 (int (*)(...))__cxa_pure_virtual
+
+Class QGraphicsLayout
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsLayout (0x0x7f0967d58138) 0
+ vptr=((& QGraphicsLayout::_ZTV15QGraphicsLayout) + 16)
+ QGraphicsLayoutItem (0x0x7f0967cf6c60) 0
+ primary-for QGraphicsLayout (0x0x7f0967d58138)
+
+Class QGraphicsAnchor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsAnchor::QPrivateSignal (0x0x7f0967cf6f60) 0 empty
+
+Vtable for QGraphicsAnchor
+QGraphicsAnchor::_ZTV15QGraphicsAnchor: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QGraphicsAnchor)
+16 (int (*)(...))QGraphicsAnchor::metaObject
+24 (int (*)(...))QGraphicsAnchor::qt_metacast
+32 (int (*)(...))QGraphicsAnchor::qt_metacall
+40 (int (*)(...))QGraphicsAnchor::~QGraphicsAnchor
+48 (int (*)(...))QGraphicsAnchor::~QGraphicsAnchor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QGraphicsAnchor
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsAnchor (0x0x7f0967d581a0) 0
+ vptr=((& QGraphicsAnchor::_ZTV15QGraphicsAnchor) + 16)
+ QObject (0x0x7f0967cf6f00) 0
+ primary-for QGraphicsAnchor (0x0x7f0967d581a0)
+
+Vtable for QGraphicsAnchorLayout
+QGraphicsAnchorLayout::_ZTV21QGraphicsAnchorLayout: 13 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QGraphicsAnchorLayout)
+16 (int (*)(...))QGraphicsAnchorLayout::~QGraphicsAnchorLayout
+24 (int (*)(...))QGraphicsAnchorLayout::~QGraphicsAnchorLayout
+32 (int (*)(...))QGraphicsAnchorLayout::setGeometry
+40 (int (*)(...))QGraphicsLayout::getContentsMargins
+48 (int (*)(...))QGraphicsLayout::updateGeometry
+56 (int (*)(...))QGraphicsAnchorLayout::sizeHint
+64 (int (*)(...))QGraphicsAnchorLayout::invalidate
+72 (int (*)(...))QGraphicsLayout::widgetEvent
+80 (int (*)(...))QGraphicsAnchorLayout::count
+88 (int (*)(...))QGraphicsAnchorLayout::itemAt
+96 (int (*)(...))QGraphicsAnchorLayout::removeAt
+
+Class QGraphicsAnchorLayout
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsAnchorLayout (0x0x7f0967d58208) 0
+ vptr=((& QGraphicsAnchorLayout::_ZTV21QGraphicsAnchorLayout) + 16)
+ QGraphicsLayout (0x0x7f0967d58270) 0
+ primary-for QGraphicsAnchorLayout (0x0x7f0967d58208)
+ QGraphicsLayoutItem (0x0x7f096b8c7180) 0
+ primary-for QGraphicsLayout (0x0x7f0967d58270)
+
+Class QGraphicsEffect::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsEffect::QPrivateSignal (0x0x7f096b8c7300) 0 empty
+
+Vtable for QGraphicsEffect
+QGraphicsEffect::_ZTV15QGraphicsEffect: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QGraphicsEffect)
+16 (int (*)(...))QGraphicsEffect::metaObject
+24 (int (*)(...))QGraphicsEffect::qt_metacast
+32 (int (*)(...))QGraphicsEffect::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsEffect::boundingRectFor
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QGraphicsEffect::sourceChanged
+
+Class QGraphicsEffect
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsEffect (0x0x7f0967d582d8) 0
+ vptr=((& QGraphicsEffect::_ZTV15QGraphicsEffect) + 16)
+ QObject (0x0x7f096b8c72a0) 0
+ primary-for QGraphicsEffect (0x0x7f0967d582d8)
+
+Class QGraphicsColorizeEffect::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsColorizeEffect::QPrivateSignal (0x0x7f096b8c7cc0) 0 empty
+
+Vtable for QGraphicsColorizeEffect
+QGraphicsColorizeEffect::_ZTV23QGraphicsColorizeEffect: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QGraphicsColorizeEffect)
+16 (int (*)(...))QGraphicsColorizeEffect::metaObject
+24 (int (*)(...))QGraphicsColorizeEffect::qt_metacast
+32 (int (*)(...))QGraphicsColorizeEffect::qt_metacall
+40 (int (*)(...))QGraphicsColorizeEffect::~QGraphicsColorizeEffect
+48 (int (*)(...))QGraphicsColorizeEffect::~QGraphicsColorizeEffect
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsEffect::boundingRectFor
+120 (int (*)(...))QGraphicsColorizeEffect::draw
+128 (int (*)(...))QGraphicsEffect::sourceChanged
+
+Class QGraphicsColorizeEffect
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsColorizeEffect (0x0x7f0967d58410) 0
+ vptr=((& QGraphicsColorizeEffect::_ZTV23QGraphicsColorizeEffect) + 16)
+ QGraphicsEffect (0x0x7f0967d58478) 0
+ primary-for QGraphicsColorizeEffect (0x0x7f0967d58410)
+ QObject (0x0x7f096b8c7c60) 0
+ primary-for QGraphicsEffect (0x0x7f0967d58478)
+
+Class QGraphicsBlurEffect::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsBlurEffect::QPrivateSignal (0x0x7f096b8c7f00) 0 empty
+
+Vtable for QGraphicsBlurEffect
+QGraphicsBlurEffect::_ZTV19QGraphicsBlurEffect: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QGraphicsBlurEffect)
+16 (int (*)(...))QGraphicsBlurEffect::metaObject
+24 (int (*)(...))QGraphicsBlurEffect::qt_metacast
+32 (int (*)(...))QGraphicsBlurEffect::qt_metacall
+40 (int (*)(...))QGraphicsBlurEffect::~QGraphicsBlurEffect
+48 (int (*)(...))QGraphicsBlurEffect::~QGraphicsBlurEffect
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsBlurEffect::boundingRectFor
+120 (int (*)(...))QGraphicsBlurEffect::draw
+128 (int (*)(...))QGraphicsEffect::sourceChanged
+
+Class QGraphicsBlurEffect
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsBlurEffect (0x0x7f0967d584e0) 0
+ vptr=((& QGraphicsBlurEffect::_ZTV19QGraphicsBlurEffect) + 16)
+ QGraphicsEffect (0x0x7f0967d58548) 0
+ primary-for QGraphicsBlurEffect (0x0x7f0967d584e0)
+ QObject (0x0x7f096b8c7ea0) 0
+ primary-for QGraphicsEffect (0x0x7f0967d58548)
+
+Class QGraphicsDropShadowEffect::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsDropShadowEffect::QPrivateSignal (0x0x7f096b25b9c0) 0 empty
+
+Vtable for QGraphicsDropShadowEffect
+QGraphicsDropShadowEffect::_ZTV25QGraphicsDropShadowEffect: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QGraphicsDropShadowEffect)
+16 (int (*)(...))QGraphicsDropShadowEffect::metaObject
+24 (int (*)(...))QGraphicsDropShadowEffect::qt_metacast
+32 (int (*)(...))QGraphicsDropShadowEffect::qt_metacall
+40 (int (*)(...))QGraphicsDropShadowEffect::~QGraphicsDropShadowEffect
+48 (int (*)(...))QGraphicsDropShadowEffect::~QGraphicsDropShadowEffect
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsDropShadowEffect::boundingRectFor
+120 (int (*)(...))QGraphicsDropShadowEffect::draw
+128 (int (*)(...))QGraphicsEffect::sourceChanged
+
+Class QGraphicsDropShadowEffect
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsDropShadowEffect (0x0x7f0967d58680) 0
+ vptr=((& QGraphicsDropShadowEffect::_ZTV25QGraphicsDropShadowEffect) + 16)
+ QGraphicsEffect (0x0x7f0967d586e8) 0
+ primary-for QGraphicsDropShadowEffect (0x0x7f0967d58680)
+ QObject (0x0x7f096b25b960) 0
+ primary-for QGraphicsEffect (0x0x7f0967d586e8)
+
+Class QGraphicsOpacityEffect::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsOpacityEffect::QPrivateSignal (0x0x7f096b25be40) 0 empty
+
+Vtable for QGraphicsOpacityEffect
+QGraphicsOpacityEffect::_ZTV22QGraphicsOpacityEffect: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QGraphicsOpacityEffect)
+16 (int (*)(...))QGraphicsOpacityEffect::metaObject
+24 (int (*)(...))QGraphicsOpacityEffect::qt_metacast
+32 (int (*)(...))QGraphicsOpacityEffect::qt_metacall
+40 (int (*)(...))QGraphicsOpacityEffect::~QGraphicsOpacityEffect
+48 (int (*)(...))QGraphicsOpacityEffect::~QGraphicsOpacityEffect
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsEffect::boundingRectFor
+120 (int (*)(...))QGraphicsOpacityEffect::draw
+128 (int (*)(...))QGraphicsEffect::sourceChanged
+
+Class QGraphicsOpacityEffect
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsOpacityEffect (0x0x7f0967d58750) 0
+ vptr=((& QGraphicsOpacityEffect::_ZTV22QGraphicsOpacityEffect) + 16)
+ QGraphicsEffect (0x0x7f0967d587b8) 0
+ primary-for QGraphicsOpacityEffect (0x0x7f0967d58750)
+ QObject (0x0x7f096b25bde0) 0
+ primary-for QGraphicsEffect (0x0x7f0967d587b8)
+
+Vtable for QGraphicsGridLayout
+QGraphicsGridLayout::_ZTV19QGraphicsGridLayout: 13 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QGraphicsGridLayout)
+16 (int (*)(...))QGraphicsGridLayout::~QGraphicsGridLayout
+24 (int (*)(...))QGraphicsGridLayout::~QGraphicsGridLayout
+32 (int (*)(...))QGraphicsGridLayout::setGeometry
+40 (int (*)(...))QGraphicsLayout::getContentsMargins
+48 (int (*)(...))QGraphicsLayout::updateGeometry
+56 (int (*)(...))QGraphicsGridLayout::sizeHint
+64 (int (*)(...))QGraphicsGridLayout::invalidate
+72 (int (*)(...))QGraphicsLayout::widgetEvent
+80 (int (*)(...))QGraphicsGridLayout::count
+88 (int (*)(...))QGraphicsGridLayout::itemAt
+96 (int (*)(...))QGraphicsGridLayout::removeAt
+
+Class QGraphicsGridLayout
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsGridLayout (0x0x7f0967d58820) 0
+ vptr=((& QGraphicsGridLayout::_ZTV19QGraphicsGridLayout) + 16)
+ QGraphicsLayout (0x0x7f0967d58888) 0
+ primary-for QGraphicsGridLayout (0x0x7f0967d58820)
+ QGraphicsLayoutItem (0x0x7f096a453060) 0
+ primary-for QGraphicsLayout (0x0x7f0967d58888)
+
+Class QGraphicsItemAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsItemAnimation::QPrivateSignal (0x0x7f096a453240) 0 empty
+
+Vtable for QGraphicsItemAnimation
+QGraphicsItemAnimation::_ZTV22QGraphicsItemAnimation: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QGraphicsItemAnimation)
+16 (int (*)(...))QGraphicsItemAnimation::metaObject
+24 (int (*)(...))QGraphicsItemAnimation::qt_metacast
+32 (int (*)(...))QGraphicsItemAnimation::qt_metacall
+40 (int (*)(...))QGraphicsItemAnimation::~QGraphicsItemAnimation
+48 (int (*)(...))QGraphicsItemAnimation::~QGraphicsItemAnimation
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsItemAnimation::beforeAnimationStep
+120 (int (*)(...))QGraphicsItemAnimation::afterAnimationStep
+
+Class QGraphicsItemAnimation
+ size=24 align=8
+ base size=24 base align=8
+QGraphicsItemAnimation (0x0x7f0967d589c0) 0
+ vptr=((& QGraphicsItemAnimation::_ZTV22QGraphicsItemAnimation) + 16)
+ QObject (0x0x7f096a4531e0) 0
+ primary-for QGraphicsItemAnimation (0x0x7f0967d589c0)
+
+Vtable for QGraphicsLinearLayout
+QGraphicsLinearLayout::_ZTV21QGraphicsLinearLayout: 13 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QGraphicsLinearLayout)
+16 (int (*)(...))QGraphicsLinearLayout::~QGraphicsLinearLayout
+24 (int (*)(...))QGraphicsLinearLayout::~QGraphicsLinearLayout
+32 (int (*)(...))QGraphicsLinearLayout::setGeometry
+40 (int (*)(...))QGraphicsLayout::getContentsMargins
+48 (int (*)(...))QGraphicsLayout::updateGeometry
+56 (int (*)(...))QGraphicsLinearLayout::sizeHint
+64 (int (*)(...))QGraphicsLinearLayout::invalidate
+72 (int (*)(...))QGraphicsLayout::widgetEvent
+80 (int (*)(...))QGraphicsLinearLayout::count
+88 (int (*)(...))QGraphicsLinearLayout::itemAt
+96 (int (*)(...))QGraphicsLinearLayout::removeAt
+
+Class QGraphicsLinearLayout
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsLinearLayout (0x0x7f0967d58a28) 0
+ vptr=((& QGraphicsLinearLayout::_ZTV21QGraphicsLinearLayout) + 16)
+ QGraphicsLayout (0x0x7f0967d58a90) 0
+ primary-for QGraphicsLinearLayout (0x0x7f0967d58a28)
+ QGraphicsLayoutItem (0x0x7f096a453360) 0
+ primary-for QGraphicsLayout (0x0x7f0967d58a90)
+
+Class QGraphicsWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsWidget::QPrivateSignal (0x0x7f096a453660) 0 empty
+
+Vtable for QGraphicsWidget
+QGraphicsWidget::_ZTV15QGraphicsWidget: 92 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QGraphicsWidget)
+16 (int (*)(...))QGraphicsWidget::metaObject
+24 (int (*)(...))QGraphicsWidget::qt_metacast
+32 (int (*)(...))QGraphicsWidget::qt_metacall
+40 (int (*)(...))QGraphicsWidget::~QGraphicsWidget
+48 (int (*)(...))QGraphicsWidget::~QGraphicsWidget
+56 (int (*)(...))QGraphicsWidget::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsWidget::setGeometry
+120 (int (*)(...))QGraphicsWidget::getContentsMargins
+128 (int (*)(...))QGraphicsWidget::type
+136 (int (*)(...))QGraphicsWidget::paint
+144 (int (*)(...))QGraphicsWidget::paintWindowFrame
+152 (int (*)(...))QGraphicsWidget::boundingRect
+160 (int (*)(...))QGraphicsWidget::shape
+168 (int (*)(...))QGraphicsWidget::initStyleOption
+176 (int (*)(...))QGraphicsWidget::sizeHint
+184 (int (*)(...))QGraphicsWidget::updateGeometry
+192 (int (*)(...))QGraphicsWidget::itemChange
+200 (int (*)(...))QGraphicsWidget::propertyChange
+208 (int (*)(...))QGraphicsWidget::sceneEvent
+216 (int (*)(...))QGraphicsWidget::windowFrameEvent
+224 (int (*)(...))QGraphicsWidget::windowFrameSectionAt
+232 (int (*)(...))QGraphicsWidget::changeEvent
+240 (int (*)(...))QGraphicsWidget::closeEvent
+248 (int (*)(...))QGraphicsWidget::focusInEvent
+256 (int (*)(...))QGraphicsWidget::focusNextPrevChild
+264 (int (*)(...))QGraphicsWidget::focusOutEvent
+272 (int (*)(...))QGraphicsWidget::hideEvent
+280 (int (*)(...))QGraphicsWidget::moveEvent
+288 (int (*)(...))QGraphicsWidget::polishEvent
+296 (int (*)(...))QGraphicsWidget::resizeEvent
+304 (int (*)(...))QGraphicsWidget::showEvent
+312 (int (*)(...))QGraphicsWidget::hoverMoveEvent
+320 (int (*)(...))QGraphicsWidget::hoverLeaveEvent
+328 (int (*)(...))QGraphicsWidget::grabMouseEvent
+336 (int (*)(...))QGraphicsWidget::ungrabMouseEvent
+344 (int (*)(...))QGraphicsWidget::grabKeyboardEvent
+352 (int (*)(...))QGraphicsWidget::ungrabKeyboardEvent
+360 (int (*)(...))-16
+368 (int (*)(...))(& _ZTI15QGraphicsWidget)
+376 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidgetD1Ev
+384 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidgetD0Ev
+392 (int (*)(...))QGraphicsItem::advance
+400 (int (*)(...))QGraphicsWidget::_ZThn16_NK15QGraphicsWidget12boundingRectEv
+408 (int (*)(...))QGraphicsWidget::_ZThn16_NK15QGraphicsWidget5shapeEv
+416 (int (*)(...))QGraphicsItem::contains
+424 (int (*)(...))QGraphicsItem::collidesWithItem
+432 (int (*)(...))QGraphicsItem::collidesWithPath
+440 (int (*)(...))QGraphicsItem::isObscuredBy
+448 (int (*)(...))QGraphicsItem::opaqueArea
+456 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidget5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget
+464 (int (*)(...))QGraphicsWidget::_ZThn16_NK15QGraphicsWidget4typeEv
+472 (int (*)(...))QGraphicsItem::sceneEventFilter
+480 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidget10sceneEventEP6QEvent
+488 (int (*)(...))QGraphicsItem::contextMenuEvent
+496 (int (*)(...))QGraphicsItem::dragEnterEvent
+504 (int (*)(...))QGraphicsItem::dragLeaveEvent
+512 (int (*)(...))QGraphicsItem::dragMoveEvent
+520 (int (*)(...))QGraphicsItem::dropEvent
+528 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidget12focusInEventEP11QFocusEvent
+536 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidget13focusOutEventEP11QFocusEvent
+544 (int (*)(...))QGraphicsItem::hoverEnterEvent
+552 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidget14hoverMoveEventEP24QGraphicsSceneHoverEvent
+560 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidget15hoverLeaveEventEP24QGraphicsSceneHoverEvent
+568 (int (*)(...))QGraphicsItem::keyPressEvent
+576 (int (*)(...))QGraphicsItem::keyReleaseEvent
+584 (int (*)(...))QGraphicsItem::mousePressEvent
+592 (int (*)(...))QGraphicsItem::mouseMoveEvent
+600 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+608 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+616 (int (*)(...))QGraphicsItem::wheelEvent
+624 (int (*)(...))QGraphicsItem::inputMethodEvent
+632 (int (*)(...))QGraphicsItem::inputMethodQuery
+640 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidget10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant
+648 (int (*)(...))QGraphicsItem::supportsExtension
+656 (int (*)(...))QGraphicsItem::setExtension
+664 (int (*)(...))QGraphicsItem::extension
+672 (int (*)(...))-32
+680 (int (*)(...))(& _ZTI15QGraphicsWidget)
+688 (int (*)(...))QGraphicsWidget::_ZThn32_N15QGraphicsWidgetD1Ev
+696 (int (*)(...))QGraphicsWidget::_ZThn32_N15QGraphicsWidgetD0Ev
+704 (int (*)(...))QGraphicsWidget::_ZThn32_N15QGraphicsWidget11setGeometryERK6QRectF
+712 (int (*)(...))QGraphicsWidget::_ZThn32_NK15QGraphicsWidget18getContentsMarginsEPdS0_S0_S0_
+720 (int (*)(...))QGraphicsWidget::_ZThn32_N15QGraphicsWidget14updateGeometryEv
+728 (int (*)(...))QGraphicsWidget::_ZThn32_NK15QGraphicsWidget8sizeHintEN2Qt8SizeHintERK6QSizeF
+
+Class QGraphicsWidget
+ size=48 align=8
+ base size=48 base align=8
+QGraphicsWidget (0x0x7f096c0147e0) 0
+ vptr=((& QGraphicsWidget::_ZTV15QGraphicsWidget) + 16)
+ QGraphicsObject (0x0x7f096c014850) 0
+ primary-for QGraphicsWidget (0x0x7f096c0147e0)
+ QObject (0x0x7f096a453540) 0
+ primary-for QGraphicsObject (0x0x7f096c014850)
+ QGraphicsItem (0x0x7f096a4535a0) 16
+ vptr=((& QGraphicsWidget::_ZTV15QGraphicsWidget) + 376)
+ QGraphicsLayoutItem (0x0x7f096a453600) 32
+ vptr=((& QGraphicsWidget::_ZTV15QGraphicsWidget) + 688)
+
+Class QGraphicsProxyWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsProxyWidget::QPrivateSignal (0x0x7f096a453b40) 0 empty
+
+Vtable for QGraphicsProxyWidget
+QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget: 107 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QGraphicsProxyWidget)
+16 (int (*)(...))QGraphicsProxyWidget::metaObject
+24 (int (*)(...))QGraphicsProxyWidget::qt_metacast
+32 (int (*)(...))QGraphicsProxyWidget::qt_metacall
+40 (int (*)(...))QGraphicsProxyWidget::~QGraphicsProxyWidget
+48 (int (*)(...))QGraphicsProxyWidget::~QGraphicsProxyWidget
+56 (int (*)(...))QGraphicsProxyWidget::event
+64 (int (*)(...))QGraphicsProxyWidget::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsProxyWidget::setGeometry
+120 (int (*)(...))QGraphicsWidget::getContentsMargins
+128 (int (*)(...))QGraphicsProxyWidget::type
+136 (int (*)(...))QGraphicsProxyWidget::paint
+144 (int (*)(...))QGraphicsWidget::paintWindowFrame
+152 (int (*)(...))QGraphicsWidget::boundingRect
+160 (int (*)(...))QGraphicsWidget::shape
+168 (int (*)(...))QGraphicsWidget::initStyleOption
+176 (int (*)(...))QGraphicsProxyWidget::sizeHint
+184 (int (*)(...))QGraphicsWidget::updateGeometry
+192 (int (*)(...))QGraphicsProxyWidget::itemChange
+200 (int (*)(...))QGraphicsWidget::propertyChange
+208 (int (*)(...))QGraphicsWidget::sceneEvent
+216 (int (*)(...))QGraphicsWidget::windowFrameEvent
+224 (int (*)(...))QGraphicsWidget::windowFrameSectionAt
+232 (int (*)(...))QGraphicsWidget::changeEvent
+240 (int (*)(...))QGraphicsWidget::closeEvent
+248 (int (*)(...))QGraphicsProxyWidget::focusInEvent
+256 (int (*)(...))QGraphicsProxyWidget::focusNextPrevChild
+264 (int (*)(...))QGraphicsProxyWidget::focusOutEvent
+272 (int (*)(...))QGraphicsProxyWidget::hideEvent
+280 (int (*)(...))QGraphicsWidget::moveEvent
+288 (int (*)(...))QGraphicsWidget::polishEvent
+296 (int (*)(...))QGraphicsProxyWidget::resizeEvent
+304 (int (*)(...))QGraphicsProxyWidget::showEvent
+312 (int (*)(...))QGraphicsProxyWidget::hoverMoveEvent
+320 (int (*)(...))QGraphicsProxyWidget::hoverLeaveEvent
+328 (int (*)(...))QGraphicsProxyWidget::grabMouseEvent
+336 (int (*)(...))QGraphicsProxyWidget::ungrabMouseEvent
+344 (int (*)(...))QGraphicsWidget::grabKeyboardEvent
+352 (int (*)(...))QGraphicsWidget::ungrabKeyboardEvent
+360 (int (*)(...))QGraphicsProxyWidget::contextMenuEvent
+368 (int (*)(...))QGraphicsProxyWidget::dragEnterEvent
+376 (int (*)(...))QGraphicsProxyWidget::dragLeaveEvent
+384 (int (*)(...))QGraphicsProxyWidget::dragMoveEvent
+392 (int (*)(...))QGraphicsProxyWidget::dropEvent
+400 (int (*)(...))QGraphicsProxyWidget::hoverEnterEvent
+408 (int (*)(...))QGraphicsProxyWidget::mouseMoveEvent
+416 (int (*)(...))QGraphicsProxyWidget::mousePressEvent
+424 (int (*)(...))QGraphicsProxyWidget::mouseReleaseEvent
+432 (int (*)(...))QGraphicsProxyWidget::mouseDoubleClickEvent
+440 (int (*)(...))QGraphicsProxyWidget::wheelEvent
+448 (int (*)(...))QGraphicsProxyWidget::keyPressEvent
+456 (int (*)(...))QGraphicsProxyWidget::keyReleaseEvent
+464 (int (*)(...))QGraphicsProxyWidget::inputMethodQuery
+472 (int (*)(...))QGraphicsProxyWidget::inputMethodEvent
+480 (int (*)(...))-16
+488 (int (*)(...))(& _ZTI20QGraphicsProxyWidget)
+496 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidgetD1Ev
+504 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidgetD0Ev
+512 (int (*)(...))QGraphicsItem::advance
+520 (int (*)(...))QGraphicsWidget::_ZThn16_NK15QGraphicsWidget12boundingRectEv
+528 (int (*)(...))QGraphicsWidget::_ZThn16_NK15QGraphicsWidget5shapeEv
+536 (int (*)(...))QGraphicsItem::contains
+544 (int (*)(...))QGraphicsItem::collidesWithItem
+552 (int (*)(...))QGraphicsItem::collidesWithPath
+560 (int (*)(...))QGraphicsItem::isObscuredBy
+568 (int (*)(...))QGraphicsItem::opaqueArea
+576 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget
+584 (int (*)(...))QGraphicsProxyWidget::_ZThn16_NK20QGraphicsProxyWidget4typeEv
+592 (int (*)(...))QGraphicsItem::sceneEventFilter
+600 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidget10sceneEventEP6QEvent
+608 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget16contextMenuEventEP30QGraphicsSceneContextMenuEvent
+616 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget14dragEnterEventEP27QGraphicsSceneDragDropEvent
+624 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget14dragLeaveEventEP27QGraphicsSceneDragDropEvent
+632 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget13dragMoveEventEP27QGraphicsSceneDragDropEvent
+640 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget9dropEventEP27QGraphicsSceneDragDropEvent
+648 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget12focusInEventEP11QFocusEvent
+656 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget13focusOutEventEP11QFocusEvent
+664 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget15hoverEnterEventEP24QGraphicsSceneHoverEvent
+672 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget14hoverMoveEventEP24QGraphicsSceneHoverEvent
+680 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget15hoverLeaveEventEP24QGraphicsSceneHoverEvent
+688 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget13keyPressEventEP9QKeyEvent
+696 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget15keyReleaseEventEP9QKeyEvent
+704 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget15mousePressEventEP24QGraphicsSceneMouseEvent
+712 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget14mouseMoveEventEP24QGraphicsSceneMouseEvent
+720 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget17mouseReleaseEventEP24QGraphicsSceneMouseEvent
+728 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent
+736 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget10wheelEventEP24QGraphicsSceneWheelEvent
+744 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget16inputMethodEventEP17QInputMethodEvent
+752 (int (*)(...))QGraphicsProxyWidget::_ZThn16_NK20QGraphicsProxyWidget16inputMethodQueryEN2Qt16InputMethodQueryE
+760 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant
+768 (int (*)(...))QGraphicsItem::supportsExtension
+776 (int (*)(...))QGraphicsItem::setExtension
+784 (int (*)(...))QGraphicsItem::extension
+792 (int (*)(...))-32
+800 (int (*)(...))(& _ZTI20QGraphicsProxyWidget)
+808 (int (*)(...))QGraphicsProxyWidget::_ZThn32_N20QGraphicsProxyWidgetD1Ev
+816 (int (*)(...))QGraphicsProxyWidget::_ZThn32_N20QGraphicsProxyWidgetD0Ev
+824 (int (*)(...))QGraphicsProxyWidget::_ZThn32_N20QGraphicsProxyWidget11setGeometryERK6QRectF
+832 (int (*)(...))QGraphicsWidget::_ZThn32_NK15QGraphicsWidget18getContentsMarginsEPdS0_S0_S0_
+840 (int (*)(...))QGraphicsWidget::_ZThn32_N15QGraphicsWidget14updateGeometryEv
+848 (int (*)(...))QGraphicsProxyWidget::_ZThn32_NK20QGraphicsProxyWidget8sizeHintEN2Qt8SizeHintERK6QSizeF
+
+Class QGraphicsProxyWidget
+ size=48 align=8
+ base size=48 base align=8
+QGraphicsProxyWidget (0x0x7f0967d58bc8) 0
+ vptr=((& QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget) + 16)
+ QGraphicsWidget (0x0x7f096c014d20) 0
+ primary-for QGraphicsProxyWidget (0x0x7f0967d58bc8)
+ QGraphicsObject (0x0x7f096c014d90) 0
+ primary-for QGraphicsWidget (0x0x7f096c014d20)
+ QObject (0x0x7f096a453a20) 0
+ primary-for QGraphicsObject (0x0x7f096c014d90)
+ QGraphicsItem (0x0x7f096a453a80) 16
+ vptr=((& QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget) + 496)
+ QGraphicsLayoutItem (0x0x7f096a453ae0) 32
+ vptr=((& QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget) + 808)
+
+Class QGraphicsScene::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsScene::QPrivateSignal (0x0x7f096a453f00) 0 empty
+
+Vtable for QGraphicsScene
+QGraphicsScene::_ZTV14QGraphicsScene: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QGraphicsScene)
+16 (int (*)(...))QGraphicsScene::metaObject
+24 (int (*)(...))QGraphicsScene::qt_metacast
+32 (int (*)(...))QGraphicsScene::qt_metacall
+40 (int (*)(...))QGraphicsScene::~QGraphicsScene
+48 (int (*)(...))QGraphicsScene::~QGraphicsScene
+56 (int (*)(...))QGraphicsScene::event
+64 (int (*)(...))QGraphicsScene::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsScene::inputMethodQuery
+120 (int (*)(...))QGraphicsScene::contextMenuEvent
+128 (int (*)(...))QGraphicsScene::dragEnterEvent
+136 (int (*)(...))QGraphicsScene::dragMoveEvent
+144 (int (*)(...))QGraphicsScene::dragLeaveEvent
+152 (int (*)(...))QGraphicsScene::dropEvent
+160 (int (*)(...))QGraphicsScene::focusInEvent
+168 (int (*)(...))QGraphicsScene::focusOutEvent
+176 (int (*)(...))QGraphicsScene::helpEvent
+184 (int (*)(...))QGraphicsScene::keyPressEvent
+192 (int (*)(...))QGraphicsScene::keyReleaseEvent
+200 (int (*)(...))QGraphicsScene::mousePressEvent
+208 (int (*)(...))QGraphicsScene::mouseMoveEvent
+216 (int (*)(...))QGraphicsScene::mouseReleaseEvent
+224 (int (*)(...))QGraphicsScene::mouseDoubleClickEvent
+232 (int (*)(...))QGraphicsScene::wheelEvent
+240 (int (*)(...))QGraphicsScene::inputMethodEvent
+248 (int (*)(...))QGraphicsScene::drawBackground
+256 (int (*)(...))QGraphicsScene::drawForeground
+264 (int (*)(...))QGraphicsScene::drawItems
+
+Class QGraphicsScene
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsScene (0x0x7f0967d58dd0) 0
+ vptr=((& QGraphicsScene::_ZTV14QGraphicsScene) + 16)
+ QObject (0x0x7f096a453ea0) 0
+ primary-for QGraphicsScene (0x0x7f0967d58dd0)
+
+Vtable for QGraphicsSceneEvent
+QGraphicsSceneEvent::_ZTV19QGraphicsSceneEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QGraphicsSceneEvent)
+16 (int (*)(...))QGraphicsSceneEvent::~QGraphicsSceneEvent
+24 (int (*)(...))QGraphicsSceneEvent::~QGraphicsSceneEvent
+
+Class QGraphicsSceneEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneEvent (0x0x7f0967d58f70) 0
+ vptr=((& QGraphicsSceneEvent::_ZTV19QGraphicsSceneEvent) + 16)
+ QEvent (0x0x7f09671c8de0) 0
+ primary-for QGraphicsSceneEvent (0x0x7f0967d58f70)
+
+Vtable for QGraphicsSceneMouseEvent
+QGraphicsSceneMouseEvent::_ZTV24QGraphicsSceneMouseEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QGraphicsSceneMouseEvent)
+16 (int (*)(...))QGraphicsSceneMouseEvent::~QGraphicsSceneMouseEvent
+24 (int (*)(...))QGraphicsSceneMouseEvent::~QGraphicsSceneMouseEvent
+
+Class QGraphicsSceneMouseEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneMouseEvent (0x0x7f0967082000) 0
+ vptr=((& QGraphicsSceneMouseEvent::_ZTV24QGraphicsSceneMouseEvent) + 16)
+ QGraphicsSceneEvent (0x0x7f0967082068) 0
+ primary-for QGraphicsSceneMouseEvent (0x0x7f0967082000)
+ QEvent (0x0x7f0967083000) 0
+ primary-for QGraphicsSceneEvent (0x0x7f0967082068)
+
+Vtable for QGraphicsSceneWheelEvent
+QGraphicsSceneWheelEvent::_ZTV24QGraphicsSceneWheelEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QGraphicsSceneWheelEvent)
+16 (int (*)(...))QGraphicsSceneWheelEvent::~QGraphicsSceneWheelEvent
+24 (int (*)(...))QGraphicsSceneWheelEvent::~QGraphicsSceneWheelEvent
+
+Class QGraphicsSceneWheelEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneWheelEvent (0x0x7f09670820d0) 0
+ vptr=((& QGraphicsSceneWheelEvent::_ZTV24QGraphicsSceneWheelEvent) + 16)
+ QGraphicsSceneEvent (0x0x7f0967082138) 0
+ primary-for QGraphicsSceneWheelEvent (0x0x7f09670820d0)
+ QEvent (0x0x7f0967083120) 0
+ primary-for QGraphicsSceneEvent (0x0x7f0967082138)
+
+Vtable for QGraphicsSceneContextMenuEvent
+QGraphicsSceneContextMenuEvent::_ZTV30QGraphicsSceneContextMenuEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI30QGraphicsSceneContextMenuEvent)
+16 (int (*)(...))QGraphicsSceneContextMenuEvent::~QGraphicsSceneContextMenuEvent
+24 (int (*)(...))QGraphicsSceneContextMenuEvent::~QGraphicsSceneContextMenuEvent
+
+Class QGraphicsSceneContextMenuEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneContextMenuEvent (0x0x7f09670821a0) 0
+ vptr=((& QGraphicsSceneContextMenuEvent::_ZTV30QGraphicsSceneContextMenuEvent) + 16)
+ QGraphicsSceneEvent (0x0x7f0967082208) 0
+ primary-for QGraphicsSceneContextMenuEvent (0x0x7f09670821a0)
+ QEvent (0x0x7f0967083240) 0
+ primary-for QGraphicsSceneEvent (0x0x7f0967082208)
+
+Vtable for QGraphicsSceneHoverEvent
+QGraphicsSceneHoverEvent::_ZTV24QGraphicsSceneHoverEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QGraphicsSceneHoverEvent)
+16 (int (*)(...))QGraphicsSceneHoverEvent::~QGraphicsSceneHoverEvent
+24 (int (*)(...))QGraphicsSceneHoverEvent::~QGraphicsSceneHoverEvent
+
+Class QGraphicsSceneHoverEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneHoverEvent (0x0x7f0967082270) 0
+ vptr=((& QGraphicsSceneHoverEvent::_ZTV24QGraphicsSceneHoverEvent) + 16)
+ QGraphicsSceneEvent (0x0x7f09670822d8) 0
+ primary-for QGraphicsSceneHoverEvent (0x0x7f0967082270)
+ QEvent (0x0x7f0967083360) 0
+ primary-for QGraphicsSceneEvent (0x0x7f09670822d8)
+
+Vtable for QGraphicsSceneHelpEvent
+QGraphicsSceneHelpEvent::_ZTV23QGraphicsSceneHelpEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QGraphicsSceneHelpEvent)
+16 (int (*)(...))QGraphicsSceneHelpEvent::~QGraphicsSceneHelpEvent
+24 (int (*)(...))QGraphicsSceneHelpEvent::~QGraphicsSceneHelpEvent
+
+Class QGraphicsSceneHelpEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneHelpEvent (0x0x7f0967082340) 0
+ vptr=((& QGraphicsSceneHelpEvent::_ZTV23QGraphicsSceneHelpEvent) + 16)
+ QGraphicsSceneEvent (0x0x7f09670823a8) 0
+ primary-for QGraphicsSceneHelpEvent (0x0x7f0967082340)
+ QEvent (0x0x7f0967083480) 0
+ primary-for QGraphicsSceneEvent (0x0x7f09670823a8)
+
+Vtable for QGraphicsSceneDragDropEvent
+QGraphicsSceneDragDropEvent::_ZTV27QGraphicsSceneDragDropEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QGraphicsSceneDragDropEvent)
+16 (int (*)(...))QGraphicsSceneDragDropEvent::~QGraphicsSceneDragDropEvent
+24 (int (*)(...))QGraphicsSceneDragDropEvent::~QGraphicsSceneDragDropEvent
+
+Class QGraphicsSceneDragDropEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneDragDropEvent (0x0x7f0967082410) 0
+ vptr=((& QGraphicsSceneDragDropEvent::_ZTV27QGraphicsSceneDragDropEvent) + 16)
+ QGraphicsSceneEvent (0x0x7f0967082478) 0
+ primary-for QGraphicsSceneDragDropEvent (0x0x7f0967082410)
+ QEvent (0x0x7f09670835a0) 0
+ primary-for QGraphicsSceneEvent (0x0x7f0967082478)
+
+Vtable for QGraphicsSceneResizeEvent
+QGraphicsSceneResizeEvent::_ZTV25QGraphicsSceneResizeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QGraphicsSceneResizeEvent)
+16 (int (*)(...))QGraphicsSceneResizeEvent::~QGraphicsSceneResizeEvent
+24 (int (*)(...))QGraphicsSceneResizeEvent::~QGraphicsSceneResizeEvent
+
+Class QGraphicsSceneResizeEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneResizeEvent (0x0x7f09670824e0) 0
+ vptr=((& QGraphicsSceneResizeEvent::_ZTV25QGraphicsSceneResizeEvent) + 16)
+ QGraphicsSceneEvent (0x0x7f0967082548) 0
+ primary-for QGraphicsSceneResizeEvent (0x0x7f09670824e0)
+ QEvent (0x0x7f09670836c0) 0
+ primary-for QGraphicsSceneEvent (0x0x7f0967082548)
+
+Vtable for QGraphicsSceneMoveEvent
+QGraphicsSceneMoveEvent::_ZTV23QGraphicsSceneMoveEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QGraphicsSceneMoveEvent)
+16 (int (*)(...))QGraphicsSceneMoveEvent::~QGraphicsSceneMoveEvent
+24 (int (*)(...))QGraphicsSceneMoveEvent::~QGraphicsSceneMoveEvent
+
+Class QGraphicsSceneMoveEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneMoveEvent (0x0x7f09670825b0) 0
+ vptr=((& QGraphicsSceneMoveEvent::_ZTV23QGraphicsSceneMoveEvent) + 16)
+ QGraphicsSceneEvent (0x0x7f0967082618) 0
+ primary-for QGraphicsSceneMoveEvent (0x0x7f09670825b0)
+ QEvent (0x0x7f09670837e0) 0
+ primary-for QGraphicsSceneEvent (0x0x7f0967082618)
+
+Class QGraphicsTransform::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsTransform::QPrivateSignal (0x0x7f0967083960) 0 empty
+
+Vtable for QGraphicsTransform
+QGraphicsTransform::_ZTV18QGraphicsTransform: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QGraphicsTransform)
+16 (int (*)(...))QGraphicsTransform::metaObject
+24 (int (*)(...))QGraphicsTransform::qt_metacast
+32 (int (*)(...))QGraphicsTransform::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QGraphicsTransform
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsTransform (0x0x7f0967082680) 0
+ vptr=((& QGraphicsTransform::_ZTV18QGraphicsTransform) + 16)
+ QObject (0x0x7f0967083900) 0
+ primary-for QGraphicsTransform (0x0x7f0967082680)
+
+Class QGraphicsScale::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsScale::QPrivateSignal (0x0x7f0967083ba0) 0 empty
+
+Vtable for QGraphicsScale
+QGraphicsScale::_ZTV14QGraphicsScale: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QGraphicsScale)
+16 (int (*)(...))QGraphicsScale::metaObject
+24 (int (*)(...))QGraphicsScale::qt_metacast
+32 (int (*)(...))QGraphicsScale::qt_metacall
+40 (int (*)(...))QGraphicsScale::~QGraphicsScale
+48 (int (*)(...))QGraphicsScale::~QGraphicsScale
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsScale::applyTo
+
+Class QGraphicsScale
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsScale (0x0x7f09670826e8) 0
+ vptr=((& QGraphicsScale::_ZTV14QGraphicsScale) + 16)
+ QGraphicsTransform (0x0x7f0967082750) 0
+ primary-for QGraphicsScale (0x0x7f09670826e8)
+ QObject (0x0x7f0967083b40) 0
+ primary-for QGraphicsTransform (0x0x7f0967082750)
+
+Class QGraphicsRotation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsRotation::QPrivateSignal (0x0x7f0967083de0) 0 empty
+
+Vtable for QGraphicsRotation
+QGraphicsRotation::_ZTV17QGraphicsRotation: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QGraphicsRotation)
+16 (int (*)(...))QGraphicsRotation::metaObject
+24 (int (*)(...))QGraphicsRotation::qt_metacast
+32 (int (*)(...))QGraphicsRotation::qt_metacall
+40 (int (*)(...))QGraphicsRotation::~QGraphicsRotation
+48 (int (*)(...))QGraphicsRotation::~QGraphicsRotation
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsRotation::applyTo
+
+Class QGraphicsRotation
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsRotation (0x0x7f09670827b8) 0
+ vptr=((& QGraphicsRotation::_ZTV17QGraphicsRotation) + 16)
+ QGraphicsTransform (0x0x7f0967082820) 0
+ primary-for QGraphicsRotation (0x0x7f09670827b8)
+ QObject (0x0x7f0967083d80) 0
+ primary-for QGraphicsTransform (0x0x7f0967082820)
+
+Class QScrollArea::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QScrollArea::QPrivateSignal (0x0x7f09660880c0) 0 empty
+
+Vtable for QScrollArea
+QScrollArea::_ZTV11QScrollArea: 68 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QScrollArea)
+16 (int (*)(...))QScrollArea::metaObject
+24 (int (*)(...))QScrollArea::qt_metacast
+32 (int (*)(...))QScrollArea::qt_metacall
+40 (int (*)(...))QScrollArea::~QScrollArea
+48 (int (*)(...))QScrollArea::~QScrollArea
+56 (int (*)(...))QScrollArea::event
+64 (int (*)(...))QScrollArea::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractScrollArea::mousePressEvent
+176 (int (*)(...))QAbstractScrollArea::mouseReleaseEvent
+184 (int (*)(...))QAbstractScrollArea::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractScrollArea::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QAbstractScrollArea::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QAbstractScrollArea::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QScrollArea::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractScrollArea::dragEnterEvent
+320 (int (*)(...))QAbstractScrollArea::dragMoveEvent
+328 (int (*)(...))QAbstractScrollArea::dragLeaveEvent
+336 (int (*)(...))QAbstractScrollArea::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QScrollArea::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractScrollArea::viewportEvent
+448 (int (*)(...))QScrollArea::scrollContentsBy
+456 (int (*)(...))QScrollArea::viewportSizeHint
+464 (int (*)(...))-16
+472 (int (*)(...))(& _ZTI11QScrollArea)
+480 (int (*)(...))QScrollArea::_ZThn16_N11QScrollAreaD1Ev
+488 (int (*)(...))QScrollArea::_ZThn16_N11QScrollAreaD0Ev
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QScrollArea
+ size=48 align=8
+ base size=48 base align=8
+QScrollArea (0x0x7f0967082888) 0
+ vptr=((& QScrollArea::_ZTV11QScrollArea) + 16)
+ QAbstractScrollArea (0x0x7f09670828f0) 0
+ primary-for QScrollArea (0x0x7f0967082888)
+ QFrame (0x0x7f0967082958) 0
+ primary-for QAbstractScrollArea (0x0x7f09670828f0)
+ QWidget (0x0x7f096be4fe00) 0
+ primary-for QFrame (0x0x7f0967082958)
+ QObject (0x0x7f0966088000) 0
+ primary-for QWidget (0x0x7f096be4fe00)
+ QPaintDevice (0x0x7f0966088060) 16
+ vptr=((& QScrollArea::_ZTV11QScrollArea) + 480)
+
+Class QGraphicsView::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsView::QPrivateSignal (0x0x7f0966088360) 0 empty
+
+Vtable for QGraphicsView
+QGraphicsView::_ZTV13QGraphicsView: 71 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QGraphicsView)
+16 (int (*)(...))QGraphicsView::metaObject
+24 (int (*)(...))QGraphicsView::qt_metacast
+32 (int (*)(...))QGraphicsView::qt_metacall
+40 (int (*)(...))QGraphicsView::~QGraphicsView
+48 (int (*)(...))QGraphicsView::~QGraphicsView
+56 (int (*)(...))QGraphicsView::event
+64 (int (*)(...))QAbstractScrollArea::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QGraphicsView::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QGraphicsView::mousePressEvent
+176 (int (*)(...))QGraphicsView::mouseReleaseEvent
+184 (int (*)(...))QGraphicsView::mouseDoubleClickEvent
+192 (int (*)(...))QGraphicsView::mouseMoveEvent
+200 (int (*)(...))QGraphicsView::wheelEvent
+208 (int (*)(...))QGraphicsView::keyPressEvent
+216 (int (*)(...))QGraphicsView::keyReleaseEvent
+224 (int (*)(...))QGraphicsView::focusInEvent
+232 (int (*)(...))QGraphicsView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QGraphicsView::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QGraphicsView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QGraphicsView::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QGraphicsView::dragEnterEvent
+320 (int (*)(...))QGraphicsView::dragMoveEvent
+328 (int (*)(...))QGraphicsView::dragLeaveEvent
+336 (int (*)(...))QGraphicsView::dropEvent
+344 (int (*)(...))QGraphicsView::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QGraphicsView::inputMethodEvent
+416 (int (*)(...))QGraphicsView::inputMethodQuery
+424 (int (*)(...))QGraphicsView::focusNextPrevChild
+432 (int (*)(...))QGraphicsView::setupViewport
+440 (int (*)(...))QGraphicsView::viewportEvent
+448 (int (*)(...))QGraphicsView::scrollContentsBy
+456 (int (*)(...))QAbstractScrollArea::viewportSizeHint
+464 (int (*)(...))QGraphicsView::drawBackground
+472 (int (*)(...))QGraphicsView::drawForeground
+480 (int (*)(...))QGraphicsView::drawItems
+488 (int (*)(...))-16
+496 (int (*)(...))(& _ZTI13QGraphicsView)
+504 (int (*)(...))QGraphicsView::_ZThn16_N13QGraphicsViewD1Ev
+512 (int (*)(...))QGraphicsView::_ZThn16_N13QGraphicsViewD0Ev
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+552 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+560 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QGraphicsView
+ size=48 align=8
+ base size=48 base align=8
+QGraphicsView (0x0x7f09670829c0) 0
+ vptr=((& QGraphicsView::_ZTV13QGraphicsView) + 16)
+ QAbstractScrollArea (0x0x7f0967082a28) 0
+ primary-for QGraphicsView (0x0x7f09670829c0)
+ QFrame (0x0x7f0967082a90) 0
+ primary-for QAbstractScrollArea (0x0x7f0967082a28)
+ QWidget (0x0x7f096be4ff50) 0
+ primary-for QFrame (0x0x7f0967082a90)
+ QObject (0x0x7f09660882a0) 0
+ primary-for QWidget (0x0x7f096be4ff50)
+ QPaintDevice (0x0x7f0966088300) 16
+ vptr=((& QGraphicsView::_ZTV13QGraphicsView) + 504)
+
+Class QGroupBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGroupBox::QPrivateSignal (0x0x7f096567ea20) 0 empty
+
+Vtable for QGroupBox
+QGroupBox::_ZTV9QGroupBox: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QGroupBox)
+16 (int (*)(...))QGroupBox::metaObject
+24 (int (*)(...))QGroupBox::qt_metacast
+32 (int (*)(...))QGroupBox::qt_metacall
+40 (int (*)(...))QGroupBox::~QGroupBox
+48 (int (*)(...))QGroupBox::~QGroupBox
+56 (int (*)(...))QGroupBox::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QGroupBox::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QGroupBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QGroupBox::mousePressEvent
+176 (int (*)(...))QGroupBox::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QGroupBox::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QGroupBox::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QGroupBox::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QGroupBox::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QGroupBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI9QGroupBox)
+448 (int (*)(...))QGroupBox::_ZThn16_N9QGroupBoxD1Ev
+456 (int (*)(...))QGroupBox::_ZThn16_N9QGroupBoxD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QGroupBox
+ size=48 align=8
+ base size=48 base align=8
+QGroupBox (0x0x7f0967082c98) 0
+ vptr=((& QGroupBox::_ZTV9QGroupBox) + 16)
+ QWidget (0x0x7f096bf23e70) 0
+ primary-for QGroupBox (0x0x7f0967082c98)
+ QObject (0x0x7f096567e960) 0
+ primary-for QWidget (0x0x7f096bf23e70)
+ QPaintDevice (0x0x7f096567e9c0) 16
+ vptr=((& QGroupBox::_ZTV9QGroupBox) + 448)
+
+Class QHeaderView::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QHeaderView::QPrivateSignal (0x0x7f096567ecc0) 0 empty
+
+Vtable for QHeaderView
+QHeaderView::_ZTV11QHeaderView: 108 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QHeaderView)
+16 (int (*)(...))QHeaderView::metaObject
+24 (int (*)(...))QHeaderView::qt_metacast
+32 (int (*)(...))QHeaderView::qt_metacall
+40 (int (*)(...))QHeaderView::~QHeaderView
+48 (int (*)(...))QHeaderView::~QHeaderView
+56 (int (*)(...))QHeaderView::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QAbstractItemView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QHeaderView::setVisible
+128 (int (*)(...))QHeaderView::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QHeaderView::mousePressEvent
+176 (int (*)(...))QHeaderView::mouseReleaseEvent
+184 (int (*)(...))QHeaderView::mouseDoubleClickEvent
+192 (int (*)(...))QHeaderView::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QAbstractItemView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QHeaderView::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractItemView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QAbstractItemView::dragMoveEvent
+328 (int (*)(...))QAbstractItemView::dragLeaveEvent
+336 (int (*)(...))QAbstractItemView::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QHeaderView::viewportEvent
+448 (int (*)(...))QHeaderView::scrollContentsBy
+456 (int (*)(...))QAbstractItemView::viewportSizeHint
+464 (int (*)(...))QHeaderView::setModel
+472 (int (*)(...))QAbstractItemView::setSelectionModel
+480 (int (*)(...))QAbstractItemView::keyboardSearch
+488 (int (*)(...))QHeaderView::visualRect
+496 (int (*)(...))QHeaderView::scrollTo
+504 (int (*)(...))QHeaderView::indexAt
+512 (int (*)(...))QAbstractItemView::sizeHintForRow
+520 (int (*)(...))QAbstractItemView::sizeHintForColumn
+528 (int (*)(...))QHeaderView::reset
+536 (int (*)(...))QAbstractItemView::setRootIndex
+544 (int (*)(...))QHeaderView::doItemsLayout
+552 (int (*)(...))QAbstractItemView::selectAll
+560 (int (*)(...))QHeaderView::dataChanged
+568 (int (*)(...))QHeaderView::rowsInserted
+576 (int (*)(...))QAbstractItemView::rowsAboutToBeRemoved
+584 (int (*)(...))QAbstractItemView::selectionChanged
+592 (int (*)(...))QHeaderView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QHeaderView::updateGeometries
+624 (int (*)(...))QAbstractItemView::verticalScrollbarAction
+632 (int (*)(...))QAbstractItemView::horizontalScrollbarAction
+640 (int (*)(...))QAbstractItemView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))QHeaderView::moveCursor
+688 (int (*)(...))QHeaderView::horizontalOffset
+696 (int (*)(...))QHeaderView::verticalOffset
+704 (int (*)(...))QHeaderView::isIndexHidden
+712 (int (*)(...))QHeaderView::setSelection
+720 (int (*)(...))QHeaderView::visualRegionForSelection
+728 (int (*)(...))QAbstractItemView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QAbstractItemView::startDrag
+760 (int (*)(...))QAbstractItemView::viewOptions
+768 (int (*)(...))QHeaderView::paintSection
+776 (int (*)(...))QHeaderView::sectionSizeFromContents
+784 (int (*)(...))-16
+792 (int (*)(...))(& _ZTI11QHeaderView)
+800 (int (*)(...))QHeaderView::_ZThn16_N11QHeaderViewD1Ev
+808 (int (*)(...))QHeaderView::_ZThn16_N11QHeaderViewD0Ev
+816 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+824 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+832 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+840 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+848 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+856 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QHeaderView
+ size=48 align=8
+ base size=48 base align=8
+QHeaderView (0x0x7f0967082d00) 0
+ vptr=((& QHeaderView::_ZTV11QHeaderView) + 16)
+ QAbstractItemView (0x0x7f0967082d68) 0
+ primary-for QHeaderView (0x0x7f0967082d00)
+ QAbstractScrollArea (0x0x7f0967082dd0) 0
+ primary-for QAbstractItemView (0x0x7f0967082d68)
+ QFrame (0x0x7f0967082e38) 0
+ primary-for QAbstractScrollArea (0x0x7f0967082dd0)
+ QWidget (0x0x7f096bf23af0) 0
+ primary-for QFrame (0x0x7f0967082e38)
+ QObject (0x0x7f096567ec00) 0
+ primary-for QWidget (0x0x7f096bf23af0)
+ QPaintDevice (0x0x7f096567ec60) 16
+ vptr=((& QHeaderView::_ZTV11QHeaderView) + 800)
+
+Class QLineEdit::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLineEdit::QPrivateSignal (0x0x7f0964cf06c0) 0 empty
+
+Vtable for QLineEdit
+QLineEdit::_ZTV9QLineEdit: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QLineEdit)
+16 (int (*)(...))QLineEdit::metaObject
+24 (int (*)(...))QLineEdit::qt_metacast
+32 (int (*)(...))QLineEdit::qt_metacall
+40 (int (*)(...))QLineEdit::~QLineEdit
+48 (int (*)(...))QLineEdit::~QLineEdit
+56 (int (*)(...))QLineEdit::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QLineEdit::sizeHint
+136 (int (*)(...))QLineEdit::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QLineEdit::mousePressEvent
+176 (int (*)(...))QLineEdit::mouseReleaseEvent
+184 (int (*)(...))QLineEdit::mouseDoubleClickEvent
+192 (int (*)(...))QLineEdit::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QLineEdit::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QLineEdit::focusInEvent
+232 (int (*)(...))QLineEdit::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QLineEdit::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QLineEdit::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QLineEdit::dragEnterEvent
+320 (int (*)(...))QLineEdit::dragMoveEvent
+328 (int (*)(...))QLineEdit::dragLeaveEvent
+336 (int (*)(...))QLineEdit::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QLineEdit::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QLineEdit::inputMethodEvent
+416 (int (*)(...))QLineEdit::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI9QLineEdit)
+448 (int (*)(...))QLineEdit::_ZThn16_N9QLineEditD1Ev
+456 (int (*)(...))QLineEdit::_ZThn16_N9QLineEditD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QLineEdit
+ size=48 align=8
+ base size=48 base align=8
+QLineEdit (0x0x7f0964cf43a8) 0
+ vptr=((& QLineEdit::_ZTV9QLineEdit) + 16)
+ QWidget (0x0x7f096bb89770) 0
+ primary-for QLineEdit (0x0x7f0964cf43a8)
+ QObject (0x0x7f0964cf0600) 0
+ primary-for QWidget (0x0x7f096bb89770)
+ QPaintDevice (0x0x7f0964cf0660) 16
+ vptr=((& QLineEdit::_ZTV9QLineEdit) + 448)
+
+Class QInputDialog::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QInputDialog::QPrivateSignal (0x0x7f0964cf0ae0) 0 empty
+
+Vtable for QInputDialog
+QInputDialog::_ZTV12QInputDialog: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QInputDialog)
+16 (int (*)(...))QInputDialog::metaObject
+24 (int (*)(...))QInputDialog::qt_metacast
+32 (int (*)(...))QInputDialog::qt_metacall
+40 (int (*)(...))QInputDialog::~QInputDialog
+48 (int (*)(...))QInputDialog::~QInputDialog
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QDialog::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QInputDialog::setVisible
+128 (int (*)(...))QInputDialog::sizeHint
+136 (int (*)(...))QInputDialog::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QDialog::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QDialog::resizeEvent
+280 (int (*)(...))QDialog::closeEvent
+288 (int (*)(...))QDialog::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QDialog::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDialog::open
+440 (int (*)(...))QDialog::exec
+448 (int (*)(...))QInputDialog::done
+456 (int (*)(...))QDialog::accept
+464 (int (*)(...))QDialog::reject
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI12QInputDialog)
+488 (int (*)(...))QInputDialog::_ZThn16_N12QInputDialogD1Ev
+496 (int (*)(...))QInputDialog::_ZThn16_N12QInputDialogD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QInputDialog
+ size=48 align=8
+ base size=48 base align=8
+QInputDialog (0x0x7f0964cf4410) 0
+ vptr=((& QInputDialog::_ZTV12QInputDialog) + 16)
+ QDialog (0x0x7f0964cf4478) 0
+ primary-for QInputDialog (0x0x7f0964cf4410)
+ QWidget (0x0x7f096bb89b60) 0
+ primary-for QDialog (0x0x7f0964cf4478)
+ QObject (0x0x7f0964cf0a20) 0
+ primary-for QWidget (0x0x7f096bb89b60)
+ QPaintDevice (0x0x7f0964cf0a80) 16
+ vptr=((& QInputDialog::_ZTV12QInputDialog) + 488)
+
+Class QItemDelegate::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QItemDelegate::QPrivateSignal (0x0x7f096412c420) 0 empty
+
+Vtable for QItemDelegate
+QItemDelegate::_ZTV13QItemDelegate: 28 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QItemDelegate)
+16 (int (*)(...))QItemDelegate::metaObject
+24 (int (*)(...))QItemDelegate::qt_metacast
+32 (int (*)(...))QItemDelegate::qt_metacall
+40 (int (*)(...))QItemDelegate::~QItemDelegate
+48 (int (*)(...))QItemDelegate::~QItemDelegate
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QItemDelegate::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QItemDelegate::paint
+120 (int (*)(...))QItemDelegate::sizeHint
+128 (int (*)(...))QItemDelegate::createEditor
+136 (int (*)(...))QAbstractItemDelegate::destroyEditor
+144 (int (*)(...))QItemDelegate::setEditorData
+152 (int (*)(...))QItemDelegate::setModelData
+160 (int (*)(...))QItemDelegate::updateEditorGeometry
+168 (int (*)(...))QItemDelegate::editorEvent
+176 (int (*)(...))QAbstractItemDelegate::helpEvent
+184 (int (*)(...))QAbstractItemDelegate::paintingRoles
+192 (int (*)(...))QItemDelegate::drawDisplay
+200 (int (*)(...))QItemDelegate::drawDecoration
+208 (int (*)(...))QItemDelegate::drawFocus
+216 (int (*)(...))QItemDelegate::drawCheck
+
+Class QItemDelegate
+ size=16 align=8
+ base size=16 base align=8
+QItemDelegate (0x0x7f0964cf45b0) 0
+ vptr=((& QItemDelegate::_ZTV13QItemDelegate) + 16)
+ QAbstractItemDelegate (0x0x7f0964cf4618) 0
+ primary-for QItemDelegate (0x0x7f0964cf45b0)
+ QObject (0x0x7f096412c3c0) 0
+ primary-for QAbstractItemDelegate (0x0x7f0964cf4618)
+
+Vtable for QItemEditorCreatorBase
+QItemEditorCreatorBase::_ZTV22QItemEditorCreatorBase: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QItemEditorCreatorBase)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QItemEditorCreatorBase
+ size=8 align=8
+ base size=8 base align=8
+QItemEditorCreatorBase (0x0x7f096412c600) 0 nearly-empty
+ vptr=((& QItemEditorCreatorBase::_ZTV22QItemEditorCreatorBase) + 16)
+
+Vtable for QItemEditorFactory
+QItemEditorFactory::_ZTV18QItemEditorFactory: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QItemEditorFactory)
+16 (int (*)(...))QItemEditorFactory::~QItemEditorFactory
+24 (int (*)(...))QItemEditorFactory::~QItemEditorFactory
+32 (int (*)(...))QItemEditorFactory::createEditor
+40 (int (*)(...))QItemEditorFactory::valuePropertyName
+
+Class QItemEditorFactory
+ size=16 align=8
+ base size=16 base align=8
+QItemEditorFactory (0x0x7f096412c960) 0
+ vptr=((& QItemEditorFactory::_ZTV18QItemEditorFactory) + 16)
+
+Class QKeyEventTransition::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QKeyEventTransition::QPrivateSignal (0x0x7f096412cc60) 0 empty
+
+Vtable for QKeyEventTransition
+QKeyEventTransition::_ZTV19QKeyEventTransition: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QKeyEventTransition)
+16 (int (*)(...))QKeyEventTransition::metaObject
+24 (int (*)(...))QKeyEventTransition::qt_metacast
+32 (int (*)(...))QKeyEventTransition::qt_metacall
+40 (int (*)(...))QKeyEventTransition::~QKeyEventTransition
+48 (int (*)(...))QKeyEventTransition::~QKeyEventTransition
+56 (int (*)(...))QEventTransition::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QKeyEventTransition::eventTest
+120 (int (*)(...))QKeyEventTransition::onTransition
+
+Class QKeyEventTransition
+ size=16 align=8
+ base size=16 base align=8
+QKeyEventTransition (0x0x7f0964cf4750) 0
+ vptr=((& QKeyEventTransition::_ZTV19QKeyEventTransition) + 16)
+ QEventTransition (0x0x7f0964cf47b8) 0
+ primary-for QKeyEventTransition (0x0x7f0964cf4750)
+ QAbstractTransition (0x0x7f0964cf4820) 0
+ primary-for QEventTransition (0x0x7f0964cf47b8)
+ QObject (0x0x7f096412cc00) 0
+ primary-for QAbstractTransition (0x0x7f0964cf4820)
+
+Class QKeySequenceEdit::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QKeySequenceEdit::QPrivateSignal (0x0x7f096412cf00) 0 empty
+
+Vtable for QKeySequenceEdit
+QKeySequenceEdit::_ZTV16QKeySequenceEdit: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QKeySequenceEdit)
+16 (int (*)(...))QKeySequenceEdit::metaObject
+24 (int (*)(...))QKeySequenceEdit::qt_metacast
+32 (int (*)(...))QKeySequenceEdit::qt_metacall
+40 (int (*)(...))QKeySequenceEdit::~QKeySequenceEdit
+48 (int (*)(...))QKeySequenceEdit::~QKeySequenceEdit
+56 (int (*)(...))QKeySequenceEdit::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QKeySequenceEdit::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QKeySequenceEdit::keyPressEvent
+216 (int (*)(...))QKeySequenceEdit::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI16QKeySequenceEdit)
+448 (int (*)(...))QKeySequenceEdit::_ZThn16_N16QKeySequenceEditD1Ev
+456 (int (*)(...))QKeySequenceEdit::_ZThn16_N16QKeySequenceEditD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QKeySequenceEdit
+ size=48 align=8
+ base size=48 base align=8
+QKeySequenceEdit (0x0x7f0964cf4888) 0
+ vptr=((& QKeySequenceEdit::_ZTV16QKeySequenceEdit) + 16)
+ QWidget (0x0x7f096bbe4150) 0
+ primary-for QKeySequenceEdit (0x0x7f0964cf4888)
+ QObject (0x0x7f096412ce40) 0
+ primary-for QWidget (0x0x7f096bbe4150)
+ QPaintDevice (0x0x7f096412cea0) 16
+ vptr=((& QKeySequenceEdit::_ZTV16QKeySequenceEdit) + 448)
+
+Class QLabel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLabel::QPrivateSignal (0x0x7f09641561e0) 0 empty
+
+Vtable for QLabel
+QLabel::_ZTV6QLabel: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QLabel)
+16 (int (*)(...))QLabel::metaObject
+24 (int (*)(...))QLabel::qt_metacast
+32 (int (*)(...))QLabel::qt_metacall
+40 (int (*)(...))QLabel::~QLabel
+48 (int (*)(...))QLabel::~QLabel
+56 (int (*)(...))QLabel::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QLabel::sizeHint
+136 (int (*)(...))QLabel::minimumSizeHint
+144 (int (*)(...))QLabel::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QLabel::mousePressEvent
+176 (int (*)(...))QLabel::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QLabel::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QLabel::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QLabel::focusInEvent
+232 (int (*)(...))QLabel::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QLabel::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QLabel::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QLabel::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QLabel::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI6QLabel)
+448 (int (*)(...))QLabel::_ZThn16_N6QLabelD1Ev
+456 (int (*)(...))QLabel::_ZThn16_N6QLabelD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QLabel
+ size=48 align=8
+ base size=48 base align=8
+QLabel (0x0x7f0964cf48f0) 0
+ vptr=((& QLabel::_ZTV6QLabel) + 16)
+ QFrame (0x0x7f0964cf4958) 0
+ primary-for QLabel (0x0x7f0964cf48f0)
+ QWidget (0x0x7f096bbe4310) 0
+ primary-for QFrame (0x0x7f0964cf4958)
+ QObject (0x0x7f0964156120) 0
+ primary-for QWidget (0x0x7f096bbe4310)
+ QPaintDevice (0x0x7f0964156180) 16
+ vptr=((& QLabel::_ZTV6QLabel) + 448)
+
+Class QLCDNumber::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLCDNumber::QPrivateSignal (0x0x7f0964156480) 0 empty
+
+Vtable for QLCDNumber
+QLCDNumber::_ZTV10QLCDNumber: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QLCDNumber)
+16 (int (*)(...))QLCDNumber::metaObject
+24 (int (*)(...))QLCDNumber::qt_metacast
+32 (int (*)(...))QLCDNumber::qt_metacall
+40 (int (*)(...))QLCDNumber::~QLCDNumber
+48 (int (*)(...))QLCDNumber::~QLCDNumber
+56 (int (*)(...))QLCDNumber::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QLCDNumber::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QLCDNumber::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI10QLCDNumber)
+448 (int (*)(...))QLCDNumber::_ZThn16_N10QLCDNumberD1Ev
+456 (int (*)(...))QLCDNumber::_ZThn16_N10QLCDNumberD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QLCDNumber
+ size=48 align=8
+ base size=48 base align=8
+QLCDNumber (0x0x7f0964cf49c0) 0
+ vptr=((& QLCDNumber::_ZTV10QLCDNumber) + 16)
+ QFrame (0x0x7f0964cf4a28) 0
+ primary-for QLCDNumber (0x0x7f0964cf49c0)
+ QWidget (0x0x7f096bbe4620) 0
+ primary-for QFrame (0x0x7f0964cf4a28)
+ QObject (0x0x7f09641563c0) 0
+ primary-for QWidget (0x0x7f096bbe4620)
+ QPaintDevice (0x0x7f0964156420) 16
+ vptr=((& QLCDNumber::_ZTV10QLCDNumber) + 448)
+
+Class QListView::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QListView::QPrivateSignal (0x0x7f09641568a0) 0 empty
+
+Vtable for QListView
+QListView::_ZTV9QListView: 106 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QListView)
+16 (int (*)(...))QListView::metaObject
+24 (int (*)(...))QListView::qt_metacast
+32 (int (*)(...))QListView::qt_metacall
+40 (int (*)(...))QListView::~QListView
+48 (int (*)(...))QListView::~QListView
+56 (int (*)(...))QListView::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QListView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractItemView::mousePressEvent
+176 (int (*)(...))QListView::mouseReleaseEvent
+184 (int (*)(...))QAbstractItemView::mouseDoubleClickEvent
+192 (int (*)(...))QListView::mouseMoveEvent
+200 (int (*)(...))QListView::wheelEvent
+208 (int (*)(...))QAbstractItemView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QListView::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QListView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QListView::dragMoveEvent
+328 (int (*)(...))QListView::dragLeaveEvent
+336 (int (*)(...))QListView::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractItemView::viewportEvent
+448 (int (*)(...))QListView::scrollContentsBy
+456 (int (*)(...))QListView::viewportSizeHint
+464 (int (*)(...))QAbstractItemView::setModel
+472 (int (*)(...))QAbstractItemView::setSelectionModel
+480 (int (*)(...))QAbstractItemView::keyboardSearch
+488 (int (*)(...))QListView::visualRect
+496 (int (*)(...))QListView::scrollTo
+504 (int (*)(...))QListView::indexAt
+512 (int (*)(...))QAbstractItemView::sizeHintForRow
+520 (int (*)(...))QAbstractItemView::sizeHintForColumn
+528 (int (*)(...))QListView::reset
+536 (int (*)(...))QListView::setRootIndex
+544 (int (*)(...))QListView::doItemsLayout
+552 (int (*)(...))QAbstractItemView::selectAll
+560 (int (*)(...))QListView::dataChanged
+568 (int (*)(...))QListView::rowsInserted
+576 (int (*)(...))QListView::rowsAboutToBeRemoved
+584 (int (*)(...))QListView::selectionChanged
+592 (int (*)(...))QListView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QListView::updateGeometries
+624 (int (*)(...))QAbstractItemView::verticalScrollbarAction
+632 (int (*)(...))QAbstractItemView::horizontalScrollbarAction
+640 (int (*)(...))QAbstractItemView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))QListView::moveCursor
+688 (int (*)(...))QListView::horizontalOffset
+696 (int (*)(...))QListView::verticalOffset
+704 (int (*)(...))QListView::isIndexHidden
+712 (int (*)(...))QListView::setSelection
+720 (int (*)(...))QListView::visualRegionForSelection
+728 (int (*)(...))QListView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QListView::startDrag
+760 (int (*)(...))QListView::viewOptions
+768 (int (*)(...))-16
+776 (int (*)(...))(& _ZTI9QListView)
+784 (int (*)(...))QListView::_ZThn16_N9QListViewD1Ev
+792 (int (*)(...))QListView::_ZThn16_N9QListViewD0Ev
+800 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+808 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+816 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+824 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+832 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+840 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QListView
+ size=48 align=8
+ base size=48 base align=8
+QListView (0x0x7f0964cf4a90) 0
+ vptr=((& QListView::_ZTV9QListView) + 16)
+ QAbstractItemView (0x0x7f0964cf4af8) 0
+ primary-for QListView (0x0x7f0964cf4a90)
+ QAbstractScrollArea (0x0x7f0964cf4b60) 0
+ primary-for QAbstractItemView (0x0x7f0964cf4af8)
+ QFrame (0x0x7f0964cf4bc8) 0
+ primary-for QAbstractScrollArea (0x0x7f0964cf4b60)
+ QWidget (0x0x7f096bbe4a80) 0
+ primary-for QFrame (0x0x7f0964cf4bc8)
+ QObject (0x0x7f09641567e0) 0
+ primary-for QWidget (0x0x7f096bbe4a80)
+ QPaintDevice (0x0x7f0964156840) 16
+ vptr=((& QListView::_ZTV9QListView) + 784)
+
+Vtable for QListWidgetItem
+QListWidgetItem::_ZTV15QListWidgetItem: 11 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QListWidgetItem)
+16 (int (*)(...))QListWidgetItem::~QListWidgetItem
+24 (int (*)(...))QListWidgetItem::~QListWidgetItem
+32 (int (*)(...))QListWidgetItem::clone
+40 (int (*)(...))QListWidgetItem::setBackgroundColor
+48 (int (*)(...))QListWidgetItem::data
+56 (int (*)(...))QListWidgetItem::setData
+64 (int (*)(...))QListWidgetItem::operator<
+72 (int (*)(...))QListWidgetItem::read
+80 (int (*)(...))QListWidgetItem::write
+
+Class QListWidgetItem
+ size=48 align=8
+ base size=44 base align=8
+QListWidgetItem (0x0x7f0964156e40) 0
+ vptr=((& QListWidgetItem::_ZTV15QListWidgetItem) + 16)
+
+Class QListWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QListWidget::QPrivateSignal (0x0x7f09641a6ba0) 0 empty
+
+Vtable for QListWidget
+QListWidget::_ZTV11QListWidget: 110 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QListWidget)
+16 (int (*)(...))QListWidget::metaObject
+24 (int (*)(...))QListWidget::qt_metacast
+32 (int (*)(...))QListWidget::qt_metacall
+40 (int (*)(...))QListWidget::~QListWidget
+48 (int (*)(...))QListWidget::~QListWidget
+56 (int (*)(...))QListWidget::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QListView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractItemView::mousePressEvent
+176 (int (*)(...))QListView::mouseReleaseEvent
+184 (int (*)(...))QAbstractItemView::mouseDoubleClickEvent
+192 (int (*)(...))QListView::mouseMoveEvent
+200 (int (*)(...))QListView::wheelEvent
+208 (int (*)(...))QAbstractItemView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QListView::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QListView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QListView::dragMoveEvent
+328 (int (*)(...))QListView::dragLeaveEvent
+336 (int (*)(...))QListWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractItemView::viewportEvent
+448 (int (*)(...))QListView::scrollContentsBy
+456 (int (*)(...))QListView::viewportSizeHint
+464 (int (*)(...))QListWidget::setModel
+472 (int (*)(...))QListWidget::setSelectionModel
+480 (int (*)(...))QAbstractItemView::keyboardSearch
+488 (int (*)(...))QListView::visualRect
+496 (int (*)(...))QListView::scrollTo
+504 (int (*)(...))QListView::indexAt
+512 (int (*)(...))QAbstractItemView::sizeHintForRow
+520 (int (*)(...))QAbstractItemView::sizeHintForColumn
+528 (int (*)(...))QListView::reset
+536 (int (*)(...))QListView::setRootIndex
+544 (int (*)(...))QListView::doItemsLayout
+552 (int (*)(...))QAbstractItemView::selectAll
+560 (int (*)(...))QListView::dataChanged
+568 (int (*)(...))QListView::rowsInserted
+576 (int (*)(...))QListView::rowsAboutToBeRemoved
+584 (int (*)(...))QListView::selectionChanged
+592 (int (*)(...))QListView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QListView::updateGeometries
+624 (int (*)(...))QAbstractItemView::verticalScrollbarAction
+632 (int (*)(...))QAbstractItemView::horizontalScrollbarAction
+640 (int (*)(...))QAbstractItemView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))QListView::moveCursor
+688 (int (*)(...))QListView::horizontalOffset
+696 (int (*)(...))QListView::verticalOffset
+704 (int (*)(...))QListView::isIndexHidden
+712 (int (*)(...))QListView::setSelection
+720 (int (*)(...))QListView::visualRegionForSelection
+728 (int (*)(...))QListView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QListView::startDrag
+760 (int (*)(...))QListView::viewOptions
+768 (int (*)(...))QListWidget::mimeTypes
+776 (int (*)(...))QListWidget::mimeData
+784 (int (*)(...))QListWidget::dropMimeData
+792 (int (*)(...))QListWidget::supportedDropActions
+800 (int (*)(...))-16
+808 (int (*)(...))(& _ZTI11QListWidget)
+816 (int (*)(...))QListWidget::_ZThn16_N11QListWidgetD1Ev
+824 (int (*)(...))QListWidget::_ZThn16_N11QListWidgetD0Ev
+832 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+840 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+848 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+856 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+864 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+872 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QListWidget
+ size=48 align=8
+ base size=48 base align=8
+QListWidget (0x0x7f0964cf4d00) 0
+ vptr=((& QListWidget::_ZTV11QListWidget) + 16)
+ QListView (0x0x7f0964cf4d68) 0
+ primary-for QListWidget (0x0x7f0964cf4d00)
+ QAbstractItemView (0x0x7f0964cf4dd0) 0
+ primary-for QListView (0x0x7f0964cf4d68)
+ QAbstractScrollArea (0x0x7f0964cf4e38) 0
+ primary-for QAbstractItemView (0x0x7f0964cf4dd0)
+ QFrame (0x0x7f0964cf4ea0) 0
+ primary-for QAbstractScrollArea (0x0x7f0964cf4e38)
+ QWidget (0x0x7f096bc31310) 0
+ primary-for QFrame (0x0x7f0964cf4ea0)
+ QObject (0x0x7f09641a6ae0) 0
+ primary-for QWidget (0x0x7f096bc31310)
+ QPaintDevice (0x0x7f09641a6b40) 16
+ vptr=((& QListWidget::_ZTV11QListWidget) + 816)
+
+Class QMainWindow::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMainWindow::QPrivateSignal (0x0x7f09641bd120) 0 empty
+
+Vtable for QMainWindow
+QMainWindow::_ZTV11QMainWindow: 65 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QMainWindow)
+16 (int (*)(...))QMainWindow::metaObject
+24 (int (*)(...))QMainWindow::qt_metacast
+32 (int (*)(...))QMainWindow::qt_metacall
+40 (int (*)(...))QMainWindow::~QMainWindow
+48 (int (*)(...))QMainWindow::~QMainWindow
+56 (int (*)(...))QMainWindow::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QMainWindow::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QMainWindow::createPopupMenu
+440 (int (*)(...))-16
+448 (int (*)(...))(& _ZTI11QMainWindow)
+456 (int (*)(...))QMainWindow::_ZThn16_N11QMainWindowD1Ev
+464 (int (*)(...))QMainWindow::_ZThn16_N11QMainWindowD0Ev
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QMainWindow
+ size=48 align=8
+ base size=48 base align=8
+QMainWindow (0x0x7f0964cf4f08) 0
+ vptr=((& QMainWindow::_ZTV11QMainWindow) + 16)
+ QWidget (0x0x7f096bc315b0) 0
+ primary-for QMainWindow (0x0x7f0964cf4f08)
+ QObject (0x0x7f09641bd060) 0
+ primary-for QWidget (0x0x7f096bc315b0)
+ QPaintDevice (0x0x7f09641bd0c0) 16
+ vptr=((& QMainWindow::_ZTV11QMainWindow) + 456)
+
+Class QMdiArea::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMdiArea::QPrivateSignal (0x0x7f09641bdc00) 0 empty
+
+Vtable for QMdiArea
+QMdiArea::_ZTV8QMdiArea: 68 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QMdiArea)
+16 (int (*)(...))QMdiArea::metaObject
+24 (int (*)(...))QMdiArea::qt_metacast
+32 (int (*)(...))QMdiArea::qt_metacall
+40 (int (*)(...))QMdiArea::~QMdiArea
+48 (int (*)(...))QMdiArea::~QMdiArea
+56 (int (*)(...))QMdiArea::event
+64 (int (*)(...))QMdiArea::eventFilter
+72 (int (*)(...))QMdiArea::timerEvent
+80 (int (*)(...))QMdiArea::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QMdiArea::sizeHint
+136 (int (*)(...))QMdiArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractScrollArea::mousePressEvent
+176 (int (*)(...))QAbstractScrollArea::mouseReleaseEvent
+184 (int (*)(...))QAbstractScrollArea::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractScrollArea::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QAbstractScrollArea::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QMdiArea::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QMdiArea::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractScrollArea::dragEnterEvent
+320 (int (*)(...))QAbstractScrollArea::dragMoveEvent
+328 (int (*)(...))QAbstractScrollArea::dragLeaveEvent
+336 (int (*)(...))QAbstractScrollArea::dropEvent
+344 (int (*)(...))QMdiArea::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QMdiArea::setupViewport
+440 (int (*)(...))QMdiArea::viewportEvent
+448 (int (*)(...))QMdiArea::scrollContentsBy
+456 (int (*)(...))QAbstractScrollArea::viewportSizeHint
+464 (int (*)(...))-16
+472 (int (*)(...))(& _ZTI8QMdiArea)
+480 (int (*)(...))QMdiArea::_ZThn16_N8QMdiAreaD1Ev
+488 (int (*)(...))QMdiArea::_ZThn16_N8QMdiAreaD0Ev
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QMdiArea
+ size=48 align=8
+ base size=48 base align=8
+QMdiArea (0x0x7f09641cc068) 0
+ vptr=((& QMdiArea::_ZTV8QMdiArea) + 16)
+ QAbstractScrollArea (0x0x7f09641cc0d0) 0
+ primary-for QMdiArea (0x0x7f09641cc068)
+ QFrame (0x0x7f09641cc138) 0
+ primary-for QAbstractScrollArea (0x0x7f09641cc0d0)
+ QWidget (0x0x7f096bc41540) 0
+ primary-for QFrame (0x0x7f09641cc138)
+ QObject (0x0x7f09641bdb40) 0
+ primary-for QWidget (0x0x7f096bc41540)
+ QPaintDevice (0x0x7f09641bdba0) 16
+ vptr=((& QMdiArea::_ZTV8QMdiArea) + 480)
+
+Class QMdiSubWindow::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMdiSubWindow::QPrivateSignal (0x0x7f09641e6720) 0 empty
+
+Vtable for QMdiSubWindow
+QMdiSubWindow::_ZTV13QMdiSubWindow: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QMdiSubWindow)
+16 (int (*)(...))QMdiSubWindow::metaObject
+24 (int (*)(...))QMdiSubWindow::qt_metacast
+32 (int (*)(...))QMdiSubWindow::qt_metacall
+40 (int (*)(...))QMdiSubWindow::~QMdiSubWindow
+48 (int (*)(...))QMdiSubWindow::~QMdiSubWindow
+56 (int (*)(...))QMdiSubWindow::event
+64 (int (*)(...))QMdiSubWindow::eventFilter
+72 (int (*)(...))QMdiSubWindow::timerEvent
+80 (int (*)(...))QMdiSubWindow::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QMdiSubWindow::sizeHint
+136 (int (*)(...))QMdiSubWindow::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QMdiSubWindow::mousePressEvent
+176 (int (*)(...))QMdiSubWindow::mouseReleaseEvent
+184 (int (*)(...))QMdiSubWindow::mouseDoubleClickEvent
+192 (int (*)(...))QMdiSubWindow::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QMdiSubWindow::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QMdiSubWindow::focusInEvent
+232 (int (*)(...))QMdiSubWindow::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QMdiSubWindow::leaveEvent
+256 (int (*)(...))QMdiSubWindow::paintEvent
+264 (int (*)(...))QMdiSubWindow::moveEvent
+272 (int (*)(...))QMdiSubWindow::resizeEvent
+280 (int (*)(...))QMdiSubWindow::closeEvent
+288 (int (*)(...))QMdiSubWindow::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QMdiSubWindow::showEvent
+352 (int (*)(...))QMdiSubWindow::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QMdiSubWindow::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI13QMdiSubWindow)
+448 (int (*)(...))QMdiSubWindow::_ZThn16_N13QMdiSubWindowD1Ev
+456 (int (*)(...))QMdiSubWindow::_ZThn16_N13QMdiSubWindowD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QMdiSubWindow
+ size=48 align=8
+ base size=48 base align=8
+QMdiSubWindow (0x0x7f09641cc270) 0
+ vptr=((& QMdiSubWindow::_ZTV13QMdiSubWindow) + 16)
+ QWidget (0x0x7f096bc90000) 0
+ primary-for QMdiSubWindow (0x0x7f09641cc270)
+ QObject (0x0x7f09641e6660) 0
+ primary-for QWidget (0x0x7f096bc90000)
+ QPaintDevice (0x0x7f09641e66c0) 16
+ vptr=((& QMdiSubWindow::_ZTV13QMdiSubWindow) + 448)
+
+Class QMenu::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMenu::QPrivateSignal (0x0x7f0964208120) 0 empty
+
+Vtable for QMenu
+QMenu::_ZTV5QMenu: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI5QMenu)
+16 (int (*)(...))QMenu::metaObject
+24 (int (*)(...))QMenu::qt_metacast
+32 (int (*)(...))QMenu::qt_metacall
+40 (int (*)(...))QMenu::~QMenu
+48 (int (*)(...))QMenu::~QMenu
+56 (int (*)(...))QMenu::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QMenu::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QMenu::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QMenu::mousePressEvent
+176 (int (*)(...))QMenu::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QMenu::mouseMoveEvent
+200 (int (*)(...))QMenu::wheelEvent
+208 (int (*)(...))QMenu::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QMenu::enterEvent
+248 (int (*)(...))QMenu::leaveEvent
+256 (int (*)(...))QMenu::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QMenu::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QMenu::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QMenu::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QMenu::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI5QMenu)
+448 (int (*)(...))QMenu::_ZThn16_N5QMenuD1Ev
+456 (int (*)(...))QMenu::_ZThn16_N5QMenuD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QMenu
+ size=48 align=8
+ base size=48 base align=8
+QMenu (0x0x7f09641cc3a8) 0
+ vptr=((& QMenu::_ZTV5QMenu) + 16)
+ QWidget (0x0x7f096bcb1850) 0
+ primary-for QMenu (0x0x7f09641cc3a8)
+ QObject (0x0x7f0964208060) 0
+ primary-for QWidget (0x0x7f096bcb1850)
+ QPaintDevice (0x0x7f09642080c0) 16
+ vptr=((& QMenu::_ZTV5QMenu) + 448)
+
+Class QMenuBar::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMenuBar::QPrivateSignal (0x0x7f0964208540) 0 empty
+
+Vtable for QMenuBar
+QMenuBar::_ZTV8QMenuBar: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QMenuBar)
+16 (int (*)(...))QMenuBar::metaObject
+24 (int (*)(...))QMenuBar::qt_metacast
+32 (int (*)(...))QMenuBar::qt_metacall
+40 (int (*)(...))QMenuBar::~QMenuBar
+48 (int (*)(...))QMenuBar::~QMenuBar
+56 (int (*)(...))QMenuBar::event
+64 (int (*)(...))QMenuBar::eventFilter
+72 (int (*)(...))QMenuBar::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QMenuBar::setVisible
+128 (int (*)(...))QMenuBar::sizeHint
+136 (int (*)(...))QMenuBar::minimumSizeHint
+144 (int (*)(...))QMenuBar::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QMenuBar::mousePressEvent
+176 (int (*)(...))QMenuBar::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QMenuBar::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QMenuBar::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QMenuBar::focusInEvent
+232 (int (*)(...))QMenuBar::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QMenuBar::leaveEvent
+256 (int (*)(...))QMenuBar::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QMenuBar::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QMenuBar::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QMenuBar::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI8QMenuBar)
+448 (int (*)(...))QMenuBar::_ZThn16_N8QMenuBarD1Ev
+456 (int (*)(...))QMenuBar::_ZThn16_N8QMenuBarD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QMenuBar
+ size=48 align=8
+ base size=48 base align=8
+QMenuBar (0x0x7f09641cc410) 0
+ vptr=((& QMenuBar::_ZTV8QMenuBar) + 16)
+ QWidget (0x0x7f096bcb18c0) 0
+ primary-for QMenuBar (0x0x7f09641cc410)
+ QObject (0x0x7f0964208480) 0
+ primary-for QWidget (0x0x7f096bcb18c0)
+ QPaintDevice (0x0x7f09642084e0) 16
+ vptr=((& QMenuBar::_ZTV8QMenuBar) + 448)
+
+Class QMessageBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMessageBox::QPrivateSignal (0x0x7f09642088a0) 0 empty
+
+Vtable for QMessageBox
+QMessageBox::_ZTV11QMessageBox: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QMessageBox)
+16 (int (*)(...))QMessageBox::metaObject
+24 (int (*)(...))QMessageBox::qt_metacast
+32 (int (*)(...))QMessageBox::qt_metacall
+40 (int (*)(...))QMessageBox::~QMessageBox
+48 (int (*)(...))QMessageBox::~QMessageBox
+56 (int (*)(...))QMessageBox::event
+64 (int (*)(...))QDialog::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QDialog::setVisible
+128 (int (*)(...))QDialog::sizeHint
+136 (int (*)(...))QDialog::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QMessageBox::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QMessageBox::resizeEvent
+280 (int (*)(...))QMessageBox::closeEvent
+288 (int (*)(...))QDialog::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QMessageBox::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QMessageBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDialog::open
+440 (int (*)(...))QDialog::exec
+448 (int (*)(...))QDialog::done
+456 (int (*)(...))QDialog::accept
+464 (int (*)(...))QDialog::reject
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI11QMessageBox)
+488 (int (*)(...))QMessageBox::_ZThn16_N11QMessageBoxD1Ev
+496 (int (*)(...))QMessageBox::_ZThn16_N11QMessageBoxD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QMessageBox
+ size=48 align=8
+ base size=48 base align=8
+QMessageBox (0x0x7f09641cc478) 0
+ vptr=((& QMessageBox::_ZTV11QMessageBox) + 16)
+ QDialog (0x0x7f09641cc4e0) 0
+ primary-for QMessageBox (0x0x7f09641cc478)
+ QWidget (0x0x7f096bcb1a10) 0
+ primary-for QDialog (0x0x7f09641cc4e0)
+ QObject (0x0x7f09642087e0) 0
+ primary-for QWidget (0x0x7f096bcb1a10)
+ QPaintDevice (0x0x7f0964208840) 16
+ vptr=((& QMessageBox::_ZTV11QMessageBox) + 488)
+
+Class QMouseEventTransition::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMouseEventTransition::QPrivateSignal (0x0x7f09642454e0) 0 empty
+
+Vtable for QMouseEventTransition
+QMouseEventTransition::_ZTV21QMouseEventTransition: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QMouseEventTransition)
+16 (int (*)(...))QMouseEventTransition::metaObject
+24 (int (*)(...))QMouseEventTransition::qt_metacast
+32 (int (*)(...))QMouseEventTransition::qt_metacall
+40 (int (*)(...))QMouseEventTransition::~QMouseEventTransition
+48 (int (*)(...))QMouseEventTransition::~QMouseEventTransition
+56 (int (*)(...))QEventTransition::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QMouseEventTransition::eventTest
+120 (int (*)(...))QMouseEventTransition::onTransition
+
+Class QMouseEventTransition
+ size=16 align=8
+ base size=16 base align=8
+QMouseEventTransition (0x0x7f09641cc618) 0
+ vptr=((& QMouseEventTransition::_ZTV21QMouseEventTransition) + 16)
+ QEventTransition (0x0x7f09641cc680) 0
+ primary-for QMouseEventTransition (0x0x7f09641cc618)
+ QAbstractTransition (0x0x7f09641cc6e8) 0
+ primary-for QEventTransition (0x0x7f09641cc680)
+ QObject (0x0x7f0964245480) 0
+ primary-for QAbstractTransition (0x0x7f09641cc6e8)
+
+Class QOpenGLWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLWidget::QPrivateSignal (0x0x7f0964245780) 0 empty
+
+Vtable for QOpenGLWidget
+QOpenGLWidget::_ZTV13QOpenGLWidget: 67 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QOpenGLWidget)
+16 (int (*)(...))QOpenGLWidget::metaObject
+24 (int (*)(...))QOpenGLWidget::qt_metacast
+32 (int (*)(...))QOpenGLWidget::qt_metacall
+40 (int (*)(...))QOpenGLWidget::~QOpenGLWidget
+48 (int (*)(...))QOpenGLWidget::~QOpenGLWidget
+56 (int (*)(...))QOpenGLWidget::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QOpenGLWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QOpenGLWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QOpenGLWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QOpenGLWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QOpenGLWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QOpenGLWidget::initializeGL
+440 (int (*)(...))QOpenGLWidget::resizeGL
+448 (int (*)(...))QOpenGLWidget::paintGL
+456 (int (*)(...))-16
+464 (int (*)(...))(& _ZTI13QOpenGLWidget)
+472 (int (*)(...))QOpenGLWidget::_ZThn16_N13QOpenGLWidgetD1Ev
+480 (int (*)(...))QOpenGLWidget::_ZThn16_N13QOpenGLWidgetD0Ev
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 (int (*)(...))QOpenGLWidget::_ZThn16_NK13QOpenGLWidget11paintEngineEv
+504 (int (*)(...))QOpenGLWidget::_ZThn16_NK13QOpenGLWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+520 (int (*)(...))QOpenGLWidget::_ZThn16_NK13QOpenGLWidget10redirectedEP6QPoint
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QOpenGLWidget
+ size=48 align=8
+ base size=48 base align=8
+QOpenGLWidget (0x0x7f09641cc750) 0
+ vptr=((& QOpenGLWidget::_ZTV13QOpenGLWidget) + 16)
+ QWidget (0x0x7f096b9c8850) 0
+ primary-for QOpenGLWidget (0x0x7f09641cc750)
+ QObject (0x0x7f09642456c0) 0
+ primary-for QWidget (0x0x7f096b9c8850)
+ QPaintDevice (0x0x7f0964245720) 16
+ vptr=((& QOpenGLWidget::_ZTV13QOpenGLWidget) + 472)
+
+Class QTextEdit::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextEdit::QPrivateSignal (0x0x7f0964245a20) 0 empty
+
+Class QTextEdit::ExtraSelection
+ size=24 align=8
+ base size=24 base align=8
+QTextEdit::ExtraSelection (0x0x7f0964245a80) 0
+
+Vtable for QTextEdit
+QTextEdit::_ZTV9QTextEdit: 73 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QTextEdit)
+16 (int (*)(...))QTextEdit::metaObject
+24 (int (*)(...))QTextEdit::qt_metacast
+32 (int (*)(...))QTextEdit::qt_metacall
+40 (int (*)(...))QTextEdit::~QTextEdit
+48 (int (*)(...))QTextEdit::~QTextEdit
+56 (int (*)(...))QTextEdit::event
+64 (int (*)(...))QAbstractScrollArea::eventFilter
+72 (int (*)(...))QTextEdit::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QTextEdit::mousePressEvent
+176 (int (*)(...))QTextEdit::mouseReleaseEvent
+184 (int (*)(...))QTextEdit::mouseDoubleClickEvent
+192 (int (*)(...))QTextEdit::mouseMoveEvent
+200 (int (*)(...))QTextEdit::wheelEvent
+208 (int (*)(...))QTextEdit::keyPressEvent
+216 (int (*)(...))QTextEdit::keyReleaseEvent
+224 (int (*)(...))QTextEdit::focusInEvent
+232 (int (*)(...))QTextEdit::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QTextEdit::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QTextEdit::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QTextEdit::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QTextEdit::dragEnterEvent
+320 (int (*)(...))QTextEdit::dragMoveEvent
+328 (int (*)(...))QTextEdit::dragLeaveEvent
+336 (int (*)(...))QTextEdit::dropEvent
+344 (int (*)(...))QTextEdit::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QTextEdit::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QTextEdit::inputMethodEvent
+416 (int (*)(...))QTextEdit::inputMethodQuery
+424 (int (*)(...))QTextEdit::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractScrollArea::viewportEvent
+448 (int (*)(...))QTextEdit::scrollContentsBy
+456 (int (*)(...))QAbstractScrollArea::viewportSizeHint
+464 (int (*)(...))QTextEdit::loadResource
+472 (int (*)(...))QTextEdit::createMimeDataFromSelection
+480 (int (*)(...))QTextEdit::canInsertFromMimeData
+488 (int (*)(...))QTextEdit::insertFromMimeData
+496 (int (*)(...))QTextEdit::doSetTextCursor
+504 (int (*)(...))-16
+512 (int (*)(...))(& _ZTI9QTextEdit)
+520 (int (*)(...))QTextEdit::_ZThn16_N9QTextEditD1Ev
+528 (int (*)(...))QTextEdit::_ZThn16_N9QTextEditD0Ev
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+552 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+560 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+568 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+576 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QTextEdit
+ size=48 align=8
+ base size=48 base align=8
+QTextEdit (0x0x7f09641cc820) 0
+ vptr=((& QTextEdit::_ZTV9QTextEdit) + 16)
+ QAbstractScrollArea (0x0x7f09641cc888) 0
+ primary-for QTextEdit (0x0x7f09641cc820)
+ QFrame (0x0x7f09641cc8f0) 0
+ primary-for QAbstractScrollArea (0x0x7f09641cc888)
+ QWidget (0x0x7f096b9c8af0) 0
+ primary-for QFrame (0x0x7f09641cc8f0)
+ QObject (0x0x7f0964245960) 0
+ primary-for QWidget (0x0x7f096b9c8af0)
+ QPaintDevice (0x0x7f09642459c0) 16
+ vptr=((& QTextEdit::_ZTV9QTextEdit) + 520)
+
+Class QPlainTextEdit::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPlainTextEdit::QPrivateSignal (0x0x7f0964279720) 0 empty
+
+Vtable for QPlainTextEdit
+QPlainTextEdit::_ZTV14QPlainTextEdit: 73 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QPlainTextEdit)
+16 (int (*)(...))QPlainTextEdit::metaObject
+24 (int (*)(...))QPlainTextEdit::qt_metacast
+32 (int (*)(...))QPlainTextEdit::qt_metacall
+40 (int (*)(...))QPlainTextEdit::~QPlainTextEdit
+48 (int (*)(...))QPlainTextEdit::~QPlainTextEdit
+56 (int (*)(...))QPlainTextEdit::event
+64 (int (*)(...))QAbstractScrollArea::eventFilter
+72 (int (*)(...))QPlainTextEdit::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QPlainTextEdit::mousePressEvent
+176 (int (*)(...))QPlainTextEdit::mouseReleaseEvent
+184 (int (*)(...))QPlainTextEdit::mouseDoubleClickEvent
+192 (int (*)(...))QPlainTextEdit::mouseMoveEvent
+200 (int (*)(...))QPlainTextEdit::wheelEvent
+208 (int (*)(...))QPlainTextEdit::keyPressEvent
+216 (int (*)(...))QPlainTextEdit::keyReleaseEvent
+224 (int (*)(...))QPlainTextEdit::focusInEvent
+232 (int (*)(...))QPlainTextEdit::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QPlainTextEdit::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QPlainTextEdit::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QPlainTextEdit::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QPlainTextEdit::dragEnterEvent
+320 (int (*)(...))QPlainTextEdit::dragMoveEvent
+328 (int (*)(...))QPlainTextEdit::dragLeaveEvent
+336 (int (*)(...))QPlainTextEdit::dropEvent
+344 (int (*)(...))QPlainTextEdit::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QPlainTextEdit::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QPlainTextEdit::inputMethodEvent
+416 (int (*)(...))QPlainTextEdit::inputMethodQuery
+424 (int (*)(...))QPlainTextEdit::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractScrollArea::viewportEvent
+448 (int (*)(...))QPlainTextEdit::scrollContentsBy
+456 (int (*)(...))QAbstractScrollArea::viewportSizeHint
+464 (int (*)(...))QPlainTextEdit::loadResource
+472 (int (*)(...))QPlainTextEdit::createMimeDataFromSelection
+480 (int (*)(...))QPlainTextEdit::canInsertFromMimeData
+488 (int (*)(...))QPlainTextEdit::insertFromMimeData
+496 (int (*)(...))QPlainTextEdit::doSetTextCursor
+504 (int (*)(...))-16
+512 (int (*)(...))(& _ZTI14QPlainTextEdit)
+520 (int (*)(...))QPlainTextEdit::_ZThn16_N14QPlainTextEditD1Ev
+528 (int (*)(...))QPlainTextEdit::_ZThn16_N14QPlainTextEditD0Ev
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+552 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+560 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+568 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+576 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QPlainTextEdit
+ size=48 align=8
+ base size=48 base align=8
+QPlainTextEdit (0x0x7f09641cca28) 0
+ vptr=((& QPlainTextEdit::_ZTV14QPlainTextEdit) + 16)
+ QAbstractScrollArea (0x0x7f09641cca90) 0
+ primary-for QPlainTextEdit (0x0x7f09641cca28)
+ QFrame (0x0x7f09641ccaf8) 0
+ primary-for QAbstractScrollArea (0x0x7f09641cca90)
+ QWidget (0x0x7f096ba30230) 0
+ primary-for QFrame (0x0x7f09641ccaf8)
+ QObject (0x0x7f0964279660) 0
+ primary-for QWidget (0x0x7f096ba30230)
+ QPaintDevice (0x0x7f09642796c0) 16
+ vptr=((& QPlainTextEdit::_ZTV14QPlainTextEdit) + 520)
+
+Class QPlainTextDocumentLayout::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPlainTextDocumentLayout::QPrivateSignal (0x0x7f0964279cc0) 0 empty
+
+Vtable for QPlainTextDocumentLayout
+QPlainTextDocumentLayout::_ZTV24QPlainTextDocumentLayout: 24 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QPlainTextDocumentLayout)
+16 (int (*)(...))QPlainTextDocumentLayout::metaObject
+24 (int (*)(...))QPlainTextDocumentLayout::qt_metacast
+32 (int (*)(...))QPlainTextDocumentLayout::qt_metacall
+40 (int (*)(...))QPlainTextDocumentLayout::~QPlainTextDocumentLayout
+48 (int (*)(...))QPlainTextDocumentLayout::~QPlainTextDocumentLayout
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QPlainTextDocumentLayout::draw
+120 (int (*)(...))QPlainTextDocumentLayout::hitTest
+128 (int (*)(...))QPlainTextDocumentLayout::pageCount
+136 (int (*)(...))QPlainTextDocumentLayout::documentSize
+144 (int (*)(...))QPlainTextDocumentLayout::frameBoundingRect
+152 (int (*)(...))QPlainTextDocumentLayout::blockBoundingRect
+160 (int (*)(...))QPlainTextDocumentLayout::documentChanged
+168 (int (*)(...))QAbstractTextDocumentLayout::resizeInlineObject
+176 (int (*)(...))QAbstractTextDocumentLayout::positionInlineObject
+184 (int (*)(...))QAbstractTextDocumentLayout::drawInlineObject
+
+Class QPlainTextDocumentLayout
+ size=16 align=8
+ base size=16 base align=8
+QPlainTextDocumentLayout (0x0x7f09641ccb60) 0
+ vptr=((& QPlainTextDocumentLayout::_ZTV24QPlainTextDocumentLayout) + 16)
+ QAbstractTextDocumentLayout (0x0x7f09641ccbc8) 0
+ primary-for QPlainTextDocumentLayout (0x0x7f09641ccb60)
+ QObject (0x0x7f0964279c60) 0
+ primary-for QAbstractTextDocumentLayout (0x0x7f09641ccbc8)
+
+Class QProgressBar::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QProgressBar::QPrivateSignal (0x0x7f0964279f60) 0 empty
+
+Vtable for QProgressBar
+QProgressBar::_ZTV12QProgressBar: 65 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QProgressBar)
+16 (int (*)(...))QProgressBar::metaObject
+24 (int (*)(...))QProgressBar::qt_metacast
+32 (int (*)(...))QProgressBar::qt_metacall
+40 (int (*)(...))QProgressBar::~QProgressBar
+48 (int (*)(...))QProgressBar::~QProgressBar
+56 (int (*)(...))QProgressBar::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QProgressBar::sizeHint
+136 (int (*)(...))QProgressBar::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QProgressBar::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QProgressBar::text
+440 (int (*)(...))-16
+448 (int (*)(...))(& _ZTI12QProgressBar)
+456 (int (*)(...))QProgressBar::_ZThn16_N12QProgressBarD1Ev
+464 (int (*)(...))QProgressBar::_ZThn16_N12QProgressBarD0Ev
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QProgressBar
+ size=48 align=8
+ base size=48 base align=8
+QProgressBar (0x0x7f09641ccc30) 0
+ vptr=((& QProgressBar::_ZTV12QProgressBar) + 16)
+ QWidget (0x0x7f096ba305b0) 0
+ primary-for QProgressBar (0x0x7f09641ccc30)
+ QObject (0x0x7f0964279ea0) 0
+ primary-for QWidget (0x0x7f096ba305b0)
+ QPaintDevice (0x0x7f0964279f00) 16
+ vptr=((& QProgressBar::_ZTV12QProgressBar) + 456)
+
+Class QProgressDialog::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QProgressDialog::QPrivateSignal (0x0x7f09642a6300) 0 empty
+
+Vtable for QProgressDialog
+QProgressDialog::_ZTV15QProgressDialog: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QProgressDialog)
+16 (int (*)(...))QProgressDialog::metaObject
+24 (int (*)(...))QProgressDialog::qt_metacast
+32 (int (*)(...))QProgressDialog::qt_metacall
+40 (int (*)(...))QProgressDialog::~QProgressDialog
+48 (int (*)(...))QProgressDialog::~QProgressDialog
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QDialog::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QDialog::setVisible
+128 (int (*)(...))QProgressDialog::sizeHint
+136 (int (*)(...))QDialog::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QDialog::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QProgressDialog::resizeEvent
+280 (int (*)(...))QProgressDialog::closeEvent
+288 (int (*)(...))QDialog::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QProgressDialog::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QProgressDialog::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDialog::open
+440 (int (*)(...))QDialog::exec
+448 (int (*)(...))QDialog::done
+456 (int (*)(...))QDialog::accept
+464 (int (*)(...))QDialog::reject
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI15QProgressDialog)
+488 (int (*)(...))QProgressDialog::_ZThn16_N15QProgressDialogD1Ev
+496 (int (*)(...))QProgressDialog::_ZThn16_N15QProgressDialogD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QProgressDialog
+ size=48 align=8
+ base size=48 base align=8
+QProgressDialog (0x0x7f09641ccc98) 0
+ vptr=((& QProgressDialog::_ZTV15QProgressDialog) + 16)
+ QDialog (0x0x7f09641ccd00) 0
+ primary-for QProgressDialog (0x0x7f09641ccc98)
+ QWidget (0x0x7f096ba308c0) 0
+ primary-for QDialog (0x0x7f09641ccd00)
+ QObject (0x0x7f09642a6240) 0
+ primary-for QWidget (0x0x7f096ba308c0)
+ QPaintDevice (0x0x7f09642a62a0) 16
+ vptr=((& QProgressDialog::_ZTV15QProgressDialog) + 488)
+
+Class QProxyStyle::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QProxyStyle::QPrivateSignal (0x0x7f09642a6540) 0 empty
+
+Vtable for QProxyStyle
+QProxyStyle::_ZTV11QProxyStyle: 37 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QProxyStyle)
+16 (int (*)(...))QProxyStyle::metaObject
+24 (int (*)(...))QProxyStyle::qt_metacast
+32 (int (*)(...))QProxyStyle::qt_metacall
+40 (int (*)(...))QProxyStyle::~QProxyStyle
+48 (int (*)(...))QProxyStyle::~QProxyStyle
+56 (int (*)(...))QProxyStyle::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QProxyStyle::polish
+120 (int (*)(...))QProxyStyle::unpolish
+128 (int (*)(...))QProxyStyle::polish
+136 (int (*)(...))QProxyStyle::unpolish
+144 (int (*)(...))QProxyStyle::polish
+152 (int (*)(...))QProxyStyle::itemTextRect
+160 (int (*)(...))QProxyStyle::itemPixmapRect
+168 (int (*)(...))QProxyStyle::drawItemText
+176 (int (*)(...))QProxyStyle::drawItemPixmap
+184 (int (*)(...))QProxyStyle::standardPalette
+192 (int (*)(...))QProxyStyle::drawPrimitive
+200 (int (*)(...))QProxyStyle::drawControl
+208 (int (*)(...))QProxyStyle::subElementRect
+216 (int (*)(...))QProxyStyle::drawComplexControl
+224 (int (*)(...))QProxyStyle::hitTestComplexControl
+232 (int (*)(...))QProxyStyle::subControlRect
+240 (int (*)(...))QProxyStyle::pixelMetric
+248 (int (*)(...))QProxyStyle::sizeFromContents
+256 (int (*)(...))QProxyStyle::styleHint
+264 (int (*)(...))QProxyStyle::standardPixmap
+272 (int (*)(...))QProxyStyle::standardIcon
+280 (int (*)(...))QProxyStyle::generatedIconPixmap
+288 (int (*)(...))QProxyStyle::layoutSpacing
+
+Class QProxyStyle
+ size=16 align=8
+ base size=16 base align=8
+QProxyStyle (0x0x7f09641ccd68) 0
+ vptr=((& QProxyStyle::_ZTV11QProxyStyle) + 16)
+ QCommonStyle (0x0x7f09641ccdd0) 0
+ primary-for QProxyStyle (0x0x7f09641ccd68)
+ QStyle (0x0x7f09641cce38) 0
+ primary-for QCommonStyle (0x0x7f09641ccdd0)
+ QObject (0x0x7f09642a64e0) 0
+ primary-for QStyle (0x0x7f09641cce38)
+
+Class QRadioButton::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QRadioButton::QPrivateSignal (0x0x7f09642a67e0) 0 empty
+
+Vtable for QRadioButton
+QRadioButton::_ZTV12QRadioButton: 67 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QRadioButton)
+16 (int (*)(...))QRadioButton::metaObject
+24 (int (*)(...))QRadioButton::qt_metacast
+32 (int (*)(...))QRadioButton::qt_metacall
+40 (int (*)(...))QRadioButton::~QRadioButton
+48 (int (*)(...))QRadioButton::~QRadioButton
+56 (int (*)(...))QRadioButton::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractButton::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QRadioButton::sizeHint
+136 (int (*)(...))QRadioButton::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractButton::mousePressEvent
+176 (int (*)(...))QAbstractButton::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QRadioButton::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QAbstractButton::keyPressEvent
+216 (int (*)(...))QAbstractButton::keyReleaseEvent
+224 (int (*)(...))QAbstractButton::focusInEvent
+232 (int (*)(...))QAbstractButton::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QRadioButton::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractButton::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QRadioButton::hitButton
+440 (int (*)(...))QAbstractButton::checkStateSet
+448 (int (*)(...))QAbstractButton::nextCheckState
+456 (int (*)(...))-16
+464 (int (*)(...))(& _ZTI12QRadioButton)
+472 (int (*)(...))QRadioButton::_ZThn16_N12QRadioButtonD1Ev
+480 (int (*)(...))QRadioButton::_ZThn16_N12QRadioButtonD0Ev
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QRadioButton
+ size=48 align=8
+ base size=48 base align=8
+QRadioButton (0x0x7f09641ccea0) 0
+ vptr=((& QRadioButton::_ZTV12QRadioButton) + 16)
+ QAbstractButton (0x0x7f09641ccf08) 0
+ primary-for QRadioButton (0x0x7f09641ccea0)
+ QWidget (0x0x7f096ba30bd0) 0
+ primary-for QAbstractButton (0x0x7f09641ccf08)
+ QObject (0x0x7f09642a6720) 0
+ primary-for QWidget (0x0x7f096ba30bd0)
+ QPaintDevice (0x0x7f09642a6780) 16
+ vptr=((& QRadioButton::_ZTV12QRadioButton) + 472)
+
+Class QScrollBar::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QScrollBar::QPrivateSignal (0x0x7f09642a6a80) 0 empty
+
+Vtable for QScrollBar
+QScrollBar::_ZTV10QScrollBar: 65 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QScrollBar)
+16 (int (*)(...))QScrollBar::metaObject
+24 (int (*)(...))QScrollBar::qt_metacast
+32 (int (*)(...))QScrollBar::qt_metacall
+40 (int (*)(...))QScrollBar::~QScrollBar
+48 (int (*)(...))QScrollBar::~QScrollBar
+56 (int (*)(...))QScrollBar::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSlider::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QScrollBar::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QScrollBar::mousePressEvent
+176 (int (*)(...))QScrollBar::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QScrollBar::mouseMoveEvent
+200 (int (*)(...))QScrollBar::wheelEvent
+208 (int (*)(...))QAbstractSlider::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QScrollBar::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QScrollBar::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QScrollBar::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSlider::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QScrollBar::sliderChange
+440 (int (*)(...))-16
+448 (int (*)(...))(& _ZTI10QScrollBar)
+456 (int (*)(...))QScrollBar::_ZThn16_N10QScrollBarD1Ev
+464 (int (*)(...))QScrollBar::_ZThn16_N10QScrollBarD0Ev
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QScrollBar
+ size=48 align=8
+ base size=48 base align=8
+QScrollBar (0x0x7f09641ccf70) 0
+ vptr=((& QScrollBar::_ZTV10QScrollBar) + 16)
+ QAbstractSlider (0x0x7f09642c8000) 0
+ primary-for QScrollBar (0x0x7f09641ccf70)
+ QWidget (0x0x7f096ba30d20) 0
+ primary-for QAbstractSlider (0x0x7f09642c8000)
+ QObject (0x0x7f09642a69c0) 0
+ primary-for QWidget (0x0x7f096ba30d20)
+ QPaintDevice (0x0x7f09642a6a20) 16
+ vptr=((& QScrollBar::_ZTV10QScrollBar) + 456)
+
+Vtable for QScrollerProperties
+QScrollerProperties::_ZTV19QScrollerProperties: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QScrollerProperties)
+16 (int (*)(...))QScrollerProperties::~QScrollerProperties
+24 (int (*)(...))QScrollerProperties::~QScrollerProperties
+
+Class QScrollerProperties
+ size=16 align=8
+ base size=16 base align=8
+QScrollerProperties (0x0x7f09642a6c60) 0
+ vptr=((& QScrollerProperties::_ZTV19QScrollerProperties) + 16)
+
+Class QScroller::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QScroller::QPrivateSignal (0x0x7f09642dc180) 0 empty
+
+Vtable for QScroller
+QScroller::_ZTV9QScroller: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QScroller)
+16 (int (*)(...))QScroller::metaObject
+24 (int (*)(...))QScroller::qt_metacast
+32 (int (*)(...))QScroller::qt_metacall
+40 (int (*)(...))QScroller::~QScroller
+48 (int (*)(...))QScroller::~QScroller
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QScroller
+ size=24 align=8
+ base size=24 base align=8
+QScroller (0x0x7f09642c8068) 0
+ vptr=((& QScroller::_ZTV9QScroller) + 16)
+ QObject (0x0x7f09642dc120) 0
+ primary-for QScroller (0x0x7f09642c8068)
+
+Class QShortcut::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QShortcut::QPrivateSignal (0x0x7f09642dc480) 0 empty
+
+Vtable for QShortcut
+QShortcut::_ZTV9QShortcut: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QShortcut)
+16 (int (*)(...))QShortcut::metaObject
+24 (int (*)(...))QShortcut::qt_metacast
+32 (int (*)(...))QShortcut::qt_metacall
+40 (int (*)(...))QShortcut::~QShortcut
+48 (int (*)(...))QShortcut::~QShortcut
+56 (int (*)(...))QShortcut::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QShortcut
+ size=16 align=8
+ base size=16 base align=8
+QShortcut (0x0x7f09642c80d0) 0
+ vptr=((& QShortcut::_ZTV9QShortcut) + 16)
+ QObject (0x0x7f09642dc420) 0
+ primary-for QShortcut (0x0x7f09642c80d0)
+
+Class QSizeGrip::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSizeGrip::QPrivateSignal (0x0x7f09642dc780) 0 empty
+
+Vtable for QSizeGrip
+QSizeGrip::_ZTV9QSizeGrip: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QSizeGrip)
+16 (int (*)(...))QSizeGrip::metaObject
+24 (int (*)(...))QSizeGrip::qt_metacast
+32 (int (*)(...))QSizeGrip::qt_metacall
+40 (int (*)(...))QSizeGrip::~QSizeGrip
+48 (int (*)(...))QSizeGrip::~QSizeGrip
+56 (int (*)(...))QSizeGrip::event
+64 (int (*)(...))QSizeGrip::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QSizeGrip::setVisible
+128 (int (*)(...))QSizeGrip::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QSizeGrip::mousePressEvent
+176 (int (*)(...))QSizeGrip::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QSizeGrip::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QSizeGrip::paintEvent
+264 (int (*)(...))QSizeGrip::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QSizeGrip::showEvent
+352 (int (*)(...))QSizeGrip::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI9QSizeGrip)
+448 (int (*)(...))QSizeGrip::_ZThn16_N9QSizeGripD1Ev
+456 (int (*)(...))QSizeGrip::_ZThn16_N9QSizeGripD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QSizeGrip
+ size=48 align=8
+ base size=48 base align=8
+QSizeGrip (0x0x7f09642c8138) 0
+ vptr=((& QSizeGrip::_ZTV9QSizeGrip) + 16)
+ QWidget (0x0x7f096b882690) 0
+ primary-for QSizeGrip (0x0x7f09642c8138)
+ QObject (0x0x7f09642dc6c0) 0
+ primary-for QWidget (0x0x7f096b882690)
+ QPaintDevice (0x0x7f09642dc720) 16
+ vptr=((& QSizeGrip::_ZTV9QSizeGrip) + 448)
+
+Class QSpinBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSpinBox::QPrivateSignal (0x0x7f09642dca20) 0 empty
+
+Vtable for QSpinBox
+QSpinBox::_ZTV8QSpinBox: 71 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QSpinBox)
+16 (int (*)(...))QSpinBox::metaObject
+24 (int (*)(...))QSpinBox::qt_metacast
+32 (int (*)(...))QSpinBox::qt_metacall
+40 (int (*)(...))QSpinBox::~QSpinBox
+48 (int (*)(...))QSpinBox::~QSpinBox
+56 (int (*)(...))QSpinBox::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSpinBox::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractSpinBox::sizeHint
+136 (int (*)(...))QAbstractSpinBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractSpinBox::mousePressEvent
+176 (int (*)(...))QAbstractSpinBox::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractSpinBox::mouseMoveEvent
+200 (int (*)(...))QAbstractSpinBox::wheelEvent
+208 (int (*)(...))QAbstractSpinBox::keyPressEvent
+216 (int (*)(...))QAbstractSpinBox::keyReleaseEvent
+224 (int (*)(...))QAbstractSpinBox::focusInEvent
+232 (int (*)(...))QAbstractSpinBox::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QAbstractSpinBox::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractSpinBox::resizeEvent
+280 (int (*)(...))QAbstractSpinBox::closeEvent
+288 (int (*)(...))QAbstractSpinBox::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QAbstractSpinBox::showEvent
+352 (int (*)(...))QAbstractSpinBox::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSpinBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QAbstractSpinBox::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QSpinBox::validate
+440 (int (*)(...))QSpinBox::fixup
+448 (int (*)(...))QAbstractSpinBox::stepBy
+456 (int (*)(...))QAbstractSpinBox::clear
+464 (int (*)(...))QAbstractSpinBox::stepEnabled
+472 (int (*)(...))QSpinBox::valueFromText
+480 (int (*)(...))QSpinBox::textFromValue
+488 (int (*)(...))-16
+496 (int (*)(...))(& _ZTI8QSpinBox)
+504 (int (*)(...))QSpinBox::_ZThn16_N8QSpinBoxD1Ev
+512 (int (*)(...))QSpinBox::_ZThn16_N8QSpinBoxD0Ev
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+552 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+560 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QSpinBox
+ size=48 align=8
+ base size=48 base align=8
+QSpinBox (0x0x7f09642c81a0) 0
+ vptr=((& QSpinBox::_ZTV8QSpinBox) + 16)
+ QAbstractSpinBox (0x0x7f09642c8208) 0
+ primary-for QSpinBox (0x0x7f09642c81a0)
+ QWidget (0x0x7f096b8827e0) 0
+ primary-for QAbstractSpinBox (0x0x7f09642c8208)
+ QObject (0x0x7f09642dc960) 0
+ primary-for QWidget (0x0x7f096b8827e0)
+ QPaintDevice (0x0x7f09642dc9c0) 16
+ vptr=((& QSpinBox::_ZTV8QSpinBox) + 504)
+
+Class QDoubleSpinBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDoubleSpinBox::QPrivateSignal (0x0x7f09642dccc0) 0 empty
+
+Vtable for QDoubleSpinBox
+QDoubleSpinBox::_ZTV14QDoubleSpinBox: 71 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QDoubleSpinBox)
+16 (int (*)(...))QDoubleSpinBox::metaObject
+24 (int (*)(...))QDoubleSpinBox::qt_metacast
+32 (int (*)(...))QDoubleSpinBox::qt_metacall
+40 (int (*)(...))QDoubleSpinBox::~QDoubleSpinBox
+48 (int (*)(...))QDoubleSpinBox::~QDoubleSpinBox
+56 (int (*)(...))QAbstractSpinBox::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSpinBox::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractSpinBox::sizeHint
+136 (int (*)(...))QAbstractSpinBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractSpinBox::mousePressEvent
+176 (int (*)(...))QAbstractSpinBox::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractSpinBox::mouseMoveEvent
+200 (int (*)(...))QAbstractSpinBox::wheelEvent
+208 (int (*)(...))QAbstractSpinBox::keyPressEvent
+216 (int (*)(...))QAbstractSpinBox::keyReleaseEvent
+224 (int (*)(...))QAbstractSpinBox::focusInEvent
+232 (int (*)(...))QAbstractSpinBox::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QAbstractSpinBox::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractSpinBox::resizeEvent
+280 (int (*)(...))QAbstractSpinBox::closeEvent
+288 (int (*)(...))QAbstractSpinBox::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QAbstractSpinBox::showEvent
+352 (int (*)(...))QAbstractSpinBox::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSpinBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QAbstractSpinBox::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDoubleSpinBox::validate
+440 (int (*)(...))QDoubleSpinBox::fixup
+448 (int (*)(...))QAbstractSpinBox::stepBy
+456 (int (*)(...))QAbstractSpinBox::clear
+464 (int (*)(...))QAbstractSpinBox::stepEnabled
+472 (int (*)(...))QDoubleSpinBox::valueFromText
+480 (int (*)(...))QDoubleSpinBox::textFromValue
+488 (int (*)(...))-16
+496 (int (*)(...))(& _ZTI14QDoubleSpinBox)
+504 (int (*)(...))QDoubleSpinBox::_ZThn16_N14QDoubleSpinBoxD1Ev
+512 (int (*)(...))QDoubleSpinBox::_ZThn16_N14QDoubleSpinBoxD0Ev
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+552 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+560 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QDoubleSpinBox
+ size=48 align=8
+ base size=48 base align=8
+QDoubleSpinBox (0x0x7f09642c8270) 0
+ vptr=((& QDoubleSpinBox::_ZTV14QDoubleSpinBox) + 16)
+ QAbstractSpinBox (0x0x7f09642c82d8) 0
+ primary-for QDoubleSpinBox (0x0x7f09642c8270)
+ QWidget (0x0x7f096b882930) 0
+ primary-for QAbstractSpinBox (0x0x7f09642c82d8)
+ QObject (0x0x7f09642dcc00) 0
+ primary-for QWidget (0x0x7f096b882930)
+ QPaintDevice (0x0x7f09642dcc60) 16
+ vptr=((& QDoubleSpinBox::_ZTV14QDoubleSpinBox) + 504)
+
+Class QSplashScreen::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSplashScreen::QPrivateSignal (0x0x7f09642dcf60) 0 empty
+
+Vtable for QSplashScreen
+QSplashScreen::_ZTV13QSplashScreen: 65 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSplashScreen)
+16 (int (*)(...))QSplashScreen::metaObject
+24 (int (*)(...))QSplashScreen::qt_metacast
+32 (int (*)(...))QSplashScreen::qt_metacall
+40 (int (*)(...))QSplashScreen::~QSplashScreen
+48 (int (*)(...))QSplashScreen::~QSplashScreen
+56 (int (*)(...))QSplashScreen::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QSplashScreen::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QSplashScreen::drawContents
+440 (int (*)(...))-16
+448 (int (*)(...))(& _ZTI13QSplashScreen)
+456 (int (*)(...))QSplashScreen::_ZThn16_N13QSplashScreenD1Ev
+464 (int (*)(...))QSplashScreen::_ZThn16_N13QSplashScreenD0Ev
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QSplashScreen
+ size=48 align=8
+ base size=48 base align=8
+QSplashScreen (0x0x7f09642c8340) 0
+ vptr=((& QSplashScreen::_ZTV13QSplashScreen) + 16)
+ QWidget (0x0x7f096b882a80) 0
+ primary-for QSplashScreen (0x0x7f09642c8340)
+ QObject (0x0x7f09642dcea0) 0
+ primary-for QWidget (0x0x7f096b882a80)
+ QPaintDevice (0x0x7f09642dcf00) 16
+ vptr=((& QSplashScreen::_ZTV13QSplashScreen) + 456)
+
+Class QSplitter::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSplitter::QPrivateSignal (0x0x7f0963f12240) 0 empty
+
+Vtable for QSplitter
+QSplitter::_ZTV9QSplitter: 65 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QSplitter)
+16 (int (*)(...))QSplitter::metaObject
+24 (int (*)(...))QSplitter::qt_metacast
+32 (int (*)(...))QSplitter::qt_metacall
+40 (int (*)(...))QSplitter::~QSplitter
+48 (int (*)(...))QSplitter::~QSplitter
+56 (int (*)(...))QSplitter::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QSplitter::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QSplitter::sizeHint
+136 (int (*)(...))QSplitter::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QFrame::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QSplitter::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QSplitter::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QSplitter::createHandle
+440 (int (*)(...))-16
+448 (int (*)(...))(& _ZTI9QSplitter)
+456 (int (*)(...))QSplitter::_ZThn16_N9QSplitterD1Ev
+464 (int (*)(...))QSplitter::_ZThn16_N9QSplitterD0Ev
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QSplitter
+ size=48 align=8
+ base size=48 base align=8
+QSplitter (0x0x7f09642c83a8) 0
+ vptr=((& QSplitter::_ZTV9QSplitter) + 16)
+ QFrame (0x0x7f09642c8410) 0
+ primary-for QSplitter (0x0x7f09642c83a8)
+ QWidget (0x0x7f096b882e00) 0
+ primary-for QFrame (0x0x7f09642c8410)
+ QObject (0x0x7f0963f12180) 0
+ primary-for QWidget (0x0x7f096b882e00)
+ QPaintDevice (0x0x7f0963f121e0) 16
+ vptr=((& QSplitter::_ZTV9QSplitter) + 456)
+
+Class QSplitterHandle::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSplitterHandle::QPrivateSignal (0x0x7f0963f124e0) 0 empty
+
+Vtable for QSplitterHandle
+QSplitterHandle::_ZTV15QSplitterHandle: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QSplitterHandle)
+16 (int (*)(...))QSplitterHandle::metaObject
+24 (int (*)(...))QSplitterHandle::qt_metacast
+32 (int (*)(...))QSplitterHandle::qt_metacall
+40 (int (*)(...))QSplitterHandle::~QSplitterHandle
+48 (int (*)(...))QSplitterHandle::~QSplitterHandle
+56 (int (*)(...))QSplitterHandle::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QSplitterHandle::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QSplitterHandle::mousePressEvent
+176 (int (*)(...))QSplitterHandle::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QSplitterHandle::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QSplitterHandle::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QSplitterHandle::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI15QSplitterHandle)
+448 (int (*)(...))QSplitterHandle::_ZThn16_N15QSplitterHandleD1Ev
+456 (int (*)(...))QSplitterHandle::_ZThn16_N15QSplitterHandleD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QSplitterHandle
+ size=48 align=8
+ base size=48 base align=8
+QSplitterHandle (0x0x7f09642c8478) 0
+ vptr=((& QSplitterHandle::_ZTV15QSplitterHandle) + 16)
+ QWidget (0x0x7f096b8f3230) 0
+ primary-for QSplitterHandle (0x0x7f09642c8478)
+ QObject (0x0x7f0963f12420) 0
+ primary-for QWidget (0x0x7f096b8f3230)
+ QPaintDevice (0x0x7f0963f12480) 16
+ vptr=((& QSplitterHandle::_ZTV15QSplitterHandle) + 448)
+
+Class QStackedLayout::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStackedLayout::QPrivateSignal (0x0x7f0963f12780) 0 empty
+
+Vtable for QStackedLayout
+QStackedLayout::_ZTV14QStackedLayout: 50 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QStackedLayout)
+16 (int (*)(...))QStackedLayout::metaObject
+24 (int (*)(...))QStackedLayout::qt_metacast
+32 (int (*)(...))QStackedLayout::qt_metacall
+40 (int (*)(...))QStackedLayout::~QStackedLayout
+48 (int (*)(...))QStackedLayout::~QStackedLayout
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QLayout::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QLayout::invalidate
+120 (int (*)(...))QLayout::geometry
+128 (int (*)(...))QStackedLayout::addItem
+136 (int (*)(...))QLayout::expandingDirections
+144 (int (*)(...))QStackedLayout::minimumSize
+152 (int (*)(...))QLayout::maximumSize
+160 (int (*)(...))QStackedLayout::setGeometry
+168 (int (*)(...))QStackedLayout::itemAt
+176 (int (*)(...))QStackedLayout::takeAt
+184 (int (*)(...))QLayout::indexOf
+192 (int (*)(...))QStackedLayout::count
+200 (int (*)(...))QLayout::isEmpty
+208 (int (*)(...))QLayout::controlTypes
+216 (int (*)(...))QLayout::layout
+224 (int (*)(...))QStackedLayout::sizeHint
+232 (int (*)(...))QStackedLayout::hasHeightForWidth
+240 (int (*)(...))QStackedLayout::heightForWidth
+248 (int (*)(...))-16
+256 (int (*)(...))(& _ZTI14QStackedLayout)
+264 (int (*)(...))QStackedLayout::_ZThn16_N14QStackedLayoutD1Ev
+272 (int (*)(...))QStackedLayout::_ZThn16_N14QStackedLayoutD0Ev
+280 (int (*)(...))QStackedLayout::_ZThn16_NK14QStackedLayout8sizeHintEv
+288 (int (*)(...))QStackedLayout::_ZThn16_NK14QStackedLayout11minimumSizeEv
+296 (int (*)(...))QLayout::_ZThn16_NK7QLayout11maximumSizeEv
+304 (int (*)(...))QLayout::_ZThn16_NK7QLayout19expandingDirectionsEv
+312 (int (*)(...))QStackedLayout::_ZThn16_N14QStackedLayout11setGeometryERK5QRect
+320 (int (*)(...))QLayout::_ZThn16_NK7QLayout8geometryEv
+328 (int (*)(...))QLayout::_ZThn16_NK7QLayout7isEmptyEv
+336 (int (*)(...))QStackedLayout::_ZThn16_NK14QStackedLayout17hasHeightForWidthEv
+344 (int (*)(...))QStackedLayout::_ZThn16_NK14QStackedLayout14heightForWidthEi
+352 (int (*)(...))QLayoutItem::minimumHeightForWidth
+360 (int (*)(...))QLayout::_ZThn16_N7QLayout10invalidateEv
+368 (int (*)(...))QLayoutItem::widget
+376 (int (*)(...))QLayout::_ZThn16_N7QLayout6layoutEv
+384 (int (*)(...))QLayoutItem::spacerItem
+392 (int (*)(...))QLayout::_ZThn16_NK7QLayout12controlTypesEv
+
+Class QStackedLayout
+ size=32 align=8
+ base size=28 base align=8
+QStackedLayout (0x0x7f09642c84e0) 0
+ vptr=((& QStackedLayout::_ZTV14QStackedLayout) + 16)
+ QLayout (0x0x7f096b8f3380) 0
+ primary-for QStackedLayout (0x0x7f09642c84e0)
+ QObject (0x0x7f0963f126c0) 0
+ primary-for QLayout (0x0x7f096b8f3380)
+ QLayoutItem (0x0x7f0963f12720) 16
+ vptr=((& QStackedLayout::_ZTV14QStackedLayout) + 264)
+
+Class QStackedWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStackedWidget::QPrivateSignal (0x0x7f0963f12ae0) 0 empty
+
+Vtable for QStackedWidget
+QStackedWidget::_ZTV14QStackedWidget: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QStackedWidget)
+16 (int (*)(...))QStackedWidget::metaObject
+24 (int (*)(...))QStackedWidget::qt_metacast
+32 (int (*)(...))QStackedWidget::qt_metacall
+40 (int (*)(...))QStackedWidget::~QStackedWidget
+48 (int (*)(...))QStackedWidget::~QStackedWidget
+56 (int (*)(...))QStackedWidget::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QFrame::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QFrame::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI14QStackedWidget)
+448 (int (*)(...))QStackedWidget::_ZThn16_N14QStackedWidgetD1Ev
+456 (int (*)(...))QStackedWidget::_ZThn16_N14QStackedWidgetD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QStackedWidget
+ size=48 align=8
+ base size=48 base align=8
+QStackedWidget (0x0x7f09642c8548) 0
+ vptr=((& QStackedWidget::_ZTV14QStackedWidget) + 16)
+ QFrame (0x0x7f09642c85b0) 0
+ primary-for QStackedWidget (0x0x7f09642c8548)
+ QWidget (0x0x7f096b8f35b0) 0
+ primary-for QFrame (0x0x7f09642c85b0)
+ QObject (0x0x7f0963f12a20) 0
+ primary-for QWidget (0x0x7f096b8f35b0)
+ QPaintDevice (0x0x7f0963f12a80) 16
+ vptr=((& QStackedWidget::_ZTV14QStackedWidget) + 448)
+
+Class QStatusBar::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStatusBar::QPrivateSignal (0x0x7f0963f12d80) 0 empty
+
+Vtable for QStatusBar
+QStatusBar::_ZTV10QStatusBar: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QStatusBar)
+16 (int (*)(...))QStatusBar::metaObject
+24 (int (*)(...))QStatusBar::qt_metacast
+32 (int (*)(...))QStatusBar::qt_metacall
+40 (int (*)(...))QStatusBar::~QStatusBar
+48 (int (*)(...))QStatusBar::~QStatusBar
+56 (int (*)(...))QStatusBar::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QStatusBar::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QStatusBar::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QStatusBar::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI10QStatusBar)
+448 (int (*)(...))QStatusBar::_ZThn16_N10QStatusBarD1Ev
+456 (int (*)(...))QStatusBar::_ZThn16_N10QStatusBarD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QStatusBar
+ size=48 align=8
+ base size=48 base align=8
+QStatusBar (0x0x7f09642c8618) 0
+ vptr=((& QStatusBar::_ZTV10QStatusBar) + 16)
+ QWidget (0x0x7f096b8f3700) 0
+ primary-for QStatusBar (0x0x7f09642c8618)
+ QObject (0x0x7f0963f12cc0) 0
+ primary-for QWidget (0x0x7f096b8f3700)
+ QPaintDevice (0x0x7f0963f12d20) 16
+ vptr=((& QStatusBar::_ZTV10QStatusBar) + 448)
+
+Class QStyledItemDelegate::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStyledItemDelegate::QPrivateSignal (0x0x7f0963f41000) 0 empty
+
+Vtable for QStyledItemDelegate
+QStyledItemDelegate::_ZTV19QStyledItemDelegate: 26 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QStyledItemDelegate)
+16 (int (*)(...))QStyledItemDelegate::metaObject
+24 (int (*)(...))QStyledItemDelegate::qt_metacast
+32 (int (*)(...))QStyledItemDelegate::qt_metacall
+40 (int (*)(...))QStyledItemDelegate::~QStyledItemDelegate
+48 (int (*)(...))QStyledItemDelegate::~QStyledItemDelegate
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QStyledItemDelegate::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QStyledItemDelegate::paint
+120 (int (*)(...))QStyledItemDelegate::sizeHint
+128 (int (*)(...))QStyledItemDelegate::createEditor
+136 (int (*)(...))QAbstractItemDelegate::destroyEditor
+144 (int (*)(...))QStyledItemDelegate::setEditorData
+152 (int (*)(...))QStyledItemDelegate::setModelData
+160 (int (*)(...))QStyledItemDelegate::updateEditorGeometry
+168 (int (*)(...))QStyledItemDelegate::editorEvent
+176 (int (*)(...))QAbstractItemDelegate::helpEvent
+184 (int (*)(...))QAbstractItemDelegate::paintingRoles
+192 (int (*)(...))QStyledItemDelegate::displayText
+200 (int (*)(...))QStyledItemDelegate::initStyleOption
+
+Class QStyledItemDelegate
+ size=16 align=8
+ base size=16 base align=8
+QStyledItemDelegate (0x0x7f09642c8680) 0
+ vptr=((& QStyledItemDelegate::_ZTV19QStyledItemDelegate) + 16)
+ QAbstractItemDelegate (0x0x7f09642c86e8) 0
+ primary-for QStyledItemDelegate (0x0x7f09642c8680)
+ QObject (0x0x7f0963f12f60) 0
+ primary-for QAbstractItemDelegate (0x0x7f09642c86e8)
+
+Class QStyleFactory
+ size=1 align=1
+ base size=0 base align=1
+QStyleFactory (0x0x7f0963f411e0) 0 empty
+
+Class QStylePainter
+ size=24 align=8
+ base size=24 base align=8
+QStylePainter (0x0x7f09642c8750) 0
+ QPainter (0x0x7f0963f41240) 0
+
+Class QStylePlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStylePlugin::QPrivateSignal (0x0x7f0963f41ae0) 0 empty
+
+Vtable for QStylePlugin
+QStylePlugin::_ZTV12QStylePlugin: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QStylePlugin)
+16 (int (*)(...))QStylePlugin::metaObject
+24 (int (*)(...))QStylePlugin::qt_metacast
+32 (int (*)(...))QStylePlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QStylePlugin
+ size=16 align=8
+ base size=16 base align=8
+QStylePlugin (0x0x7f09642c87b8) 0
+ vptr=((& QStylePlugin::_ZTV12QStylePlugin) + 16)
+ QObject (0x0x7f0963f41a80) 0
+ primary-for QStylePlugin (0x0x7f09642c87b8)
+
+Class QSystemTrayIcon::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSystemTrayIcon::QPrivateSignal (0x0x7f0963f41c60) 0 empty
+
+Vtable for QSystemTrayIcon
+QSystemTrayIcon::_ZTV15QSystemTrayIcon: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QSystemTrayIcon)
+16 (int (*)(...))QSystemTrayIcon::metaObject
+24 (int (*)(...))QSystemTrayIcon::qt_metacast
+32 (int (*)(...))QSystemTrayIcon::qt_metacall
+40 (int (*)(...))QSystemTrayIcon::~QSystemTrayIcon
+48 (int (*)(...))QSystemTrayIcon::~QSystemTrayIcon
+56 (int (*)(...))QSystemTrayIcon::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSystemTrayIcon
+ size=16 align=8
+ base size=16 base align=8
+QSystemTrayIcon (0x0x7f09642c8820) 0
+ vptr=((& QSystemTrayIcon::_ZTV15QSystemTrayIcon) + 16)
+ QObject (0x0x7f0963f41c00) 0
+ primary-for QSystemTrayIcon (0x0x7f09642c8820)
+
+Class QTableView::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTableView::QPrivateSignal (0x0x7f0963f60000) 0 empty
+
+Vtable for QTableView
+QTableView::_ZTV10QTableView: 106 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTableView)
+16 (int (*)(...))QTableView::metaObject
+24 (int (*)(...))QTableView::qt_metacast
+32 (int (*)(...))QTableView::qt_metacall
+40 (int (*)(...))QTableView::~QTableView
+48 (int (*)(...))QTableView::~QTableView
+56 (int (*)(...))QAbstractItemView::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QTableView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractItemView::mousePressEvent
+176 (int (*)(...))QAbstractItemView::mouseReleaseEvent
+184 (int (*)(...))QAbstractItemView::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractItemView::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QAbstractItemView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QTableView::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractItemView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QAbstractItemView::dragMoveEvent
+328 (int (*)(...))QAbstractItemView::dragLeaveEvent
+336 (int (*)(...))QAbstractItemView::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractItemView::viewportEvent
+448 (int (*)(...))QTableView::scrollContentsBy
+456 (int (*)(...))QTableView::viewportSizeHint
+464 (int (*)(...))QTableView::setModel
+472 (int (*)(...))QTableView::setSelectionModel
+480 (int (*)(...))QAbstractItemView::keyboardSearch
+488 (int (*)(...))QTableView::visualRect
+496 (int (*)(...))QTableView::scrollTo
+504 (int (*)(...))QTableView::indexAt
+512 (int (*)(...))QTableView::sizeHintForRow
+520 (int (*)(...))QTableView::sizeHintForColumn
+528 (int (*)(...))QAbstractItemView::reset
+536 (int (*)(...))QTableView::setRootIndex
+544 (int (*)(...))QTableView::doItemsLayout
+552 (int (*)(...))QAbstractItemView::selectAll
+560 (int (*)(...))QAbstractItemView::dataChanged
+568 (int (*)(...))QAbstractItemView::rowsInserted
+576 (int (*)(...))QAbstractItemView::rowsAboutToBeRemoved
+584 (int (*)(...))QTableView::selectionChanged
+592 (int (*)(...))QTableView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QTableView::updateGeometries
+624 (int (*)(...))QTableView::verticalScrollbarAction
+632 (int (*)(...))QTableView::horizontalScrollbarAction
+640 (int (*)(...))QAbstractItemView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))QTableView::moveCursor
+688 (int (*)(...))QTableView::horizontalOffset
+696 (int (*)(...))QTableView::verticalOffset
+704 (int (*)(...))QTableView::isIndexHidden
+712 (int (*)(...))QTableView::setSelection
+720 (int (*)(...))QTableView::visualRegionForSelection
+728 (int (*)(...))QTableView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QAbstractItemView::startDrag
+760 (int (*)(...))QTableView::viewOptions
+768 (int (*)(...))-16
+776 (int (*)(...))(& _ZTI10QTableView)
+784 (int (*)(...))QTableView::_ZThn16_N10QTableViewD1Ev
+792 (int (*)(...))QTableView::_ZThn16_N10QTableViewD0Ev
+800 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+808 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+816 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+824 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+832 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+840 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QTableView
+ size=48 align=8
+ base size=48 base align=8
+QTableView (0x0x7f09642c8888) 0
+ vptr=((& QTableView::_ZTV10QTableView) + 16)
+ QAbstractItemView (0x0x7f09642c88f0) 0
+ primary-for QTableView (0x0x7f09642c8888)
+ QAbstractScrollArea (0x0x7f09642c8958) 0
+ primary-for QAbstractItemView (0x0x7f09642c88f0)
+ QFrame (0x0x7f09642c89c0) 0
+ primary-for QAbstractScrollArea (0x0x7f09642c8958)
+ QWidget (0x0x7f096b67e310) 0
+ primary-for QFrame (0x0x7f09642c89c0)
+ QObject (0x0x7f0963f41f00) 0
+ primary-for QWidget (0x0x7f096b67e310)
+ QPaintDevice (0x0x7f0963f41f60) 16
+ vptr=((& QTableView::_ZTV10QTableView) + 784)
+
+Class QTableWidgetSelectionRange
+ size=16 align=4
+ base size=16 base align=4
+QTableWidgetSelectionRange (0x0x7f0963f60240) 0
+
+Vtable for QTableWidgetItem
+QTableWidgetItem::_ZTV16QTableWidgetItem: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QTableWidgetItem)
+16 (int (*)(...))QTableWidgetItem::~QTableWidgetItem
+24 (int (*)(...))QTableWidgetItem::~QTableWidgetItem
+32 (int (*)(...))QTableWidgetItem::clone
+40 (int (*)(...))QTableWidgetItem::data
+48 (int (*)(...))QTableWidgetItem::setData
+56 (int (*)(...))QTableWidgetItem::operator<
+64 (int (*)(...))QTableWidgetItem::read
+72 (int (*)(...))QTableWidgetItem::write
+
+Class QTableWidgetItem
+ size=48 align=8
+ base size=44 base align=8
+QTableWidgetItem (0x0x7f0963f604e0) 0
+ vptr=((& QTableWidgetItem::_ZTV16QTableWidgetItem) + 16)
+
+Class QTableWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTableWidget::QPrivateSignal (0x0x7f0963fa0240) 0 empty
+
+Vtable for QTableWidget
+QTableWidget::_ZTV12QTableWidget: 110 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QTableWidget)
+16 (int (*)(...))QTableWidget::metaObject
+24 (int (*)(...))QTableWidget::qt_metacast
+32 (int (*)(...))QTableWidget::qt_metacall
+40 (int (*)(...))QTableWidget::~QTableWidget
+48 (int (*)(...))QTableWidget::~QTableWidget
+56 (int (*)(...))QTableWidget::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QTableView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractItemView::mousePressEvent
+176 (int (*)(...))QAbstractItemView::mouseReleaseEvent
+184 (int (*)(...))QAbstractItemView::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractItemView::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QAbstractItemView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QTableView::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractItemView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QAbstractItemView::dragMoveEvent
+328 (int (*)(...))QAbstractItemView::dragLeaveEvent
+336 (int (*)(...))QTableWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractItemView::viewportEvent
+448 (int (*)(...))QTableView::scrollContentsBy
+456 (int (*)(...))QTableView::viewportSizeHint
+464 (int (*)(...))QTableWidget::setModel
+472 (int (*)(...))QTableView::setSelectionModel
+480 (int (*)(...))QAbstractItemView::keyboardSearch
+488 (int (*)(...))QTableView::visualRect
+496 (int (*)(...))QTableView::scrollTo
+504 (int (*)(...))QTableView::indexAt
+512 (int (*)(...))QTableView::sizeHintForRow
+520 (int (*)(...))QTableView::sizeHintForColumn
+528 (int (*)(...))QAbstractItemView::reset
+536 (int (*)(...))QTableView::setRootIndex
+544 (int (*)(...))QTableView::doItemsLayout
+552 (int (*)(...))QAbstractItemView::selectAll
+560 (int (*)(...))QAbstractItemView::dataChanged
+568 (int (*)(...))QAbstractItemView::rowsInserted
+576 (int (*)(...))QAbstractItemView::rowsAboutToBeRemoved
+584 (int (*)(...))QTableView::selectionChanged
+592 (int (*)(...))QTableView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QTableView::updateGeometries
+624 (int (*)(...))QTableView::verticalScrollbarAction
+632 (int (*)(...))QTableView::horizontalScrollbarAction
+640 (int (*)(...))QAbstractItemView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))QTableView::moveCursor
+688 (int (*)(...))QTableView::horizontalOffset
+696 (int (*)(...))QTableView::verticalOffset
+704 (int (*)(...))QTableView::isIndexHidden
+712 (int (*)(...))QTableView::setSelection
+720 (int (*)(...))QTableView::visualRegionForSelection
+728 (int (*)(...))QTableView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QAbstractItemView::startDrag
+760 (int (*)(...))QTableView::viewOptions
+768 (int (*)(...))QTableWidget::mimeTypes
+776 (int (*)(...))QTableWidget::mimeData
+784 (int (*)(...))QTableWidget::dropMimeData
+792 (int (*)(...))QTableWidget::supportedDropActions
+800 (int (*)(...))-16
+808 (int (*)(...))(& _ZTI12QTableWidget)
+816 (int (*)(...))QTableWidget::_ZThn16_N12QTableWidgetD1Ev
+824 (int (*)(...))QTableWidget::_ZThn16_N12QTableWidgetD0Ev
+832 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+840 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+848 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+856 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+864 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+872 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QTableWidget
+ size=48 align=8
+ base size=48 base align=8
+QTableWidget (0x0x7f09642c8af8) 0
+ vptr=((& QTableWidget::_ZTV12QTableWidget) + 16)
+ QTableView (0x0x7f09642c8b60) 0
+ primary-for QTableWidget (0x0x7f09642c8af8)
+ QAbstractItemView (0x0x7f09642c8bc8) 0
+ primary-for QTableView (0x0x7f09642c8b60)
+ QAbstractScrollArea (0x0x7f09642c8c30) 0
+ primary-for QAbstractItemView (0x0x7f09642c8bc8)
+ QFrame (0x0x7f09642c8c98) 0
+ primary-for QAbstractScrollArea (0x0x7f09642c8c30)
+ QWidget (0x0x7f096b67e700) 0
+ primary-for QFrame (0x0x7f09642c8c98)
+ QObject (0x0x7f0963fa0180) 0
+ primary-for QWidget (0x0x7f096b67e700)
+ QPaintDevice (0x0x7f0963fa01e0) 16
+ vptr=((& QTableWidget::_ZTV12QTableWidget) + 816)
+
+Class QTextBrowser::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextBrowser::QPrivateSignal (0x0x7f0963fa0660) 0 empty
+
+Vtable for QTextBrowser
+QTextBrowser::_ZTV12QTextBrowser: 78 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QTextBrowser)
+16 (int (*)(...))QTextBrowser::metaObject
+24 (int (*)(...))QTextBrowser::qt_metacast
+32 (int (*)(...))QTextBrowser::qt_metacall
+40 (int (*)(...))QTextBrowser::~QTextBrowser
+48 (int (*)(...))QTextBrowser::~QTextBrowser
+56 (int (*)(...))QTextBrowser::event
+64 (int (*)(...))QAbstractScrollArea::eventFilter
+72 (int (*)(...))QTextEdit::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QTextBrowser::mousePressEvent
+176 (int (*)(...))QTextBrowser::mouseReleaseEvent
+184 (int (*)(...))QTextEdit::mouseDoubleClickEvent
+192 (int (*)(...))QTextBrowser::mouseMoveEvent
+200 (int (*)(...))QTextEdit::wheelEvent
+208 (int (*)(...))QTextBrowser::keyPressEvent
+216 (int (*)(...))QTextEdit::keyReleaseEvent
+224 (int (*)(...))QTextEdit::focusInEvent
+232 (int (*)(...))QTextBrowser::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QTextBrowser::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QTextEdit::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QTextEdit::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QTextEdit::dragEnterEvent
+320 (int (*)(...))QTextEdit::dragMoveEvent
+328 (int (*)(...))QTextEdit::dragLeaveEvent
+336 (int (*)(...))QTextEdit::dropEvent
+344 (int (*)(...))QTextEdit::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QTextEdit::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QTextEdit::inputMethodEvent
+416 (int (*)(...))QTextEdit::inputMethodQuery
+424 (int (*)(...))QTextBrowser::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractScrollArea::viewportEvent
+448 (int (*)(...))QTextEdit::scrollContentsBy
+456 (int (*)(...))QAbstractScrollArea::viewportSizeHint
+464 (int (*)(...))QTextBrowser::loadResource
+472 (int (*)(...))QTextEdit::createMimeDataFromSelection
+480 (int (*)(...))QTextEdit::canInsertFromMimeData
+488 (int (*)(...))QTextEdit::insertFromMimeData
+496 (int (*)(...))QTextEdit::doSetTextCursor
+504 (int (*)(...))QTextBrowser::setSource
+512 (int (*)(...))QTextBrowser::backward
+520 (int (*)(...))QTextBrowser::forward
+528 (int (*)(...))QTextBrowser::home
+536 (int (*)(...))QTextBrowser::reload
+544 (int (*)(...))-16
+552 (int (*)(...))(& _ZTI12QTextBrowser)
+560 (int (*)(...))QTextBrowser::_ZThn16_N12QTextBrowserD1Ev
+568 (int (*)(...))QTextBrowser::_ZThn16_N12QTextBrowserD0Ev
+576 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+584 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+592 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+600 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+608 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+616 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QTextBrowser
+ size=48 align=8
+ base size=48 base align=8
+QTextBrowser (0x0x7f09642c8d00) 0
+ vptr=((& QTextBrowser::_ZTV12QTextBrowser) + 16)
+ QTextEdit (0x0x7f09642c8d68) 0
+ primary-for QTextBrowser (0x0x7f09642c8d00)
+ QAbstractScrollArea (0x0x7f09642c8dd0) 0
+ primary-for QTextEdit (0x0x7f09642c8d68)
+ QFrame (0x0x7f09642c8e38) 0
+ primary-for QAbstractScrollArea (0x0x7f09642c8dd0)
+ QWidget (0x0x7f096b67ea10) 0
+ primary-for QFrame (0x0x7f09642c8e38)
+ QObject (0x0x7f0963fa05a0) 0
+ primary-for QWidget (0x0x7f096b67ea10)
+ QPaintDevice (0x0x7f0963fa0600) 16
+ vptr=((& QTextBrowser::_ZTV12QTextBrowser) + 560)
+
+Class QToolBar::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QToolBar::QPrivateSignal (0x0x7f0963fa0900) 0 empty
+
+Vtable for QToolBar
+QToolBar::_ZTV8QToolBar: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QToolBar)
+16 (int (*)(...))QToolBar::metaObject
+24 (int (*)(...))QToolBar::qt_metacast
+32 (int (*)(...))QToolBar::qt_metacall
+40 (int (*)(...))QToolBar::~QToolBar
+48 (int (*)(...))QToolBar::~QToolBar
+56 (int (*)(...))QToolBar::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QToolBar::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QToolBar::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QToolBar::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI8QToolBar)
+448 (int (*)(...))QToolBar::_ZThn16_N8QToolBarD1Ev
+456 (int (*)(...))QToolBar::_ZThn16_N8QToolBarD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QToolBar
+ size=48 align=8
+ base size=48 base align=8
+QToolBar (0x0x7f09642c8ea0) 0
+ vptr=((& QToolBar::_ZTV8QToolBar) + 16)
+ QWidget (0x0x7f096b67eb60) 0
+ primary-for QToolBar (0x0x7f09642c8ea0)
+ QObject (0x0x7f0963fa0840) 0
+ primary-for QWidget (0x0x7f096b67eb60)
+ QPaintDevice (0x0x7f0963fa08a0) 16
+ vptr=((& QToolBar::_ZTV8QToolBar) + 448)
+
+Class QToolBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QToolBox::QPrivateSignal (0x0x7f0963fd12a0) 0 empty
+
+Vtable for QToolBox
+QToolBox::_ZTV8QToolBox: 66 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QToolBox)
+16 (int (*)(...))QToolBox::metaObject
+24 (int (*)(...))QToolBox::qt_metacast
+32 (int (*)(...))QToolBox::qt_metacall
+40 (int (*)(...))QToolBox::~QToolBox
+48 (int (*)(...))QToolBox::~QToolBox
+56 (int (*)(...))QToolBox::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QFrame::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QFrame::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QToolBox::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QToolBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QToolBox::itemInserted
+440 (int (*)(...))QToolBox::itemRemoved
+448 (int (*)(...))-16
+456 (int (*)(...))(& _ZTI8QToolBox)
+464 (int (*)(...))QToolBox::_ZThn16_N8QToolBoxD1Ev
+472 (int (*)(...))QToolBox::_ZThn16_N8QToolBoxD0Ev
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QToolBox
+ size=48 align=8
+ base size=48 base align=8
+QToolBox (0x0x7f0963fd0410) 0
+ vptr=((& QToolBox::_ZTV8QToolBox) + 16)
+ QFrame (0x0x7f0963fd0478) 0
+ primary-for QToolBox (0x0x7f0963fd0410)
+ QWidget (0x0x7f096b6dd2a0) 0
+ primary-for QFrame (0x0x7f0963fd0478)
+ QObject (0x0x7f0963fd11e0) 0
+ primary-for QWidget (0x0x7f096b6dd2a0)
+ QPaintDevice (0x0x7f0963fd1240) 16
+ vptr=((& QToolBox::_ZTV8QToolBox) + 464)
+
+Class QToolButton::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QToolButton::QPrivateSignal (0x0x7f0963fd1660) 0 empty
+
+Vtable for QToolButton
+QToolButton::_ZTV11QToolButton: 67 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QToolButton)
+16 (int (*)(...))QToolButton::metaObject
+24 (int (*)(...))QToolButton::qt_metacast
+32 (int (*)(...))QToolButton::qt_metacall
+40 (int (*)(...))QToolButton::~QToolButton
+48 (int (*)(...))QToolButton::~QToolButton
+56 (int (*)(...))QToolButton::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QToolButton::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QToolButton::sizeHint
+136 (int (*)(...))QToolButton::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QToolButton::mousePressEvent
+176 (int (*)(...))QToolButton::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractButton::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QAbstractButton::keyPressEvent
+216 (int (*)(...))QAbstractButton::keyReleaseEvent
+224 (int (*)(...))QAbstractButton::focusInEvent
+232 (int (*)(...))QAbstractButton::focusOutEvent
+240 (int (*)(...))QToolButton::enterEvent
+248 (int (*)(...))QToolButton::leaveEvent
+256 (int (*)(...))QToolButton::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QToolButton::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QToolButton::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QToolButton::hitButton
+440 (int (*)(...))QAbstractButton::checkStateSet
+448 (int (*)(...))QToolButton::nextCheckState
+456 (int (*)(...))-16
+464 (int (*)(...))(& _ZTI11QToolButton)
+472 (int (*)(...))QToolButton::_ZThn16_N11QToolButtonD1Ev
+480 (int (*)(...))QToolButton::_ZThn16_N11QToolButtonD0Ev
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QToolButton
+ size=48 align=8
+ base size=48 base align=8
+QToolButton (0x0x7f0963fd04e0) 0
+ vptr=((& QToolButton::_ZTV11QToolButton) + 16)
+ QAbstractButton (0x0x7f0963fd0548) 0
+ primary-for QToolButton (0x0x7f0963fd04e0)
+ QWidget (0x0x7f096b6dd3f0) 0
+ primary-for QAbstractButton (0x0x7f0963fd0548)
+ QObject (0x0x7f0963fd15a0) 0
+ primary-for QWidget (0x0x7f096b6dd3f0)
+ QPaintDevice (0x0x7f0963fd1600) 16
+ vptr=((& QToolButton::_ZTV11QToolButton) + 472)
+
+Class QToolTip
+ size=1 align=1
+ base size=0 base align=1
+QToolTip (0x0x7f0963fd1900) 0 empty
+
+Class QTreeView::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTreeView::QPrivateSignal (0x0x7f0963fd1a80) 0 empty
+
+Vtable for QTreeView
+QTreeView::_ZTV9QTreeView: 108 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QTreeView)
+16 (int (*)(...))QTreeView::metaObject
+24 (int (*)(...))QTreeView::qt_metacast
+32 (int (*)(...))QTreeView::qt_metacall
+40 (int (*)(...))QTreeView::~QTreeView
+48 (int (*)(...))QTreeView::~QTreeView
+56 (int (*)(...))QAbstractItemView::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QTreeView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QTreeView::mousePressEvent
+176 (int (*)(...))QTreeView::mouseReleaseEvent
+184 (int (*)(...))QTreeView::mouseDoubleClickEvent
+192 (int (*)(...))QTreeView::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QTreeView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QTreeView::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractItemView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QTreeView::dragMoveEvent
+328 (int (*)(...))QAbstractItemView::dragLeaveEvent
+336 (int (*)(...))QAbstractItemView::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QTreeView::viewportEvent
+448 (int (*)(...))QTreeView::scrollContentsBy
+456 (int (*)(...))QTreeView::viewportSizeHint
+464 (int (*)(...))QTreeView::setModel
+472 (int (*)(...))QTreeView::setSelectionModel
+480 (int (*)(...))QTreeView::keyboardSearch
+488 (int (*)(...))QTreeView::visualRect
+496 (int (*)(...))QTreeView::scrollTo
+504 (int (*)(...))QTreeView::indexAt
+512 (int (*)(...))QAbstractItemView::sizeHintForRow
+520 (int (*)(...))QTreeView::sizeHintForColumn
+528 (int (*)(...))QTreeView::reset
+536 (int (*)(...))QTreeView::setRootIndex
+544 (int (*)(...))QTreeView::doItemsLayout
+552 (int (*)(...))QTreeView::selectAll
+560 (int (*)(...))QTreeView::dataChanged
+568 (int (*)(...))QTreeView::rowsInserted
+576 (int (*)(...))QTreeView::rowsAboutToBeRemoved
+584 (int (*)(...))QTreeView::selectionChanged
+592 (int (*)(...))QTreeView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QTreeView::updateGeometries
+624 (int (*)(...))QAbstractItemView::verticalScrollbarAction
+632 (int (*)(...))QTreeView::horizontalScrollbarAction
+640 (int (*)(...))QTreeView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))QTreeView::moveCursor
+688 (int (*)(...))QTreeView::horizontalOffset
+696 (int (*)(...))QTreeView::verticalOffset
+704 (int (*)(...))QTreeView::isIndexHidden
+712 (int (*)(...))QTreeView::setSelection
+720 (int (*)(...))QTreeView::visualRegionForSelection
+728 (int (*)(...))QTreeView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QAbstractItemView::startDrag
+760 (int (*)(...))QAbstractItemView::viewOptions
+768 (int (*)(...))QTreeView::drawRow
+776 (int (*)(...))QTreeView::drawBranches
+784 (int (*)(...))-16
+792 (int (*)(...))(& _ZTI9QTreeView)
+800 (int (*)(...))QTreeView::_ZThn16_N9QTreeViewD1Ev
+808 (int (*)(...))QTreeView::_ZThn16_N9QTreeViewD0Ev
+816 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+824 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+832 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+840 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+848 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+856 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QTreeView
+ size=48 align=8
+ base size=48 base align=8
+QTreeView (0x0x7f0963fd05b0) 0
+ vptr=((& QTreeView::_ZTV9QTreeView) + 16)
+ QAbstractItemView (0x0x7f0963fd0618) 0
+ primary-for QTreeView (0x0x7f0963fd05b0)
+ QAbstractScrollArea (0x0x7f0963fd0680) 0
+ primary-for QAbstractItemView (0x0x7f0963fd0618)
+ QFrame (0x0x7f0963fd06e8) 0
+ primary-for QAbstractScrollArea (0x0x7f0963fd0680)
+ QWidget (0x0x7f096b6dd700) 0
+ primary-for QFrame (0x0x7f0963fd06e8)
+ QObject (0x0x7f0963fd19c0) 0
+ primary-for QWidget (0x0x7f096b6dd700)
+ QPaintDevice (0x0x7f0963fd1a20) 16
+ vptr=((& QTreeView::_ZTV9QTreeView) + 800)
+
+Class QTreeWidgetItemIterator
+ size=24 align=8
+ base size=20 base align=8
+QTreeWidgetItemIterator (0x0x7f0963fd1cc0) 0
+
+Vtable for QTreeWidgetItem
+QTreeWidgetItem::_ZTV15QTreeWidgetItem: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QTreeWidgetItem)
+16 (int (*)(...))QTreeWidgetItem::~QTreeWidgetItem
+24 (int (*)(...))QTreeWidgetItem::~QTreeWidgetItem
+32 (int (*)(...))QTreeWidgetItem::clone
+40 (int (*)(...))QTreeWidgetItem::data
+48 (int (*)(...))QTreeWidgetItem::setData
+56 (int (*)(...))QTreeWidgetItem::operator<
+64 (int (*)(...))QTreeWidgetItem::read
+72 (int (*)(...))QTreeWidgetItem::write
+
+Class QTreeWidgetItem
+ size=64 align=8
+ base size=60 base align=8
+QTreeWidgetItem (0x0x7f0964012780) 0
+ vptr=((& QTreeWidgetItem::_ZTV15QTreeWidgetItem) + 16)
+
+Class QTreeWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTreeWidget::QPrivateSignal (0x0x7f096405d780) 0 empty
+
+Vtable for QTreeWidget
+QTreeWidget::_ZTV11QTreeWidget: 112 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTreeWidget)
+16 (int (*)(...))QTreeWidget::metaObject
+24 (int (*)(...))QTreeWidget::qt_metacast
+32 (int (*)(...))QTreeWidget::qt_metacall
+40 (int (*)(...))QTreeWidget::~QTreeWidget
+48 (int (*)(...))QTreeWidget::~QTreeWidget
+56 (int (*)(...))QTreeWidget::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QTreeView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QTreeView::mousePressEvent
+176 (int (*)(...))QTreeView::mouseReleaseEvent
+184 (int (*)(...))QTreeView::mouseDoubleClickEvent
+192 (int (*)(...))QTreeView::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QTreeView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QTreeView::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractItemView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QTreeView::dragMoveEvent
+328 (int (*)(...))QAbstractItemView::dragLeaveEvent
+336 (int (*)(...))QTreeWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QTreeView::viewportEvent
+448 (int (*)(...))QTreeView::scrollContentsBy
+456 (int (*)(...))QTreeView::viewportSizeHint
+464 (int (*)(...))QTreeWidget::setModel
+472 (int (*)(...))QTreeWidget::setSelectionModel
+480 (int (*)(...))QTreeView::keyboardSearch
+488 (int (*)(...))QTreeView::visualRect
+496 (int (*)(...))QTreeView::scrollTo
+504 (int (*)(...))QTreeView::indexAt
+512 (int (*)(...))QAbstractItemView::sizeHintForRow
+520 (int (*)(...))QTreeView::sizeHintForColumn
+528 (int (*)(...))QTreeView::reset
+536 (int (*)(...))QTreeView::setRootIndex
+544 (int (*)(...))QTreeView::doItemsLayout
+552 (int (*)(...))QTreeView::selectAll
+560 (int (*)(...))QTreeView::dataChanged
+568 (int (*)(...))QTreeView::rowsInserted
+576 (int (*)(...))QTreeView::rowsAboutToBeRemoved
+584 (int (*)(...))QTreeView::selectionChanged
+592 (int (*)(...))QTreeView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QTreeView::updateGeometries
+624 (int (*)(...))QAbstractItemView::verticalScrollbarAction
+632 (int (*)(...))QTreeView::horizontalScrollbarAction
+640 (int (*)(...))QTreeView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))QTreeView::moveCursor
+688 (int (*)(...))QTreeView::horizontalOffset
+696 (int (*)(...))QTreeView::verticalOffset
+704 (int (*)(...))QTreeView::isIndexHidden
+712 (int (*)(...))QTreeView::setSelection
+720 (int (*)(...))QTreeView::visualRegionForSelection
+728 (int (*)(...))QTreeView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QAbstractItemView::startDrag
+760 (int (*)(...))QAbstractItemView::viewOptions
+768 (int (*)(...))QTreeView::drawRow
+776 (int (*)(...))QTreeView::drawBranches
+784 (int (*)(...))QTreeWidget::mimeTypes
+792 (int (*)(...))QTreeWidget::mimeData
+800 (int (*)(...))QTreeWidget::dropMimeData
+808 (int (*)(...))QTreeWidget::supportedDropActions
+816 (int (*)(...))-16
+824 (int (*)(...))(& _ZTI11QTreeWidget)
+832 (int (*)(...))QTreeWidget::_ZThn16_N11QTreeWidgetD1Ev
+840 (int (*)(...))QTreeWidget::_ZThn16_N11QTreeWidgetD0Ev
+848 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+856 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+864 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+872 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+880 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+888 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QTreeWidget
+ size=48 align=8
+ base size=48 base align=8
+QTreeWidget (0x0x7f0963fd0958) 0
+ vptr=((& QTreeWidget::_ZTV11QTreeWidget) + 16)
+ QTreeView (0x0x7f0963fd09c0) 0
+ primary-for QTreeWidget (0x0x7f0963fd0958)
+ QAbstractItemView (0x0x7f0963fd0a28) 0
+ primary-for QTreeView (0x0x7f0963fd09c0)
+ QAbstractScrollArea (0x0x7f0963fd0a90) 0
+ primary-for QAbstractItemView (0x0x7f0963fd0a28)
+ QFrame (0x0x7f0963fd0af8) 0
+ primary-for QAbstractScrollArea (0x0x7f0963fd0a90)
+ QWidget (0x0x7f096b4ad700) 0
+ primary-for QFrame (0x0x7f0963fd0af8)
+ QObject (0x0x7f096405d6c0) 0
+ primary-for QWidget (0x0x7f096b4ad700)
+ QPaintDevice (0x0x7f096405d720) 16
+ vptr=((& QTreeWidget::_ZTV11QTreeWidget) + 832)
+
+Class QUndoGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QUndoGroup::QPrivateSignal (0x0x7f096405dba0) 0 empty
+
+Vtable for QUndoGroup
+QUndoGroup::_ZTV10QUndoGroup: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QUndoGroup)
+16 (int (*)(...))QUndoGroup::metaObject
+24 (int (*)(...))QUndoGroup::qt_metacast
+32 (int (*)(...))QUndoGroup::qt_metacall
+40 (int (*)(...))QUndoGroup::~QUndoGroup
+48 (int (*)(...))QUndoGroup::~QUndoGroup
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QUndoGroup
+ size=16 align=8
+ base size=16 base align=8
+QUndoGroup (0x0x7f0963fd0b60) 0
+ vptr=((& QUndoGroup::_ZTV10QUndoGroup) + 16)
+ QObject (0x0x7f096405db40) 0
+ primary-for QUndoGroup (0x0x7f0963fd0b60)
+
+Vtable for QUndoCommand
+QUndoCommand::_ZTV12QUndoCommand: 8 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QUndoCommand)
+16 (int (*)(...))QUndoCommand::~QUndoCommand
+24 (int (*)(...))QUndoCommand::~QUndoCommand
+32 (int (*)(...))QUndoCommand::undo
+40 (int (*)(...))QUndoCommand::redo
+48 (int (*)(...))QUndoCommand::id
+56 (int (*)(...))QUndoCommand::mergeWith
+
+Class QUndoCommand
+ size=16 align=8
+ base size=16 base align=8
+QUndoCommand (0x0x7f096405dd80) 0
+ vptr=((& QUndoCommand::_ZTV12QUndoCommand) + 16)
+
+Class QUndoStack::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QUndoStack::QPrivateSignal (0x0x7f096405de40) 0 empty
+
+Vtable for QUndoStack
+QUndoStack::_ZTV10QUndoStack: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QUndoStack)
+16 (int (*)(...))QUndoStack::metaObject
+24 (int (*)(...))QUndoStack::qt_metacast
+32 (int (*)(...))QUndoStack::qt_metacall
+40 (int (*)(...))QUndoStack::~QUndoStack
+48 (int (*)(...))QUndoStack::~QUndoStack
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QUndoStack
+ size=16 align=8
+ base size=16 base align=8
+QUndoStack (0x0x7f0963fd0bc8) 0
+ vptr=((& QUndoStack::_ZTV10QUndoStack) + 16)
+ QObject (0x0x7f096405dde0) 0
+ primary-for QUndoStack (0x0x7f0963fd0bc8)
+
+Class QUndoView::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QUndoView::QPrivateSignal (0x0x7f096408b120) 0 empty
+
+Vtable for QUndoView
+QUndoView::_ZTV9QUndoView: 106 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QUndoView)
+16 (int (*)(...))QUndoView::metaObject
+24 (int (*)(...))QUndoView::qt_metacast
+32 (int (*)(...))QUndoView::qt_metacall
+40 (int (*)(...))QUndoView::~QUndoView
+48 (int (*)(...))QUndoView::~QUndoView
+56 (int (*)(...))QListView::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QListView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractItemView::mousePressEvent
+176 (int (*)(...))QListView::mouseReleaseEvent
+184 (int (*)(...))QAbstractItemView::mouseDoubleClickEvent
+192 (int (*)(...))QListView::mouseMoveEvent
+200 (int (*)(...))QListView::wheelEvent
+208 (int (*)(...))QAbstractItemView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QListView::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QListView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QListView::dragMoveEvent
+328 (int (*)(...))QListView::dragLeaveEvent
+336 (int (*)(...))QListView::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractItemView::viewportEvent
+448 (int (*)(...))QListView::scrollContentsBy
+456 (int (*)(...))QListView::viewportSizeHint
+464 (int (*)(...))QAbstractItemView::setModel
+472 (int (*)(...))QAbstractItemView::setSelectionModel
+480 (int (*)(...))QAbstractItemView::keyboardSearch
+488 (int (*)(...))QListView::visualRect
+496 (int (*)(...))QListView::scrollTo
+504 (int (*)(...))QListView::indexAt
+512 (int (*)(...))QAbstractItemView::sizeHintForRow
+520 (int (*)(...))QAbstractItemView::sizeHintForColumn
+528 (int (*)(...))QListView::reset
+536 (int (*)(...))QListView::setRootIndex
+544 (int (*)(...))QListView::doItemsLayout
+552 (int (*)(...))QAbstractItemView::selectAll
+560 (int (*)(...))QListView::dataChanged
+568 (int (*)(...))QListView::rowsInserted
+576 (int (*)(...))QListView::rowsAboutToBeRemoved
+584 (int (*)(...))QListView::selectionChanged
+592 (int (*)(...))QListView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QListView::updateGeometries
+624 (int (*)(...))QAbstractItemView::verticalScrollbarAction
+632 (int (*)(...))QAbstractItemView::horizontalScrollbarAction
+640 (int (*)(...))QAbstractItemView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))QListView::moveCursor
+688 (int (*)(...))QListView::horizontalOffset
+696 (int (*)(...))QListView::verticalOffset
+704 (int (*)(...))QListView::isIndexHidden
+712 (int (*)(...))QListView::setSelection
+720 (int (*)(...))QListView::visualRegionForSelection
+728 (int (*)(...))QListView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QListView::startDrag
+760 (int (*)(...))QListView::viewOptions
+768 (int (*)(...))-16
+776 (int (*)(...))(& _ZTI9QUndoView)
+784 (int (*)(...))QUndoView::_ZThn16_N9QUndoViewD1Ev
+792 (int (*)(...))QUndoView::_ZThn16_N9QUndoViewD0Ev
+800 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+808 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+816 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+824 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+832 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+840 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QUndoView
+ size=48 align=8
+ base size=48 base align=8
+QUndoView (0x0x7f0963fd0c30) 0
+ vptr=((& QUndoView::_ZTV9QUndoView) + 16)
+ QListView (0x0x7f0963fd0c98) 0
+ primary-for QUndoView (0x0x7f0963fd0c30)
+ QAbstractItemView (0x0x7f0963fd0d00) 0
+ primary-for QListView (0x0x7f0963fd0c98)
+ QAbstractScrollArea (0x0x7f0963fd0d68) 0
+ primary-for QAbstractItemView (0x0x7f0963fd0d00)
+ QFrame (0x0x7f0963fd0dd0) 0
+ primary-for QAbstractScrollArea (0x0x7f0963fd0d68)
+ QWidget (0x0x7f096b4ada80) 0
+ primary-for QFrame (0x0x7f0963fd0dd0)
+ QObject (0x0x7f096408b060) 0
+ primary-for QWidget (0x0x7f096b4ada80)
+ QPaintDevice (0x0x7f096408b0c0) 16
+ vptr=((& QUndoView::_ZTV9QUndoView) + 784)
+
+Class QWhatsThis
+ size=1 align=1
+ base size=0 base align=1
+QWhatsThis (0x0x7f096408b300) 0 empty
+
+Class QWidgetAction::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QWidgetAction::QPrivateSignal (0x0x7f096408b3c0) 0 empty
+
+Vtable for QWidgetAction
+QWidgetAction::_ZTV13QWidgetAction: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QWidgetAction)
+16 (int (*)(...))QWidgetAction::metaObject
+24 (int (*)(...))QWidgetAction::qt_metacast
+32 (int (*)(...))QWidgetAction::qt_metacall
+40 (int (*)(...))QWidgetAction::~QWidgetAction
+48 (int (*)(...))QWidgetAction::~QWidgetAction
+56 (int (*)(...))QWidgetAction::event
+64 (int (*)(...))QWidgetAction::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidgetAction::createWidget
+120 (int (*)(...))QWidgetAction::deleteWidget
+
+Class QWidgetAction
+ size=16 align=8
+ base size=16 base align=8
+QWidgetAction (0x0x7f0963fd0e38) 0
+ vptr=((& QWidgetAction::_ZTV13QWidgetAction) + 16)
+ QAction (0x0x7f0963fd0ea0) 0
+ primary-for QWidgetAction (0x0x7f0963fd0e38)
+ QObject (0x0x7f096408b360) 0
+ primary-for QAction (0x0x7f0963fd0ea0)
+
+Class QWizard::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QWizard::QPrivateSignal (0x0x7f096408b660) 0 empty
+
+Vtable for QWizard
+QWizard::_ZTV7QWizard: 73 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QWizard)
+16 (int (*)(...))QWizard::metaObject
+24 (int (*)(...))QWizard::qt_metacast
+32 (int (*)(...))QWizard::qt_metacall
+40 (int (*)(...))QWizard::~QWizard
+48 (int (*)(...))QWizard::~QWizard
+56 (int (*)(...))QWizard::event
+64 (int (*)(...))QDialog::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWizard::setVisible
+128 (int (*)(...))QWizard::sizeHint
+136 (int (*)(...))QDialog::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QDialog::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWizard::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWizard::resizeEvent
+280 (int (*)(...))QDialog::closeEvent
+288 (int (*)(...))QDialog::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QDialog::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDialog::open
+440 (int (*)(...))QDialog::exec
+448 (int (*)(...))QWizard::done
+456 (int (*)(...))QDialog::accept
+464 (int (*)(...))QDialog::reject
+472 (int (*)(...))QWizard::validateCurrentPage
+480 (int (*)(...))QWizard::nextId
+488 (int (*)(...))QWizard::initializePage
+496 (int (*)(...))QWizard::cleanupPage
+504 (int (*)(...))-16
+512 (int (*)(...))(& _ZTI7QWizard)
+520 (int (*)(...))QWizard::_ZThn16_N7QWizardD1Ev
+528 (int (*)(...))QWizard::_ZThn16_N7QWizardD0Ev
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+552 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+560 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+568 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+576 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QWizard
+ size=48 align=8
+ base size=48 base align=8
+QWizard (0x0x7f0963fd0f08) 0
+ vptr=((& QWizard::_ZTV7QWizard) + 16)
+ QDialog (0x0x7f0963fd0f70) 0
+ primary-for QWizard (0x0x7f0963fd0f08)
+ QWidget (0x0x7f096b4add20) 0
+ primary-for QDialog (0x0x7f0963fd0f70)
+ QObject (0x0x7f096408b5a0) 0
+ primary-for QWidget (0x0x7f096b4add20)
+ QPaintDevice (0x0x7f096408b600) 16
+ vptr=((& QWizard::_ZTV7QWizard) + 520)
+
+Class QWizardPage::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QWizardPage::QPrivateSignal (0x0x7f09640ba240) 0 empty
+
+Vtable for QWizardPage
+QWizardPage::_ZTV11QWizardPage: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QWizardPage)
+16 (int (*)(...))QWizardPage::metaObject
+24 (int (*)(...))QWizardPage::qt_metacast
+32 (int (*)(...))QWizardPage::qt_metacall
+40 (int (*)(...))QWizardPage::~QWizardPage
+48 (int (*)(...))QWizardPage::~QWizardPage
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QWizardPage::initializePage
+440 (int (*)(...))QWizardPage::cleanupPage
+448 (int (*)(...))QWizardPage::validatePage
+456 (int (*)(...))QWizardPage::isComplete
+464 (int (*)(...))QWizardPage::nextId
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI11QWizardPage)
+488 (int (*)(...))QWizardPage::_ZThn16_N11QWizardPageD1Ev
+496 (int (*)(...))QWizardPage::_ZThn16_N11QWizardPageD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QWizardPage
+ size=48 align=8
+ base size=48 base align=8
+QWizardPage (0x0x7f09640ae0d0) 0
+ vptr=((& QWizardPage::_ZTV11QWizardPage) + 16)
+ QWidget (0x0x7f096b51ac40) 0
+ primary-for QWizardPage (0x0x7f09640ae0d0)
+ QObject (0x0x7f09640ba180) 0
+ primary-for QWidget (0x0x7f096b51ac40)
+ QPaintDevice (0x0x7f09640ba1e0) 16
+ vptr=((& QWizardPage::_ZTV11QWizardPage) + 488)
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f09640d56c0) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f09640d5a20) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f09640d5c00) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f09640d5f60) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f09640e7180) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f09640e74e0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f09640e76c0) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f09640e7a20) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f09640e7c00) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f09640e7f60) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7f09640fd180) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7f09640fd4e0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7f09640fd6c0) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7f09640fda20) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7f09640fdc00) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7f09640fdf60) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f0963d1e480) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f0963d1e7e0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f0963d1e960) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f0963d1ecc0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f0963d1ee40) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f0963d2c1e0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f0963d2c360) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f0963d2c6c0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f0963d2c840) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f0963d2cba0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7f0963d2cd20) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7f0963d3a0c0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7f0963d3a240) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7f0963d3a5a0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7f0963d3a720) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7f0963d3aa80) 0 empty
+
diff --git a/tests/auto/bic/data/QtQuickWidgets.5.14.0.linux-gcc-amd64.txt b/tests/auto/bic/data/QtQuickWidgets.5.14.0.linux-gcc-amd64.txt
new file mode 100644
index 0000000000..cb7a13b1c8
--- /dev/null
+++ b/tests/auto/bic/data/QtQuickWidgets.5.14.0.linux-gcc-amd64.txt
@@ -0,0 +1,22451 @@
+Class std::__failure_type
+ size=1 align=1
+ base size=0 base align=1
+std::__failure_type (0x0x7f1d29925d20) 0 empty
+
+Class std::__do_is_destructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_destructible_impl (0x0x7f1d299ba4e0) 0 empty
+
+Class std::__do_is_nt_destructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_nt_destructible_impl (0x0x7f1d299ba720) 0 empty
+
+Class std::__do_is_default_constructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_default_constructible_impl (0x0x7f1d299ba960) 0 empty
+
+Class std::__do_is_static_castable_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_static_castable_impl (0x0x7f1d299baba0) 0 empty
+
+Class std::__do_is_direct_constructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_direct_constructible_impl (0x0x7f1d299bad20) 0 empty
+
+Class std::__do_is_nary_constructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_nary_constructible_impl (0x0x7f1d299f3120) 0 empty
+
+Class std::__do_is_implicitly_default_constructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_implicitly_default_constructible_impl (0x0x7f1d29a25240) 0 empty
+
+Class std::__do_common_type_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_common_type_impl (0x0x7f1d29a7a900) 0 empty
+
+Class std::__do_member_type_wrapper
+ size=1 align=1
+ base size=0 base align=1
+std::__do_member_type_wrapper (0x0x7f1d29a7a9c0) 0 empty
+
+Class std::__invoke_memfun_ref
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_memfun_ref (0x0x7f1d29a7ad80) 0 empty
+
+Class std::__invoke_memfun_deref
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_memfun_deref (0x0x7f1d29a7ade0) 0 empty
+
+Class std::__invoke_memobj_ref
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_memobj_ref (0x0x7f1d29a7ae40) 0 empty
+
+Class std::__invoke_memobj_deref
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_memobj_deref (0x0x7f1d29a7aea0) 0 empty
+
+Class std::__invoke_other
+ size=1 align=1
+ base size=0 base align=1
+std::__invoke_other (0x0x7f1d29a7af00) 0 empty
+
+Class std::__result_of_memfun_ref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memfun_ref_impl (0x0x7f1d29aa8000) 0 empty
+
+Class std::__result_of_memfun_deref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memfun_deref_impl (0x0x7f1d29aa80c0) 0 empty
+
+Class std::__result_of_memobj_ref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memobj_ref_impl (0x0x7f1d29aa8180) 0 empty
+
+Class std::__result_of_memobj_deref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memobj_deref_impl (0x0x7f1d29aa8240) 0 empty
+
+Class std::__result_of_other_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_other_impl (0x0x7f1d29aa85a0) 0 empty
+
+Class std::__swappable_details::__do_is_swappable_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__swappable_details::__do_is_swappable_impl (0x0x7f1d29aa8900) 0 empty
+
+Class std::__swappable_details::__do_is_nothrow_swappable_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__swappable_details::__do_is_nothrow_swappable_impl (0x0x7f1d29aa8960) 0 empty
+
+Class std::__nonesuch
+ size=1 align=1
+ base size=0 base align=1
+std::__nonesuch (0x0x7f1d29aa8f00) 0 empty
+
+Class std::piecewise_construct_t
+ size=1 align=1
+ base size=0 base align=1
+std::piecewise_construct_t (0x0x7f1d270f65a0) 0 empty
+
+Class std::__nonesuch_no_braces
+ size=1 align=1
+ base size=1 base align=1
+std::__nonesuch_no_braces (0x0x7f1d29a79bc8) 0 empty
+ std::__nonesuch (0x0x7f1d270f6a80) 0 empty
+
+Class std::__true_type
+ size=1 align=1
+ base size=0 base align=1
+std::__true_type (0x0x7f1d27175420) 0 empty
+
+Class std::__false_type
+ size=1 align=1
+ base size=0 base align=1
+std::__false_type (0x0x7f1d27175480) 0 empty
+
+Class std::input_iterator_tag
+ size=1 align=1
+ base size=0 base align=1
+std::input_iterator_tag (0x0x7f1d271d3180) 0 empty
+
+Class std::output_iterator_tag
+ size=1 align=1
+ base size=0 base align=1
+std::output_iterator_tag (0x0x7f1d271d31e0) 0 empty
+
+Class std::forward_iterator_tag
+ size=1 align=1
+ base size=1 base align=1
+std::forward_iterator_tag (0x0x7f1d271a90d0) 0 empty
+ std::input_iterator_tag (0x0x7f1d271d3240) 0 empty
+
+Class std::bidirectional_iterator_tag
+ size=1 align=1
+ base size=1 base align=1
+std::bidirectional_iterator_tag (0x0x7f1d271a9138) 0 empty
+ std::forward_iterator_tag (0x0x7f1d271a91a0) 0 empty
+ std::input_iterator_tag (0x0x7f1d271d32a0) 0 empty
+
+Class std::random_access_iterator_tag
+ size=1 align=1
+ base size=1 base align=1
+std::random_access_iterator_tag (0x0x7f1d271a9208) 0 empty
+ std::bidirectional_iterator_tag (0x0x7f1d271a9270) 0 empty
+ std::forward_iterator_tag (0x0x7f1d271a92d8) 0 empty
+ std::input_iterator_tag (0x0x7f1d271d3300) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_less_iter
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_less_iter (0x0x7f1d2725bde0) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_less_val
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_less_val (0x0x7f1d2725bf00) 0 empty
+
+Class __gnu_cxx::__ops::_Val_less_iter
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Val_less_iter (0x0x7f1d27285240) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_equal_to_iter
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_equal_to_iter (0x0x7f1d27285540) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_equal_to_val
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_equal_to_val (0x0x7f1d27285660) 0 empty
+
+Class __locale_struct
+ size=232 align=8
+ base size=232 base align=8
+__locale_struct (0x0x7f1d26f0e960) 0
+
+Class timeval
+ size=16 align=8
+ base size=16 base align=8
+timeval (0x0x7f1d26f0ec60) 0
+
+Class timespec
+ size=16 align=8
+ base size=16 base align=8
+timespec (0x0x7f1d26f0ecc0) 0
+
+Class __pthread_rwlock_arch_t
+ size=56 align=8
+ base size=56 base align=8
+__pthread_rwlock_arch_t (0x0x7f1d26f0ed80) 0
+
+Class __pthread_internal_list
+ size=16 align=8
+ base size=16 base align=8
+__pthread_internal_list (0x0x7f1d26f0ede0) 0
+
+Class __pthread_mutex_s
+ size=40 align=8
+ base size=40 base align=8
+__pthread_mutex_s (0x0x7f1d26f0ee40) 0
+
+Class __pthread_cond_s
+ size=48 align=8
+ base size=48 base align=8
+__pthread_cond_s (0x0x7f1d26f0eea0) 0
+
+Class pthread_attr_t
+ size=56 align=8
+ base size=56 base align=8
+pthread_attr_t (0x0x7f1d26f56180) 0
+
+Class random_data
+ size=48 align=8
+ base size=48 base align=8
+random_data (0x0x7f1d26f56420) 0
+
+Class drand48_data
+ size=24 align=8
+ base size=24 base align=8
+drand48_data (0x0x7f1d26f56480) 0
+
+Vtable for std::exception
+std::exception::_ZTVSt9exception: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt9exception)
+16 (int (*)(...))std::exception::~exception
+24 (int (*)(...))std::exception::~exception
+32 (int (*)(...))std::exception::what
+
+Class std::exception
+ size=8 align=8
+ base size=8 base align=8
+std::exception (0x0x7f1d2700b240) 0 nearly-empty
+ vptr=((& std::exception::_ZTVSt9exception) + 16)
+
+Vtable for std::bad_exception
+std::bad_exception::_ZTVSt13bad_exception: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt13bad_exception)
+16 (int (*)(...))std::bad_exception::~bad_exception
+24 (int (*)(...))std::bad_exception::~bad_exception
+32 (int (*)(...))std::bad_exception::what
+
+Class std::bad_exception
+ size=8 align=8
+ base size=8 base align=8
+std::bad_exception (0x0x7f1d271a9618) 0 nearly-empty
+ vptr=((& std::bad_exception::_ZTVSt13bad_exception) + 16)
+ std::exception (0x0x7f1d2700b420) 0 nearly-empty
+ primary-for std::bad_exception (0x0x7f1d271a9618)
+
+Vtable for std::type_info
+std::type_info::_ZTVSt9type_info: 8 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt9type_info)
+16 (int (*)(...))std::type_info::~type_info
+24 (int (*)(...))std::type_info::~type_info
+32 (int (*)(...))std::type_info::__is_pointer_p
+40 (int (*)(...))std::type_info::__is_function_p
+48 (int (*)(...))std::type_info::__do_catch
+56 (int (*)(...))std::type_info::__do_upcast
+
+Class std::type_info
+ size=16 align=8
+ base size=16 base align=8
+std::type_info (0x0x7f1d2700b600) 0
+ vptr=((& std::type_info::_ZTVSt9type_info) + 16)
+
+Vtable for std::bad_cast
+std::bad_cast::_ZTVSt8bad_cast: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt8bad_cast)
+16 (int (*)(...))std::bad_cast::~bad_cast
+24 (int (*)(...))std::bad_cast::~bad_cast
+32 (int (*)(...))std::bad_cast::what
+
+Class std::bad_cast
+ size=8 align=8
+ base size=8 base align=8
+std::bad_cast (0x0x7f1d271a9680) 0 nearly-empty
+ vptr=((& std::bad_cast::_ZTVSt8bad_cast) + 16)
+ std::exception (0x0x7f1d2700b9c0) 0 nearly-empty
+ primary-for std::bad_cast (0x0x7f1d271a9680)
+
+Vtable for std::bad_typeid
+std::bad_typeid::_ZTVSt10bad_typeid: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt10bad_typeid)
+16 (int (*)(...))std::bad_typeid::~bad_typeid
+24 (int (*)(...))std::bad_typeid::~bad_typeid
+32 (int (*)(...))std::bad_typeid::what
+
+Class std::bad_typeid
+ size=8 align=8
+ base size=8 base align=8
+std::bad_typeid (0x0x7f1d271a96e8) 0 nearly-empty
+ vptr=((& std::bad_typeid::_ZTVSt10bad_typeid) + 16)
+ std::exception (0x0x7f1d2700bba0) 0 nearly-empty
+ primary-for std::bad_typeid (0x0x7f1d271a96e8)
+
+Class std::__exception_ptr::exception_ptr
+ size=8 align=8
+ base size=8 base align=8
+std::__exception_ptr::exception_ptr (0x0x7f1d2700bd80) 0
+
+Vtable for std::nested_exception
+std::nested_exception::_ZTVSt16nested_exception: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt16nested_exception)
+16 (int (*)(...))std::nested_exception::~nested_exception
+24 (int (*)(...))std::nested_exception::~nested_exception
+
+Class std::nested_exception
+ size=16 align=8
+ base size=16 base align=8
+std::nested_exception (0x0x7f1d27042360) 0
+ vptr=((& std::nested_exception::_ZTVSt16nested_exception) + 16)
+
+Vtable for std::bad_alloc
+std::bad_alloc::_ZTVSt9bad_alloc: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt9bad_alloc)
+16 (int (*)(...))std::bad_alloc::~bad_alloc
+24 (int (*)(...))std::bad_alloc::~bad_alloc
+32 (int (*)(...))std::bad_alloc::what
+
+Class std::bad_alloc
+ size=8 align=8
+ base size=8 base align=8
+std::bad_alloc (0x0x7f1d271a9750) 0 nearly-empty
+ vptr=((& std::bad_alloc::_ZTVSt9bad_alloc) + 16)
+ std::exception (0x0x7f1d27042a20) 0 nearly-empty
+ primary-for std::bad_alloc (0x0x7f1d271a9750)
+
+Vtable for std::bad_array_new_length
+std::bad_array_new_length::_ZTVSt20bad_array_new_length: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt20bad_array_new_length)
+16 (int (*)(...))std::bad_array_new_length::~bad_array_new_length
+24 (int (*)(...))std::bad_array_new_length::~bad_array_new_length
+32 (int (*)(...))std::bad_array_new_length::what
+
+Class std::bad_array_new_length
+ size=8 align=8
+ base size=8 base align=8
+std::bad_array_new_length (0x0x7f1d271a97b8) 0 nearly-empty
+ vptr=((& std::bad_array_new_length::_ZTVSt20bad_array_new_length) + 16)
+ std::bad_alloc (0x0x7f1d271a9820) 0 nearly-empty
+ primary-for std::bad_array_new_length (0x0x7f1d271a97b8)
+ std::exception (0x0x7f1d27042c00) 0 nearly-empty
+ primary-for std::bad_alloc (0x0x7f1d271a9820)
+
+Class std::nothrow_t
+ size=1 align=1
+ base size=0 base align=1
+std::nothrow_t (0x0x7f1d27042de0) 0 empty
+
+Class std::__allocator_traits_base
+ size=1 align=1
+ base size=0 base align=1
+std::__allocator_traits_base (0x0x7f1d27072000) 0 empty
+
+Class std::__numeric_limits_base
+ size=1 align=1
+ base size=0 base align=1
+std::__numeric_limits_base (0x0x7f1d26cec4e0) 0 empty
+
+Class QSysInfo
+ size=1 align=1
+ base size=0 base align=1
+QSysInfo (0x0x7f1d2695fa20) 0 empty
+
+Class QMessageLogContext
+ size=32 align=8
+ base size=32 base align=8
+QMessageLogContext (0x0x7f1d2695fb40) 0
+
+Class QMessageLogger
+ size=32 align=8
+ base size=32 base align=8
+QMessageLogger (0x0x7f1d2695fd20) 0
+
+Class QFlag
+ size=4 align=4
+ base size=4 base align=4
+QFlag (0x0x7f1d2699b420) 0
+
+Class QIncompatibleFlag
+ size=4 align=4
+ base size=4 base align=4
+QIncompatibleFlag (0x0x7f1d269d9ba0) 0
+
+Class std::__atomic_flag_base
+ size=1 align=1
+ base size=1 base align=1
+std::__atomic_flag_base (0x0x7f1d26a8d0c0) 0
+
+Class std::atomic_flag
+ size=1 align=1
+ base size=1 base align=1
+std::atomic_flag (0x0x7f1d26a25680) 0
+ std::__atomic_flag_base (0x0x7f1d26a8d120) 0
+
+Class QAtomicInt
+ size=4 align=4
+ base size=4 base align=4
+QAtomicInt (0x0x7f1d26a25dd0) 0
+ QAtomicInteger<int> (0x0x7f1d26a25e38) 0
+ QBasicAtomicInteger<int> (0x0x7f1d265bd360) 0
+
+Class QInternal
+ size=1 align=1
+ base size=0 base align=1
+QInternal (0x0x7f1d261fcea0) 0 empty
+
+Class QtPrivate::QSlotObjectBase
+ size=16 align=8
+ base size=16 base align=8
+QtPrivate::QSlotObjectBase (0x0x7f1d26263480) 0
+
+Class QGenericArgument
+ size=16 align=8
+ base size=16 base align=8
+QGenericArgument (0x0x7f1d26263ba0) 0
+
+Class QGenericReturnArgument
+ size=16 align=8
+ base size=16 base align=8
+QGenericReturnArgument (0x0x7f1d264aaa90) 0
+ QGenericArgument (0x0x7f1d26263e40) 0
+
+Class QMetaObject::SuperData
+ size=8 align=8
+ base size=8 base align=8
+QMetaObject::SuperData (0x0x7f1d2629c300) 0
+
+Class QMetaObject
+ size=48 align=8
+ base size=48 base align=8
+QMetaObject (0x0x7f1d2629c2a0) 0
+
+Class QMetaObject::Connection
+ size=8 align=8
+ base size=8 base align=8
+QMetaObject::Connection (0x0x7f1d2629cba0) 0
+
+Class QLatin1Char
+ size=1 align=1
+ base size=1 base align=1
+QLatin1Char (0x0x7f1d25f526c0) 0
+
+Class QChar
+ size=2 align=2
+ base size=2 base align=2
+QChar (0x0x7f1d25f52de0) 0
+
+Class QtPrivate::RefCount
+ size=4 align=4
+ base size=4 base align=4
+QtPrivate::RefCount (0x0x7f1d2601ec00) 0
+
+Class QArrayData
+ size=24 align=8
+ base size=24 base align=8
+QArrayData (0x0x7f1d2601ef60) 0
+
+Class QtPrivate::QContainerImplHelper
+ size=1 align=1
+ base size=0 base align=1
+QtPrivate::QContainerImplHelper (0x0x7f1d260a52a0) 0 empty
+
+Class lconv
+ size=96 align=8
+ base size=96 base align=8
+lconv (0x0x7f1d25d59ae0) 0
+
+Vtable for __cxxabiv1::__forced_unwind
+__cxxabiv1::__forced_unwind::_ZTVN10__cxxabiv115__forced_unwindE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN10__cxxabiv115__forced_unwindE)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class __cxxabiv1::__forced_unwind
+ size=8 align=8
+ base size=8 base align=8
+__cxxabiv1::__forced_unwind (0x0x7f1d25d59ba0) 0 nearly-empty
+ vptr=((& __cxxabiv1::__forced_unwind::_ZTVN10__cxxabiv115__forced_unwindE) + 16)
+
+Class sched_param
+ size=4 align=4
+ base size=4 base align=4
+sched_param (0x0x7f1d25e1ccc0) 0
+
+Class timex
+ size=208 align=8
+ base size=208 base align=8
+timex (0x0x7f1d25e1cd80) 0
+
+Class tm
+ size=56 align=8
+ base size=56 base align=8
+tm (0x0x7f1d25e1cde0) 0
+
+Class itimerspec
+ size=32 align=8
+ base size=32 base align=8
+itimerspec (0x0x7f1d25e1ce40) 0
+
+Class _pthread_cleanup_buffer
+ size=32 align=8
+ base size=32 base align=8
+_pthread_cleanup_buffer (0x0x7f1d25e1cea0) 0
+
+Class __pthread_cleanup_frame
+ size=24 align=8
+ base size=24 base align=8
+__pthread_cleanup_frame (0x0x7f1d25e75000) 0
+
+Class __pthread_cleanup_class
+ size=24 align=8
+ base size=24 base align=8
+__pthread_cleanup_class (0x0x7f1d25e75060) 0
+
+Class _IO_marker
+ size=24 align=8
+ base size=24 base align=8
+_IO_marker (0x0x7f1d25b94000) 0
+
+Class _IO_FILE
+ size=216 align=8
+ base size=216 base align=8
+_IO_FILE (0x0x7f1d25b94060) 0
+
+Class std::_Hash_impl
+ size=1 align=1
+ base size=0 base align=1
+std::_Hash_impl (0x0x7f1d259420c0) 0 empty
+
+Class std::_Fnv_hash_impl
+ size=1 align=1
+ base size=0 base align=1
+std::_Fnv_hash_impl (0x0x7f1d25942240) 0 empty
+
+Class std::locale
+ size=8 align=8
+ base size=8 base align=8
+std::locale (0x0x7f1d256c73c0) 0
+
+Vtable for std::locale::facet
+std::locale::facet::_ZTVNSt6locale5facetE: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt6locale5facetE)
+16 (int (*)(...))std::locale::facet::~facet
+24 (int (*)(...))std::locale::facet::~facet
+
+Class std::locale::facet
+ size=16 align=8
+ base size=12 base align=8
+std::locale::facet (0x0x7f1d256c7780) 0
+ vptr=((& std::locale::facet::_ZTVNSt6locale5facetE) + 16)
+
+Class std::locale::id
+ size=8 align=8
+ base size=8 base align=8
+std::locale::id (0x0x7f1d256c7a20) 0
+
+Class std::locale::_Impl
+ size=40 align=8
+ base size=40 base align=8
+std::locale::_Impl (0x0x7f1d256c7c00) 0
+
+Class std::__cow_string
+ size=8 align=8
+ base size=8 base align=8
+std::__cow_string (0x0x7f1d2571bc00) 0
+
+Vtable for std::logic_error
+std::logic_error::_ZTVSt11logic_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt11logic_error)
+16 (int (*)(...))std::logic_error::~logic_error
+24 (int (*)(...))std::logic_error::~logic_error
+32 (int (*)(...))std::logic_error::what
+
+Class std::logic_error
+ size=16 align=8
+ base size=16 base align=8
+std::logic_error (0x0x7f1d2595abc8) 0
+ vptr=((& std::logic_error::_ZTVSt11logic_error) + 16)
+ std::exception (0x0x7f1d2571bcc0) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f1d2595abc8)
+
+Vtable for std::domain_error
+std::domain_error::_ZTVSt12domain_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12domain_error)
+16 (int (*)(...))std::domain_error::~domain_error
+24 (int (*)(...))std::domain_error::~domain_error
+32 (int (*)(...))std::logic_error::what
+
+Class std::domain_error
+ size=16 align=8
+ base size=16 base align=8
+std::domain_error (0x0x7f1d2595ac30) 0
+ vptr=((& std::domain_error::_ZTVSt12domain_error) + 16)
+ std::logic_error (0x0x7f1d2595ac98) 0
+ primary-for std::domain_error (0x0x7f1d2595ac30)
+ std::exception (0x0x7f1d2571bd20) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f1d2595ac98)
+
+Vtable for std::invalid_argument
+std::invalid_argument::_ZTVSt16invalid_argument: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt16invalid_argument)
+16 (int (*)(...))std::invalid_argument::~invalid_argument
+24 (int (*)(...))std::invalid_argument::~invalid_argument
+32 (int (*)(...))std::logic_error::what
+
+Class std::invalid_argument
+ size=16 align=8
+ base size=16 base align=8
+std::invalid_argument (0x0x7f1d2595ad00) 0
+ vptr=((& std::invalid_argument::_ZTVSt16invalid_argument) + 16)
+ std::logic_error (0x0x7f1d2595ad68) 0
+ primary-for std::invalid_argument (0x0x7f1d2595ad00)
+ std::exception (0x0x7f1d2571bd80) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f1d2595ad68)
+
+Vtable for std::length_error
+std::length_error::_ZTVSt12length_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12length_error)
+16 (int (*)(...))std::length_error::~length_error
+24 (int (*)(...))std::length_error::~length_error
+32 (int (*)(...))std::logic_error::what
+
+Class std::length_error
+ size=16 align=8
+ base size=16 base align=8
+std::length_error (0x0x7f1d2595add0) 0
+ vptr=((& std::length_error::_ZTVSt12length_error) + 16)
+ std::logic_error (0x0x7f1d2595ae38) 0
+ primary-for std::length_error (0x0x7f1d2595add0)
+ std::exception (0x0x7f1d2571bde0) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f1d2595ae38)
+
+Vtable for std::out_of_range
+std::out_of_range::_ZTVSt12out_of_range: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12out_of_range)
+16 (int (*)(...))std::out_of_range::~out_of_range
+24 (int (*)(...))std::out_of_range::~out_of_range
+32 (int (*)(...))std::logic_error::what
+
+Class std::out_of_range
+ size=16 align=8
+ base size=16 base align=8
+std::out_of_range (0x0x7f1d2595aea0) 0
+ vptr=((& std::out_of_range::_ZTVSt12out_of_range) + 16)
+ std::logic_error (0x0x7f1d2595af08) 0
+ primary-for std::out_of_range (0x0x7f1d2595aea0)
+ std::exception (0x0x7f1d2571be40) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f1d2595af08)
+
+Vtable for std::runtime_error
+std::runtime_error::_ZTVSt13runtime_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt13runtime_error)
+16 (int (*)(...))std::runtime_error::~runtime_error
+24 (int (*)(...))std::runtime_error::~runtime_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::runtime_error
+ size=16 align=8
+ base size=16 base align=8
+std::runtime_error (0x0x7f1d2595af70) 0
+ vptr=((& std::runtime_error::_ZTVSt13runtime_error) + 16)
+ std::exception (0x0x7f1d2571bea0) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f1d2595af70)
+
+Vtable for std::range_error
+std::range_error::_ZTVSt11range_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt11range_error)
+16 (int (*)(...))std::range_error::~range_error
+24 (int (*)(...))std::range_error::~range_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::range_error
+ size=16 align=8
+ base size=16 base align=8
+std::range_error (0x0x7f1d2595a0d0) 0
+ vptr=((& std::range_error::_ZTVSt11range_error) + 16)
+ std::runtime_error (0x0x7f1d2595a138) 0
+ primary-for std::range_error (0x0x7f1d2595a0d0)
+ std::exception (0x0x7f1d2571bf00) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f1d2595a138)
+
+Vtable for std::overflow_error
+std::overflow_error::_ZTVSt14overflow_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt14overflow_error)
+16 (int (*)(...))std::overflow_error::~overflow_error
+24 (int (*)(...))std::overflow_error::~overflow_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::overflow_error
+ size=16 align=8
+ base size=16 base align=8
+std::overflow_error (0x0x7f1d2595a478) 0
+ vptr=((& std::overflow_error::_ZTVSt14overflow_error) + 16)
+ std::runtime_error (0x0x7f1d2595a4e0) 0
+ primary-for std::overflow_error (0x0x7f1d2595a478)
+ std::exception (0x0x7f1d2571bf60) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f1d2595a4e0)
+
+Vtable for std::underflow_error
+std::underflow_error::_ZTVSt15underflow_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt15underflow_error)
+16 (int (*)(...))std::underflow_error::~underflow_error
+24 (int (*)(...))std::underflow_error::~underflow_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::underflow_error
+ size=16 align=8
+ base size=16 base align=8
+std::underflow_error (0x0x7f1d25776000) 0
+ vptr=((& std::underflow_error::_ZTVSt15underflow_error) + 16)
+ std::runtime_error (0x0x7f1d25776068) 0
+ primary-for std::underflow_error (0x0x7f1d25776000)
+ std::exception (0x0x7f1d25778000) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f1d25776068)
+
+Vtable for std::_V2::error_category
+std::_V2::error_category::_ZTVNSt3_V214error_categoryE: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt3_V214error_categoryE)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))std::_V2::error_category::_M_message
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))std::_V2::error_category::default_error_condition
+64 (int (*)(...))std::_V2::error_category::equivalent
+72 (int (*)(...))std::_V2::error_category::equivalent
+
+Class std::_V2::error_category
+ size=8 align=8
+ base size=8 base align=8
+std::_V2::error_category (0x0x7f1d25778180) 0 nearly-empty
+ vptr=((& std::_V2::error_category::_ZTVNSt3_V214error_categoryE) + 16)
+
+Class std::error_code
+ size=16 align=8
+ base size=16 base align=8
+std::error_code (0x0x7f1d257784e0) 0
+
+Class std::error_condition
+ size=16 align=8
+ base size=16 base align=8
+std::error_condition (0x0x7f1d25778d20) 0
+
+Vtable for std::system_error
+std::system_error::_ZTVSt12system_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12system_error)
+16 (int (*)(...))std::system_error::~system_error
+24 (int (*)(...))std::system_error::~system_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::system_error
+ size=32 align=8
+ base size=32 base align=8
+std::system_error (0x0x7f1d25776478) 0
+ vptr=((& std::system_error::_ZTVSt12system_error) + 16)
+ std::runtime_error (0x0x7f1d257764e0) 0
+ primary-for std::system_error (0x0x7f1d25776478)
+ std::exception (0x0x7f1d257b1900) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f1d257764e0)
+
+Vtable for std::ios_base::failure
+std::ios_base::failure::_ZTVNSt8ios_base7failureB5cxx11E: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt8ios_base7failureB5cxx11E)
+16 (int (*)(...))std::ios_base::failure::~failure
+24 (int (*)(...))std::ios_base::failure::~failure
+32 (int (*)(...))std::ios_base::failure::what
+
+Class std::ios_base::failure
+ size=32 align=8
+ base size=32 base align=8
+std::ios_base::failure (0x0x7f1d25776750) 0
+ vptr=((& std::ios_base::failure::_ZTVNSt8ios_base7failureB5cxx11E) + 16)
+ std::system_error (0x0x7f1d257767b8) 0
+ primary-for std::ios_base::failure (0x0x7f1d25776750)
+ std::runtime_error (0x0x7f1d25776820) 0
+ primary-for std::system_error (0x0x7f1d257767b8)
+ std::exception (0x0x7f1d257e2ea0) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f1d25776820)
+
+Class std::ios_base::_Callback_list
+ size=24 align=8
+ base size=24 base align=8
+std::ios_base::_Callback_list (0x0x7f1d257e2f00) 0
+
+Class std::ios_base::_Words
+ size=16 align=8
+ base size=16 base align=8
+std::ios_base::_Words (0x0x7f1d257e2f60) 0
+
+Class std::ios_base::Init
+ size=1 align=1
+ base size=0 base align=1
+std::ios_base::Init (0x0x7f1d2581c000) 0 empty
+
+Vtable for std::ios_base
+std::ios_base::_ZTVSt8ios_base: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt8ios_base)
+16 (int (*)(...))std::ios_base::~ios_base
+24 (int (*)(...))std::ios_base::~ios_base
+
+Class std::ios_base
+ size=216 align=8
+ base size=216 base align=8
+std::ios_base (0x0x7f1d257e2e40) 0
+ vptr=((& std::ios_base::_ZTVSt8ios_base) + 16)
+
+Class std::ctype_base
+ size=1 align=1
+ base size=0 base align=1
+std::ctype_base (0x0x7f1d254db900) 0 empty
+
+Class std::__num_base
+ size=1 align=1
+ base size=0 base align=1
+std::__num_base (0x0x7f1d25585ae0) 0 empty
+
+VTT for std::basic_ostream<char>
+std::basic_ostream<char>::_ZTTSo: 2 entries
+0 ((& std::basic_ostream<char>::_ZTVSo) + 24)
+8 ((& std::basic_ostream<char>::_ZTVSo) + 64)
+
+VTT for std::basic_ostream<wchar_t>
+std::basic_ostream<wchar_t>::_ZTTSt13basic_ostreamIwSt11char_traitsIwEE: 2 entries
+0 ((& std::basic_ostream<wchar_t>::_ZTVSt13basic_ostreamIwSt11char_traitsIwEE) + 24)
+8 ((& std::basic_ostream<wchar_t>::_ZTVSt13basic_ostreamIwSt11char_traitsIwEE) + 64)
+
+VTT for std::basic_istream<char>
+std::basic_istream<char>::_ZTTSi: 2 entries
+0 ((& std::basic_istream<char>::_ZTVSi) + 24)
+8 ((& std::basic_istream<char>::_ZTVSi) + 64)
+
+VTT for std::basic_istream<wchar_t>
+std::basic_istream<wchar_t>::_ZTTSt13basic_istreamIwSt11char_traitsIwEE: 2 entries
+0 ((& std::basic_istream<wchar_t>::_ZTVSt13basic_istreamIwSt11char_traitsIwEE) + 24)
+8 ((& std::basic_istream<wchar_t>::_ZTVSt13basic_istreamIwSt11char_traitsIwEE) + 64)
+
+Construction vtable for std::basic_istream<char> (0x0x7f1d25123f08 instance) in std::basic_iostream<char>
+std::basic_iostream<char>::_ZTCSd0_Si: 10 entries
+0 24
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISi)
+24 0
+32 0
+40 18446744073709551592
+48 (int (*)(...))-24
+56 (int (*)(...))(& _ZTISi)
+64 0
+72 0
+
+Construction vtable for std::basic_ostream<char> (0x0x7f1d25168000 instance) in std::basic_iostream<char>
+std::basic_iostream<char>::_ZTCSd16_So: 10 entries
+0 8
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISo)
+24 0
+32 0
+40 18446744073709551608
+48 (int (*)(...))-8
+56 (int (*)(...))(& _ZTISo)
+64 0
+72 0
+
+VTT for std::basic_iostream<char>
+std::basic_iostream<char>::_ZTTSd: 7 entries
+0 ((& std::basic_iostream<char>::_ZTVSd) + 24)
+8 ((& std::basic_iostream<char>::_ZTCSd0_Si) + 24)
+16 ((& std::basic_iostream<char>::_ZTCSd0_Si) + 64)
+24 ((& std::basic_iostream<char>::_ZTCSd16_So) + 24)
+32 ((& std::basic_iostream<char>::_ZTCSd16_So) + 64)
+40 ((& std::basic_iostream<char>::_ZTVSd) + 104)
+48 ((& std::basic_iostream<char>::_ZTVSd) + 64)
+
+Construction vtable for std::basic_istream<wchar_t> (0x0x7f1d25168dd0 instance) in std::basic_iostream<wchar_t>
+std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E: 10 entries
+0 24
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISt13basic_istreamIwSt11char_traitsIwEE)
+24 0
+32 0
+40 18446744073709551592
+48 (int (*)(...))-24
+56 (int (*)(...))(& _ZTISt13basic_istreamIwSt11char_traitsIwEE)
+64 0
+72 0
+
+Construction vtable for std::basic_ostream<wchar_t> (0x0x7f1d25168ea0 instance) in std::basic_iostream<wchar_t>
+std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E: 10 entries
+0 8
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISt13basic_ostreamIwSt11char_traitsIwEE)
+24 0
+32 0
+40 18446744073709551608
+48 (int (*)(...))-8
+56 (int (*)(...))(& _ZTISt13basic_ostreamIwSt11char_traitsIwEE)
+64 0
+72 0
+
+VTT for std::basic_iostream<wchar_t>
+std::basic_iostream<wchar_t>::_ZTTSt14basic_iostreamIwSt11char_traitsIwEE: 7 entries
+0 ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 24)
+8 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E) + 24)
+16 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E) + 64)
+24 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E) + 24)
+32 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E) + 64)
+40 ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 104)
+48 ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 64)
+
+Class QByteArrayDataPtr
+ size=8 align=8
+ base size=8 base align=8
+QByteArrayDataPtr (0x0x7f1d251c1480) 0
+
+Class QByteArray
+ size=8 align=8
+ base size=8 base align=8
+QByteArray (0x0x7f1d251c14e0) 0
+
+Class QByteRef
+ size=16 align=8
+ base size=12 base align=8
+QByteRef (0x0x7f1d24ee98a0) 0
+
+Class QStringDataPtr
+ size=8 align=8
+ base size=8 base align=8
+QStringDataPtr (0x0x7f1d24f8a720) 0
+
+Class QStringView
+ size=16 align=8
+ base size=16 base align=8
+QStringView (0x0x7f1d24f8aba0) 0
+
+Class QLatin1String
+ size=16 align=8
+ base size=16 base align=8
+QLatin1String (0x0x7f1d2506cc60) 0
+
+Class QString::Null
+ size=1 align=1
+ base size=0 base align=1
+QString::Null (0x0x7f1d24d23c00) 0 empty
+
+Class QString
+ size=8 align=8
+ base size=8 base align=8
+QString (0x0x7f1d24d23ae0) 0
+
+Class QCharRef
+ size=16 align=8
+ base size=12 base align=8
+QCharRef (0x0x7f1d24be4a80) 0
+
+Class QStringRef
+ size=16 align=8
+ base size=16 base align=8
+QStringRef (0x0x7f1d2497c660) 0
+
+Class QtPrivate::ArgBase
+ size=1 align=1
+ base size=1 base align=1
+QtPrivate::ArgBase (0x0x7f1d24708480) 0
+
+Class QtPrivate::QStringViewArg
+ size=24 align=8
+ base size=24 base align=8
+QtPrivate::QStringViewArg (0x0x7f1d24a0bbc8) 0
+ QtPrivate::ArgBase (0x0x7f1d247084e0) 0
+
+Class QtPrivate::QLatin1StringArg
+ size=24 align=8
+ base size=24 base align=8
+QtPrivate::QLatin1StringArg (0x0x7f1d24a0bc30) 0
+ QtPrivate::ArgBase (0x0x7f1d247086c0) 0
+
+Class std::__erased_type
+ size=1 align=1
+ base size=0 base align=1
+std::__erased_type (0x0x7f1d247d6600) 0 empty
+
+Class std::allocator_arg_t
+ size=1 align=1
+ base size=0 base align=1
+std::allocator_arg_t (0x0x7f1d247d6660) 0 empty
+
+Class std::__uses_alloc_base
+ size=1 align=1
+ base size=0 base align=1
+std::__uses_alloc_base (0x0x7f1d247d67e0) 0 empty
+
+Class std::__uses_alloc0::_Sink
+ size=1 align=1
+ base size=0 base align=1
+std::__uses_alloc0::_Sink (0x0x7f1d247d68a0) 0 empty
+
+Class std::__uses_alloc0
+ size=1 align=1
+ base size=1 base align=1
+std::__uses_alloc0 (0x0x7f1d247ec000) 0
+ std::__uses_alloc_base (0x0x7f1d247d6840) 0 empty
+
+Class std::_Swallow_assign
+ size=1 align=1
+ base size=0 base align=1
+std::_Swallow_assign (0x0x7f1d24538c00) 0 empty
+
+Vtable for std::bad_function_call
+std::bad_function_call::_ZTVSt17bad_function_call: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt17bad_function_call)
+16 (int (*)(...))std::bad_function_call::~bad_function_call
+24 (int (*)(...))std::bad_function_call::~bad_function_call
+32 (int (*)(...))std::bad_function_call::what
+
+Class std::bad_function_call
+ size=8 align=8
+ base size=8 base align=8
+std::bad_function_call (0x0x7f1d245b2270) 0 nearly-empty
+ vptr=((& std::bad_function_call::_ZTVSt17bad_function_call) + 16)
+ std::exception (0x0x7f1d245b5540) 0 nearly-empty
+ primary-for std::bad_function_call (0x0x7f1d245b2270)
+
+Class std::_Nocopy_types
+ size=16 align=8
+ base size=16 base align=8
+std::_Nocopy_types (0x0x7f1d245b5600) 0
+
+Class std::_Any_data
+ size=16 align=8
+ base size=16 base align=8
+std::_Any_data (0x0x7f1d245b5660) 0
+
+Class std::_Function_base
+ size=24 align=8
+ base size=24 base align=8
+std::_Function_base (0x0x7f1d245b5960) 0
+
+Class QtPrivate::QHashCombine
+ size=1 align=1
+ base size=0 base align=1
+QtPrivate::QHashCombine (0x0x7f1d243adde0) 0 empty
+
+Class QtPrivate::QHashCombineCommutative
+ size=1 align=1
+ base size=0 base align=1
+QtPrivate::QHashCombineCommutative (0x0x7f1d243adea0) 0 empty
+
+Class std::_Bit_reference
+ size=16 align=8
+ base size=16 base align=8
+std::_Bit_reference (0x0x7f1d240e0600) 0
+
+Class std::_Bit_iterator_base
+ size=16 align=8
+ base size=12 base align=8
+std::_Bit_iterator_base (0x0x7f1d243f3dd0) 0
+ std::iterator<std::random_access_iterator_tag, bool> (0x0x7f1d240e0d20) 0 empty
+
+Class std::_Bit_iterator
+ size=16 align=8
+ base size=12 base align=8
+std::_Bit_iterator (0x0x7f1d243f3f08) 0
+ std::_Bit_iterator_base (0x0x7f1d243f3f70) 0
+ std::iterator<std::random_access_iterator_tag, bool> (0x0x7f1d2410c3c0) 0 empty
+
+Class std::_Bit_const_iterator
+ size=16 align=8
+ base size=12 base align=8
+std::_Bit_const_iterator (0x0x7f1d24130000) 0
+ std::_Bit_iterator_base (0x0x7f1d24130068) 0
+ std::iterator<std::random_access_iterator_tag, bool> (0x0x7f1d2410cba0) 0 empty
+
+Class std::__detail::_List_node_base
+ size=16 align=8
+ base size=16 base align=8
+std::__detail::_List_node_base (0x0x7f1d23f5f720) 0
+
+Class QListData::NotArrayCompatibleLayout
+ size=1 align=1
+ base size=0 base align=1
+QListData::NotArrayCompatibleLayout (0x0x7f1d240294e0) 0 empty
+
+Class QListData::NotIndirectLayout
+ size=1 align=1
+ base size=0 base align=1
+QListData::NotIndirectLayout (0x0x7f1d24029540) 0 empty
+
+Class QListData::ArrayCompatibleLayout
+ size=1 align=1
+ base size=1 base align=1
+QListData::ArrayCompatibleLayout (0x0x7f1d24130c30) 0 empty
+ QListData::NotIndirectLayout (0x0x7f1d240295a0) 0 empty
+
+Class QListData::InlineWithPaddingLayout
+ size=1 align=1
+ base size=1 base align=1
+QListData::InlineWithPaddingLayout (0x0x7f1d23f6ca80) 0 empty
+ QListData::NotArrayCompatibleLayout (0x0x7f1d24029600) 0 empty
+ QListData::NotIndirectLayout (0x0x7f1d24029660) 0 empty
+
+Class QListData::IndirectLayout
+ size=1 align=1
+ base size=1 base align=1
+QListData::IndirectLayout (0x0x7f1d24130c98) 0 empty
+ QListData::NotArrayCompatibleLayout (0x0x7f1d240296c0) 0 empty
+
+Class QListData::Data
+ size=24 align=8
+ base size=24 base align=8
+QListData::Data (0x0x7f1d24029720) 0
+
+Class QListData
+ size=8 align=8
+ base size=8 base align=8
+QListData (0x0x7f1d24029480) 0
+
+Class QRegExp
+ size=8 align=8
+ base size=8 base align=8
+QRegExp (0x0x7f1d23d1d8a0) 0
+
+Class QStringMatcher::Data
+ size=272 align=8
+ base size=272 base align=8
+QStringMatcher::Data (0x0x7f1d23dfbde0) 0
+
+Class QStringMatcher
+ size=1048 align=8
+ base size=1048 base align=8
+QStringMatcher (0x0x7f1d23dfbd80) 0
+
+Class QStringList
+ size=8 align=8
+ base size=8 base align=8
+QStringList (0x0x7f1d23e06888) 0
+ QList<QString> (0x0x7f1d23e068f0) 0
+ QListSpecialMethods<QString> (0x0x7f1d23e2d060) 0 empty
+
+Class QScopedPointerPodDeleter
+ size=1 align=1
+ base size=0 base align=1
+QScopedPointerPodDeleter (0x0x7f1d23ac1f60) 0 empty
+
+Class std::_Rb_tree_node_base
+ size=32 align=8
+ base size=32 base align=8
+std::_Rb_tree_node_base (0x0x7f1d23b831e0) 0
+
+Class std::_Rb_tree_header
+ size=40 align=8
+ base size=40 base align=8
+std::_Rb_tree_header (0x0x7f1d23b83540) 0
+
+Class QtPrivate::AbstractDebugStreamFunction
+ size=16 align=8
+ base size=16 base align=8
+QtPrivate::AbstractDebugStreamFunction (0x0x7f1d239cab40) 0
+
+Class QtPrivate::AbstractComparatorFunction
+ size=24 align=8
+ base size=24 base align=8
+QtPrivate::AbstractComparatorFunction (0x0x7f1d239caea0) 0
+
+Class QtPrivate::AbstractConverterFunction
+ size=8 align=8
+ base size=8 base align=8
+QtPrivate::AbstractConverterFunction (0x0x7f1d239e8420) 0
+
+Class QMetaType
+ size=80 align=8
+ base size=80 base align=8
+QMetaType (0x0x7f1d239e8960) 0
+
+Class QtMetaTypePrivate::VariantData
+ size=24 align=8
+ base size=20 base align=8
+QtMetaTypePrivate::VariantData (0x0x7f1d23a44b40) 0
+
+Class QtMetaTypePrivate::VectorBoolElements
+ size=1 align=1
+ base size=0 base align=1
+QtMetaTypePrivate::VectorBoolElements (0x0x7f1d23a72240) 0 empty
+
+Class QtMetaTypePrivate::QSequentialIterableImpl
+ size=104 align=8
+ base size=104 base align=8
+QtMetaTypePrivate::QSequentialIterableImpl (0x0x7f1d2370c0c0) 0
+
+Class QtMetaTypePrivate::QAssociativeIterableImpl
+ size=112 align=8
+ base size=112 base align=8
+QtMetaTypePrivate::QAssociativeIterableImpl (0x0x7f1d2375f780) 0
+
+Class QtMetaTypePrivate::QPairVariantInterfaceImpl
+ size=40 align=8
+ base size=40 base align=8
+QtMetaTypePrivate::QPairVariantInterfaceImpl (0x0x7f1d237b8cc0) 0
+
+Class std::chrono::_V2::system_clock
+ size=1 align=1
+ base size=0 base align=1
+std::chrono::_V2::system_clock (0x0x7f1d236852a0) 0 empty
+
+Class std::chrono::_V2::steady_clock
+ size=1 align=1
+ base size=0 base align=1
+std::chrono::_V2::steady_clock (0x0x7f1d2337bd20) 0 empty
+
+Vtable for QObjectData
+QObjectData::_ZTV11QObjectData: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QObjectData)
+16 (int (*)(...))__cxa_pure_virtual
+24 (int (*)(...))__cxa_pure_virtual
+
+Class QObjectData
+ size=48 align=8
+ base size=48 base align=8
+QObjectData (0x0x7f1d2337bd80) 0
+ vptr=((& QObjectData::_ZTV11QObjectData) + 16)
+
+Class QObject::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QObject::QPrivateSignal (0x0x7f1d2337bf60) 0 empty
+
+Vtable for QObject
+QObject::_ZTV7QObject: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QObject)
+16 (int (*)(...))QObject::metaObject
+24 (int (*)(...))QObject::qt_metacast
+32 (int (*)(...))QObject::qt_metacall
+40 (int (*)(...))QObject::~QObject
+48 (int (*)(...))QObject::~QObject
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QObject
+ size=16 align=8
+ base size=16 base align=8
+QObject (0x0x7f1d2337bf00) 0
+ vptr=((& QObject::_ZTV7QObject) + 16)
+
+Vtable for QObjectUserData
+QObjectUserData::_ZTV15QObjectUserData: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QObjectUserData)
+16 (int (*)(...))QObjectUserData::~QObjectUserData
+24 (int (*)(...))QObjectUserData::~QObjectUserData
+
+Class QObjectUserData
+ size=8 align=8
+ base size=8 base align=8
+QObjectUserData (0x0x7f1d2345fd80) 0 nearly-empty
+ vptr=((& QObjectUserData::_ZTV15QObjectUserData) + 16)
+
+Class QSignalBlocker
+ size=16 align=8
+ base size=10 base align=8
+QSignalBlocker (0x0x7f1d2345ff00) 0
+
+Class QAbstractAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractAnimation::QPrivateSignal (0x0x7f1d2348d7e0) 0 empty
+
+Vtable for QAbstractAnimation
+QAbstractAnimation::_ZTV18QAbstractAnimation: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QAbstractAnimation)
+16 (int (*)(...))QAbstractAnimation::metaObject
+24 (int (*)(...))QAbstractAnimation::qt_metacast
+32 (int (*)(...))QAbstractAnimation::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAbstractAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+
+Class QAbstractAnimation
+ size=16 align=8
+ base size=16 base align=8
+QAbstractAnimation (0x0x7f1d2344ba28) 0
+ vptr=((& QAbstractAnimation::_ZTV18QAbstractAnimation) + 16)
+ QObject (0x0x7f1d2348d780) 0
+ primary-for QAbstractAnimation (0x0x7f1d2344ba28)
+
+Class QAnimationDriver::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAnimationDriver::QPrivateSignal (0x0x7f1d2348dba0) 0 empty
+
+Vtable for QAnimationDriver
+QAnimationDriver::_ZTV16QAnimationDriver: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QAnimationDriver)
+16 (int (*)(...))QAnimationDriver::metaObject
+24 (int (*)(...))QAnimationDriver::qt_metacast
+32 (int (*)(...))QAnimationDriver::qt_metacall
+40 (int (*)(...))QAnimationDriver::~QAnimationDriver
+48 (int (*)(...))QAnimationDriver::~QAnimationDriver
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAnimationDriver::advance
+120 (int (*)(...))QAnimationDriver::elapsed
+128 (int (*)(...))QAnimationDriver::start
+136 (int (*)(...))QAnimationDriver::stop
+
+Class QAnimationDriver
+ size=16 align=8
+ base size=16 base align=8
+QAnimationDriver (0x0x7f1d2344ba90) 0
+ vptr=((& QAnimationDriver::_ZTV16QAnimationDriver) + 16)
+ QObject (0x0x7f1d2348db40) 0
+ primary-for QAnimationDriver (0x0x7f1d2344ba90)
+
+Class QEventLoop::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QEventLoop::QPrivateSignal (0x0x7f1d2348dde0) 0 empty
+
+Vtable for QEventLoop
+QEventLoop::_ZTV10QEventLoop: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QEventLoop)
+16 (int (*)(...))QEventLoop::metaObject
+24 (int (*)(...))QEventLoop::qt_metacast
+32 (int (*)(...))QEventLoop::qt_metacall
+40 (int (*)(...))QEventLoop::~QEventLoop
+48 (int (*)(...))QEventLoop::~QEventLoop
+56 (int (*)(...))QEventLoop::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QEventLoop
+ size=16 align=8
+ base size=16 base align=8
+QEventLoop (0x0x7f1d2344baf8) 0
+ vptr=((& QEventLoop::_ZTV10QEventLoop) + 16)
+ QObject (0x0x7f1d2348dd80) 0
+ primary-for QEventLoop (0x0x7f1d2344baf8)
+
+Class QEventLoopLocker
+ size=8 align=8
+ base size=8 base align=8
+QEventLoopLocker (0x0x7f1d230e26c0) 0
+
+Class QAbstractEventDispatcher::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractEventDispatcher::QPrivateSignal (0x0x7f1d230e2780) 0 empty
+
+Class QAbstractEventDispatcher::TimerInfo
+ size=12 align=4
+ base size=12 base align=4
+QAbstractEventDispatcher::TimerInfo (0x0x7f1d230e27e0) 0
+
+Vtable for QAbstractEventDispatcher
+QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher: 28 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QAbstractEventDispatcher)
+16 (int (*)(...))QAbstractEventDispatcher::metaObject
+24 (int (*)(...))QAbstractEventDispatcher::qt_metacast
+32 (int (*)(...))QAbstractEventDispatcher::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))__cxa_pure_virtual
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))__cxa_pure_virtual
+176 (int (*)(...))__cxa_pure_virtual
+184 (int (*)(...))__cxa_pure_virtual
+192 (int (*)(...))__cxa_pure_virtual
+200 (int (*)(...))__cxa_pure_virtual
+208 (int (*)(...))QAbstractEventDispatcher::startingUp
+216 (int (*)(...))QAbstractEventDispatcher::closingDown
+
+Class QAbstractEventDispatcher
+ size=16 align=8
+ base size=16 base align=8
+QAbstractEventDispatcher (0x0x7f1d2344bc30) 0
+ vptr=((& QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher) + 16)
+ QObject (0x0x7f1d230e2720) 0
+ primary-for QAbstractEventDispatcher (0x0x7f1d2344bc30)
+
+Class QMapNodeBase
+ size=24 align=8
+ base size=24 base align=8
+QMapNodeBase (0x0x7f1d231407e0) 0
+
+Class QMapDataBase
+ size=40 align=8
+ base size=40 base align=8
+QMapDataBase (0x0x7f1d23165480) 0
+
+Class QHashData::Node
+ size=16 align=8
+ base size=16 base align=8
+QHashData::Node (0x0x7f1d2322fde0) 0
+
+Class QHashData
+ size=48 align=8
+ base size=44 base align=8
+QHashData (0x0x7f1d2322fd80) 0
+
+Class QHashDummyValue
+ size=1 align=1
+ base size=0 base align=1
+QHashDummyValue (0x0x7f1d232550c0) 0 empty
+
+Class QVariant::PrivateShared
+ size=16 align=8
+ base size=12 base align=8
+QVariant::PrivateShared (0x0x7f1d22f657e0) 0
+
+Class QVariant::Private::Data
+ size=8 align=8
+ base size=8 base align=8
+QVariant::Private::Data (0x0x7f1d22f658a0) 0
+
+Class QVariant::Private
+ size=16 align=8
+ base size=12 base align=8
+QVariant::Private (0x0x7f1d22f65840) 0
+
+Class QVariant::Handler
+ size=72 align=8
+ base size=72 base align=8
+QVariant::Handler (0x0x7f1d22f65900) 0
+
+Class QVariant
+ size=16 align=8
+ base size=16 base align=8
+QVariant (0x0x7f1d22f65780) 0
+
+Class QVariantComparisonHelper
+ size=8 align=8
+ base size=8 base align=8
+QVariantComparisonHelper (0x0x7f1d23084ba0) 0
+
+Class QSequentialIterable::const_iterator
+ size=112 align=8
+ base size=112 base align=8
+QSequentialIterable::const_iterator (0x0x7f1d22d27240) 0
+
+Class QSequentialIterable
+ size=104 align=8
+ base size=104 base align=8
+QSequentialIterable (0x0x7f1d22d271e0) 0
+
+Class QAssociativeIterable::const_iterator
+ size=120 align=8
+ base size=120 base align=8
+QAssociativeIterable::const_iterator (0x0x7f1d22d27360) 0
+
+Class QAssociativeIterable
+ size=112 align=8
+ base size=112 base align=8
+QAssociativeIterable (0x0x7f1d22d27300) 0
+
+Class QModelIndex
+ size=24 align=8
+ base size=24 base align=8
+QModelIndex (0x0x7f1d22df14e0) 0
+
+Class QPersistentModelIndex
+ size=8 align=8
+ base size=8 base align=8
+QPersistentModelIndex (0x0x7f1d22e64120) 0
+
+Class QAbstractItemModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractItemModel::QPrivateSignal (0x0x7f1d22b17f00) 0 empty
+
+Vtable for QAbstractItemModel
+QAbstractItemModel::_ZTV18QAbstractItemModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QAbstractItemModel)
+16 (int (*)(...))QAbstractItemModel::metaObject
+24 (int (*)(...))QAbstractItemModel::qt_metacast
+32 (int (*)(...))QAbstractItemModel::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractItemModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAbstractItemModel::hasChildren
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QAbstractItemModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractItemModel::dropMimeData
+240 (int (*)(...))QAbstractItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QAbstractItemModel::flags
+328 (int (*)(...))QAbstractItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QAbstractItemModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractItemModel (0x0x7f1d22b1add0) 0
+ vptr=((& QAbstractItemModel::_ZTV18QAbstractItemModel) + 16)
+ QObject (0x0x7f1d22b17ea0) 0
+ primary-for QAbstractItemModel (0x0x7f1d22b1add0)
+
+Class QAbstractTableModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractTableModel::QPrivateSignal (0x0x7f1d22bfc300) 0 empty
+
+Vtable for QAbstractTableModel
+QAbstractTableModel::_ZTV19QAbstractTableModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractTableModel)
+16 (int (*)(...))QAbstractTableModel::metaObject
+24 (int (*)(...))QAbstractTableModel::qt_metacast
+32 (int (*)(...))QAbstractTableModel::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractTableModel::index
+120 (int (*)(...))QAbstractTableModel::parent
+128 (int (*)(...))QAbstractTableModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAbstractTableModel::hasChildren
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QAbstractItemModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractTableModel::dropMimeData
+240 (int (*)(...))QAbstractItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QAbstractTableModel::flags
+328 (int (*)(...))QAbstractItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QAbstractTableModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractTableModel (0x0x7f1d22b6f410) 0
+ vptr=((& QAbstractTableModel::_ZTV19QAbstractTableModel) + 16)
+ QAbstractItemModel (0x0x7f1d22b6f478) 0
+ primary-for QAbstractTableModel (0x0x7f1d22b6f410)
+ QObject (0x0x7f1d22bfc2a0) 0
+ primary-for QAbstractItemModel (0x0x7f1d22b6f478)
+
+Class QAbstractListModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractListModel::QPrivateSignal (0x0x7f1d22bfc480) 0 empty
+
+Vtable for QAbstractListModel
+QAbstractListModel::_ZTV18QAbstractListModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QAbstractListModel)
+16 (int (*)(...))QAbstractListModel::metaObject
+24 (int (*)(...))QAbstractListModel::qt_metacast
+32 (int (*)(...))QAbstractListModel::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractListModel::index
+120 (int (*)(...))QAbstractListModel::parent
+128 (int (*)(...))QAbstractListModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))QAbstractListModel::columnCount
+152 (int (*)(...))QAbstractListModel::hasChildren
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QAbstractItemModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractListModel::dropMimeData
+240 (int (*)(...))QAbstractItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QAbstractListModel::flags
+328 (int (*)(...))QAbstractItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QAbstractListModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractListModel (0x0x7f1d22b6f4e0) 0
+ vptr=((& QAbstractListModel::_ZTV18QAbstractListModel) + 16)
+ QAbstractItemModel (0x0x7f1d22b6f548) 0
+ primary-for QAbstractListModel (0x0x7f1d22b6f4e0)
+ QObject (0x0x7f1d22bfc420) 0
+ primary-for QAbstractItemModel (0x0x7f1d22b6f548)
+
+Vtable for QAbstractNativeEventFilter
+QAbstractNativeEventFilter::_ZTV26QAbstractNativeEventFilter: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAbstractNativeEventFilter)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractNativeEventFilter
+ size=16 align=8
+ base size=16 base align=8
+QAbstractNativeEventFilter (0x0x7f1d22bfcba0) 0
+ vptr=((& QAbstractNativeEventFilter::_ZTV26QAbstractNativeEventFilter) + 16)
+
+Class QAbstractProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractProxyModel::QPrivateSignal (0x0x7f1d22bfcc60) 0 empty
+
+Vtable for QAbstractProxyModel
+QAbstractProxyModel::_ZTV19QAbstractProxyModel: 53 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractProxyModel)
+16 (int (*)(...))QAbstractProxyModel::metaObject
+24 (int (*)(...))QAbstractProxyModel::qt_metacast
+32 (int (*)(...))QAbstractProxyModel::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractProxyModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAbstractProxyModel::hasChildren
+160 (int (*)(...))QAbstractProxyModel::data
+168 (int (*)(...))QAbstractProxyModel::setData
+176 (int (*)(...))QAbstractProxyModel::headerData
+184 (int (*)(...))QAbstractProxyModel::setHeaderData
+192 (int (*)(...))QAbstractProxyModel::itemData
+200 (int (*)(...))QAbstractProxyModel::setItemData
+208 (int (*)(...))QAbstractProxyModel::mimeTypes
+216 (int (*)(...))QAbstractProxyModel::mimeData
+224 (int (*)(...))QAbstractProxyModel::canDropMimeData
+232 (int (*)(...))QAbstractProxyModel::dropMimeData
+240 (int (*)(...))QAbstractProxyModel::supportedDropActions
+248 (int (*)(...))QAbstractProxyModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractProxyModel::fetchMore
+312 (int (*)(...))QAbstractProxyModel::canFetchMore
+320 (int (*)(...))QAbstractProxyModel::flags
+328 (int (*)(...))QAbstractProxyModel::sort
+336 (int (*)(...))QAbstractProxyModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractProxyModel::submit
+376 (int (*)(...))QAbstractProxyModel::revert
+384 (int (*)(...))QAbstractProxyModel::setSourceModel
+392 (int (*)(...))__cxa_pure_virtual
+400 (int (*)(...))__cxa_pure_virtual
+408 (int (*)(...))QAbstractProxyModel::mapSelectionToSource
+416 (int (*)(...))QAbstractProxyModel::mapSelectionFromSource
+
+Class QAbstractProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractProxyModel (0x0x7f1d22b6f618) 0
+ vptr=((& QAbstractProxyModel::_ZTV19QAbstractProxyModel) + 16)
+ QAbstractItemModel (0x0x7f1d22b6f680) 0
+ primary-for QAbstractProxyModel (0x0x7f1d22b6f618)
+ QObject (0x0x7f1d22bfcc00) 0
+ primary-for QAbstractItemModel (0x0x7f1d22b6f680)
+
+Class QAbstractState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractState::QPrivateSignal (0x0x7f1d22bfcea0) 0 empty
+
+Vtable for QAbstractState
+QAbstractState::_ZTV14QAbstractState: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QAbstractState)
+16 (int (*)(...))QAbstractState::metaObject
+24 (int (*)(...))QAbstractState::qt_metacast
+32 (int (*)(...))QAbstractState::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAbstractState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractState
+ size=16 align=8
+ base size=16 base align=8
+QAbstractState (0x0x7f1d22b6f6e8) 0
+ vptr=((& QAbstractState::_ZTV14QAbstractState) + 16)
+ QObject (0x0x7f1d22bfce40) 0
+ primary-for QAbstractState (0x0x7f1d22b6f6e8)
+
+Class QAbstractTransition::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractTransition::QPrivateSignal (0x0x7f1d22c8c120) 0 empty
+
+Vtable for QAbstractTransition
+QAbstractTransition::_ZTV19QAbstractTransition: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractTransition)
+16 (int (*)(...))QAbstractTransition::metaObject
+24 (int (*)(...))QAbstractTransition::qt_metacast
+32 (int (*)(...))QAbstractTransition::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAbstractTransition::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractTransition
+ size=16 align=8
+ base size=16 base align=8
+QAbstractTransition (0x0x7f1d22b6f750) 0
+ vptr=((& QAbstractTransition::_ZTV19QAbstractTransition) + 16)
+ QObject (0x0x7f1d22c8c0c0) 0
+ primary-for QAbstractTransition (0x0x7f1d22b6f750)
+
+Class QAnimationGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAnimationGroup::QPrivateSignal (0x0x7f1d22c8c420) 0 empty
+
+Vtable for QAnimationGroup
+QAnimationGroup::_ZTV15QAnimationGroup: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QAnimationGroup)
+16 (int (*)(...))QAnimationGroup::metaObject
+24 (int (*)(...))QAnimationGroup::qt_metacast
+32 (int (*)(...))QAnimationGroup::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAnimationGroup::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+
+Class QAnimationGroup
+ size=16 align=8
+ base size=16 base align=8
+QAnimationGroup (0x0x7f1d22b6f7b8) 0
+ vptr=((& QAnimationGroup::_ZTV15QAnimationGroup) + 16)
+ QAbstractAnimation (0x0x7f1d22b6f820) 0
+ primary-for QAnimationGroup (0x0x7f1d22b6f7b8)
+ QObject (0x0x7f1d22c8c3c0) 0
+ primary-for QAbstractAnimation (0x0x7f1d22b6f820)
+
+Class QBasicTimer
+ size=4 align=4
+ base size=4 base align=4
+QBasicTimer (0x0x7f1d228ea720) 0
+
+Class QBitArray
+ size=8 align=8
+ base size=8 base align=8
+QBitArray (0x0x7f1d229840c0) 0
+
+Class QBitRef
+ size=16 align=8
+ base size=12 base align=8
+QBitRef (0x0x7f1d229e6540) 0
+
+Class QIODevice::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QIODevice::QPrivateSignal (0x0x7f1d22a307e0) 0 empty
+
+Vtable for QIODevice
+QIODevice::_ZTV9QIODevice: 30 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QIODevice)
+16 (int (*)(...))QIODevice::metaObject
+24 (int (*)(...))QIODevice::qt_metacast
+32 (int (*)(...))QIODevice::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QIODevice::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QIODevice::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QIODevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))__cxa_pure_virtual
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))__cxa_pure_virtual
+
+Class QIODevice
+ size=16 align=8
+ base size=16 base align=8
+QIODevice (0x0x7f1d22a24dd0) 0
+ vptr=((& QIODevice::_ZTV9QIODevice) + 16)
+ QObject (0x0x7f1d22a30780) 0
+ primary-for QIODevice (0x0x7f1d22a24dd0)
+
+Class QBuffer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QBuffer::QPrivateSignal (0x0x7f1d22a79180) 0 empty
+
+Vtable for QBuffer
+QBuffer::_ZTV7QBuffer: 30 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QBuffer)
+16 (int (*)(...))QBuffer::metaObject
+24 (int (*)(...))QBuffer::qt_metacast
+32 (int (*)(...))QBuffer::qt_metacall
+40 (int (*)(...))QBuffer::~QBuffer
+48 (int (*)(...))QBuffer::~QBuffer
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QBuffer::connectNotify
+104 (int (*)(...))QBuffer::disconnectNotify
+112 (int (*)(...))QIODevice::isSequential
+120 (int (*)(...))QBuffer::open
+128 (int (*)(...))QBuffer::close
+136 (int (*)(...))QBuffer::pos
+144 (int (*)(...))QBuffer::size
+152 (int (*)(...))QBuffer::seek
+160 (int (*)(...))QBuffer::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QBuffer::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QBuffer::readData
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))QBuffer::writeData
+
+Class QBuffer
+ size=16 align=8
+ base size=16 base align=8
+QBuffer (0x0x7f1d22a24f08) 0
+ vptr=((& QBuffer::_ZTV7QBuffer) + 16)
+ QIODevice (0x0x7f1d22a24f70) 0
+ primary-for QBuffer (0x0x7f1d22a24f08)
+ QObject (0x0x7f1d22a79120) 0
+ primary-for QIODevice (0x0x7f1d22a24f70)
+
+Class QByteArrayMatcher::Data
+ size=272 align=8
+ base size=272 base align=8
+QByteArrayMatcher::Data (0x0x7f1d22a79420) 0
+
+Class QByteArrayMatcher
+ size=1040 align=8
+ base size=1040 base align=8
+QByteArrayMatcher (0x0x7f1d22a793c0) 0
+
+Class QStaticByteArrayMatcherBase::Skiptable
+ size=256 align=1
+ base size=256 base align=1
+QStaticByteArrayMatcherBase::Skiptable (0x0x7f1d22a795a0) 0
+
+Class QStaticByteArrayMatcherBase
+ size=256 align=16
+ base size=256 base align=16
+QStaticByteArrayMatcherBase (0x0x7f1d22a79540) 0
+
+Class QSharedData
+ size=4 align=4
+ base size=4 base align=4
+QSharedData (0x0x7f1d226c7480) 0
+
+Class QLocale
+ size=8 align=8
+ base size=8 base align=8
+QLocale (0x0x7f1d2270e360) 0
+
+Class QCalendar::YearMonthDay
+ size=12 align=4
+ base size=12 base align=4
+QCalendar::YearMonthDay (0x0x7f1d2287a840) 0
+
+Class QCalendar
+ size=8 align=8
+ base size=8 base align=8
+QCalendar (0x0x7f1d2287a7e0) 0
+
+Class QDate
+ size=8 align=8
+ base size=8 base align=8
+QDate (0x0x7f1d224b4060) 0
+
+Class QTime
+ size=4 align=4
+ base size=4 base align=4
+QTime (0x0x7f1d2250b900) 0
+
+Class QDateTime::ShortData
+ size=8 align=8
+ base size=8 base align=8
+QDateTime::ShortData (0x0x7f1d225715a0) 0
+
+Class QDateTime::Data
+ size=8 align=8
+ base size=8 base align=8
+QDateTime::Data (0x0x7f1d22571600) 0
+
+Class QDateTime
+ size=8 align=8
+ base size=8 base align=8
+QDateTime (0x0x7f1d22571540) 0
+
+Vtable for QTextStream
+QTextStream::_ZTV11QTextStream: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTextStream)
+16 (int (*)(...))QTextStream::~QTextStream
+24 (int (*)(...))QTextStream::~QTextStream
+
+Class QTextStream
+ size=16 align=8
+ base size=16 base align=8
+QTextStream (0x0x7f1d22642cc0) 0
+ vptr=((& QTextStream::_ZTV11QTextStream) + 16)
+
+Class QTextStreamManipulator
+ size=40 align=8
+ base size=38 base align=8
+QTextStreamManipulator (0x0x7f1d2269b5a0) 0
+
+Class QContiguousCacheData
+ size=24 align=4
+ base size=24 base align=4
+QContiguousCacheData (0x0x7f1d22338240) 0
+
+Vtable for __gnu_cxx::__concurrence_lock_error
+__gnu_cxx::__concurrence_lock_error::_ZTVN9__gnu_cxx24__concurrence_lock_errorE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx24__concurrence_lock_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error
+24 (int (*)(...))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error
+32 (int (*)(...))__gnu_cxx::__concurrence_lock_error::what
+
+Class __gnu_cxx::__concurrence_lock_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_lock_error (0x0x7f1d22645f70) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_lock_error::_ZTVN9__gnu_cxx24__concurrence_lock_errorE) + 16)
+ std::exception (0x0x7f1d223890c0) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_lock_error (0x0x7f1d22645f70)
+
+Vtable for __gnu_cxx::__concurrence_unlock_error
+__gnu_cxx::__concurrence_unlock_error::_ZTVN9__gnu_cxx26__concurrence_unlock_errorE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx26__concurrence_unlock_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error
+24 (int (*)(...))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error
+32 (int (*)(...))__gnu_cxx::__concurrence_unlock_error::what
+
+Class __gnu_cxx::__concurrence_unlock_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_unlock_error (0x0x7f1d2238e000) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_unlock_error::_ZTVN9__gnu_cxx26__concurrence_unlock_errorE) + 16)
+ std::exception (0x0x7f1d223891e0) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_unlock_error (0x0x7f1d2238e000)
+
+Vtable for __gnu_cxx::__concurrence_broadcast_error
+__gnu_cxx::__concurrence_broadcast_error::_ZTVN9__gnu_cxx29__concurrence_broadcast_errorE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx29__concurrence_broadcast_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::~__concurrence_broadcast_error
+24 (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::~__concurrence_broadcast_error
+32 (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::what
+
+Class __gnu_cxx::__concurrence_broadcast_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_broadcast_error (0x0x7f1d2238e068) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_broadcast_error::_ZTVN9__gnu_cxx29__concurrence_broadcast_errorE) + 16)
+ std::exception (0x0x7f1d22389300) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_broadcast_error (0x0x7f1d2238e068)
+
+Vtable for __gnu_cxx::__concurrence_wait_error
+__gnu_cxx::__concurrence_wait_error::_ZTVN9__gnu_cxx24__concurrence_wait_errorE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx24__concurrence_wait_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_wait_error::~__concurrence_wait_error
+24 (int (*)(...))__gnu_cxx::__concurrence_wait_error::~__concurrence_wait_error
+32 (int (*)(...))__gnu_cxx::__concurrence_wait_error::what
+
+Class __gnu_cxx::__concurrence_wait_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_wait_error (0x0x7f1d2238e138) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_wait_error::_ZTVN9__gnu_cxx24__concurrence_wait_errorE) + 16)
+ std::exception (0x0x7f1d22389420) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_wait_error (0x0x7f1d2238e138)
+
+Class __gnu_cxx::__mutex
+ size=40 align=8
+ base size=40 base align=8
+__gnu_cxx::__mutex (0x0x7f1d223b1480) 0
+
+Class __gnu_cxx::__recursive_mutex
+ size=40 align=8
+ base size=40 base align=8
+__gnu_cxx::__recursive_mutex (0x0x7f1d223b1780) 0
+
+Class __gnu_cxx::__scoped_lock
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__scoped_lock (0x0x7f1d223b1a80) 0
+
+Class __gnu_cxx::__cond
+ size=48 align=8
+ base size=48 base align=8
+__gnu_cxx::__cond (0x0x7f1d223b1de0) 0
+
+Vtable for std::bad_weak_ptr
+std::bad_weak_ptr::_ZTVSt12bad_weak_ptr: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12bad_weak_ptr)
+16 (int (*)(...))std::bad_weak_ptr::~bad_weak_ptr
+24 (int (*)(...))std::bad_weak_ptr::~bad_weak_ptr
+32 (int (*)(...))std::bad_weak_ptr::what
+
+Class std::bad_weak_ptr
+ size=8 align=8
+ base size=8 base align=8
+std::bad_weak_ptr (0x0x7f1d2238e1a0) 0 nearly-empty
+ vptr=((& std::bad_weak_ptr::_ZTVSt12bad_weak_ptr) + 16)
+ std::exception (0x0x7f1d22452000) 0 nearly-empty
+ primary-for std::bad_weak_ptr (0x0x7f1d2238e1a0)
+
+Class std::_Sp_make_shared_tag
+ size=1 align=1
+ base size=0 base align=1
+std::_Sp_make_shared_tag (0x0x7f1d2248cf60) 0 empty
+
+Class std::__sp_array_delete
+ size=1 align=1
+ base size=0 base align=1
+std::__sp_array_delete (0x0x7f1d220b83c0) 0 empty
+
+Class std::_Sp_locker
+ size=2 align=1
+ base size=2 base align=1
+std::_Sp_locker (0x0x7f1d221fc240) 0
+
+Class QtSharedPointer::NormalDeleter
+ size=1 align=1
+ base size=0 base align=1
+QtSharedPointer::NormalDeleter (0x0x7f1d22229720) 0 empty
+
+Class QtSharedPointer::ExternalRefCountData
+ size=16 align=8
+ base size=16 base align=8
+QtSharedPointer::ExternalRefCountData (0x0x7f1d222298a0) 0
+
+Class QtPrivate::EnableInternalData
+ size=1 align=1
+ base size=0 base align=1
+QtPrivate::EnableInternalData (0x0x7f1d21eb01e0) 0 empty
+
+Class QDebug::Stream
+ size=80 align=8
+ base size=76 base align=8
+QDebug::Stream (0x0x7f1d21ee08a0) 0
+
+Class QDebug
+ size=8 align=8
+ base size=8 base align=8
+QDebug (0x0x7f1d21ee0840) 0
+
+Class QDebugStateSaver
+ size=8 align=8
+ base size=8 base align=8
+QDebugStateSaver (0x0x7f1d220731e0) 0
+
+Class QNoDebug
+ size=1 align=1
+ base size=0 base align=1
+QNoDebug (0x0x7f1d220732a0) 0 empty
+
+Class QCborError
+ size=4 align=4
+ base size=4 base align=4
+QCborError (0x0x7f1d21cf94e0) 0
+
+Class QRegularExpression
+ size=8 align=8
+ base size=8 base align=8
+QRegularExpression (0x0x7f1d21cf9c60) 0
+
+Class QRegularExpressionMatch
+ size=8 align=8
+ base size=8 base align=8
+QRegularExpressionMatch (0x0x7f1d21db2b40) 0
+
+Class QRegularExpressionMatchIterator
+ size=8 align=8
+ base size=8 base align=8
+QRegularExpressionMatchIterator (0x0x7f1d21e1a900) 0
+
+Class QUrl
+ size=8 align=8
+ base size=8 base align=8
+QUrl (0x0x7f1d21e95360) 0
+
+Class QUuid
+ size=16 align=4
+ base size=16 base align=4
+QUuid (0x0x7f1d21be6300) 0
+
+Class QCborParserError
+ size=16 align=8
+ base size=12 base align=8
+QCborParserError (0x0x7f1d21c47e40) 0
+
+Class QCborValue
+ size=24 align=8
+ base size=20 base align=8
+QCborValue (0x0x7f1d21c47f00) 0
+
+Class QCborValueRef
+ size=16 align=8
+ base size=16 base align=8
+QCborValueRef (0x0x7f1d216bcae0) 0
+
+Class QCborArray::Iterator
+ size=16 align=8
+ base size=16 base align=8
+QCborArray::Iterator (0x0x7f1d21761540) 0
+
+Class QCborArray::ConstIterator
+ size=16 align=8
+ base size=16 base align=8
+QCborArray::ConstIterator (0x0x7f1d217615a0) 0
+
+Class QCborArray
+ size=8 align=8
+ base size=8 base align=8
+QCborArray (0x0x7f1d217614e0) 0
+
+Class QCborMap::Iterator
+ size=16 align=8
+ base size=16 base align=8
+QCborMap::Iterator (0x0x7f1d214dc180) 0
+
+Class QCborMap::ConstIterator
+ size=16 align=8
+ base size=16 base align=8
+QCborMap::ConstIterator (0x0x7f1d214dc1e0) 0
+
+Class QCborMap
+ size=8 align=8
+ base size=8 base align=8
+QCborMap (0x0x7f1d214dc120) 0
+
+Class qfloat16::Wrap
+ size=2 align=2
+ base size=2 base align=2
+qfloat16::Wrap (0x0x7f1d212e0960) 0
+
+Class qfloat16
+ size=2 align=2
+ base size=2 base align=2
+qfloat16 (0x0x7f1d212e0900) 0
+
+Class QCborStreamWriter
+ size=8 align=8
+ base size=8 base align=8
+QCborStreamWriter (0x0x7f1d213c7600) 0
+
+Class QCborStreamReader
+ size=24 align=8
+ base size=20 base align=8
+QCborStreamReader (0x0x7f1d213fa360) 0
+
+Class QCollatorSortKey
+ size=8 align=8
+ base size=8 base align=8
+QCollatorSortKey (0x0x7f1d2147f480) 0
+
+Class QCollator
+ size=8 align=8
+ base size=8 base align=8
+QCollator (0x0x7f1d2147f660) 0
+
+Class QCommandLineOption
+ size=8 align=8
+ base size=8 base align=8
+QCommandLineOption (0x0x7f1d21179c60) 0
+
+Vtable for QEvent
+QEvent::_ZTV6QEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QEvent)
+16 (int (*)(...))QEvent::~QEvent
+24 (int (*)(...))QEvent::~QEvent
+
+Class QEvent
+ size=24 align=8
+ base size=20 base align=8
+QEvent (0x0x7f1d2126e1e0) 0
+ vptr=((& QEvent::_ZTV6QEvent) + 16)
+
+Vtable for QTimerEvent
+QTimerEvent::_ZTV11QTimerEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTimerEvent)
+16 (int (*)(...))QTimerEvent::~QTimerEvent
+24 (int (*)(...))QTimerEvent::~QTimerEvent
+
+Class QTimerEvent
+ size=24 align=8
+ base size=24 base align=8
+QTimerEvent (0x0x7f1d21248bc8) 0
+ vptr=((& QTimerEvent::_ZTV11QTimerEvent) + 16)
+ QEvent (0x0x7f1d2126e5a0) 0
+ primary-for QTimerEvent (0x0x7f1d21248bc8)
+
+Vtable for QChildEvent
+QChildEvent::_ZTV11QChildEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QChildEvent)
+16 (int (*)(...))QChildEvent::~QChildEvent
+24 (int (*)(...))QChildEvent::~QChildEvent
+
+Class QChildEvent
+ size=32 align=8
+ base size=32 base align=8
+QChildEvent (0x0x7f1d21248c30) 0
+ vptr=((& QChildEvent::_ZTV11QChildEvent) + 16)
+ QEvent (0x0x7f1d2126e660) 0
+ primary-for QChildEvent (0x0x7f1d21248c30)
+
+Vtable for QDynamicPropertyChangeEvent
+QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QDynamicPropertyChangeEvent)
+16 (int (*)(...))QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent
+24 (int (*)(...))QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent
+
+Class QDynamicPropertyChangeEvent
+ size=32 align=8
+ base size=32 base align=8
+QDynamicPropertyChangeEvent (0x0x7f1d2129f1a0) 0
+ vptr=((& QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent) + 16)
+ QEvent (0x0x7f1d2126ecc0) 0
+ primary-for QDynamicPropertyChangeEvent (0x0x7f1d2129f1a0)
+
+Vtable for QDeferredDeleteEvent
+QDeferredDeleteEvent::_ZTV20QDeferredDeleteEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QDeferredDeleteEvent)
+16 (int (*)(...))QDeferredDeleteEvent::~QDeferredDeleteEvent
+24 (int (*)(...))QDeferredDeleteEvent::~QDeferredDeleteEvent
+
+Class QDeferredDeleteEvent
+ size=24 align=8
+ base size=24 base align=8
+QDeferredDeleteEvent (0x0x7f1d2129f208) 0
+ vptr=((& QDeferredDeleteEvent::_ZTV20QDeferredDeleteEvent) + 16)
+ QEvent (0x0x7f1d2126ed80) 0
+ primary-for QDeferredDeleteEvent (0x0x7f1d2129f208)
+
+Class QCoreApplication::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QCoreApplication::QPrivateSignal (0x0x7f1d2126eea0) 0 empty
+
+Vtable for QCoreApplication
+QCoreApplication::_ZTV16QCoreApplication: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QCoreApplication)
+16 (int (*)(...))QCoreApplication::metaObject
+24 (int (*)(...))QCoreApplication::qt_metacast
+32 (int (*)(...))QCoreApplication::qt_metacall
+40 (int (*)(...))QCoreApplication::~QCoreApplication
+48 (int (*)(...))QCoreApplication::~QCoreApplication
+56 (int (*)(...))QCoreApplication::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QCoreApplication::notify
+120 (int (*)(...))QCoreApplication::compressEvent
+
+Class QCoreApplication
+ size=16 align=8
+ base size=16 base align=8
+QCoreApplication (0x0x7f1d2129f270) 0
+ vptr=((& QCoreApplication::_ZTV16QCoreApplication) + 16)
+ QObject (0x0x7f1d2126ee40) 0
+ primary-for QCoreApplication (0x0x7f1d2129f270)
+
+Class QCommandLineParser
+ size=8 align=8
+ base size=8 base align=8
+QCommandLineParser (0x0x7f1d20ec9120) 0
+
+Class QConcatenateTablesProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QConcatenateTablesProxyModel::QPrivateSignal (0x0x7f1d20ec92a0) 0 empty
+
+Vtable for QConcatenateTablesProxyModel
+QConcatenateTablesProxyModel::_ZTV28QConcatenateTablesProxyModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI28QConcatenateTablesProxyModel)
+16 (int (*)(...))QConcatenateTablesProxyModel::metaObject
+24 (int (*)(...))QConcatenateTablesProxyModel::qt_metacast
+32 (int (*)(...))QConcatenateTablesProxyModel::qt_metacall
+40 (int (*)(...))QConcatenateTablesProxyModel::~QConcatenateTablesProxyModel
+48 (int (*)(...))QConcatenateTablesProxyModel::~QConcatenateTablesProxyModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QConcatenateTablesProxyModel::index
+120 (int (*)(...))QConcatenateTablesProxyModel::parent
+128 (int (*)(...))QAbstractItemModel::sibling
+136 (int (*)(...))QConcatenateTablesProxyModel::rowCount
+144 (int (*)(...))QConcatenateTablesProxyModel::columnCount
+152 (int (*)(...))QAbstractItemModel::hasChildren
+160 (int (*)(...))QConcatenateTablesProxyModel::data
+168 (int (*)(...))QConcatenateTablesProxyModel::setData
+176 (int (*)(...))QConcatenateTablesProxyModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QConcatenateTablesProxyModel::itemData
+200 (int (*)(...))QConcatenateTablesProxyModel::setItemData
+208 (int (*)(...))QConcatenateTablesProxyModel::mimeTypes
+216 (int (*)(...))QConcatenateTablesProxyModel::mimeData
+224 (int (*)(...))QConcatenateTablesProxyModel::canDropMimeData
+232 (int (*)(...))QConcatenateTablesProxyModel::dropMimeData
+240 (int (*)(...))QAbstractItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QConcatenateTablesProxyModel::flags
+328 (int (*)(...))QAbstractItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QConcatenateTablesProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QConcatenateTablesProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QConcatenateTablesProxyModel (0x0x7f1d2129f2d8) 0
+ vptr=((& QConcatenateTablesProxyModel::_ZTV28QConcatenateTablesProxyModel) + 16)
+ QAbstractItemModel (0x0x7f1d2129f340) 0
+ primary-for QConcatenateTablesProxyModel (0x0x7f1d2129f2d8)
+ QObject (0x0x7f1d20ec9240) 0
+ primary-for QAbstractItemModel (0x0x7f1d2129f340)
+
+Class QCryptographicHash
+ size=8 align=8
+ base size=8 base align=8
+QCryptographicHash (0x0x7f1d20ec9480) 0
+
+Class QDataStream
+ size=32 align=8
+ base size=32 base align=8
+QDataStream (0x0x7f1d20ec95a0) 0
+
+Class QtPrivate::StreamStateSaver
+ size=16 align=8
+ base size=12 base align=8
+QtPrivate::StreamStateSaver (0x0x7f1d20ec9720) 0
+
+Class QElapsedTimer
+ size=16 align=8
+ base size=16 base align=8
+QElapsedTimer (0x0x7f1d20f39e40) 0
+
+Class QDeadlineTimer
+ size=16 align=8
+ base size=16 base align=8
+QDeadlineTimer (0x0x7f1d20f785a0) 0
+
+Class QFileDevice::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFileDevice::QPrivateSignal (0x0x7f1d20cb52a0) 0 empty
+
+Vtable for QFileDevice
+QFileDevice::_ZTV11QFileDevice: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFileDevice)
+16 (int (*)(...))QFileDevice::metaObject
+24 (int (*)(...))QFileDevice::qt_metacast
+32 (int (*)(...))QFileDevice::qt_metacall
+40 (int (*)(...))QFileDevice::~QFileDevice
+48 (int (*)(...))QFileDevice::~QFileDevice
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QFileDevice::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFileDevice::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QFileDevice::writeData
+240 (int (*)(...))QFileDevice::fileName
+248 (int (*)(...))QFileDevice::resize
+256 (int (*)(...))QFileDevice::permissions
+264 (int (*)(...))QFileDevice::setPermissions
+
+Class QFileDevice
+ size=16 align=8
+ base size=16 base align=8
+QFileDevice (0x0x7f1d210ac548) 0
+ vptr=((& QFileDevice::_ZTV11QFileDevice) + 16)
+ QIODevice (0x0x7f1d210ac5b0) 0
+ primary-for QFileDevice (0x0x7f1d210ac548)
+ QObject (0x0x7f1d20cb5240) 0
+ primary-for QIODevice (0x0x7f1d210ac5b0)
+
+Class QFile::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFile::QPrivateSignal (0x0x7f1d20cb5ba0) 0 empty
+
+Vtable for QFile
+QFile::_ZTV5QFile: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI5QFile)
+16 (int (*)(...))QFile::metaObject
+24 (int (*)(...))QFile::qt_metacast
+32 (int (*)(...))QFile::qt_metacall
+40 (int (*)(...))QFile::~QFile
+48 (int (*)(...))QFile::~QFile
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QFile::open
+128 (int (*)(...))QFileDevice::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFile::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QFileDevice::writeData
+240 (int (*)(...))QFile::fileName
+248 (int (*)(...))QFile::resize
+256 (int (*)(...))QFile::permissions
+264 (int (*)(...))QFile::setPermissions
+
+Class QFile
+ size=16 align=8
+ base size=16 base align=8
+QFile (0x0x7f1d210ac6e8) 0
+ vptr=((& QFile::_ZTV5QFile) + 16)
+ QFileDevice (0x0x7f1d210ac750) 0
+ primary-for QFile (0x0x7f1d210ac6e8)
+ QIODevice (0x0x7f1d210ac7b8) 0
+ primary-for QFileDevice (0x0x7f1d210ac750)
+ QObject (0x0x7f1d20cb5b40) 0
+ primary-for QIODevice (0x0x7f1d210ac7b8)
+
+Class QFileInfo
+ size=8 align=8
+ base size=8 base align=8
+QFileInfo (0x0x7f1d20d2a240) 0
+
+Class QDir
+ size=8 align=8
+ base size=8 base align=8
+QDir (0x0x7f1d20dfa120) 0
+
+Class QDirIterator
+ size=8 align=8
+ base size=8 base align=8
+QDirIterator (0x0x7f1d20b22120) 0
+
+Class QEasingCurve
+ size=8 align=8
+ base size=8 base align=8
+QEasingCurve (0x0x7f1d20b228a0) 0
+
+Class QEventTransition::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QEventTransition::QPrivateSignal (0x0x7f1d20c539c0) 0 empty
+
+Vtable for QEventTransition
+QEventTransition::_ZTV16QEventTransition: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QEventTransition)
+16 (int (*)(...))QEventTransition::metaObject
+24 (int (*)(...))QEventTransition::qt_metacast
+32 (int (*)(...))QEventTransition::qt_metacall
+40 (int (*)(...))QEventTransition::~QEventTransition
+48 (int (*)(...))QEventTransition::~QEventTransition
+56 (int (*)(...))QEventTransition::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QEventTransition::eventTest
+120 (int (*)(...))QEventTransition::onTransition
+
+Class QEventTransition
+ size=16 align=8
+ base size=16 base align=8
+QEventTransition (0x0x7f1d20c1e478) 0
+ vptr=((& QEventTransition::_ZTV16QEventTransition) + 16)
+ QAbstractTransition (0x0x7f1d20c1e4e0) 0
+ primary-for QEventTransition (0x0x7f1d20c1e478)
+ QObject (0x0x7f1d20c53960) 0
+ primary-for QAbstractTransition (0x0x7f1d20c1e4e0)
+
+Vtable for QException
+QException::_ZTV10QException: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QException)
+16 (int (*)(...))QException::~QException
+24 (int (*)(...))QException::~QException
+32 (int (*)(...))std::exception::what
+40 (int (*)(...))QException::raise
+48 (int (*)(...))QException::clone
+
+Class QException
+ size=8 align=8
+ base size=8 base align=8
+QException (0x0x7f1d20c1e548) 0 nearly-empty
+ vptr=((& QException::_ZTV10QException) + 16)
+ std::exception (0x0x7f1d20c53ba0) 0 nearly-empty
+ primary-for QException (0x0x7f1d20c1e548)
+
+Vtable for QUnhandledException
+QUnhandledException::_ZTV19QUnhandledException: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QUnhandledException)
+16 (int (*)(...))QUnhandledException::~QUnhandledException
+24 (int (*)(...))QUnhandledException::~QUnhandledException
+32 (int (*)(...))std::exception::what
+40 (int (*)(...))QUnhandledException::raise
+48 (int (*)(...))QUnhandledException::clone
+
+Class QUnhandledException
+ size=8 align=8
+ base size=8 base align=8
+QUnhandledException (0x0x7f1d20c1e5b0) 0 nearly-empty
+ vptr=((& QUnhandledException::_ZTV19QUnhandledException) + 16)
+ QException (0x0x7f1d20c1e618) 0 nearly-empty
+ primary-for QUnhandledException (0x0x7f1d20c1e5b0)
+ std::exception (0x0x7f1d20c53c00) 0 nearly-empty
+ primary-for QException (0x0x7f1d20c1e618)
+
+Class QtPrivate::ExceptionHolder
+ size=8 align=8
+ base size=8 base align=8
+QtPrivate::ExceptionHolder (0x0x7f1d20c53c60) 0
+
+Class QtPrivate::ExceptionStore
+ size=8 align=8
+ base size=8 base align=8
+QtPrivate::ExceptionStore (0x0x7f1d20c53d20) 0
+
+Vtable for QFactoryInterface
+QFactoryInterface::_ZTV17QFactoryInterface: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QFactoryInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QFactoryInterface
+ size=8 align=8
+ base size=8 base align=8
+QFactoryInterface (0x0x7f1d20c53d80) 0 nearly-empty
+ vptr=((& QFactoryInterface::_ZTV17QFactoryInterface) + 16)
+
+Class QFileSelector::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFileSelector::QPrivateSignal (0x0x7f1d20c98000) 0 empty
+
+Vtable for QFileSelector
+QFileSelector::_ZTV13QFileSelector: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QFileSelector)
+16 (int (*)(...))QFileSelector::metaObject
+24 (int (*)(...))QFileSelector::qt_metacast
+32 (int (*)(...))QFileSelector::qt_metacall
+40 (int (*)(...))QFileSelector::~QFileSelector
+48 (int (*)(...))QFileSelector::~QFileSelector
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QFileSelector
+ size=16 align=8
+ base size=16 base align=8
+QFileSelector (0x0x7f1d20c1e680) 0
+ vptr=((& QFileSelector::_ZTV13QFileSelector) + 16)
+ QObject (0x0x7f1d20c53f60) 0
+ primary-for QFileSelector (0x0x7f1d20c1e680)
+
+Class QFileSystemWatcher::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFileSystemWatcher::QPrivateSignal (0x0x7f1d20c98240) 0 empty
+
+Vtable for QFileSystemWatcher
+QFileSystemWatcher::_ZTV18QFileSystemWatcher: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QFileSystemWatcher)
+16 (int (*)(...))QFileSystemWatcher::metaObject
+24 (int (*)(...))QFileSystemWatcher::qt_metacast
+32 (int (*)(...))QFileSystemWatcher::qt_metacall
+40 (int (*)(...))QFileSystemWatcher::~QFileSystemWatcher
+48 (int (*)(...))QFileSystemWatcher::~QFileSystemWatcher
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QFileSystemWatcher
+ size=16 align=8
+ base size=16 base align=8
+QFileSystemWatcher (0x0x7f1d20c1e6e8) 0
+ vptr=((& QFileSystemWatcher::_ZTV18QFileSystemWatcher) + 16)
+ QObject (0x0x7f1d20c981e0) 0
+ primary-for QFileSystemWatcher (0x0x7f1d20c1e6e8)
+
+Class QFinalState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFinalState::QPrivateSignal (0x0x7f1d20c98480) 0 empty
+
+Vtable for QFinalState
+QFinalState::_ZTV11QFinalState: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFinalState)
+16 (int (*)(...))QFinalState::metaObject
+24 (int (*)(...))QFinalState::qt_metacast
+32 (int (*)(...))QFinalState::qt_metacall
+40 (int (*)(...))QFinalState::~QFinalState
+48 (int (*)(...))QFinalState::~QFinalState
+56 (int (*)(...))QFinalState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFinalState::onEntry
+120 (int (*)(...))QFinalState::onExit
+
+Class QFinalState
+ size=16 align=8
+ base size=16 base align=8
+QFinalState (0x0x7f1d20c1e750) 0
+ vptr=((& QFinalState::_ZTV11QFinalState) + 16)
+ QAbstractState (0x0x7f1d20c1e7b8) 0
+ primary-for QFinalState (0x0x7f1d20c1e750)
+ QObject (0x0x7f1d20c98420) 0
+ primary-for QAbstractState (0x0x7f1d20c1e7b8)
+
+Vtable for QRunnable
+QRunnable::_ZTV9QRunnable: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QRunnable)
+16 (int (*)(...))__cxa_pure_virtual
+24 0
+32 0
+
+Class QRunnable
+ size=16 align=8
+ base size=12 base align=8
+QRunnable (0x0x7f1d20c98660) 0
+ vptr=((& QRunnable::_ZTV9QRunnable) + 16)
+
+Class QBasicMutex
+ size=8 align=8
+ base size=8 base align=8
+QBasicMutex (0x0x7f1d20c98900) 0
+
+Class QMutex
+ size=8 align=8
+ base size=8 base align=8
+QMutex (0x0x7f1d20c1e888) 0
+ QBasicMutex (0x0x7f1d209305a0) 0
+
+Class QRecursiveMutex
+ size=8 align=8
+ base size=8 base align=8
+QRecursiveMutex (0x0x7f1d20c1e8f0) 0
+ QMutex (0x0x7f1d20c1e958) 0
+ QBasicMutex (0x0x7f1d209307e0) 0
+
+Class QMutexLocker
+ size=8 align=8
+ base size=8 base align=8
+QMutexLocker (0x0x7f1d20930840) 0
+
+Class QtPrivate::ResultItem
+ size=16 align=8
+ base size=16 base align=8
+QtPrivate::ResultItem (0x0x7f1d20930e40) 0
+
+Class QtPrivate::ResultIteratorBase
+ size=16 align=8
+ base size=12 base align=8
+QtPrivate::ResultIteratorBase (0x0x7f1d2095b480) 0
+
+Vtable for QtPrivate::ResultStoreBase
+QtPrivate::ResultStoreBase::_ZTVN9QtPrivate15ResultStoreBaseE: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9QtPrivate15ResultStoreBaseE)
+16 (int (*)(...))QtPrivate::ResultStoreBase::~ResultStoreBase
+24 (int (*)(...))QtPrivate::ResultStoreBase::~ResultStoreBase
+
+Class QtPrivate::ResultStoreBase
+ size=48 align=8
+ base size=44 base align=8
+QtPrivate::ResultStoreBase (0x0x7f1d2095b660) 0
+ vptr=((& QtPrivate::ResultStoreBase::_ZTVN9QtPrivate15ResultStoreBaseE) + 16)
+
+Class std::__mutex_base
+ size=40 align=8
+ base size=40 base align=8
+std::__mutex_base (0x0x7f1d209d2e40) 0
+
+Class std::mutex
+ size=40 align=8
+ base size=40 base align=8
+std::mutex (0x0x7f1d209e3270) 0
+ std::__mutex_base (0x0x7f1d209d2ea0) 0
+
+Class std::defer_lock_t
+ size=1 align=1
+ base size=0 base align=1
+std::defer_lock_t (0x0x7f1d209f40c0) 0 empty
+
+Class std::try_to_lock_t
+ size=1 align=1
+ base size=0 base align=1
+std::try_to_lock_t (0x0x7f1d209f4120) 0 empty
+
+Class std::adopt_lock_t
+ size=1 align=1
+ base size=0 base align=1
+std::adopt_lock_t (0x0x7f1d209f4180) 0 empty
+
+Class std::__recursive_mutex_base
+ size=40 align=8
+ base size=40 base align=8
+std::__recursive_mutex_base (0x0x7f1d209f4ba0) 0
+
+Class std::recursive_mutex
+ size=40 align=8
+ base size=40 base align=8
+std::recursive_mutex (0x0x7f1d209e32d8) 0
+ std::__recursive_mutex_base (0x0x7f1d209f4c00) 0
+
+Class std::timed_mutex
+ size=40 align=8
+ base size=40 base align=8
+std::timed_mutex (0x0x7f1d209e7cb0) 0
+ std::__mutex_base (0x0x7f1d20a2f000) 0
+ std::__timed_mutex_impl<std::timed_mutex> (0x0x7f1d20a2f060) 0 empty
+
+Class std::recursive_timed_mutex
+ size=40 align=8
+ base size=40 base align=8
+std::recursive_timed_mutex (0x0x7f1d20a46000) 0
+ std::__recursive_mutex_base (0x0x7f1d20a2f3c0) 0
+ std::__timed_mutex_impl<std::recursive_timed_mutex> (0x0x7f1d20a2f420) 0 empty
+
+Class std::once_flag
+ size=4 align=4
+ base size=4 base align=4
+std::once_flag (0x0x7f1d20a2fb40) 0
+
+Vtable for QFutureInterfaceBase
+QFutureInterfaceBase::_ZTV20QFutureInterfaceBase: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QFutureInterfaceBase)
+16 (int (*)(...))QFutureInterfaceBase::~QFutureInterfaceBase
+24 (int (*)(...))QFutureInterfaceBase::~QFutureInterfaceBase
+
+Class QFutureInterfaceBase
+ size=16 align=8
+ base size=16 base align=8
+QFutureInterfaceBase (0x0x7f1d20a2fd80) 0
+ vptr=((& QFutureInterfaceBase::_ZTV20QFutureInterfaceBase) + 16)
+
+Class QFutureWatcherBase::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFutureWatcherBase::QPrivateSignal (0x0x7f1d20714120) 0 empty
+
+Vtable for QFutureWatcherBase
+QFutureWatcherBase::_ZTV18QFutureWatcherBase: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QFutureWatcherBase)
+16 (int (*)(...))QFutureWatcherBase::metaObject
+24 (int (*)(...))QFutureWatcherBase::qt_metacast
+32 (int (*)(...))QFutureWatcherBase::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QFutureWatcherBase::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QFutureWatcherBase::connectNotify
+104 (int (*)(...))QFutureWatcherBase::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QFutureWatcherBase
+ size=16 align=8
+ base size=16 base align=8
+QFutureWatcherBase (0x0x7f1d206f30d0) 0
+ vptr=((& QFutureWatcherBase::_ZTV18QFutureWatcherBase) + 16)
+ QObject (0x0x7f1d207140c0) 0
+ primary-for QFutureWatcherBase (0x0x7f1d206f30d0)
+
+Class QHistoryState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QHistoryState::QPrivateSignal (0x0x7f1d20740480) 0 empty
+
+Vtable for QHistoryState
+QHistoryState::_ZTV13QHistoryState: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QHistoryState)
+16 (int (*)(...))QHistoryState::metaObject
+24 (int (*)(...))QHistoryState::qt_metacast
+32 (int (*)(...))QHistoryState::qt_metacall
+40 (int (*)(...))QHistoryState::~QHistoryState
+48 (int (*)(...))QHistoryState::~QHistoryState
+56 (int (*)(...))QHistoryState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QHistoryState::onEntry
+120 (int (*)(...))QHistoryState::onExit
+
+Class QHistoryState
+ size=16 align=8
+ base size=16 base align=8
+QHistoryState (0x0x7f1d206f38f0) 0
+ vptr=((& QHistoryState::_ZTV13QHistoryState) + 16)
+ QAbstractState (0x0x7f1d206f3958) 0
+ primary-for QHistoryState (0x0x7f1d206f38f0)
+ QObject (0x0x7f1d20740420) 0
+ primary-for QAbstractState (0x0x7f1d206f3958)
+
+Class QIdentityProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QIdentityProxyModel::QPrivateSignal (0x0x7f1d20740780) 0 empty
+
+Vtable for QIdentityProxyModel
+QIdentityProxyModel::_ZTV19QIdentityProxyModel: 53 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QIdentityProxyModel)
+16 (int (*)(...))QIdentityProxyModel::metaObject
+24 (int (*)(...))QIdentityProxyModel::qt_metacast
+32 (int (*)(...))QIdentityProxyModel::qt_metacall
+40 (int (*)(...))QIdentityProxyModel::~QIdentityProxyModel
+48 (int (*)(...))QIdentityProxyModel::~QIdentityProxyModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QIdentityProxyModel::index
+120 (int (*)(...))QIdentityProxyModel::parent
+128 (int (*)(...))QIdentityProxyModel::sibling
+136 (int (*)(...))QIdentityProxyModel::rowCount
+144 (int (*)(...))QIdentityProxyModel::columnCount
+152 (int (*)(...))QAbstractProxyModel::hasChildren
+160 (int (*)(...))QAbstractProxyModel::data
+168 (int (*)(...))QAbstractProxyModel::setData
+176 (int (*)(...))QIdentityProxyModel::headerData
+184 (int (*)(...))QAbstractProxyModel::setHeaderData
+192 (int (*)(...))QAbstractProxyModel::itemData
+200 (int (*)(...))QAbstractProxyModel::setItemData
+208 (int (*)(...))QAbstractProxyModel::mimeTypes
+216 (int (*)(...))QAbstractProxyModel::mimeData
+224 (int (*)(...))QAbstractProxyModel::canDropMimeData
+232 (int (*)(...))QIdentityProxyModel::dropMimeData
+240 (int (*)(...))QAbstractProxyModel::supportedDropActions
+248 (int (*)(...))QAbstractProxyModel::supportedDragActions
+256 (int (*)(...))QIdentityProxyModel::insertRows
+264 (int (*)(...))QIdentityProxyModel::insertColumns
+272 (int (*)(...))QIdentityProxyModel::removeRows
+280 (int (*)(...))QIdentityProxyModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractProxyModel::fetchMore
+312 (int (*)(...))QAbstractProxyModel::canFetchMore
+320 (int (*)(...))QAbstractProxyModel::flags
+328 (int (*)(...))QAbstractProxyModel::sort
+336 (int (*)(...))QAbstractProxyModel::buddy
+344 (int (*)(...))QIdentityProxyModel::match
+352 (int (*)(...))QAbstractProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractProxyModel::submit
+376 (int (*)(...))QAbstractProxyModel::revert
+384 (int (*)(...))QIdentityProxyModel::setSourceModel
+392 (int (*)(...))QIdentityProxyModel::mapToSource
+400 (int (*)(...))QIdentityProxyModel::mapFromSource
+408 (int (*)(...))QIdentityProxyModel::mapSelectionToSource
+416 (int (*)(...))QIdentityProxyModel::mapSelectionFromSource
+
+Class QIdentityProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QIdentityProxyModel (0x0x7f1d206f39c0) 0
+ vptr=((& QIdentityProxyModel::_ZTV19QIdentityProxyModel) + 16)
+ QAbstractProxyModel (0x0x7f1d206f3a28) 0
+ primary-for QIdentityProxyModel (0x0x7f1d206f39c0)
+ QAbstractItemModel (0x0x7f1d206f3a90) 0
+ primary-for QAbstractProxyModel (0x0x7f1d206f3a28)
+ QObject (0x0x7f1d20740720) 0
+ primary-for QAbstractItemModel (0x0x7f1d206f3a90)
+
+Class QItemSelectionRange
+ size=16 align=8
+ base size=16 base align=8
+QItemSelectionRange (0x0x7f1d20740960) 0
+
+Class QItemSelectionModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QItemSelectionModel::QPrivateSignal (0x0x7f1d208272a0) 0 empty
+
+Vtable for QItemSelectionModel
+QItemSelectionModel::_ZTV19QItemSelectionModel: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QItemSelectionModel)
+16 (int (*)(...))QItemSelectionModel::metaObject
+24 (int (*)(...))QItemSelectionModel::qt_metacast
+32 (int (*)(...))QItemSelectionModel::qt_metacall
+40 (int (*)(...))QItemSelectionModel::~QItemSelectionModel
+48 (int (*)(...))QItemSelectionModel::~QItemSelectionModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QItemSelectionModel::setCurrentIndex
+120 (int (*)(...))QItemSelectionModel::select
+128 (int (*)(...))QItemSelectionModel::select
+136 (int (*)(...))QItemSelectionModel::clear
+144 (int (*)(...))QItemSelectionModel::reset
+152 (int (*)(...))QItemSelectionModel::clearCurrentIndex
+
+Class QItemSelectionModel
+ size=16 align=8
+ base size=16 base align=8
+QItemSelectionModel (0x0x7f1d20824410) 0
+ vptr=((& QItemSelectionModel::_ZTV19QItemSelectionModel) + 16)
+ QObject (0x0x7f1d20827240) 0
+ primary-for QItemSelectionModel (0x0x7f1d20824410)
+
+Class QItemSelection
+ size=8 align=8
+ base size=8 base align=8
+QItemSelection (0x0x7f1d208245b0) 0
+ QList<QItemSelectionRange> (0x0x7f1d20824618) 0
+ QListSpecialMethods<QItemSelectionRange> (0x0x7f1d20827d80) 0 empty
+
+Class QJsonValue
+ size=24 align=8
+ base size=20 base align=8
+QJsonValue (0x0x7f1d204d66c0) 0
+
+Class QJsonValueRef
+ size=16 align=8
+ base size=12 base align=8
+QJsonValueRef (0x0x7f1d20634360) 0
+
+Class QJsonValuePtr
+ size=24 align=8
+ base size=24 base align=8
+QJsonValuePtr (0x0x7f1d20682300) 0
+
+Class QJsonValueRefPtr
+ size=16 align=8
+ base size=16 base align=8
+QJsonValueRefPtr (0x0x7f1d206825a0) 0
+
+Class QJsonArray::iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonArray::iterator (0x0x7f1d202c4900) 0
+
+Class QJsonArray::const_iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonArray::const_iterator (0x0x7f1d202c4960) 0
+
+Class QJsonArray
+ size=16 align=8
+ base size=16 base align=8
+QJsonArray (0x0x7f1d202c48a0) 0
+
+Class QJsonParseError
+ size=8 align=4
+ base size=8 base align=4
+QJsonParseError (0x0x7f1d203f3840) 0
+
+Class QJsonDocument
+ size=8 align=8
+ base size=8 base align=8
+QJsonDocument (0x0x7f1d203f38a0) 0
+
+Class QJsonObject::iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonObject::iterator (0x0x7f1d2045c0c0) 0
+
+Class QJsonObject::const_iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonObject::const_iterator (0x0x7f1d2045c120) 0
+
+Class QJsonObject
+ size=16 align=8
+ base size=16 base align=8
+QJsonObject (0x0x7f1d2045c060) 0
+
+Class QLibrary::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLibrary::QPrivateSignal (0x0x7f1d2017e540) 0 empty
+
+Vtable for QLibrary
+QLibrary::_ZTV8QLibrary: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QLibrary)
+16 (int (*)(...))QLibrary::metaObject
+24 (int (*)(...))QLibrary::qt_metacast
+32 (int (*)(...))QLibrary::qt_metacall
+40 (int (*)(...))QLibrary::~QLibrary
+48 (int (*)(...))QLibrary::~QLibrary
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QLibrary
+ size=32 align=8
+ base size=25 base align=8
+QLibrary (0x0x7f1d20182270) 0
+ vptr=((& QLibrary::_ZTV8QLibrary) + 16)
+ QObject (0x0x7f1d2017e4e0) 0
+ primary-for QLibrary (0x0x7f1d20182270)
+
+Class QVersionNumber::SegmentStorage
+ size=8 align=8
+ base size=8 base align=8
+QVersionNumber::SegmentStorage (0x0x7f1d201cc3c0) 0
+
+Class QVersionNumber
+ size=8 align=8
+ base size=8 base align=8
+QVersionNumber (0x0x7f1d2017eea0) 0
+
+Class QLibraryInfo
+ size=1 align=1
+ base size=0 base align=1
+QLibraryInfo (0x0x7f1d20261b40) 0 empty
+
+Class QPoint
+ size=8 align=4
+ base size=8 base align=4
+QPoint (0x0x7f1d20261ba0) 0
+
+Class QPointF
+ size=16 align=8
+ base size=16 base align=8
+QPointF (0x0x7f1d1fed3a20) 0
+
+Class QLine
+ size=16 align=4
+ base size=16 base align=4
+QLine (0x0x7f1d1ff43c00) 0
+
+Class QLineF
+ size=32 align=8
+ base size=32 base align=8
+QLineF (0x0x7f1d1ffe2000) 0
+
+Class QLinkedListData
+ size=32 align=8
+ base size=25 base align=8
+QLinkedListData (0x0x7f1d2005d2a0) 0
+
+Class QLockFile
+ size=8 align=8
+ base size=8 base align=8
+QLockFile (0x0x7f1d1fcfb7e0) 0
+
+Class QLoggingCategory::AtomicBools
+ size=4 align=1
+ base size=4 base align=1
+QLoggingCategory::AtomicBools (0x0x7f1d1fcfba20) 0
+
+Class QLoggingCategory
+ size=24 align=8
+ base size=24 base align=8
+QLoggingCategory (0x0x7f1d1fcfb9c0) 0
+
+Class QMargins
+ size=16 align=4
+ base size=16 base align=4
+QMargins (0x0x7f1d1fcfbe40) 0
+
+Class QMarginsF
+ size=32 align=8
+ base size=32 base align=8
+QMarginsF (0x0x7f1d1fdafd80) 0
+
+Class QMessageAuthenticationCode
+ size=8 align=8
+ base size=8 base align=8
+QMessageAuthenticationCode (0x0x7f1d1fc205a0) 0
+
+Class QMetaMethod
+ size=16 align=8
+ base size=12 base align=8
+QMetaMethod (0x0x7f1d1fc20600) 0
+
+Class QMetaEnum
+ size=16 align=8
+ base size=12 base align=8
+QMetaEnum (0x0x7f1d1fc8de40) 0
+
+Class QMetaProperty
+ size=32 align=8
+ base size=32 base align=8
+QMetaProperty (0x0x7f1d1f8eb060) 0
+
+Class QMetaClassInfo
+ size=16 align=8
+ base size=12 base align=8
+QMetaClassInfo (0x0x7f1d1f8eb180) 0
+
+Class QMimeData::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMimeData::QPrivateSignal (0x0x7f1d1f929720) 0 empty
+
+Vtable for QMimeData
+QMimeData::_ZTV9QMimeData: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QMimeData)
+16 (int (*)(...))QMimeData::metaObject
+24 (int (*)(...))QMimeData::qt_metacast
+32 (int (*)(...))QMimeData::qt_metacall
+40 (int (*)(...))QMimeData::~QMimeData
+48 (int (*)(...))QMimeData::~QMimeData
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QMimeData::hasFormat
+120 (int (*)(...))QMimeData::formats
+128 (int (*)(...))QMimeData::retrieveData
+
+Class QMimeData
+ size=16 align=8
+ base size=16 base align=8
+QMimeData (0x0x7f1d1f920ea0) 0
+ vptr=((& QMimeData::_ZTV9QMimeData) + 16)
+ QObject (0x0x7f1d1f9296c0) 0
+ primary-for QMimeData (0x0x7f1d1f920ea0)
+
+Class QMimeType
+ size=8 align=8
+ base size=8 base align=8
+QMimeType (0x0x7f1d1f929900) 0
+
+Class QMimeDatabase
+ size=8 align=8
+ base size=8 base align=8
+QMimeDatabase (0x0x7f1d1f9fc840) 0
+
+Class QObjectCleanupHandler::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QObjectCleanupHandler::QPrivateSignal (0x0x7f1d1f9fc900) 0 empty
+
+Vtable for QObjectCleanupHandler
+QObjectCleanupHandler::_ZTV21QObjectCleanupHandler: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QObjectCleanupHandler)
+16 (int (*)(...))QObjectCleanupHandler::metaObject
+24 (int (*)(...))QObjectCleanupHandler::qt_metacast
+32 (int (*)(...))QObjectCleanupHandler::qt_metacall
+40 (int (*)(...))QObjectCleanupHandler::~QObjectCleanupHandler
+48 (int (*)(...))QObjectCleanupHandler::~QObjectCleanupHandler
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QObjectCleanupHandler
+ size=24 align=8
+ base size=24 base align=8
+QObjectCleanupHandler (0x0x7f1d1f9fba28) 0
+ vptr=((& QObjectCleanupHandler::_ZTV21QObjectCleanupHandler) + 16)
+ QObject (0x0x7f1d1f9fc8a0) 0
+ primary-for QObjectCleanupHandler (0x0x7f1d1f9fba28)
+
+Class QOperatingSystemVersion
+ size=16 align=4
+ base size=16 base align=4
+QOperatingSystemVersion (0x0x7f1d1f9fca20) 0
+
+Class QParallelAnimationGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QParallelAnimationGroup::QPrivateSignal (0x0x7f1d1fa871e0) 0 empty
+
+Vtable for QParallelAnimationGroup
+QParallelAnimationGroup::_ZTV23QParallelAnimationGroup: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QParallelAnimationGroup)
+16 (int (*)(...))QParallelAnimationGroup::metaObject
+24 (int (*)(...))QParallelAnimationGroup::qt_metacast
+32 (int (*)(...))QParallelAnimationGroup::qt_metacall
+40 (int (*)(...))QParallelAnimationGroup::~QParallelAnimationGroup
+48 (int (*)(...))QParallelAnimationGroup::~QParallelAnimationGroup
+56 (int (*)(...))QParallelAnimationGroup::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QParallelAnimationGroup::duration
+120 (int (*)(...))QParallelAnimationGroup::updateCurrentTime
+128 (int (*)(...))QParallelAnimationGroup::updateState
+136 (int (*)(...))QParallelAnimationGroup::updateDirection
+
+Class QParallelAnimationGroup
+ size=16 align=8
+ base size=16 base align=8
+QParallelAnimationGroup (0x0x7f1d1fa832d8) 0
+ vptr=((& QParallelAnimationGroup::_ZTV23QParallelAnimationGroup) + 16)
+ QAnimationGroup (0x0x7f1d1fa83340) 0
+ primary-for QParallelAnimationGroup (0x0x7f1d1fa832d8)
+ QAbstractAnimation (0x0x7f1d1fa833a8) 0
+ primary-for QAnimationGroup (0x0x7f1d1fa83340)
+ QObject (0x0x7f1d1fa87180) 0
+ primary-for QAbstractAnimation (0x0x7f1d1fa833a8)
+
+Class QPauseAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPauseAnimation::QPrivateSignal (0x0x7f1d1fa87420) 0 empty
+
+Vtable for QPauseAnimation
+QPauseAnimation::_ZTV15QPauseAnimation: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QPauseAnimation)
+16 (int (*)(...))QPauseAnimation::metaObject
+24 (int (*)(...))QPauseAnimation::qt_metacast
+32 (int (*)(...))QPauseAnimation::qt_metacall
+40 (int (*)(...))QPauseAnimation::~QPauseAnimation
+48 (int (*)(...))QPauseAnimation::~QPauseAnimation
+56 (int (*)(...))QPauseAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QPauseAnimation::duration
+120 (int (*)(...))QPauseAnimation::updateCurrentTime
+128 (int (*)(...))QAbstractAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+
+Class QPauseAnimation
+ size=16 align=8
+ base size=16 base align=8
+QPauseAnimation (0x0x7f1d1fa83410) 0
+ vptr=((& QPauseAnimation::_ZTV15QPauseAnimation) + 16)
+ QAbstractAnimation (0x0x7f1d1fa83478) 0
+ primary-for QPauseAnimation (0x0x7f1d1fa83410)
+ QObject (0x0x7f1d1fa873c0) 0
+ primary-for QAbstractAnimation (0x0x7f1d1fa83478)
+
+Class QStaticPlugin
+ size=16 align=8
+ base size=16 base align=8
+QStaticPlugin (0x0x7f1d1fa87f60) 0
+
+Class QPluginLoader::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPluginLoader::QPrivateSignal (0x0x7f1d1f700120) 0 empty
+
+Vtable for QPluginLoader
+QPluginLoader::_ZTV13QPluginLoader: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QPluginLoader)
+16 (int (*)(...))QPluginLoader::metaObject
+24 (int (*)(...))QPluginLoader::qt_metacast
+32 (int (*)(...))QPluginLoader::qt_metacall
+40 (int (*)(...))QPluginLoader::~QPluginLoader
+48 (int (*)(...))QPluginLoader::~QPluginLoader
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QPluginLoader
+ size=32 align=8
+ base size=25 base align=8
+QPluginLoader (0x0x7f1d1f6f37b8) 0
+ vptr=((& QPluginLoader::_ZTV13QPluginLoader) + 16)
+ QObject (0x0x7f1d1f7000c0) 0
+ primary-for QPluginLoader (0x0x7f1d1f6f37b8)
+
+Class QProcessEnvironment
+ size=8 align=8
+ base size=8 base align=8
+QProcessEnvironment (0x0x7f1d1f700240) 0
+
+Class QProcess::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QProcess::QPrivateSignal (0x0x7f1d1f7cb6c0) 0 empty
+
+Vtable for QProcess
+QProcess::_ZTV8QProcess: 31 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QProcess)
+16 (int (*)(...))QProcess::metaObject
+24 (int (*)(...))QProcess::qt_metacast
+32 (int (*)(...))QProcess::qt_metacall
+40 (int (*)(...))QProcess::~QProcess
+48 (int (*)(...))QProcess::~QProcess
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QProcess::isSequential
+120 (int (*)(...))QProcess::open
+128 (int (*)(...))QProcess::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QProcess::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QProcess::bytesAvailable
+184 (int (*)(...))QProcess::bytesToWrite
+192 (int (*)(...))QProcess::canReadLine
+200 (int (*)(...))QProcess::waitForReadyRead
+208 (int (*)(...))QProcess::waitForBytesWritten
+216 (int (*)(...))QProcess::readData
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))QProcess::writeData
+240 (int (*)(...))QProcess::setupChildProcess
+
+Class QProcess
+ size=16 align=8
+ base size=16 base align=8
+QProcess (0x0x7f1d1f7c0c30) 0
+ vptr=((& QProcess::_ZTV8QProcess) + 16)
+ QIODevice (0x0x7f1d1f7c0c98) 0
+ primary-for QProcess (0x0x7f1d1f7c0c30)
+ QObject (0x0x7f1d1f7cb660) 0
+ primary-for QIODevice (0x0x7f1d1f7c0c98)
+
+Class QVariantAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QVariantAnimation::QPrivateSignal (0x0x7f1d1f7cbd80) 0 empty
+
+Vtable for QVariantAnimation
+QVariantAnimation::_ZTV17QVariantAnimation: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QVariantAnimation)
+16 (int (*)(...))QVariantAnimation::metaObject
+24 (int (*)(...))QVariantAnimation::qt_metacast
+32 (int (*)(...))QVariantAnimation::qt_metacall
+40 (int (*)(...))QVariantAnimation::~QVariantAnimation
+48 (int (*)(...))QVariantAnimation::~QVariantAnimation
+56 (int (*)(...))QVariantAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QVariantAnimation::duration
+120 (int (*)(...))QVariantAnimation::updateCurrentTime
+128 (int (*)(...))QVariantAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+144 (int (*)(...))QVariantAnimation::updateCurrentValue
+152 (int (*)(...))QVariantAnimation::interpolated
+
+Class QVariantAnimation
+ size=16 align=8
+ base size=16 base align=8
+QVariantAnimation (0x0x7f1d1f7c0d00) 0
+ vptr=((& QVariantAnimation::_ZTV17QVariantAnimation) + 16)
+ QAbstractAnimation (0x0x7f1d1f7c0d68) 0
+ primary-for QVariantAnimation (0x0x7f1d1f7c0d00)
+ QObject (0x0x7f1d1f7cbd20) 0
+ primary-for QAbstractAnimation (0x0x7f1d1f7c0d68)
+
+Class QPropertyAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPropertyAnimation::QPrivateSignal (0x0x7f1d1f81b060) 0 empty
+
+Vtable for QPropertyAnimation
+QPropertyAnimation::_ZTV18QPropertyAnimation: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QPropertyAnimation)
+16 (int (*)(...))QPropertyAnimation::metaObject
+24 (int (*)(...))QPropertyAnimation::qt_metacast
+32 (int (*)(...))QPropertyAnimation::qt_metacall
+40 (int (*)(...))QPropertyAnimation::~QPropertyAnimation
+48 (int (*)(...))QPropertyAnimation::~QPropertyAnimation
+56 (int (*)(...))QPropertyAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QVariantAnimation::duration
+120 (int (*)(...))QVariantAnimation::updateCurrentTime
+128 (int (*)(...))QPropertyAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+144 (int (*)(...))QPropertyAnimation::updateCurrentValue
+152 (int (*)(...))QVariantAnimation::interpolated
+
+Class QPropertyAnimation
+ size=16 align=8
+ base size=16 base align=8
+QPropertyAnimation (0x0x7f1d1f7c0e38) 0
+ vptr=((& QPropertyAnimation::_ZTV18QPropertyAnimation) + 16)
+ QVariantAnimation (0x0x7f1d1f7c0ea0) 0
+ primary-for QPropertyAnimation (0x0x7f1d1f7c0e38)
+ QAbstractAnimation (0x0x7f1d1f7c0f08) 0
+ primary-for QVariantAnimation (0x0x7f1d1f7c0ea0)
+ QObject (0x0x7f1d1f81b000) 0
+ primary-for QAbstractAnimation (0x0x7f1d1f7c0f08)
+
+Class std::random_device
+ size=5000 align=8
+ base size=5000 base align=8
+std::random_device (0x0x7f1d1f88f780) 0
+
+Class std::bernoulli_distribution::param_type
+ size=8 align=8
+ base size=8 base align=8
+std::bernoulli_distribution::param_type (0x0x7f1d1f5994e0) 0
+
+Class std::bernoulli_distribution
+ size=8 align=8
+ base size=8 base align=8
+std::bernoulli_distribution (0x0x7f1d1f599480) 0
+
+Class std::seed_seq
+ size=24 align=8
+ base size=24 base align=8
+std::seed_seq (0x0x7f1d1f38d240) 0
+
+Class QRandomGenerator::Storage
+ size=2504 align=8
+ base size=2504 base align=8
+QRandomGenerator::Storage (0x0x7f1d1f194ea0) 0
+
+Class QRandomGenerator
+ size=2512 align=8
+ base size=2512 base align=8
+QRandomGenerator (0x0x7f1d1f194e40) 0
+
+Class QRandomGenerator64
+ size=2512 align=8
+ base size=2512 base align=8
+QRandomGenerator64 (0x0x7f1d1f226bc8) 0
+ QRandomGenerator (0x0x7f1d1f2409c0) 0
+
+Class QReadWriteLock
+ size=8 align=8
+ base size=8 base align=8
+QReadWriteLock (0x0x7f1d1f2645a0) 0
+
+Class QReadLocker
+ size=8 align=8
+ base size=8 base align=8
+QReadLocker (0x0x7f1d1f264840) 0
+
+Class QWriteLocker
+ size=8 align=8
+ base size=8 base align=8
+QWriteLocker (0x0x7f1d1f264d20) 0
+
+Class QSize
+ size=8 align=4
+ base size=8 base align=4
+QSize (0x0x7f1d1eef2240) 0
+
+Class QSizeF
+ size=16 align=8
+ base size=16 base align=8
+QSizeF (0x0x7f1d1ef63120) 0
+
+Class QRect
+ size=16 align=4
+ base size=16 base align=4
+QRect (0x0x7f1d1efdf180) 0
+
+Class QRectF
+ size=32 align=8
+ base size=32 base align=8
+QRectF (0x0x7f1d1f09e1e0) 0
+
+Class QResource
+ size=8 align=8
+ base size=8 base align=8
+QResource (0x0x7f1d1ed57300) 0
+
+Class QSaveFile::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSaveFile::QPrivateSignal (0x0x7f1d1ed575a0) 0 empty
+
+Vtable for QSaveFile
+QSaveFile::_ZTV9QSaveFile: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QSaveFile)
+16 (int (*)(...))QSaveFile::metaObject
+24 (int (*)(...))QSaveFile::qt_metacast
+32 (int (*)(...))QSaveFile::qt_metacall
+40 (int (*)(...))QSaveFile::~QSaveFile
+48 (int (*)(...))QSaveFile::~QSaveFile
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QSaveFile::open
+128 (int (*)(...))QSaveFile::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFileDevice::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QSaveFile::writeData
+240 (int (*)(...))QSaveFile::fileName
+248 (int (*)(...))QFileDevice::resize
+256 (int (*)(...))QFileDevice::permissions
+264 (int (*)(...))QFileDevice::setPermissions
+
+Class QSaveFile
+ size=16 align=8
+ base size=16 base align=8
+QSaveFile (0x0x7f1d1ed035b0) 0
+ vptr=((& QSaveFile::_ZTV9QSaveFile) + 16)
+ QFileDevice (0x0x7f1d1ed03618) 0
+ primary-for QSaveFile (0x0x7f1d1ed035b0)
+ QIODevice (0x0x7f1d1ed03680) 0
+ primary-for QFileDevice (0x0x7f1d1ed03618)
+ QObject (0x0x7f1d1ed57540) 0
+ primary-for QIODevice (0x0x7f1d1ed03680)
+
+Class QSemaphore
+ size=8 align=8
+ base size=8 base align=8
+QSemaphore (0x0x7f1d1ed57ba0) 0
+
+Class QSemaphoreReleaser
+ size=16 align=8
+ base size=12 base align=8
+QSemaphoreReleaser (0x0x7f1d1ed57d20) 0
+
+Class QSequentialAnimationGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSequentialAnimationGroup::QPrivateSignal (0x0x7f1d1ee50960) 0 empty
+
+Vtable for QSequentialAnimationGroup
+QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QSequentialAnimationGroup)
+16 (int (*)(...))QSequentialAnimationGroup::metaObject
+24 (int (*)(...))QSequentialAnimationGroup::qt_metacast
+32 (int (*)(...))QSequentialAnimationGroup::qt_metacall
+40 (int (*)(...))QSequentialAnimationGroup::~QSequentialAnimationGroup
+48 (int (*)(...))QSequentialAnimationGroup::~QSequentialAnimationGroup
+56 (int (*)(...))QSequentialAnimationGroup::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QSequentialAnimationGroup::duration
+120 (int (*)(...))QSequentialAnimationGroup::updateCurrentTime
+128 (int (*)(...))QSequentialAnimationGroup::updateState
+136 (int (*)(...))QSequentialAnimationGroup::updateDirection
+
+Class QSequentialAnimationGroup
+ size=16 align=8
+ base size=16 base align=8
+QSequentialAnimationGroup (0x0x7f1d1ee58e38) 0
+ vptr=((& QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup) + 16)
+ QAnimationGroup (0x0x7f1d1ee58ea0) 0
+ primary-for QSequentialAnimationGroup (0x0x7f1d1ee58e38)
+ QAbstractAnimation (0x0x7f1d1ee58f08) 0
+ primary-for QAnimationGroup (0x0x7f1d1ee58ea0)
+ QObject (0x0x7f1d1ee50900) 0
+ primary-for QAbstractAnimation (0x0x7f1d1ee58f08)
+
+Class QSettings::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSettings::QPrivateSignal (0x0x7f1d1ee50ba0) 0 empty
+
+Vtable for QSettings
+QSettings::_ZTV9QSettings: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QSettings)
+16 (int (*)(...))QSettings::metaObject
+24 (int (*)(...))QSettings::qt_metacast
+32 (int (*)(...))QSettings::qt_metacall
+40 (int (*)(...))QSettings::~QSettings
+48 (int (*)(...))QSettings::~QSettings
+56 (int (*)(...))QSettings::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSettings
+ size=16 align=8
+ base size=16 base align=8
+QSettings (0x0x7f1d1ee58f70) 0
+ vptr=((& QSettings::_ZTV9QSettings) + 16)
+ QObject (0x0x7f1d1ee50b40) 0
+ primary-for QSettings (0x0x7f1d1ee58f70)
+
+Class QSharedMemory::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSharedMemory::QPrivateSignal (0x0x7f1d1ee99060) 0 empty
+
+Vtable for QSharedMemory
+QSharedMemory::_ZTV13QSharedMemory: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSharedMemory)
+16 (int (*)(...))QSharedMemory::metaObject
+24 (int (*)(...))QSharedMemory::qt_metacast
+32 (int (*)(...))QSharedMemory::qt_metacall
+40 (int (*)(...))QSharedMemory::~QSharedMemory
+48 (int (*)(...))QSharedMemory::~QSharedMemory
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSharedMemory
+ size=16 align=8
+ base size=16 base align=8
+QSharedMemory (0x0x7f1d1ee98000) 0
+ vptr=((& QSharedMemory::_ZTV13QSharedMemory) + 16)
+ QObject (0x0x7f1d1ee99000) 0
+ primary-for QSharedMemory (0x0x7f1d1ee98000)
+
+Class QSignalMapper::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSignalMapper::QPrivateSignal (0x0x7f1d1ee992a0) 0 empty
+
+Vtable for QSignalMapper
+QSignalMapper::_ZTV13QSignalMapper: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSignalMapper)
+16 (int (*)(...))QSignalMapper::metaObject
+24 (int (*)(...))QSignalMapper::qt_metacast
+32 (int (*)(...))QSignalMapper::qt_metacall
+40 (int (*)(...))QSignalMapper::~QSignalMapper
+48 (int (*)(...))QSignalMapper::~QSignalMapper
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSignalMapper
+ size=16 align=8
+ base size=16 base align=8
+QSignalMapper (0x0x7f1d1ee98068) 0
+ vptr=((& QSignalMapper::_ZTV13QSignalMapper) + 16)
+ QObject (0x0x7f1d1ee99240) 0
+ primary-for QSignalMapper (0x0x7f1d1ee98068)
+
+Class QSignalTransition::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSignalTransition::QPrivateSignal (0x0x7f1d1ee994e0) 0 empty
+
+Vtable for QSignalTransition
+QSignalTransition::_ZTV17QSignalTransition: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QSignalTransition)
+16 (int (*)(...))QSignalTransition::metaObject
+24 (int (*)(...))QSignalTransition::qt_metacast
+32 (int (*)(...))QSignalTransition::qt_metacall
+40 (int (*)(...))QSignalTransition::~QSignalTransition
+48 (int (*)(...))QSignalTransition::~QSignalTransition
+56 (int (*)(...))QSignalTransition::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QSignalTransition::eventTest
+120 (int (*)(...))QSignalTransition::onTransition
+
+Class QSignalTransition
+ size=16 align=8
+ base size=16 base align=8
+QSignalTransition (0x0x7f1d1ee980d0) 0
+ vptr=((& QSignalTransition::_ZTV17QSignalTransition) + 16)
+ QAbstractTransition (0x0x7f1d1ee98138) 0
+ primary-for QSignalTransition (0x0x7f1d1ee980d0)
+ QObject (0x0x7f1d1ee99480) 0
+ primary-for QAbstractTransition (0x0x7f1d1ee98138)
+
+Class QSocketNotifier::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSocketNotifier::QPrivateSignal (0x0x7f1d1ee99780) 0 empty
+
+Vtable for QSocketNotifier
+QSocketNotifier::_ZTV15QSocketNotifier: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QSocketNotifier)
+16 (int (*)(...))QSocketNotifier::metaObject
+24 (int (*)(...))QSocketNotifier::qt_metacast
+32 (int (*)(...))QSocketNotifier::qt_metacall
+40 (int (*)(...))QSocketNotifier::~QSocketNotifier
+48 (int (*)(...))QSocketNotifier::~QSocketNotifier
+56 (int (*)(...))QSocketNotifier::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSocketNotifier
+ size=16 align=8
+ base size=16 base align=8
+QSocketNotifier (0x0x7f1d1ee981a0) 0
+ vptr=((& QSocketNotifier::_ZTV15QSocketNotifier) + 16)
+ QObject (0x0x7f1d1ee99720) 0
+ primary-for QSocketNotifier (0x0x7f1d1ee981a0)
+
+Class QSortFilterProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSortFilterProxyModel::QPrivateSignal (0x0x7f1d1ee999c0) 0 empty
+
+Vtable for QSortFilterProxyModel
+QSortFilterProxyModel::_ZTV21QSortFilterProxyModel: 56 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QSortFilterProxyModel)
+16 (int (*)(...))QSortFilterProxyModel::metaObject
+24 (int (*)(...))QSortFilterProxyModel::qt_metacast
+32 (int (*)(...))QSortFilterProxyModel::qt_metacall
+40 (int (*)(...))QSortFilterProxyModel::~QSortFilterProxyModel
+48 (int (*)(...))QSortFilterProxyModel::~QSortFilterProxyModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QSortFilterProxyModel::index
+120 (int (*)(...))QSortFilterProxyModel::parent
+128 (int (*)(...))QSortFilterProxyModel::sibling
+136 (int (*)(...))QSortFilterProxyModel::rowCount
+144 (int (*)(...))QSortFilterProxyModel::columnCount
+152 (int (*)(...))QSortFilterProxyModel::hasChildren
+160 (int (*)(...))QSortFilterProxyModel::data
+168 (int (*)(...))QSortFilterProxyModel::setData
+176 (int (*)(...))QSortFilterProxyModel::headerData
+184 (int (*)(...))QSortFilterProxyModel::setHeaderData
+192 (int (*)(...))QAbstractProxyModel::itemData
+200 (int (*)(...))QAbstractProxyModel::setItemData
+208 (int (*)(...))QSortFilterProxyModel::mimeTypes
+216 (int (*)(...))QSortFilterProxyModel::mimeData
+224 (int (*)(...))QAbstractProxyModel::canDropMimeData
+232 (int (*)(...))QSortFilterProxyModel::dropMimeData
+240 (int (*)(...))QSortFilterProxyModel::supportedDropActions
+248 (int (*)(...))QAbstractProxyModel::supportedDragActions
+256 (int (*)(...))QSortFilterProxyModel::insertRows
+264 (int (*)(...))QSortFilterProxyModel::insertColumns
+272 (int (*)(...))QSortFilterProxyModel::removeRows
+280 (int (*)(...))QSortFilterProxyModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QSortFilterProxyModel::fetchMore
+312 (int (*)(...))QSortFilterProxyModel::canFetchMore
+320 (int (*)(...))QSortFilterProxyModel::flags
+328 (int (*)(...))QSortFilterProxyModel::sort
+336 (int (*)(...))QSortFilterProxyModel::buddy
+344 (int (*)(...))QSortFilterProxyModel::match
+352 (int (*)(...))QSortFilterProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractProxyModel::submit
+376 (int (*)(...))QAbstractProxyModel::revert
+384 (int (*)(...))QSortFilterProxyModel::setSourceModel
+392 (int (*)(...))QSortFilterProxyModel::mapToSource
+400 (int (*)(...))QSortFilterProxyModel::mapFromSource
+408 (int (*)(...))QSortFilterProxyModel::mapSelectionToSource
+416 (int (*)(...))QSortFilterProxyModel::mapSelectionFromSource
+424 (int (*)(...))QSortFilterProxyModel::filterAcceptsRow
+432 (int (*)(...))QSortFilterProxyModel::filterAcceptsColumn
+440 (int (*)(...))QSortFilterProxyModel::lessThan
+
+Class QSortFilterProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QSortFilterProxyModel (0x0x7f1d1ee98208) 0
+ vptr=((& QSortFilterProxyModel::_ZTV21QSortFilterProxyModel) + 16)
+ QAbstractProxyModel (0x0x7f1d1ee98270) 0
+ primary-for QSortFilterProxyModel (0x0x7f1d1ee98208)
+ QAbstractItemModel (0x0x7f1d1ee982d8) 0
+ primary-for QAbstractProxyModel (0x0x7f1d1ee98270)
+ QObject (0x0x7f1d1ee99960) 0
+ primary-for QAbstractItemModel (0x0x7f1d1ee982d8)
+
+Class QStandardPaths
+ size=1 align=1
+ base size=0 base align=1
+QStandardPaths (0x0x7f1d1ee99de0) 0 empty
+
+Class QState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QState::QPrivateSignal (0x0x7f1d1eb1c720) 0 empty
+
+Vtable for QState
+QState::_ZTV6QState: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QState)
+16 (int (*)(...))QState::metaObject
+24 (int (*)(...))QState::qt_metacast
+32 (int (*)(...))QState::qt_metacall
+40 (int (*)(...))QState::~QState
+48 (int (*)(...))QState::~QState
+56 (int (*)(...))QState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QState::onEntry
+120 (int (*)(...))QState::onExit
+
+Class QState
+ size=16 align=8
+ base size=16 base align=8
+QState (0x0x7f1d1ee98478) 0
+ vptr=((& QState::_ZTV6QState) + 16)
+ QAbstractState (0x0x7f1d1ee984e0) 0
+ primary-for QState (0x0x7f1d1ee98478)
+ QObject (0x0x7f1d1eb1c6c0) 0
+ primary-for QAbstractState (0x0x7f1d1ee984e0)
+
+Class QStateMachine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStateMachine::QPrivateSignal (0x0x7f1d1eb1cba0) 0 empty
+
+Vtable for QStateMachine::SignalEvent
+QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN13QStateMachine11SignalEventE)
+16 (int (*)(...))QStateMachine::SignalEvent::~SignalEvent
+24 (int (*)(...))QStateMachine::SignalEvent::~SignalEvent
+
+Class QStateMachine::SignalEvent
+ size=48 align=8
+ base size=48 base align=8
+QStateMachine::SignalEvent (0x0x7f1d1ee98680) 0
+ vptr=((& QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE) + 16)
+ QEvent (0x0x7f1d1eb1cc00) 0
+ primary-for QStateMachine::SignalEvent (0x0x7f1d1ee98680)
+
+Vtable for QStateMachine::WrappedEvent
+QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN13QStateMachine12WrappedEventE)
+16 (int (*)(...))QStateMachine::WrappedEvent::~WrappedEvent
+24 (int (*)(...))QStateMachine::WrappedEvent::~WrappedEvent
+
+Class QStateMachine::WrappedEvent
+ size=40 align=8
+ base size=40 base align=8
+QStateMachine::WrappedEvent (0x0x7f1d1ee986e8) 0
+ vptr=((& QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE) + 16)
+ QEvent (0x0x7f1d1eb1cc60) 0
+ primary-for QStateMachine::WrappedEvent (0x0x7f1d1ee986e8)
+
+Vtable for QStateMachine
+QStateMachine::_ZTV13QStateMachine: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QStateMachine)
+16 (int (*)(...))QStateMachine::metaObject
+24 (int (*)(...))QStateMachine::qt_metacast
+32 (int (*)(...))QStateMachine::qt_metacall
+40 (int (*)(...))QStateMachine::~QStateMachine
+48 (int (*)(...))QStateMachine::~QStateMachine
+56 (int (*)(...))QStateMachine::event
+64 (int (*)(...))QStateMachine::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QStateMachine::onEntry
+120 (int (*)(...))QStateMachine::onExit
+128 (int (*)(...))QStateMachine::beginSelectTransitions
+136 (int (*)(...))QStateMachine::endSelectTransitions
+144 (int (*)(...))QStateMachine::beginMicrostep
+152 (int (*)(...))QStateMachine::endMicrostep
+
+Class QStateMachine
+ size=16 align=8
+ base size=16 base align=8
+QStateMachine (0x0x7f1d1ee98548) 0
+ vptr=((& QStateMachine::_ZTV13QStateMachine) + 16)
+ QState (0x0x7f1d1ee985b0) 0
+ primary-for QStateMachine (0x0x7f1d1ee98548)
+ QAbstractState (0x0x7f1d1ee98618) 0
+ primary-for QState (0x0x7f1d1ee985b0)
+ QObject (0x0x7f1d1eb1cb40) 0
+ primary-for QAbstractState (0x0x7f1d1ee98618)
+
+Class QStorageInfo
+ size=8 align=8
+ base size=8 base align=8
+QStorageInfo (0x0x7f1d1eb71060) 0
+
+Class QAbstractConcatenable
+ size=1 align=1
+ base size=0 base align=1
+QAbstractConcatenable (0x0x7f1d1ec46de0) 0 empty
+
+Class QStringListModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStringListModel::QPrivateSignal (0x0x7f1d1e8fb180) 0 empty
+
+Vtable for QStringListModel
+QStringListModel::_ZTV16QStringListModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QStringListModel)
+16 (int (*)(...))QStringListModel::metaObject
+24 (int (*)(...))QStringListModel::qt_metacast
+32 (int (*)(...))QStringListModel::qt_metacall
+40 (int (*)(...))QStringListModel::~QStringListModel
+48 (int (*)(...))QStringListModel::~QStringListModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractListModel::index
+120 (int (*)(...))QAbstractListModel::parent
+128 (int (*)(...))QStringListModel::sibling
+136 (int (*)(...))QStringListModel::rowCount
+144 (int (*)(...))QAbstractListModel::columnCount
+152 (int (*)(...))QAbstractListModel::hasChildren
+160 (int (*)(...))QStringListModel::data
+168 (int (*)(...))QStringListModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QStringListModel::itemData
+200 (int (*)(...))QStringListModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractListModel::dropMimeData
+240 (int (*)(...))QStringListModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QStringListModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QStringListModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QStringListModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QStringListModel::flags
+328 (int (*)(...))QStringListModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QStringListModel
+ size=24 align=8
+ base size=24 base align=8
+QStringListModel (0x0x7f1d1e8fe000) 0
+ vptr=((& QStringListModel::_ZTV16QStringListModel) + 16)
+ QAbstractListModel (0x0x7f1d1e8fe068) 0
+ primary-for QStringListModel (0x0x7f1d1e8fe000)
+ QAbstractItemModel (0x0x7f1d1e8fe0d0) 0
+ primary-for QAbstractListModel (0x0x7f1d1e8fe068)
+ QObject (0x0x7f1d1e8fb120) 0
+ primary-for QAbstractItemModel (0x0x7f1d1e8fe0d0)
+
+Class QSystemSemaphore
+ size=8 align=8
+ base size=8 base align=8
+QSystemSemaphore (0x0x7f1d1e8fb2a0) 0
+
+Class QTemporaryDir
+ size=8 align=8
+ base size=8 base align=8
+QTemporaryDir (0x0x7f1d1e8fb360) 0
+
+Class QTemporaryFile::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTemporaryFile::QPrivateSignal (0x0x7f1d1e8fb480) 0 empty
+
+Vtable for QTemporaryFile
+QTemporaryFile::_ZTV14QTemporaryFile: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QTemporaryFile)
+16 (int (*)(...))QTemporaryFile::metaObject
+24 (int (*)(...))QTemporaryFile::qt_metacast
+32 (int (*)(...))QTemporaryFile::qt_metacall
+40 (int (*)(...))QTemporaryFile::~QTemporaryFile
+48 (int (*)(...))QTemporaryFile::~QTemporaryFile
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QTemporaryFile::open
+128 (int (*)(...))QFileDevice::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFile::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QFileDevice::writeData
+240 (int (*)(...))QTemporaryFile::fileName
+248 (int (*)(...))QFile::resize
+256 (int (*)(...))QFile::permissions
+264 (int (*)(...))QFile::setPermissions
+
+Class QTemporaryFile
+ size=16 align=8
+ base size=16 base align=8
+QTemporaryFile (0x0x7f1d1e8fe138) 0
+ vptr=((& QTemporaryFile::_ZTV14QTemporaryFile) + 16)
+ QFile (0x0x7f1d1e8fe1a0) 0
+ primary-for QTemporaryFile (0x0x7f1d1e8fe138)
+ QFileDevice (0x0x7f1d1e8fe208) 0
+ primary-for QFile (0x0x7f1d1e8fe1a0)
+ QIODevice (0x0x7f1d1e8fe270) 0
+ primary-for QFileDevice (0x0x7f1d1e8fe208)
+ QObject (0x0x7f1d1e8fb420) 0
+ primary-for QIODevice (0x0x7f1d1e8fe270)
+
+Class QTextBoundaryFinder
+ size=48 align=8
+ base size=48 base align=8
+QTextBoundaryFinder (0x0x7f1d1e8fb7e0) 0
+
+Class QTextCodec::ConverterState
+ size=32 align=8
+ base size=32 base align=8
+QTextCodec::ConverterState (0x0x7f1d1e972060) 0
+
+Vtable for QTextCodec
+QTextCodec::_ZTV10QTextCodec: 9 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTextCodec)
+16 (int (*)(...))__cxa_pure_virtual
+24 (int (*)(...))QTextCodec::aliases
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 0
+64 0
+
+Class QTextCodec
+ size=8 align=8
+ base size=8 base align=8
+QTextCodec (0x0x7f1d1e972000) 0 nearly-empty
+ vptr=((& QTextCodec::_ZTV10QTextCodec) + 16)
+
+Class QTextEncoder
+ size=40 align=8
+ base size=40 base align=8
+QTextEncoder (0x0x7f1d1e972a20) 0
+
+Class QTextDecoder
+ size=40 align=8
+ base size=40 base align=8
+QTextDecoder (0x0x7f1d1e972c00) 0
+
+Vtable for std::thread::_State
+std::thread::_State::_ZTVNSt6thread6_StateE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt6thread6_StateE)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class std::thread::_State
+ size=8 align=8
+ base size=8 base align=8
+std::thread::_State (0x0x7f1d1e972e40) 0 nearly-empty
+ vptr=((& std::thread::_State::_ZTVNSt6thread6_StateE) + 16)
+
+Class std::thread::id
+ size=8 align=8
+ base size=8 base align=8
+std::thread::id (0x0x7f1d1e972ea0) 0
+
+Class std::thread
+ size=8 align=8
+ base size=8 base align=8
+std::thread (0x0x7f1d1e972de0) 0
+
+Class std::condition_variable
+ size=48 align=8
+ base size=48 base align=8
+std::condition_variable (0x0x7f1d1e85e2a0) 0
+
+Class std::__at_thread_exit_elt
+ size=16 align=8
+ base size=16 base align=8
+std::__at_thread_exit_elt (0x0x7f1d1e85e660) 0
+
+Class std::_V2::condition_variable_any
+ size=64 align=8
+ base size=64 base align=8
+std::_V2::condition_variable_any (0x0x7f1d1e85e6c0) 0
+
+Class std::__atomic_futex_unsigned_base
+ size=1 align=1
+ base size=0 base align=1
+std::__atomic_futex_unsigned_base (0x0x7f1d1e5e99c0) 0 empty
+
+Vtable for std::future_error
+std::future_error::_ZTVSt12future_error: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12future_error)
+16 (int (*)(...))std::future_error::~future_error
+24 (int (*)(...))std::future_error::~future_error
+32 (int (*)(...))std::future_error::what
+
+Class std::future_error
+ size=32 align=8
+ base size=32 base align=8
+std::future_error (0x0x7f1d1e5ee618) 0
+ vptr=((& std::future_error::_ZTVSt12future_error) + 16)
+ std::logic_error (0x0x7f1d1e5ee680) 0
+ primary-for std::future_error (0x0x7f1d1e5ee618)
+ std::exception (0x0x7f1d1e617120) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f1d1e5ee680)
+
+Class std::__future_base::_Result_base::_Deleter
+ size=1 align=1
+ base size=0 base align=1
+std::__future_base::_Result_base::_Deleter (0x0x7f1d1e617840) 0 empty
+
+Vtable for std::__future_base::_Result_base
+std::__future_base::_Result_base::_ZTVNSt13__future_base12_Result_baseE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt13__future_base12_Result_baseE)
+16 (int (*)(...))__cxa_pure_virtual
+24 0
+32 0
+
+Class std::__future_base::_Result_base
+ size=16 align=8
+ base size=16 base align=8
+std::__future_base::_Result_base (0x0x7f1d1e6177e0) 0
+ vptr=((& std::__future_base::_Result_base::_ZTVNSt13__future_base12_Result_baseE) + 16)
+
+Class std::__future_base::_State_baseV2::__exception_ptr_tag
+ size=1 align=1
+ base size=0 base align=1
+std::__future_base::_State_baseV2::__exception_ptr_tag (0x0x7f1d1e3dff60) 0 empty
+
+Class std::__future_base::_State_baseV2::_Make_ready
+ size=32 align=8
+ base size=32 base align=8
+std::__future_base::_State_baseV2::_Make_ready (0x0x7f1d1e3e1ea0) 0
+ std::__at_thread_exit_elt (0x0x7f1d1e42e060) 0
+
+Vtable for std::__future_base::_State_baseV2
+std::__future_base::_State_baseV2::_ZTVNSt13__future_base13_State_baseV2E: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt13__future_base13_State_baseV2E)
+16 (int (*)(...))std::__future_base::_State_baseV2::~_State_baseV2
+24 (int (*)(...))std::__future_base::_State_baseV2::~_State_baseV2
+32 (int (*)(...))std::__future_base::_State_baseV2::_M_complete_async
+40 (int (*)(...))std::__future_base::_State_baseV2::_M_is_deferred_future
+
+Class std::__future_base::_State_baseV2
+ size=32 align=8
+ base size=28 base align=8
+std::__future_base::_State_baseV2 (0x0x7f1d1e6179c0) 0
+ vptr=((& std::__future_base::_State_baseV2::_ZTVNSt13__future_base13_State_baseV2E) + 16)
+
+Class std::__future_base
+ size=1 align=1
+ base size=0 base align=1
+std::__future_base (0x0x7f1d1e617780) 0 empty
+
+Vtable for std::__future_base::_Async_state_commonV2
+std::__future_base::_Async_state_commonV2::_ZTVNSt13__future_base21_Async_state_commonV2E: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt13__future_base21_Async_state_commonV2E)
+16 (int (*)(...))std::__future_base::_Async_state_commonV2::~_Async_state_commonV2
+24 (int (*)(...))std::__future_base::_Async_state_commonV2::~_Async_state_commonV2
+32 (int (*)(...))std::__future_base::_Async_state_commonV2::_M_complete_async
+40 (int (*)(...))std::__future_base::_State_baseV2::_M_is_deferred_future
+
+Class std::__future_base::_Async_state_commonV2
+ size=48 align=8
+ base size=44 base align=8
+std::__future_base::_Async_state_commonV2 (0x0x7f1d1db77bc8) 0
+ vptr=((& std::__future_base::_Async_state_commonV2::_ZTVNSt13__future_base21_Async_state_commonV2E) + 16)
+ std::__future_base::_State_baseV2 (0x0x7f1d1dbd2060) 0
+ primary-for std::__future_base::_Async_state_commonV2 (0x0x7f1d1db77bc8)
+
+Class QThread::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QThread::QPrivateSignal (0x0x7f1d1dbd2900) 0 empty
+
+Vtable for QThread
+QThread::_ZTV7QThread: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QThread)
+16 (int (*)(...))QThread::metaObject
+24 (int (*)(...))QThread::qt_metacast
+32 (int (*)(...))QThread::qt_metacall
+40 (int (*)(...))QThread::~QThread
+48 (int (*)(...))QThread::~QThread
+56 (int (*)(...))QThread::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QThread::run
+
+Class QThread
+ size=16 align=8
+ base size=16 base align=8
+QThread (0x0x7f1d1db77f08) 0
+ vptr=((& QThread::_ZTV7QThread) + 16)
+ QObject (0x0x7f1d1dbd28a0) 0
+ primary-for QThread (0x0x7f1d1db77f08)
+
+Class QThreadPool::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QThreadPool::QPrivateSignal (0x0x7f1d1dbd2cc0) 0 empty
+
+Vtable for QThreadPool
+QThreadPool::_ZTV11QThreadPool: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QThreadPool)
+16 (int (*)(...))QThreadPool::metaObject
+24 (int (*)(...))QThreadPool::qt_metacast
+32 (int (*)(...))QThreadPool::qt_metacall
+40 (int (*)(...))QThreadPool::~QThreadPool
+48 (int (*)(...))QThreadPool::~QThreadPool
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QThreadPool
+ size=16 align=8
+ base size=16 base align=8
+QThreadPool (0x0x7f1d1db77f70) 0
+ vptr=((& QThreadPool::_ZTV11QThreadPool) + 16)
+ QObject (0x0x7f1d1dbd2c60) 0
+ primary-for QThreadPool (0x0x7f1d1db77f70)
+
+Class QThreadStorageData
+ size=4 align=4
+ base size=4 base align=4
+QThreadStorageData (0x0x7f1d1dbd2ea0) 0
+
+Class QTimeLine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTimeLine::QPrivateSignal (0x0x7f1d1dc1a5a0) 0 empty
+
+Vtable for QTimeLine
+QTimeLine::_ZTV9QTimeLine: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QTimeLine)
+16 (int (*)(...))QTimeLine::metaObject
+24 (int (*)(...))QTimeLine::qt_metacast
+32 (int (*)(...))QTimeLine::qt_metacall
+40 (int (*)(...))QTimeLine::~QTimeLine
+48 (int (*)(...))QTimeLine::~QTimeLine
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QTimeLine::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTimeLine::valueForTime
+
+Class QTimeLine
+ size=16 align=8
+ base size=16 base align=8
+QTimeLine (0x0x7f1d1dc26000) 0
+ vptr=((& QTimeLine::_ZTV9QTimeLine) + 16)
+ QObject (0x0x7f1d1dc1a540) 0
+ primary-for QTimeLine (0x0x7f1d1dc26000)
+
+Class QTimer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTimer::QPrivateSignal (0x0x7f1d1dc1a7e0) 0 empty
+
+Vtable for QTimer
+QTimer::_ZTV6QTimer: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QTimer)
+16 (int (*)(...))QTimer::metaObject
+24 (int (*)(...))QTimer::qt_metacast
+32 (int (*)(...))QTimer::qt_metacall
+40 (int (*)(...))QTimer::~QTimer
+48 (int (*)(...))QTimer::~QTimer
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QTimer::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTimer
+ size=32 align=8
+ base size=29 base align=8
+QTimer (0x0x7f1d1dc26068) 0
+ vptr=((& QTimer::_ZTV6QTimer) + 16)
+ QObject (0x0x7f1d1dc1a780) 0
+ primary-for QTimer (0x0x7f1d1dc26068)
+
+Class QTimeZone::OffsetData
+ size=32 align=8
+ base size=28 base align=8
+QTimeZone::OffsetData (0x0x7f1d1dc85180) 0
+
+Class QTimeZone
+ size=8 align=8
+ base size=8 base align=8
+QTimeZone (0x0x7f1d1dc85120) 0
+
+Class QTranslator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTranslator::QPrivateSignal (0x0x7f1d1d91e240) 0 empty
+
+Vtable for QTranslator
+QTranslator::_ZTV11QTranslator: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTranslator)
+16 (int (*)(...))QTranslator::metaObject
+24 (int (*)(...))QTranslator::qt_metacast
+32 (int (*)(...))QTranslator::qt_metacall
+40 (int (*)(...))QTranslator::~QTranslator
+48 (int (*)(...))QTranslator::~QTranslator
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTranslator::translate
+120 (int (*)(...))QTranslator::isEmpty
+
+Class QTranslator
+ size=16 align=8
+ base size=16 base align=8
+QTranslator (0x0x7f1d1d917750) 0
+ vptr=((& QTranslator::_ZTV11QTranslator) + 16)
+ QObject (0x0x7f1d1d91e1e0) 0
+ primary-for QTranslator (0x0x7f1d1d917750)
+
+Class QTransposeProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTransposeProxyModel::QPrivateSignal (0x0x7f1d1d91e480) 0 empty
+
+Vtable for QTransposeProxyModel
+QTransposeProxyModel::_ZTV20QTransposeProxyModel: 53 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QTransposeProxyModel)
+16 (int (*)(...))QTransposeProxyModel::metaObject
+24 (int (*)(...))QTransposeProxyModel::qt_metacast
+32 (int (*)(...))QTransposeProxyModel::qt_metacall
+40 (int (*)(...))QTransposeProxyModel::~QTransposeProxyModel
+48 (int (*)(...))QTransposeProxyModel::~QTransposeProxyModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTransposeProxyModel::index
+120 (int (*)(...))QTransposeProxyModel::parent
+128 (int (*)(...))QAbstractProxyModel::sibling
+136 (int (*)(...))QTransposeProxyModel::rowCount
+144 (int (*)(...))QTransposeProxyModel::columnCount
+152 (int (*)(...))QAbstractProxyModel::hasChildren
+160 (int (*)(...))QAbstractProxyModel::data
+168 (int (*)(...))QAbstractProxyModel::setData
+176 (int (*)(...))QTransposeProxyModel::headerData
+184 (int (*)(...))QTransposeProxyModel::setHeaderData
+192 (int (*)(...))QTransposeProxyModel::itemData
+200 (int (*)(...))QTransposeProxyModel::setItemData
+208 (int (*)(...))QAbstractProxyModel::mimeTypes
+216 (int (*)(...))QAbstractProxyModel::mimeData
+224 (int (*)(...))QAbstractProxyModel::canDropMimeData
+232 (int (*)(...))QAbstractProxyModel::dropMimeData
+240 (int (*)(...))QAbstractProxyModel::supportedDropActions
+248 (int (*)(...))QAbstractProxyModel::supportedDragActions
+256 (int (*)(...))QTransposeProxyModel::insertRows
+264 (int (*)(...))QTransposeProxyModel::insertColumns
+272 (int (*)(...))QTransposeProxyModel::removeRows
+280 (int (*)(...))QTransposeProxyModel::removeColumns
+288 (int (*)(...))QTransposeProxyModel::moveRows
+296 (int (*)(...))QTransposeProxyModel::moveColumns
+304 (int (*)(...))QAbstractProxyModel::fetchMore
+312 (int (*)(...))QAbstractProxyModel::canFetchMore
+320 (int (*)(...))QAbstractProxyModel::flags
+328 (int (*)(...))QTransposeProxyModel::sort
+336 (int (*)(...))QAbstractProxyModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QTransposeProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractProxyModel::submit
+376 (int (*)(...))QAbstractProxyModel::revert
+384 (int (*)(...))QTransposeProxyModel::setSourceModel
+392 (int (*)(...))QTransposeProxyModel::mapToSource
+400 (int (*)(...))QTransposeProxyModel::mapFromSource
+408 (int (*)(...))QAbstractProxyModel::mapSelectionToSource
+416 (int (*)(...))QAbstractProxyModel::mapSelectionFromSource
+
+Class QTransposeProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QTransposeProxyModel (0x0x7f1d1d9177b8) 0
+ vptr=((& QTransposeProxyModel::_ZTV20QTransposeProxyModel) + 16)
+ QAbstractProxyModel (0x0x7f1d1d917820) 0
+ primary-for QTransposeProxyModel (0x0x7f1d1d9177b8)
+ QAbstractItemModel (0x0x7f1d1d917888) 0
+ primary-for QAbstractProxyModel (0x0x7f1d1d917820)
+ QObject (0x0x7f1d1d91e420) 0
+ primary-for QAbstractItemModel (0x0x7f1d1d917888)
+
+Class QUrlQuery
+ size=8 align=8
+ base size=8 base align=8
+QUrlQuery (0x0x7f1d1d91e660) 0
+
+Class QWaitCondition
+ size=8 align=8
+ base size=8 base align=8
+QWaitCondition (0x0x7f1d1da1bb40) 0
+
+Class QXmlStreamStringRef
+ size=16 align=8
+ base size=16 base align=8
+QXmlStreamStringRef (0x0x7f1d1da1bc60) 0
+
+Class QXmlStreamAttribute
+ size=80 align=8
+ base size=73 base align=8
+QXmlStreamAttribute (0x0x7f1d1d6ca060) 0
+
+Class QXmlStreamAttributes
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamAttributes (0x0x7f1d1d728b60) 0
+ QVector<QXmlStreamAttribute> (0x0x7f1d1d72e780) 0
+
+Class QXmlStreamNamespaceDeclaration
+ size=40 align=8
+ base size=40 base align=8
+QXmlStreamNamespaceDeclaration (0x0x7f1d1d72ea80) 0
+
+Class QXmlStreamNotationDeclaration
+ size=56 align=8
+ base size=56 base align=8
+QXmlStreamNotationDeclaration (0x0x7f1d1d7b2a20) 0
+
+Class QXmlStreamEntityDeclaration
+ size=88 align=8
+ base size=88 base align=8
+QXmlStreamEntityDeclaration (0x0x7f1d1d80ea20) 0
+
+Vtable for QXmlStreamEntityResolver
+QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QXmlStreamEntityResolver)
+16 (int (*)(...))QXmlStreamEntityResolver::~QXmlStreamEntityResolver
+24 (int (*)(...))QXmlStreamEntityResolver::~QXmlStreamEntityResolver
+32 (int (*)(...))QXmlStreamEntityResolver::resolveEntity
+40 (int (*)(...))QXmlStreamEntityResolver::resolveUndeclaredEntity
+
+Class QXmlStreamEntityResolver
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamEntityResolver (0x0x7f1d1d877ae0) 0 nearly-empty
+ vptr=((& QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver) + 16)
+
+Class QXmlStreamReader
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamReader (0x0x7f1d1d877b40) 0
+
+Class QXmlStreamWriter
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamWriter (0x0x7f1d1d4b6a20) 0
+
+Class QRgba64
+ size=8 align=8
+ base size=8 base align=8
+QRgba64 (0x0x7f1d1d50e060) 0
+
+Class QColor::CT
+ size=10 align=2
+ base size=10 base align=2
+QColor::CT (0x0x7f1d1d5a8120) 0
+
+Class QColor
+ size=16 align=4
+ base size=14 base align=4
+QColor (0x0x7f1d1d5a80c0) 0
+
+Class QRegion::QRegionData
+ size=16 align=8
+ base size=16 base align=8
+QRegion::QRegionData (0x0x7f1d1d324000) 0
+
+Class QRegion
+ size=8 align=8
+ base size=8 base align=8
+QRegion (0x0x7f1d1d655f60) 0
+
+Class QKeySequence
+ size=8 align=8
+ base size=8 base align=8
+QKeySequence (0x0x7f1d1d3d7c00) 0
+
+Class QVector2D
+ size=8 align=4
+ base size=8 base align=4
+QVector2D (0x0x7f1d1d0ca780) 0
+
+Class QTouchDevice
+ size=8 align=8
+ base size=8 base align=8
+QTouchDevice (0x0x7f1d1d133840) 0
+
+Vtable for QInputEvent
+QInputEvent::_ZTV11QInputEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QInputEvent)
+16 (int (*)(...))QInputEvent::~QInputEvent
+24 (int (*)(...))QInputEvent::~QInputEvent
+
+Class QInputEvent
+ size=32 align=8
+ base size=32 base align=8
+QInputEvent (0x0x7f1d1d124270) 0
+ vptr=((& QInputEvent::_ZTV11QInputEvent) + 16)
+ QEvent (0x0x7f1d1d17a120) 0
+ primary-for QInputEvent (0x0x7f1d1d124270)
+
+Vtable for QEnterEvent
+QEnterEvent::_ZTV11QEnterEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QEnterEvent)
+16 (int (*)(...))QEnterEvent::~QEnterEvent
+24 (int (*)(...))QEnterEvent::~QEnterEvent
+
+Class QEnterEvent
+ size=72 align=8
+ base size=72 base align=8
+QEnterEvent (0x0x7f1d1d1242d8) 0
+ vptr=((& QEnterEvent::_ZTV11QEnterEvent) + 16)
+ QEvent (0x0x7f1d1d17a300) 0
+ primary-for QEnterEvent (0x0x7f1d1d1242d8)
+
+Vtable for QMouseEvent
+QMouseEvent::_ZTV11QMouseEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QMouseEvent)
+16 (int (*)(...))QMouseEvent::~QMouseEvent
+24 (int (*)(...))QMouseEvent::~QMouseEvent
+
+Class QMouseEvent
+ size=104 align=8
+ base size=100 base align=8
+QMouseEvent (0x0x7f1d1d124340) 0
+ vptr=((& QMouseEvent::_ZTV11QMouseEvent) + 16)
+ QInputEvent (0x0x7f1d1d1243a8) 0
+ primary-for QMouseEvent (0x0x7f1d1d124340)
+ QEvent (0x0x7f1d1d17a6c0) 0
+ primary-for QInputEvent (0x0x7f1d1d1243a8)
+
+Vtable for QHoverEvent
+QHoverEvent::_ZTV11QHoverEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QHoverEvent)
+16 (int (*)(...))QHoverEvent::~QHoverEvent
+24 (int (*)(...))QHoverEvent::~QHoverEvent
+
+Class QHoverEvent
+ size=64 align=8
+ base size=64 base align=8
+QHoverEvent (0x0x7f1d1d124410) 0
+ vptr=((& QHoverEvent::_ZTV11QHoverEvent) + 16)
+ QInputEvent (0x0x7f1d1d124478) 0
+ primary-for QHoverEvent (0x0x7f1d1d124410)
+ QEvent (0x0x7f1d1d17aba0) 0
+ primary-for QInputEvent (0x0x7f1d1d124478)
+
+Vtable for QWheelEvent
+QWheelEvent::_ZTV11QWheelEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QWheelEvent)
+16 (int (*)(...))QWheelEvent::~QWheelEvent
+24 (int (*)(...))QWheelEvent::~QWheelEvent
+
+Class QWheelEvent
+ size=96 align=8
+ base size=96 base align=8
+QWheelEvent (0x0x7f1d1d1244e0) 0
+ vptr=((& QWheelEvent::_ZTV11QWheelEvent) + 16)
+ QInputEvent (0x0x7f1d1d124548) 0
+ primary-for QWheelEvent (0x0x7f1d1d1244e0)
+ QEvent (0x0x7f1d1d17ad80) 0
+ primary-for QInputEvent (0x0x7f1d1d124548)
+
+Vtable for QTabletEvent
+QTabletEvent::_ZTV12QTabletEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QTabletEvent)
+16 (int (*)(...))QTabletEvent::~QTabletEvent
+24 (int (*)(...))QTabletEvent::~QTabletEvent
+
+Class QTabletEvent
+ size=128 align=8
+ base size=128 base align=8
+QTabletEvent (0x0x7f1d1d1245b0) 0
+ vptr=((& QTabletEvent::_ZTV12QTabletEvent) + 16)
+ QInputEvent (0x0x7f1d1d124618) 0
+ primary-for QTabletEvent (0x0x7f1d1d1245b0)
+ QEvent (0x0x7f1d1d1cb4e0) 0
+ primary-for QInputEvent (0x0x7f1d1d124618)
+
+Vtable for QNativeGestureEvent
+QNativeGestureEvent::_ZTV19QNativeGestureEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QNativeGestureEvent)
+16 (int (*)(...))QNativeGestureEvent::~QNativeGestureEvent
+24 (int (*)(...))QNativeGestureEvent::~QNativeGestureEvent
+
+Class QNativeGestureEvent
+ size=112 align=8
+ base size=112 base align=8
+QNativeGestureEvent (0x0x7f1d1d124680) 0
+ vptr=((& QNativeGestureEvent::_ZTV19QNativeGestureEvent) + 16)
+ QInputEvent (0x0x7f1d1d1246e8) 0
+ primary-for QNativeGestureEvent (0x0x7f1d1d124680)
+ QEvent (0x0x7f1d1d1cbde0) 0
+ primary-for QInputEvent (0x0x7f1d1d1246e8)
+
+Vtable for QKeyEvent
+QKeyEvent::_ZTV9QKeyEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QKeyEvent)
+16 (int (*)(...))QKeyEvent::~QKeyEvent
+24 (int (*)(...))QKeyEvent::~QKeyEvent
+
+Class QKeyEvent
+ size=64 align=8
+ base size=59 base align=8
+QKeyEvent (0x0x7f1d1d124750) 0
+ vptr=((& QKeyEvent::_ZTV9QKeyEvent) + 16)
+ QInputEvent (0x0x7f1d1d1247b8) 0
+ primary-for QKeyEvent (0x0x7f1d1d124750)
+ QEvent (0x0x7f1d1d1fb120) 0
+ primary-for QInputEvent (0x0x7f1d1d1247b8)
+
+Vtable for QFocusEvent
+QFocusEvent::_ZTV11QFocusEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFocusEvent)
+16 (int (*)(...))QFocusEvent::~QFocusEvent
+24 (int (*)(...))QFocusEvent::~QFocusEvent
+
+Class QFocusEvent
+ size=24 align=8
+ base size=24 base align=8
+QFocusEvent (0x0x7f1d1d124820) 0
+ vptr=((& QFocusEvent::_ZTV11QFocusEvent) + 16)
+ QEvent (0x0x7f1d1d1fb420) 0
+ primary-for QFocusEvent (0x0x7f1d1d124820)
+
+Vtable for QPaintEvent
+QPaintEvent::_ZTV11QPaintEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QPaintEvent)
+16 (int (*)(...))QPaintEvent::~QPaintEvent
+24 (int (*)(...))QPaintEvent::~QPaintEvent
+
+Class QPaintEvent
+ size=56 align=8
+ base size=49 base align=8
+QPaintEvent (0x0x7f1d1d124888) 0
+ vptr=((& QPaintEvent::_ZTV11QPaintEvent) + 16)
+ QEvent (0x0x7f1d1d1fb540) 0
+ primary-for QPaintEvent (0x0x7f1d1d124888)
+
+Vtable for QMoveEvent
+QMoveEvent::_ZTV10QMoveEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QMoveEvent)
+16 (int (*)(...))QMoveEvent::~QMoveEvent
+24 (int (*)(...))QMoveEvent::~QMoveEvent
+
+Class QMoveEvent
+ size=40 align=8
+ base size=36 base align=8
+QMoveEvent (0x0x7f1d1d1248f0) 0
+ vptr=((& QMoveEvent::_ZTV10QMoveEvent) + 16)
+ QEvent (0x0x7f1d1d1fb660) 0
+ primary-for QMoveEvent (0x0x7f1d1d1248f0)
+
+Vtable for QExposeEvent
+QExposeEvent::_ZTV12QExposeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QExposeEvent)
+16 (int (*)(...))QExposeEvent::~QExposeEvent
+24 (int (*)(...))QExposeEvent::~QExposeEvent
+
+Class QExposeEvent
+ size=32 align=8
+ base size=32 base align=8
+QExposeEvent (0x0x7f1d1d124958) 0
+ vptr=((& QExposeEvent::_ZTV12QExposeEvent) + 16)
+ QEvent (0x0x7f1d1d1fb780) 0
+ primary-for QExposeEvent (0x0x7f1d1d124958)
+
+Vtable for QPlatformSurfaceEvent
+QPlatformSurfaceEvent::_ZTV21QPlatformSurfaceEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QPlatformSurfaceEvent)
+16 (int (*)(...))QPlatformSurfaceEvent::~QPlatformSurfaceEvent
+24 (int (*)(...))QPlatformSurfaceEvent::~QPlatformSurfaceEvent
+
+Class QPlatformSurfaceEvent
+ size=24 align=8
+ base size=24 base align=8
+QPlatformSurfaceEvent (0x0x7f1d1d1249c0) 0
+ vptr=((& QPlatformSurfaceEvent::_ZTV21QPlatformSurfaceEvent) + 16)
+ QEvent (0x0x7f1d1d1fb840) 0
+ primary-for QPlatformSurfaceEvent (0x0x7f1d1d1249c0)
+
+Vtable for QResizeEvent
+QResizeEvent::_ZTV12QResizeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QResizeEvent)
+16 (int (*)(...))QResizeEvent::~QResizeEvent
+24 (int (*)(...))QResizeEvent::~QResizeEvent
+
+Class QResizeEvent
+ size=40 align=8
+ base size=36 base align=8
+QResizeEvent (0x0x7f1d1d124a28) 0
+ vptr=((& QResizeEvent::_ZTV12QResizeEvent) + 16)
+ QEvent (0x0x7f1d1d1fb900) 0
+ primary-for QResizeEvent (0x0x7f1d1d124a28)
+
+Vtable for QCloseEvent
+QCloseEvent::_ZTV11QCloseEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QCloseEvent)
+16 (int (*)(...))QCloseEvent::~QCloseEvent
+24 (int (*)(...))QCloseEvent::~QCloseEvent
+
+Class QCloseEvent
+ size=24 align=8
+ base size=20 base align=8
+QCloseEvent (0x0x7f1d1d124a90) 0
+ vptr=((& QCloseEvent::_ZTV11QCloseEvent) + 16)
+ QEvent (0x0x7f1d1d1fba20) 0
+ primary-for QCloseEvent (0x0x7f1d1d124a90)
+
+Vtable for QIconDragEvent
+QIconDragEvent::_ZTV14QIconDragEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QIconDragEvent)
+16 (int (*)(...))QIconDragEvent::~QIconDragEvent
+24 (int (*)(...))QIconDragEvent::~QIconDragEvent
+
+Class QIconDragEvent
+ size=24 align=8
+ base size=20 base align=8
+QIconDragEvent (0x0x7f1d1d124af8) 0
+ vptr=((& QIconDragEvent::_ZTV14QIconDragEvent) + 16)
+ QEvent (0x0x7f1d1d1fba80) 0
+ primary-for QIconDragEvent (0x0x7f1d1d124af8)
+
+Vtable for QShowEvent
+QShowEvent::_ZTV10QShowEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QShowEvent)
+16 (int (*)(...))QShowEvent::~QShowEvent
+24 (int (*)(...))QShowEvent::~QShowEvent
+
+Class QShowEvent
+ size=24 align=8
+ base size=20 base align=8
+QShowEvent (0x0x7f1d1d124b60) 0
+ vptr=((& QShowEvent::_ZTV10QShowEvent) + 16)
+ QEvent (0x0x7f1d1d1fbae0) 0
+ primary-for QShowEvent (0x0x7f1d1d124b60)
+
+Vtable for QHideEvent
+QHideEvent::_ZTV10QHideEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QHideEvent)
+16 (int (*)(...))QHideEvent::~QHideEvent
+24 (int (*)(...))QHideEvent::~QHideEvent
+
+Class QHideEvent
+ size=24 align=8
+ base size=20 base align=8
+QHideEvent (0x0x7f1d1d124bc8) 0
+ vptr=((& QHideEvent::_ZTV10QHideEvent) + 16)
+ QEvent (0x0x7f1d1d1fbb40) 0
+ primary-for QHideEvent (0x0x7f1d1d124bc8)
+
+Vtable for QContextMenuEvent
+QContextMenuEvent::_ZTV17QContextMenuEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QContextMenuEvent)
+16 (int (*)(...))QContextMenuEvent::~QContextMenuEvent
+24 (int (*)(...))QContextMenuEvent::~QContextMenuEvent
+
+Class QContextMenuEvent
+ size=56 align=8
+ base size=49 base align=8
+QContextMenuEvent (0x0x7f1d1d124c30) 0
+ vptr=((& QContextMenuEvent::_ZTV17QContextMenuEvent) + 16)
+ QInputEvent (0x0x7f1d1d124c98) 0
+ primary-for QContextMenuEvent (0x0x7f1d1d124c30)
+ QEvent (0x0x7f1d1d1fbba0) 0
+ primary-for QInputEvent (0x0x7f1d1d124c98)
+
+Class QInputMethodEvent::Attribute
+ size=32 align=8
+ base size=32 base align=8
+QInputMethodEvent::Attribute (0x0x7f1d1d1fbf00) 0
+
+Vtable for QInputMethodEvent
+QInputMethodEvent::_ZTV17QInputMethodEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QInputMethodEvent)
+16 (int (*)(...))QInputMethodEvent::~QInputMethodEvent
+24 (int (*)(...))QInputMethodEvent::~QInputMethodEvent
+
+Class QInputMethodEvent
+ size=56 align=8
+ base size=56 base align=8
+QInputMethodEvent (0x0x7f1d1d124d00) 0
+ vptr=((& QInputMethodEvent::_ZTV17QInputMethodEvent) + 16)
+ QEvent (0x0x7f1d1d1fbea0) 0
+ primary-for QInputMethodEvent (0x0x7f1d1d124d00)
+
+Class QInputMethodQueryEvent::QueryPair
+ size=24 align=8
+ base size=24 base align=8
+QInputMethodQueryEvent::QueryPair (0x0x7f1d1cec42a0) 0
+
+Vtable for QInputMethodQueryEvent
+QInputMethodQueryEvent::_ZTV22QInputMethodQueryEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QInputMethodQueryEvent)
+16 (int (*)(...))QInputMethodQueryEvent::~QInputMethodQueryEvent
+24 (int (*)(...))QInputMethodQueryEvent::~QInputMethodQueryEvent
+
+Class QInputMethodQueryEvent
+ size=32 align=8
+ base size=32 base align=8
+QInputMethodQueryEvent (0x0x7f1d1ceaff08) 0
+ vptr=((& QInputMethodQueryEvent::_ZTV22QInputMethodQueryEvent) + 16)
+ QEvent (0x0x7f1d1cec4240) 0
+ primary-for QInputMethodQueryEvent (0x0x7f1d1ceaff08)
+
+Vtable for QDropEvent
+QDropEvent::_ZTV10QDropEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QDropEvent)
+16 (int (*)(...))QDropEvent::~QDropEvent
+24 (int (*)(...))QDropEvent::~QDropEvent
+
+Class QDropEvent
+ size=72 align=8
+ base size=72 base align=8
+QDropEvent (0x0x7f1d1cf3e000) 0
+ vptr=((& QDropEvent::_ZTV10QDropEvent) + 16)
+ QEvent (0x0x7f1d1cf3f000) 0
+ primary-for QDropEvent (0x0x7f1d1cf3e000)
+
+Vtable for QDragMoveEvent
+QDragMoveEvent::_ZTV14QDragMoveEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QDragMoveEvent)
+16 (int (*)(...))QDragMoveEvent::~QDragMoveEvent
+24 (int (*)(...))QDragMoveEvent::~QDragMoveEvent
+
+Class QDragMoveEvent
+ size=88 align=8
+ base size=88 base align=8
+QDragMoveEvent (0x0x7f1d1cf3e068) 0
+ vptr=((& QDragMoveEvent::_ZTV14QDragMoveEvent) + 16)
+ QDropEvent (0x0x7f1d1cf3e0d0) 0
+ primary-for QDragMoveEvent (0x0x7f1d1cf3e068)
+ QEvent (0x0x7f1d1cf3f3c0) 0
+ primary-for QDropEvent (0x0x7f1d1cf3e0d0)
+
+Vtable for QDragEnterEvent
+QDragEnterEvent::_ZTV15QDragEnterEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QDragEnterEvent)
+16 (int (*)(...))QDragEnterEvent::~QDragEnterEvent
+24 (int (*)(...))QDragEnterEvent::~QDragEnterEvent
+
+Class QDragEnterEvent
+ size=88 align=8
+ base size=88 base align=8
+QDragEnterEvent (0x0x7f1d1cf3e138) 0
+ vptr=((& QDragEnterEvent::_ZTV15QDragEnterEvent) + 16)
+ QDragMoveEvent (0x0x7f1d1cf3e1a0) 0
+ primary-for QDragEnterEvent (0x0x7f1d1cf3e138)
+ QDropEvent (0x0x7f1d1cf3e208) 0
+ primary-for QDragMoveEvent (0x0x7f1d1cf3e1a0)
+ QEvent (0x0x7f1d1cf3f600) 0
+ primary-for QDropEvent (0x0x7f1d1cf3e208)
+
+Vtable for QDragLeaveEvent
+QDragLeaveEvent::_ZTV15QDragLeaveEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QDragLeaveEvent)
+16 (int (*)(...))QDragLeaveEvent::~QDragLeaveEvent
+24 (int (*)(...))QDragLeaveEvent::~QDragLeaveEvent
+
+Class QDragLeaveEvent
+ size=24 align=8
+ base size=20 base align=8
+QDragLeaveEvent (0x0x7f1d1cf3e270) 0
+ vptr=((& QDragLeaveEvent::_ZTV15QDragLeaveEvent) + 16)
+ QEvent (0x0x7f1d1cf3f660) 0
+ primary-for QDragLeaveEvent (0x0x7f1d1cf3e270)
+
+Vtable for QHelpEvent
+QHelpEvent::_ZTV10QHelpEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QHelpEvent)
+16 (int (*)(...))QHelpEvent::~QHelpEvent
+24 (int (*)(...))QHelpEvent::~QHelpEvent
+
+Class QHelpEvent
+ size=40 align=8
+ base size=36 base align=8
+QHelpEvent (0x0x7f1d1cf3e2d8) 0
+ vptr=((& QHelpEvent::_ZTV10QHelpEvent) + 16)
+ QEvent (0x0x7f1d1cf3f6c0) 0
+ primary-for QHelpEvent (0x0x7f1d1cf3e2d8)
+
+Vtable for QStatusTipEvent
+QStatusTipEvent::_ZTV15QStatusTipEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QStatusTipEvent)
+16 (int (*)(...))QStatusTipEvent::~QStatusTipEvent
+24 (int (*)(...))QStatusTipEvent::~QStatusTipEvent
+
+Class QStatusTipEvent
+ size=32 align=8
+ base size=32 base align=8
+QStatusTipEvent (0x0x7f1d1cf3e340) 0
+ vptr=((& QStatusTipEvent::_ZTV15QStatusTipEvent) + 16)
+ QEvent (0x0x7f1d1cf3f960) 0
+ primary-for QStatusTipEvent (0x0x7f1d1cf3e340)
+
+Vtable for QWhatsThisClickedEvent
+QWhatsThisClickedEvent::_ZTV22QWhatsThisClickedEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QWhatsThisClickedEvent)
+16 (int (*)(...))QWhatsThisClickedEvent::~QWhatsThisClickedEvent
+24 (int (*)(...))QWhatsThisClickedEvent::~QWhatsThisClickedEvent
+
+Class QWhatsThisClickedEvent
+ size=32 align=8
+ base size=32 base align=8
+QWhatsThisClickedEvent (0x0x7f1d1cf3e3a8) 0
+ vptr=((& QWhatsThisClickedEvent::_ZTV22QWhatsThisClickedEvent) + 16)
+ QEvent (0x0x7f1d1cf3fa20) 0
+ primary-for QWhatsThisClickedEvent (0x0x7f1d1cf3e3a8)
+
+Vtable for QActionEvent
+QActionEvent::_ZTV12QActionEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QActionEvent)
+16 (int (*)(...))QActionEvent::~QActionEvent
+24 (int (*)(...))QActionEvent::~QActionEvent
+
+Class QActionEvent
+ size=40 align=8
+ base size=40 base align=8
+QActionEvent (0x0x7f1d1cf3e410) 0
+ vptr=((& QActionEvent::_ZTV12QActionEvent) + 16)
+ QEvent (0x0x7f1d1cf3fae0) 0
+ primary-for QActionEvent (0x0x7f1d1cf3e410)
+
+Vtable for QFileOpenEvent
+QFileOpenEvent::_ZTV14QFileOpenEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QFileOpenEvent)
+16 (int (*)(...))QFileOpenEvent::~QFileOpenEvent
+24 (int (*)(...))QFileOpenEvent::~QFileOpenEvent
+
+Class QFileOpenEvent
+ size=40 align=8
+ base size=40 base align=8
+QFileOpenEvent (0x0x7f1d1cf3e478) 0
+ vptr=((& QFileOpenEvent::_ZTV14QFileOpenEvent) + 16)
+ QEvent (0x0x7f1d1cf3fc00) 0
+ primary-for QFileOpenEvent (0x0x7f1d1cf3e478)
+
+Vtable for QToolBarChangeEvent
+QToolBarChangeEvent::_ZTV19QToolBarChangeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QToolBarChangeEvent)
+16 (int (*)(...))QToolBarChangeEvent::~QToolBarChangeEvent
+24 (int (*)(...))QToolBarChangeEvent::~QToolBarChangeEvent
+
+Class QToolBarChangeEvent
+ size=24 align=8
+ base size=21 base align=8
+QToolBarChangeEvent (0x0x7f1d1cf3e4e0) 0
+ vptr=((& QToolBarChangeEvent::_ZTV19QToolBarChangeEvent) + 16)
+ QEvent (0x0x7f1d1cf3fd20) 0
+ primary-for QToolBarChangeEvent (0x0x7f1d1cf3e4e0)
+
+Vtable for QShortcutEvent
+QShortcutEvent::_ZTV14QShortcutEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QShortcutEvent)
+16 (int (*)(...))QShortcutEvent::~QShortcutEvent
+24 (int (*)(...))QShortcutEvent::~QShortcutEvent
+
+Class QShortcutEvent
+ size=40 align=8
+ base size=40 base align=8
+QShortcutEvent (0x0x7f1d1cf3e548) 0
+ vptr=((& QShortcutEvent::_ZTV14QShortcutEvent) + 16)
+ QEvent (0x0x7f1d1cf3fde0) 0
+ primary-for QShortcutEvent (0x0x7f1d1cf3e548)
+
+Vtable for QWindowStateChangeEvent
+QWindowStateChangeEvent::_ZTV23QWindowStateChangeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QWindowStateChangeEvent)
+16 (int (*)(...))QWindowStateChangeEvent::~QWindowStateChangeEvent
+24 (int (*)(...))QWindowStateChangeEvent::~QWindowStateChangeEvent
+
+Class QWindowStateChangeEvent
+ size=32 align=8
+ base size=25 base align=8
+QWindowStateChangeEvent (0x0x7f1d1cf3e5b0) 0
+ vptr=((& QWindowStateChangeEvent::_ZTV23QWindowStateChangeEvent) + 16)
+ QEvent (0x0x7f1d1cf3ff60) 0
+ primary-for QWindowStateChangeEvent (0x0x7f1d1cf3e5b0)
+
+Class QPointingDeviceUniqueId
+ size=8 align=8
+ base size=8 base align=8
+QPointingDeviceUniqueId (0x0x7f1d1cf83120) 0
+
+Class QTouchEvent::TouchPoint
+ size=8 align=8
+ base size=8 base align=8
+QTouchEvent::TouchPoint (0x0x7f1d1cfcb4e0) 0
+
+Vtable for QTouchEvent
+QTouchEvent::_ZTV11QTouchEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTouchEvent)
+16 (int (*)(...))QTouchEvent::~QTouchEvent
+24 (int (*)(...))QTouchEvent::~QTouchEvent
+
+Class QTouchEvent
+ size=72 align=8
+ base size=72 base align=8
+QTouchEvent (0x0x7f1d1cfbfdd0) 0
+ vptr=((& QTouchEvent::_ZTV11QTouchEvent) + 16)
+ QInputEvent (0x0x7f1d1cfbfe38) 0
+ primary-for QTouchEvent (0x0x7f1d1cfbfdd0)
+ QEvent (0x0x7f1d1cfcb480) 0
+ primary-for QInputEvent (0x0x7f1d1cfbfe38)
+
+Vtable for QScrollPrepareEvent
+QScrollPrepareEvent::_ZTV19QScrollPrepareEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QScrollPrepareEvent)
+16 (int (*)(...))QScrollPrepareEvent::~QScrollPrepareEvent
+24 (int (*)(...))QScrollPrepareEvent::~QScrollPrepareEvent
+
+Class QScrollPrepareEvent
+ size=112 align=8
+ base size=112 base align=8
+QScrollPrepareEvent (0x0x7f1d1ccd7af8) 0
+ vptr=((& QScrollPrepareEvent::_ZTV19QScrollPrepareEvent) + 16)
+ QEvent (0x0x7f1d1ccdba80) 0
+ primary-for QScrollPrepareEvent (0x0x7f1d1ccd7af8)
+
+Vtable for QScrollEvent
+QScrollEvent::_ZTV12QScrollEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QScrollEvent)
+16 (int (*)(...))QScrollEvent::~QScrollEvent
+24 (int (*)(...))QScrollEvent::~QScrollEvent
+
+Class QScrollEvent
+ size=64 align=8
+ base size=60 base align=8
+QScrollEvent (0x0x7f1d1ccd7b60) 0
+ vptr=((& QScrollEvent::_ZTV12QScrollEvent) + 16)
+ QEvent (0x0x7f1d1ccdbae0) 0
+ primary-for QScrollEvent (0x0x7f1d1ccd7b60)
+
+Vtable for QScreenOrientationChangeEvent
+QScreenOrientationChangeEvent::_ZTV29QScreenOrientationChangeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI29QScreenOrientationChangeEvent)
+16 (int (*)(...))QScreenOrientationChangeEvent::~QScreenOrientationChangeEvent
+24 (int (*)(...))QScreenOrientationChangeEvent::~QScreenOrientationChangeEvent
+
+Class QScreenOrientationChangeEvent
+ size=40 align=8
+ base size=36 base align=8
+QScreenOrientationChangeEvent (0x0x7f1d1ccd7bc8) 0
+ vptr=((& QScreenOrientationChangeEvent::_ZTV29QScreenOrientationChangeEvent) + 16)
+ QEvent (0x0x7f1d1ccdbb40) 0
+ primary-for QScreenOrientationChangeEvent (0x0x7f1d1ccd7bc8)
+
+Vtable for QApplicationStateChangeEvent
+QApplicationStateChangeEvent::_ZTV28QApplicationStateChangeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI28QApplicationStateChangeEvent)
+16 (int (*)(...))QApplicationStateChangeEvent::~QApplicationStateChangeEvent
+24 (int (*)(...))QApplicationStateChangeEvent::~QApplicationStateChangeEvent
+
+Class QApplicationStateChangeEvent
+ size=24 align=8
+ base size=24 base align=8
+QApplicationStateChangeEvent (0x0x7f1d1ccd7c30) 0
+ vptr=((& QApplicationStateChangeEvent::_ZTV28QApplicationStateChangeEvent) + 16)
+ QEvent (0x0x7f1d1ccdbba0) 0
+ primary-for QApplicationStateChangeEvent (0x0x7f1d1ccd7c30)
+
+Class QFont
+ size=16 align=8
+ base size=12 base align=8
+QFont (0x0x7f1d1ccdbc00) 0
+
+Class QPolygon
+ size=8 align=8
+ base size=8 base align=8
+QPolygon (0x0x7f1d1ce390d0) 0
+ QVector<QPoint> (0x0x7f1d1ce08c60) 0
+
+Class QPolygonF
+ size=8 align=8
+ base size=8 base align=8
+QPolygonF (0x0x7f1d1cab7410) 0
+ QVector<QPointF> (0x0x7f1d1cab0d80) 0
+
+Class QMatrix
+ size=48 align=8
+ base size=48 base align=8
+QMatrix (0x0x7f1d1cb4dc60) 0
+
+Class QPainterPath::Element
+ size=24 align=8
+ base size=24 base align=8
+QPainterPath::Element (0x0x7f1d1cbbca80) 0
+
+Class QPainterPath
+ size=8 align=8
+ base size=8 base align=8
+QPainterPath (0x0x7f1d1cbbca20) 0
+
+Class QPainterPathStroker
+ size=8 align=8
+ base size=8 base align=8
+QPainterPathStroker (0x0x7f1d1c8f9de0) 0
+
+Class QTransform
+ size=88 align=8
+ base size=88 base align=8
+QTransform (0x0x7f1d1c9214e0) 0
+
+Vtable for QPaintDevice
+QPaintDevice::_ZTV12QPaintDevice: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QPaintDevice)
+16 0
+24 0
+32 (int (*)(...))QPaintDevice::devType
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))QPaintDevice::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QPaintDevice
+ size=24 align=8
+ base size=24 base align=8
+QPaintDevice (0x0x7f1d1c9a4f60) 0
+ vptr=((& QPaintDevice::_ZTV12QPaintDevice) + 16)
+
+Class QPixelFormat
+ size=8 align=8
+ base size=8 base align=8
+QPixelFormat (0x0x7f1d1c9fb5a0) 0
+
+Vtable for QImage
+QImage::_ZTV6QImage: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QImage)
+16 (int (*)(...))QImage::~QImage
+24 (int (*)(...))QImage::~QImage
+32 (int (*)(...))QImage::devType
+40 (int (*)(...))QImage::paintEngine
+48 (int (*)(...))QImage::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QImage
+ size=32 align=8
+ base size=32 base align=8
+QImage (0x0x7f1d1ca9d270) 0
+ vptr=((& QImage::_ZTV6QImage) + 16)
+ QPaintDevice (0x0x7f1d1ca91ea0) 0
+ primary-for QImage (0x0x7f1d1ca9d270)
+
+Vtable for QPixmap
+QPixmap::_ZTV7QPixmap: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QPixmap)
+16 (int (*)(...))QPixmap::~QPixmap
+24 (int (*)(...))QPixmap::~QPixmap
+32 (int (*)(...))QPixmap::devType
+40 (int (*)(...))QPixmap::paintEngine
+48 (int (*)(...))QPixmap::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QPixmap
+ size=32 align=8
+ base size=32 base align=8
+QPixmap (0x0x7f1d1c79dc98) 0
+ vptr=((& QPixmap::_ZTV7QPixmap) + 16)
+ QPaintDevice (0x0x7f1d1c7a6c60) 0
+ primary-for QPixmap (0x0x7f1d1c79dc98)
+
+Class QBrush
+ size=8 align=8
+ base size=8 base align=8
+QBrush (0x0x7f1d1c883f60) 0
+
+Class QBrushData
+ size=112 align=8
+ base size=112 base align=8
+QBrushData (0x0x7f1d1c5604e0) 0
+
+Class QGradient
+ size=64 align=8
+ base size=64 base align=8
+QGradient (0x0x7f1d1c560720) 0
+
+Class QLinearGradient
+ size=64 align=8
+ base size=64 base align=8
+QLinearGradient (0x0x7f1d1c55e680) 0
+ QGradient (0x0x7f1d1c560e40) 0
+
+Class QRadialGradient
+ size=64 align=8
+ base size=64 base align=8
+QRadialGradient (0x0x7f1d1c55e6e8) 0
+ QGradient (0x0x7f1d1c560f60) 0
+
+Class QConicalGradient
+ size=64 align=8
+ base size=64 base align=8
+QConicalGradient (0x0x7f1d1c55e750) 0
+ QGradient (0x0x7f1d1c5d30c0) 0
+
+Class QPen
+ size=8 align=8
+ base size=8 base align=8
+QPen (0x0x7f1d1c5d3180) 0
+
+Class QTextOption::Tab
+ size=16 align=8
+ base size=14 base align=8
+QTextOption::Tab (0x0x7f1d1c689ae0) 0
+
+Class QTextOption
+ size=32 align=8
+ base size=32 base align=8
+QTextOption (0x0x7f1d1c689a80) 0
+
+Class QTextLength
+ size=16 align=8
+ base size=16 base align=8
+QTextLength (0x0x7f1d1c2f5240) 0
+
+Class QTextFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextFormat (0x0x7f1d1c349ba0) 0
+
+Class QTextCharFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextCharFormat (0x0x7f1d1c0ba478) 0
+ QTextFormat (0x0x7f1d1c0e32a0) 0
+
+Class QTextBlockFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextBlockFormat (0x0x7f1d1c15b888) 0
+ QTextFormat (0x0x7f1d1c157c60) 0
+
+Class QTextListFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextListFormat (0x0x7f1d1c1b2dd0) 0
+ QTextFormat (0x0x7f1d1c1bea20) 0
+
+Class QTextImageFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextImageFormat (0x0x7f1d1c213208) 0
+ QTextCharFormat (0x0x7f1d1c213270) 0
+ QTextFormat (0x0x7f1d1c2171e0) 0
+
+Class QTextFrameFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextFrameFormat (0x0x7f1d1c2547b8) 0
+ QTextFormat (0x0x7f1d1c256840) 0
+
+Class QTextTableFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextTableFormat (0x0x7f1d1c2a6d00) 0
+ QTextFrameFormat (0x0x7f1d1c2a6d68) 0
+ QTextFormat (0x0x7f1d1beb8480) 0
+
+Class QTextTableCellFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextTableCellFormat (0x0x7f1d1bf142d8) 0
+ QTextCharFormat (0x0x7f1d1bf14340) 0
+ QTextFormat (0x0x7f1d1bf03de0) 0
+
+Class QFontDatabase
+ size=8 align=8
+ base size=8 base align=8
+QFontDatabase (0x0x7f1d1bf6fc60) 0
+
+Class QRawFont
+ size=8 align=8
+ base size=8 base align=8
+QRawFont (0x0x7f1d1bf6fe40) 0
+
+Class QGlyphRun
+ size=8 align=8
+ base size=8 base align=8
+QGlyphRun (0x0x7f1d1c081660) 0
+
+Class QTextCursor
+ size=8 align=8
+ base size=8 base align=8
+QTextCursor (0x0x7f1d1bd615a0) 0
+
+Class QTextInlineObject
+ size=16 align=8
+ base size=16 base align=8
+QTextInlineObject (0x0x7f1d1be3e240) 0
+
+Class QTextLayout::FormatRange
+ size=24 align=8
+ base size=24 base align=8
+QTextLayout::FormatRange (0x0x7f1d1be3e660) 0
+
+Class QTextLayout
+ size=8 align=8
+ base size=8 base align=8
+QTextLayout (0x0x7f1d1be3e600) 0
+
+Class QTextLine
+ size=16 align=8
+ base size=16 base align=8
+QTextLine (0x0x7f1d1bad3d20) 0
+
+Vtable for QAbstractUndoItem
+QAbstractUndoItem::_ZTV17QAbstractUndoItem: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAbstractUndoItem)
+16 (int (*)(...))__cxa_pure_virtual
+24 (int (*)(...))__cxa_pure_virtual
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractUndoItem
+ size=8 align=8
+ base size=8 base align=8
+QAbstractUndoItem (0x0x7f1d1bafc1e0) 0 nearly-empty
+ vptr=((& QAbstractUndoItem::_ZTV17QAbstractUndoItem) + 16)
+
+Class QTextDocument::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextDocument::QPrivateSignal (0x0x7f1d1bafc480) 0 empty
+
+Vtable for QTextDocument
+QTextDocument::_ZTV13QTextDocument: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QTextDocument)
+16 (int (*)(...))QTextDocument::metaObject
+24 (int (*)(...))QTextDocument::qt_metacast
+32 (int (*)(...))QTextDocument::qt_metacall
+40 (int (*)(...))QTextDocument::~QTextDocument
+48 (int (*)(...))QTextDocument::~QTextDocument
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTextDocument::clear
+120 (int (*)(...))QTextDocument::createObject
+128 (int (*)(...))QTextDocument::loadResource
+
+Class QTextDocument
+ size=16 align=8
+ base size=16 base align=8
+QTextDocument (0x0x7f1d1bae3af8) 0
+ vptr=((& QTextDocument::_ZTV13QTextDocument) + 16)
+ QObject (0x0x7f1d1bafc420) 0
+ primary-for QTextDocument (0x0x7f1d1bae3af8)
+
+Class QPalette::Data
+ size=4 align=4
+ base size=4 base align=4
+QPalette::Data (0x0x7f1d1bb6b480) 0
+
+Class QPalette
+ size=16 align=8
+ base size=12 base align=8
+QPalette (0x0x7f1d1bb6b420) 0
+
+Class QAbstractTextDocumentLayout::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractTextDocumentLayout::QPrivateSignal (0x0x7f1d1bc57840) 0 empty
+
+Class QAbstractTextDocumentLayout::Selection
+ size=24 align=8
+ base size=24 base align=8
+QAbstractTextDocumentLayout::Selection (0x0x7f1d1bc578a0) 0
+
+Class QAbstractTextDocumentLayout::PaintContext
+ size=64 align=8
+ base size=64 base align=8
+QAbstractTextDocumentLayout::PaintContext (0x0x7f1d1bc57900) 0
+
+Vtable for QAbstractTextDocumentLayout
+QAbstractTextDocumentLayout::_ZTV27QAbstractTextDocumentLayout: 24 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QAbstractTextDocumentLayout)
+16 (int (*)(...))QAbstractTextDocumentLayout::metaObject
+24 (int (*)(...))QAbstractTextDocumentLayout::qt_metacast
+32 (int (*)(...))QAbstractTextDocumentLayout::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))__cxa_pure_virtual
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QAbstractTextDocumentLayout::resizeInlineObject
+176 (int (*)(...))QAbstractTextDocumentLayout::positionInlineObject
+184 (int (*)(...))QAbstractTextDocumentLayout::drawInlineObject
+
+Class QAbstractTextDocumentLayout
+ size=16 align=8
+ base size=16 base align=8
+QAbstractTextDocumentLayout (0x0x7f1d1bc538f0) 0
+ vptr=((& QAbstractTextDocumentLayout::_ZTV27QAbstractTextDocumentLayout) + 16)
+ QObject (0x0x7f1d1bc577e0) 0
+ primary-for QAbstractTextDocumentLayout (0x0x7f1d1bc538f0)
+
+Vtable for QTextObjectInterface
+QTextObjectInterface::_ZTV20QTextObjectInterface: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QTextObjectInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QTextObjectInterface
+ size=8 align=8
+ base size=8 base align=8
+QTextObjectInterface (0x0x7f1d1b9274e0) 0 nearly-empty
+ vptr=((& QTextObjectInterface::_ZTV20QTextObjectInterface) + 16)
+
+Class QAccessible::State
+ size=8 align=8
+ base size=5 base align=8
+QAccessible::State (0x0x7f1d1b927720) 0
+
+Vtable for QAccessible::ActivationObserver
+QAccessible::ActivationObserver::_ZTVN11QAccessible18ActivationObserverE: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN11QAccessible18ActivationObserverE)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessible::ActivationObserver
+ size=8 align=8
+ base size=8 base align=8
+QAccessible::ActivationObserver (0x0x7f1d1b927780) 0 nearly-empty
+ vptr=((& QAccessible::ActivationObserver::_ZTVN11QAccessible18ActivationObserverE) + 16)
+
+Class QAccessible
+ size=1 align=1
+ base size=0 base align=1
+QAccessible (0x0x7f1d1b9276c0) 0 empty
+
+Vtable for QAccessibleInterface
+QAccessibleInterface::_ZTV20QAccessibleInterface: 23 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QAccessibleInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))QAccessibleInterface::window
+56 (int (*)(...))QAccessibleInterface::relations
+64 (int (*)(...))QAccessibleInterface::focusChild
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))__cxa_pure_virtual
+96 (int (*)(...))__cxa_pure_virtual
+104 (int (*)(...))__cxa_pure_virtual
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAccessibleInterface::foregroundColor
+160 (int (*)(...))QAccessibleInterface::backgroundColor
+168 (int (*)(...))QAccessibleInterface::virtual_hook
+176 (int (*)(...))QAccessibleInterface::interface_cast
+
+Class QAccessibleInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleInterface (0x0x7f1d1b97b360) 0 nearly-empty
+ vptr=((& QAccessibleInterface::_ZTV20QAccessibleInterface) + 16)
+
+Vtable for QAccessibleTextInterface
+QAccessibleTextInterface::_ZTV24QAccessibleTextInterface: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QAccessibleTextInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))__cxa_pure_virtual
+96 (int (*)(...))QAccessibleTextInterface::textBeforeOffset
+104 (int (*)(...))QAccessibleTextInterface::textAfterOffset
+112 (int (*)(...))QAccessibleTextInterface::textAtOffset
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleTextInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleTextInterface (0x0x7f1d1b97b6c0) 0 nearly-empty
+ vptr=((& QAccessibleTextInterface::_ZTV24QAccessibleTextInterface) + 16)
+
+Vtable for QAccessibleEditableTextInterface
+QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI32QAccessibleEditableTextInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleEditableTextInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleEditableTextInterface (0x0x7f1d1b97b720) 0 nearly-empty
+ vptr=((& QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface) + 16)
+
+Vtable for QAccessibleValueInterface
+QAccessibleValueInterface::_ZTV25QAccessibleValueInterface: 9 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QAccessibleValueInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleValueInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleValueInterface (0x0x7f1d1b97b780) 0 nearly-empty
+ vptr=((& QAccessibleValueInterface::_ZTV25QAccessibleValueInterface) + 16)
+
+Vtable for QAccessibleTableCellInterface
+QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface: 12 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI29QAccessibleTableCellInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleTableCellInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleTableCellInterface (0x0x7f1d1b97b7e0) 0 nearly-empty
+ vptr=((& QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface) + 16)
+
+Vtable for QAccessibleTableInterface
+QAccessibleTableInterface::_ZTV25QAccessibleTableInterface: 24 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QAccessibleTableInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))__cxa_pure_virtual
+96 (int (*)(...))__cxa_pure_virtual
+104 (int (*)(...))__cxa_pure_virtual
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))__cxa_pure_virtual
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))__cxa_pure_virtual
+176 (int (*)(...))__cxa_pure_virtual
+184 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleTableInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleTableInterface (0x0x7f1d1b97b840) 0 nearly-empty
+ vptr=((& QAccessibleTableInterface::_ZTV25QAccessibleTableInterface) + 16)
+
+Vtable for QAccessibleActionInterface
+QAccessibleActionInterface::_ZTV26QAccessibleActionInterface: 9 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAccessibleActionInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))QAccessibleActionInterface::localizedActionName
+48 (int (*)(...))QAccessibleActionInterface::localizedActionDescription
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleActionInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleActionInterface (0x0x7f1d1b97b8a0) 0 nearly-empty
+ vptr=((& QAccessibleActionInterface::_ZTV26QAccessibleActionInterface) + 16)
+
+Vtable for QAccessibleImageInterface
+QAccessibleImageInterface::_ZTV25QAccessibleImageInterface: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QAccessibleImageInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleImageInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleImageInterface (0x0x7f1d1b97b9c0) 0 nearly-empty
+ vptr=((& QAccessibleImageInterface::_ZTV25QAccessibleImageInterface) + 16)
+
+Vtable for QAccessibleEvent
+QAccessibleEvent::_ZTV16QAccessibleEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QAccessibleEvent)
+16 (int (*)(...))QAccessibleEvent::~QAccessibleEvent
+24 (int (*)(...))QAccessibleEvent::~QAccessibleEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleEvent
+ size=32 align=8
+ base size=28 base align=8
+QAccessibleEvent (0x0x7f1d1b97ba20) 0
+ vptr=((& QAccessibleEvent::_ZTV16QAccessibleEvent) + 16)
+
+Vtable for QAccessibleStateChangeEvent
+QAccessibleStateChangeEvent::_ZTV27QAccessibleStateChangeEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QAccessibleStateChangeEvent)
+16 (int (*)(...))QAccessibleStateChangeEvent::~QAccessibleStateChangeEvent
+24 (int (*)(...))QAccessibleStateChangeEvent::~QAccessibleStateChangeEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleStateChangeEvent
+ size=40 align=8
+ base size=40 base align=8
+QAccessibleStateChangeEvent (0x0x7f1d1b91ff08) 0
+ vptr=((& QAccessibleStateChangeEvent::_ZTV27QAccessibleStateChangeEvent) + 16)
+ QAccessibleEvent (0x0x7f1d1b9e7420) 0
+ primary-for QAccessibleStateChangeEvent (0x0x7f1d1b91ff08)
+
+Vtable for QAccessibleTextCursorEvent
+QAccessibleTextCursorEvent::_ZTV26QAccessibleTextCursorEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAccessibleTextCursorEvent)
+16 (int (*)(...))QAccessibleTextCursorEvent::~QAccessibleTextCursorEvent
+24 (int (*)(...))QAccessibleTextCursorEvent::~QAccessibleTextCursorEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleTextCursorEvent
+ size=32 align=8
+ base size=32 base align=8
+QAccessibleTextCursorEvent (0x0x7f1d1b91ff70) 0
+ vptr=((& QAccessibleTextCursorEvent::_ZTV26QAccessibleTextCursorEvent) + 16)
+ QAccessibleEvent (0x0x7f1d1b9e77e0) 0
+ primary-for QAccessibleTextCursorEvent (0x0x7f1d1b91ff70)
+
+Vtable for QAccessibleTextSelectionEvent
+QAccessibleTextSelectionEvent::_ZTV29QAccessibleTextSelectionEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI29QAccessibleTextSelectionEvent)
+16 (int (*)(...))QAccessibleTextSelectionEvent::~QAccessibleTextSelectionEvent
+24 (int (*)(...))QAccessibleTextSelectionEvent::~QAccessibleTextSelectionEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleTextSelectionEvent
+ size=40 align=8
+ base size=40 base align=8
+QAccessibleTextSelectionEvent (0x0x7f1d1ba29000) 0
+ vptr=((& QAccessibleTextSelectionEvent::_ZTV29QAccessibleTextSelectionEvent) + 16)
+ QAccessibleTextCursorEvent (0x0x7f1d1ba29068) 0
+ primary-for QAccessibleTextSelectionEvent (0x0x7f1d1ba29000)
+ QAccessibleEvent (0x0x7f1d1b9e7c00) 0
+ primary-for QAccessibleTextCursorEvent (0x0x7f1d1ba29068)
+
+Vtable for QAccessibleTextInsertEvent
+QAccessibleTextInsertEvent::_ZTV26QAccessibleTextInsertEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAccessibleTextInsertEvent)
+16 (int (*)(...))QAccessibleTextInsertEvent::~QAccessibleTextInsertEvent
+24 (int (*)(...))QAccessibleTextInsertEvent::~QAccessibleTextInsertEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleTextInsertEvent
+ size=48 align=8
+ base size=48 base align=8
+QAccessibleTextInsertEvent (0x0x7f1d1ba290d0) 0
+ vptr=((& QAccessibleTextInsertEvent::_ZTV26QAccessibleTextInsertEvent) + 16)
+ QAccessibleTextCursorEvent (0x0x7f1d1ba29138) 0
+ primary-for QAccessibleTextInsertEvent (0x0x7f1d1ba290d0)
+ QAccessibleEvent (0x0x7f1d1ba370c0) 0
+ primary-for QAccessibleTextCursorEvent (0x0x7f1d1ba29138)
+
+Vtable for QAccessibleTextRemoveEvent
+QAccessibleTextRemoveEvent::_ZTV26QAccessibleTextRemoveEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAccessibleTextRemoveEvent)
+16 (int (*)(...))QAccessibleTextRemoveEvent::~QAccessibleTextRemoveEvent
+24 (int (*)(...))QAccessibleTextRemoveEvent::~QAccessibleTextRemoveEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleTextRemoveEvent
+ size=48 align=8
+ base size=48 base align=8
+QAccessibleTextRemoveEvent (0x0x7f1d1ba291a0) 0
+ vptr=((& QAccessibleTextRemoveEvent::_ZTV26QAccessibleTextRemoveEvent) + 16)
+ QAccessibleTextCursorEvent (0x0x7f1d1ba29208) 0
+ primary-for QAccessibleTextRemoveEvent (0x0x7f1d1ba291a0)
+ QAccessibleEvent (0x0x7f1d1ba374e0) 0
+ primary-for QAccessibleTextCursorEvent (0x0x7f1d1ba29208)
+
+Vtable for QAccessibleTextUpdateEvent
+QAccessibleTextUpdateEvent::_ZTV26QAccessibleTextUpdateEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAccessibleTextUpdateEvent)
+16 (int (*)(...))QAccessibleTextUpdateEvent::~QAccessibleTextUpdateEvent
+24 (int (*)(...))QAccessibleTextUpdateEvent::~QAccessibleTextUpdateEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleTextUpdateEvent
+ size=56 align=8
+ base size=56 base align=8
+QAccessibleTextUpdateEvent (0x0x7f1d1ba29270) 0
+ vptr=((& QAccessibleTextUpdateEvent::_ZTV26QAccessibleTextUpdateEvent) + 16)
+ QAccessibleTextCursorEvent (0x0x7f1d1ba292d8) 0
+ primary-for QAccessibleTextUpdateEvent (0x0x7f1d1ba29270)
+ QAccessibleEvent (0x0x7f1d1ba37900) 0
+ primary-for QAccessibleTextCursorEvent (0x0x7f1d1ba292d8)
+
+Vtable for QAccessibleValueChangeEvent
+QAccessibleValueChangeEvent::_ZTV27QAccessibleValueChangeEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QAccessibleValueChangeEvent)
+16 (int (*)(...))QAccessibleValueChangeEvent::~QAccessibleValueChangeEvent
+24 (int (*)(...))QAccessibleValueChangeEvent::~QAccessibleValueChangeEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleValueChangeEvent
+ size=48 align=8
+ base size=48 base align=8
+QAccessibleValueChangeEvent (0x0x7f1d1ba29340) 0
+ vptr=((& QAccessibleValueChangeEvent::_ZTV27QAccessibleValueChangeEvent) + 16)
+ QAccessibleEvent (0x0x7f1d1ba37d80) 0
+ primary-for QAccessibleValueChangeEvent (0x0x7f1d1ba29340)
+
+Vtable for QAccessibleTableModelChangeEvent
+QAccessibleTableModelChangeEvent::_ZTV32QAccessibleTableModelChangeEvent: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI32QAccessibleTableModelChangeEvent)
+16 (int (*)(...))QAccessibleTableModelChangeEvent::~QAccessibleTableModelChangeEvent
+24 (int (*)(...))QAccessibleTableModelChangeEvent::~QAccessibleTableModelChangeEvent
+32 (int (*)(...))QAccessibleEvent::accessibleInterface
+
+Class QAccessibleTableModelChangeEvent
+ size=48 align=8
+ base size=48 base align=8
+QAccessibleTableModelChangeEvent (0x0x7f1d1ba293a8) 0
+ vptr=((& QAccessibleTableModelChangeEvent::_ZTV32QAccessibleTableModelChangeEvent) + 16)
+ QAccessibleEvent (0x0x7f1d1ba6c1e0) 0
+ primary-for QAccessibleTableModelChangeEvent (0x0x7f1d1ba293a8)
+
+Vtable for QAccessibleBridge
+QAccessibleBridge::_ZTV17QAccessibleBridge: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAccessibleBridge)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleBridge
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleBridge (0x0x7f1d1ba6ca80) 0 nearly-empty
+ vptr=((& QAccessibleBridge::_ZTV17QAccessibleBridge) + 16)
+
+Class QAccessibleBridgePlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAccessibleBridgePlugin::QPrivateSignal (0x0x7f1d1ba6cd20) 0 empty
+
+Vtable for QAccessibleBridgePlugin
+QAccessibleBridgePlugin::_ZTV23QAccessibleBridgePlugin: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QAccessibleBridgePlugin)
+16 (int (*)(...))QAccessibleBridgePlugin::metaObject
+24 (int (*)(...))QAccessibleBridgePlugin::qt_metacast
+32 (int (*)(...))QAccessibleBridgePlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessibleBridgePlugin
+ size=16 align=8
+ base size=16 base align=8
+QAccessibleBridgePlugin (0x0x7f1d1ba29410) 0
+ vptr=((& QAccessibleBridgePlugin::_ZTV23QAccessibleBridgePlugin) + 16)
+ QObject (0x0x7f1d1ba6ccc0) 0
+ primary-for QAccessibleBridgePlugin (0x0x7f1d1ba29410)
+
+Vtable for QAccessibleObject
+QAccessibleObject::_ZTV17QAccessibleObject: 23 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAccessibleObject)
+16 0
+24 0
+32 (int (*)(...))QAccessibleObject::isValid
+40 (int (*)(...))QAccessibleObject::object
+48 (int (*)(...))QAccessibleInterface::window
+56 (int (*)(...))QAccessibleInterface::relations
+64 (int (*)(...))QAccessibleInterface::focusChild
+72 (int (*)(...))QAccessibleObject::childAt
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))__cxa_pure_virtual
+96 (int (*)(...))__cxa_pure_virtual
+104 (int (*)(...))__cxa_pure_virtual
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))QAccessibleObject::setText
+128 (int (*)(...))QAccessibleObject::rect
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAccessibleInterface::foregroundColor
+160 (int (*)(...))QAccessibleInterface::backgroundColor
+168 (int (*)(...))QAccessibleInterface::virtual_hook
+176 (int (*)(...))QAccessibleInterface::interface_cast
+
+Class QAccessibleObject
+ size=16 align=8
+ base size=16 base align=8
+QAccessibleObject (0x0x7f1d1ba29478) 0
+ vptr=((& QAccessibleObject::_ZTV17QAccessibleObject) + 16)
+ QAccessibleInterface (0x0x7f1d1ba6ce40) 0 nearly-empty
+ primary-for QAccessibleObject (0x0x7f1d1ba29478)
+
+Vtable for QAccessibleApplication
+QAccessibleApplication::_ZTV22QAccessibleApplication: 23 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QAccessibleApplication)
+16 (int (*)(...))QAccessibleApplication::~QAccessibleApplication
+24 (int (*)(...))QAccessibleApplication::~QAccessibleApplication
+32 (int (*)(...))QAccessibleObject::isValid
+40 (int (*)(...))QAccessibleObject::object
+48 (int (*)(...))QAccessibleApplication::window
+56 (int (*)(...))QAccessibleInterface::relations
+64 (int (*)(...))QAccessibleApplication::focusChild
+72 (int (*)(...))QAccessibleObject::childAt
+80 (int (*)(...))QAccessibleApplication::parent
+88 (int (*)(...))QAccessibleApplication::child
+96 (int (*)(...))QAccessibleApplication::childCount
+104 (int (*)(...))QAccessibleApplication::indexOfChild
+112 (int (*)(...))QAccessibleApplication::text
+120 (int (*)(...))QAccessibleObject::setText
+128 (int (*)(...))QAccessibleObject::rect
+136 (int (*)(...))QAccessibleApplication::role
+144 (int (*)(...))QAccessibleApplication::state
+152 (int (*)(...))QAccessibleInterface::foregroundColor
+160 (int (*)(...))QAccessibleInterface::backgroundColor
+168 (int (*)(...))QAccessibleInterface::virtual_hook
+176 (int (*)(...))QAccessibleInterface::interface_cast
+
+Class QAccessibleApplication
+ size=16 align=8
+ base size=16 base align=8
+QAccessibleApplication (0x0x7f1d1ba294e0) 0
+ vptr=((& QAccessibleApplication::_ZTV22QAccessibleApplication) + 16)
+ QAccessibleObject (0x0x7f1d1ba29548) 0
+ primary-for QAccessibleApplication (0x0x7f1d1ba294e0)
+ QAccessibleInterface (0x0x7f1d1ba6cea0) 0 nearly-empty
+ primary-for QAccessibleObject (0x0x7f1d1ba29548)
+
+Class QAccessiblePlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAccessiblePlugin::QPrivateSignal (0x0x7f1d1ba6cf60) 0 empty
+
+Vtable for QAccessiblePlugin
+QAccessiblePlugin::_ZTV17QAccessiblePlugin: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAccessiblePlugin)
+16 (int (*)(...))QAccessiblePlugin::metaObject
+24 (int (*)(...))QAccessiblePlugin::qt_metacast
+32 (int (*)(...))QAccessiblePlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QAccessiblePlugin
+ size=16 align=8
+ base size=16 base align=8
+QAccessiblePlugin (0x0x7f1d1ba295b0) 0
+ vptr=((& QAccessiblePlugin::_ZTV17QAccessiblePlugin) + 16)
+ QObject (0x0x7f1d1ba6cf00) 0
+ primary-for QAccessiblePlugin (0x0x7f1d1ba295b0)
+
+Class QSurfaceFormat
+ size=8 align=8
+ base size=8 base align=8
+QSurfaceFormat (0x0x7f1d1baa90c0) 0
+
+Vtable for QSurface
+QSurface::_ZTV8QSurface: 8 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QSurface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+
+Class QSurface
+ size=24 align=8
+ base size=24 base align=8
+QSurface (0x0x7f1d1baa9c00) 0
+ vptr=((& QSurface::_ZTV8QSurface) + 16)
+
+Class QIcon
+ size=8 align=8
+ base size=8 base align=8
+QIcon (0x0x7f1d1b70b000) 0
+
+Class QCursor
+ size=8 align=8
+ base size=8 base align=8
+QCursor (0x0x7f1d1b7bdb40) 0
+
+Class QWindow::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QWindow::QPrivateSignal (0x0x7f1d1b888900) 0 empty
+
+Vtable for QWindow
+QWindow::_ZTV7QWindow: 45 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QWindow)
+16 (int (*)(...))QWindow::metaObject
+24 (int (*)(...))QWindow::qt_metacast
+32 (int (*)(...))QWindow::qt_metacall
+40 (int (*)(...))QWindow::~QWindow
+48 (int (*)(...))QWindow::~QWindow
+56 (int (*)(...))QWindow::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWindow::surfaceType
+120 (int (*)(...))QWindow::format
+128 (int (*)(...))QWindow::size
+136 (int (*)(...))QWindow::accessibleRoot
+144 (int (*)(...))QWindow::focusObject
+152 (int (*)(...))QWindow::exposeEvent
+160 (int (*)(...))QWindow::resizeEvent
+168 (int (*)(...))QWindow::moveEvent
+176 (int (*)(...))QWindow::focusInEvent
+184 (int (*)(...))QWindow::focusOutEvent
+192 (int (*)(...))QWindow::showEvent
+200 (int (*)(...))QWindow::hideEvent
+208 (int (*)(...))QWindow::keyPressEvent
+216 (int (*)(...))QWindow::keyReleaseEvent
+224 (int (*)(...))QWindow::mousePressEvent
+232 (int (*)(...))QWindow::mouseReleaseEvent
+240 (int (*)(...))QWindow::mouseDoubleClickEvent
+248 (int (*)(...))QWindow::mouseMoveEvent
+256 (int (*)(...))QWindow::wheelEvent
+264 (int (*)(...))QWindow::touchEvent
+272 (int (*)(...))QWindow::tabletEvent
+280 (int (*)(...))QWindow::nativeEvent
+288 (int (*)(...))QWindow::surfaceHandle
+296 (int (*)(...))-16
+304 (int (*)(...))(& _ZTI7QWindow)
+312 (int (*)(...))QWindow::_ZThn16_N7QWindowD1Ev
+320 (int (*)(...))QWindow::_ZThn16_N7QWindowD0Ev
+328 (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
+336 (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
+344 (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
+352 (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv
+
+Class QWindow
+ size=40 align=8
+ base size=40 base align=8
+QWindow (0x0x7f1d1b88a8c0) 0
+ vptr=((& QWindow::_ZTV7QWindow) + 16)
+ QObject (0x0x7f1d1b888840) 0
+ primary-for QWindow (0x0x7f1d1b88a8c0)
+ QSurface (0x0x7f1d1b8888a0) 16
+ vptr=((& QWindow::_ZTV7QWindow) + 312)
+
+Class QBackingStore
+ size=8 align=8
+ base size=8 base align=8
+QBackingStore (0x0x7f1d1b4db1e0) 0
+
+Vtable for QBitmap
+QBitmap::_ZTV7QBitmap: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QBitmap)
+16 (int (*)(...))QBitmap::~QBitmap
+24 (int (*)(...))QBitmap::~QBitmap
+32 (int (*)(...))QPixmap::devType
+40 (int (*)(...))QPixmap::paintEngine
+48 (int (*)(...))QPixmap::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QBitmap
+ size=32 align=8
+ base size=32 base align=8
+QBitmap (0x0x7f1d1b887888) 0
+ vptr=((& QBitmap::_ZTV7QBitmap) + 16)
+ QPixmap (0x0x7f1d1b8878f0) 0
+ primary-for QBitmap (0x0x7f1d1b887888)
+ QPaintDevice (0x0x7f1d1b4db2a0) 0
+ primary-for QPixmap (0x0x7f1d1b8878f0)
+
+Class QClipboard::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QClipboard::QPrivateSignal (0x0x7f1d2c6107e0) 0 empty
+
+Vtable for QClipboard
+QClipboard::_ZTV10QClipboard: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QClipboard)
+16 (int (*)(...))QClipboard::metaObject
+24 (int (*)(...))QClipboard::qt_metacast
+32 (int (*)(...))QClipboard::qt_metacall
+40 (int (*)(...))QClipboard::~QClipboard
+48 (int (*)(...))QClipboard::~QClipboard
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QClipboard
+ size=16 align=8
+ base size=16 base align=8
+QClipboard (0x0x7f1d1de0b068) 0
+ vptr=((& QClipboard::_ZTV10QClipboard) + 16)
+ QObject (0x0x7f1d2ca3bea0) 0
+ primary-for QClipboard (0x0x7f1d1de0b068)
+
+Class QColorTransform
+ size=8 align=8
+ base size=8 base align=8
+QColorTransform (0x0x7f1d2b5dee40) 0
+
+Class QColorSpace
+ size=8 align=8
+ base size=8 base align=8
+QColorSpace (0x0x7f1d24cd3ea0) 0
+
+Class QDesktopServices
+ size=1 align=1
+ base size=0 base align=1
+QDesktopServices (0x0x7f1d22ff7420) 0 empty
+
+Class QDrag::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDrag::QPrivateSignal (0x0x7f1d22ff7540) 0 empty
+
+Vtable for QDrag
+QDrag::_ZTV5QDrag: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI5QDrag)
+16 (int (*)(...))QDrag::metaObject
+24 (int (*)(...))QDrag::qt_metacast
+32 (int (*)(...))QDrag::qt_metacall
+40 (int (*)(...))QDrag::~QDrag
+48 (int (*)(...))QDrag::~QDrag
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QDrag
+ size=16 align=8
+ base size=16 base align=8
+QDrag (0x0x7f1d21d8e8f0) 0
+ vptr=((& QDrag::_ZTV5QDrag) + 16)
+ QObject (0x0x7f1d22ff7480) 0
+ primary-for QDrag (0x0x7f1d21d8e8f0)
+
+Class QFontInfo
+ size=8 align=8
+ base size=8 base align=8
+QFontInfo (0x0x7f1d22ce8660) 0
+
+Class QFontMetrics
+ size=8 align=8
+ base size=8 base align=8
+QFontMetrics (0x0x7f1d22984f00) 0
+
+Class QFontMetricsF
+ size=8 align=8
+ base size=8 base align=8
+QFontMetricsF (0x0x7f1d21f4c240) 0
+
+Class QGenericPlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGenericPlugin::QPrivateSignal (0x0x7f1d20fb7300) 0 empty
+
+Vtable for QGenericPlugin
+QGenericPlugin::_ZTV14QGenericPlugin: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QGenericPlugin)
+16 (int (*)(...))QGenericPlugin::metaObject
+24 (int (*)(...))QGenericPlugin::qt_metacast
+32 (int (*)(...))QGenericPlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QGenericPlugin
+ size=16 align=8
+ base size=16 base align=8
+QGenericPlugin (0x0x7f1d209cd0d0) 0
+ vptr=((& QGenericPlugin::_ZTV14QGenericPlugin) + 16)
+ QObject (0x0x7f1d20fb71e0) 0
+ primary-for QGenericPlugin (0x0x7f1d209cd0d0)
+
+Class QGenericPluginFactory
+ size=1 align=1
+ base size=0 base align=1
+QGenericPluginFactory (0x0x7f1d20fb7600) 0 empty
+
+Class QInputMethod::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QInputMethod::QPrivateSignal (0x0x7f1d20fb7de0) 0 empty
+
+Vtable for QInputMethod
+QInputMethod::_ZTV12QInputMethod: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QInputMethod)
+16 (int (*)(...))QInputMethod::metaObject
+24 (int (*)(...))QInputMethod::qt_metacast
+32 (int (*)(...))QInputMethod::qt_metacall
+40 (int (*)(...))QInputMethod::~QInputMethod
+48 (int (*)(...))QInputMethod::~QInputMethod
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QInputMethod
+ size=16 align=8
+ base size=16 base align=8
+QInputMethod (0x0x7f1d209cd270) 0
+ vptr=((& QInputMethod::_ZTV12QInputMethod) + 16)
+ QObject (0x0x7f1d20fb7d80) 0
+ primary-for QInputMethod (0x0x7f1d209cd270)
+
+Class QGuiApplication::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGuiApplication::QPrivateSignal (0x0x7f1d2102d060) 0 empty
+
+Vtable for QGuiApplication
+QGuiApplication::_ZTV15QGuiApplication: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QGuiApplication)
+16 (int (*)(...))QGuiApplication::metaObject
+24 (int (*)(...))QGuiApplication::qt_metacast
+32 (int (*)(...))QGuiApplication::qt_metacall
+40 (int (*)(...))QGuiApplication::~QGuiApplication
+48 (int (*)(...))QGuiApplication::~QGuiApplication
+56 (int (*)(...))QGuiApplication::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGuiApplication::notify
+120 (int (*)(...))QGuiApplication::compressEvent
+
+Class QGuiApplication
+ size=16 align=8
+ base size=16 base align=8
+QGuiApplication (0x0x7f1d209cd478) 0
+ vptr=((& QGuiApplication::_ZTV15QGuiApplication) + 16)
+ QCoreApplication (0x0x7f1d209cd6e8) 0
+ primary-for QGuiApplication (0x0x7f1d209cd478)
+ QObject (0x0x7f1d20ff6f60) 0
+ primary-for QCoreApplication (0x0x7f1d209cd6e8)
+
+Class QIconEngine::AvailableSizesArgument
+ size=16 align=8
+ base size=16 base align=8
+QIconEngine::AvailableSizesArgument (0x0x7f1d2109b840) 0
+
+Class QIconEngine::ScaledPixmapArgument
+ size=56 align=8
+ base size=56 base align=8
+QIconEngine::ScaledPixmapArgument (0x0x7f1d20db7480) 0
+
+Vtable for QIconEngine
+QIconEngine::_ZTV11QIconEngine: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QIconEngine)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))QIconEngine::actualSize
+48 (int (*)(...))QIconEngine::pixmap
+56 (int (*)(...))QIconEngine::addPixmap
+64 (int (*)(...))QIconEngine::addFile
+72 (int (*)(...))QIconEngine::key
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))QIconEngine::read
+96 (int (*)(...))QIconEngine::write
+104 (int (*)(...))QIconEngine::availableSizes
+112 (int (*)(...))QIconEngine::iconName
+120 (int (*)(...))QIconEngine::virtual_hook
+
+Class QIconEngine
+ size=8 align=8
+ base size=8 base align=8
+QIconEngine (0x0x7f1d2109b3c0) 0 nearly-empty
+ vptr=((& QIconEngine::_ZTV11QIconEngine) + 16)
+
+Class QIconEnginePlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QIconEnginePlugin::QPrivateSignal (0x0x7f1d20db7ae0) 0 empty
+
+Vtable for QIconEnginePlugin
+QIconEnginePlugin::_ZTV17QIconEnginePlugin: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QIconEnginePlugin)
+16 (int (*)(...))QIconEnginePlugin::metaObject
+24 (int (*)(...))QIconEnginePlugin::qt_metacast
+32 (int (*)(...))QIconEnginePlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QIconEnginePlugin
+ size=16 align=8
+ base size=16 base align=8
+QIconEnginePlugin (0x0x7f1d20812000) 0
+ vptr=((& QIconEnginePlugin::_ZTV17QIconEnginePlugin) + 16)
+ QObject (0x0x7f1d20db74e0) 0
+ primary-for QIconEnginePlugin (0x0x7f1d20812000)
+
+Vtable for QImageIOHandler
+QImageIOHandler::_ZTV15QImageIOHandler: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QImageIOHandler)
+16 0
+24 0
+32 (int (*)(...))QImageIOHandler::name
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))QImageIOHandler::write
+64 (int (*)(...))QImageIOHandler::option
+72 (int (*)(...))QImageIOHandler::setOption
+80 (int (*)(...))QImageIOHandler::supportsOption
+88 (int (*)(...))QImageIOHandler::jumpToNextImage
+96 (int (*)(...))QImageIOHandler::jumpToImage
+104 (int (*)(...))QImageIOHandler::loopCount
+112 (int (*)(...))QImageIOHandler::imageCount
+120 (int (*)(...))QImageIOHandler::nextImageDelay
+128 (int (*)(...))QImageIOHandler::currentImageNumber
+136 (int (*)(...))QImageIOHandler::currentImageRect
+
+Class QImageIOHandler
+ size=16 align=8
+ base size=16 base align=8
+QImageIOHandler (0x0x7f1d20dd8120) 0
+ vptr=((& QImageIOHandler::_ZTV15QImageIOHandler) + 16)
+
+Class QImageIOPlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QImageIOPlugin::QPrivateSignal (0x0x7f1d20ab4660) 0 empty
+
+Vtable for QImageIOPlugin
+QImageIOPlugin::_ZTV14QImageIOPlugin: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QImageIOPlugin)
+16 (int (*)(...))QImageIOPlugin::metaObject
+24 (int (*)(...))QImageIOPlugin::qt_metacast
+32 (int (*)(...))QImageIOPlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QImageIOPlugin
+ size=16 align=8
+ base size=16 base align=8
+QImageIOPlugin (0x0x7f1d208121a0) 0
+ vptr=((& QImageIOPlugin::_ZTV14QImageIOPlugin) + 16)
+ QObject (0x0x7f1d20ab45a0) 0
+ primary-for QImageIOPlugin (0x0x7f1d208121a0)
+
+Class QImageReader
+ size=8 align=8
+ base size=8 base align=8
+QImageReader (0x0x7f1d20ba78a0) 0
+
+Class QImageWriter
+ size=8 align=8
+ base size=8 base align=8
+QImageWriter (0x0x7f1d20ba7ba0) 0
+
+Class QVector3D
+ size=12 align=4
+ base size=12 base align=4
+QVector3D (0x0x7f1d20bc1540) 0
+
+Class QVector4D
+ size=16 align=4
+ base size=16 base align=4
+QVector4D (0x0x7f1d203d6360) 0
+
+Class QQuaternion
+ size=16 align=4
+ base size=16 base align=4
+QQuaternion (0x0x7f1d1fb981e0) 0
+
+Class QMatrix4x4
+ size=68 align=4
+ base size=68 base align=4
+QMatrix4x4 (0x0x7f1d1ee32ae0) 0
+
+Class QMovie::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMovie::QPrivateSignal (0x0x7f1d1de297e0) 0 empty
+
+Vtable for QMovie
+QMovie::_ZTV6QMovie: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QMovie)
+16 (int (*)(...))QMovie::metaObject
+24 (int (*)(...))QMovie::qt_metacast
+32 (int (*)(...))QMovie::qt_metacall
+40 (int (*)(...))QMovie::~QMovie
+48 (int (*)(...))QMovie::~QMovie
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QMovie
+ size=16 align=8
+ base size=16 base align=8
+QMovie (0x0x7f1d1def9f08) 0
+ vptr=((& QMovie::_ZTV6QMovie) + 16)
+ QObject (0x0x7f1d1de29780) 0
+ primary-for QMovie (0x0x7f1d1def9f08)
+
+Class QOffscreenSurface::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOffscreenSurface::QPrivateSignal (0x0x7f1d1dad7720) 0 empty
+
+Vtable for QOffscreenSurface
+QOffscreenSurface::_ZTV17QOffscreenSurface: 26 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QOffscreenSurface)
+16 (int (*)(...))QOffscreenSurface::metaObject
+24 (int (*)(...))QOffscreenSurface::qt_metacast
+32 (int (*)(...))QOffscreenSurface::qt_metacall
+40 (int (*)(...))QOffscreenSurface::~QOffscreenSurface
+48 (int (*)(...))QOffscreenSurface::~QOffscreenSurface
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QOffscreenSurface::surfaceType
+120 (int (*)(...))QOffscreenSurface::format
+128 (int (*)(...))QOffscreenSurface::size
+136 (int (*)(...))QOffscreenSurface::surfaceHandle
+144 (int (*)(...))-16
+152 (int (*)(...))(& _ZTI17QOffscreenSurface)
+160 (int (*)(...))QOffscreenSurface::_ZThn16_N17QOffscreenSurfaceD1Ev
+168 (int (*)(...))QOffscreenSurface::_ZThn16_N17QOffscreenSurfaceD0Ev
+176 (int (*)(...))QOffscreenSurface::_ZThn16_NK17QOffscreenSurface6formatEv
+184 (int (*)(...))QOffscreenSurface::_ZThn16_NK17QOffscreenSurface13surfaceHandleEv
+192 (int (*)(...))QOffscreenSurface::_ZThn16_NK17QOffscreenSurface11surfaceTypeEv
+200 (int (*)(...))QOffscreenSurface::_ZThn16_NK17QOffscreenSurface4sizeEv
+
+Class QOffscreenSurface
+ size=40 align=8
+ base size=40 base align=8
+QOffscreenSurface (0x0x7f1d268e68c0) 0
+ vptr=((& QOffscreenSurface::_ZTV17QOffscreenSurface) + 16)
+ QObject (0x0x7f1d1daaef00) 0
+ primary-for QOffscreenSurface (0x0x7f1d268e68c0)
+ QSurface (0x0x7f1d1dad76c0) 16
+ vptr=((& QOffscreenSurface::_ZTV17QOffscreenSurface) + 160)
+
+Class QOpenGLBuffer
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLBuffer (0x0x7f1d1db0aa80) 0
+
+Class QOpenGLVersionStatus
+ size=12 align=4
+ base size=12 base align=4
+QOpenGLVersionStatus (0x0x7f1d1d9ff0c0) 0
+
+Class QOpenGLVersionFunctionsBackend
+ size=16 align=8
+ base size=12 base align=8
+QOpenGLVersionFunctionsBackend (0x0x7f1d1d324c60) 0
+
+Class QOpenGLVersionFunctionsStorage
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLVersionFunctionsStorage (0x0x7f1d1d34bea0) 0
+
+Class QAbstractOpenGLFunctionsPrivate
+ size=16 align=8
+ base size=9 base align=8
+QAbstractOpenGLFunctionsPrivate (0x0x7f1d1d36b8a0) 0
+
+Vtable for QAbstractOpenGLFunctions
+QAbstractOpenGLFunctions::_ZTV24QAbstractOpenGLFunctions: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QAbstractOpenGLFunctions)
+16 (int (*)(...))QAbstractOpenGLFunctions::~QAbstractOpenGLFunctions
+24 (int (*)(...))QAbstractOpenGLFunctions::~QAbstractOpenGLFunctions
+32 (int (*)(...))QAbstractOpenGLFunctions::initializeOpenGLFunctions
+
+Class QAbstractOpenGLFunctions
+ size=16 align=8
+ base size=16 base align=8
+QAbstractOpenGLFunctions (0x0x7f1d1d390720) 0
+ vptr=((& QAbstractOpenGLFunctions::_ZTV24QAbstractOpenGLFunctions) + 16)
+
+Class QOpenGLFunctions_1_0_CoreBackend::Functions
+ size=384 align=8
+ base size=384 base align=8
+QOpenGLFunctions_1_0_CoreBackend::Functions (0x0x7f1d1d3ba3c0) 0
+
+Class QOpenGLFunctions_1_0_CoreBackend
+ size=400 align=8
+ base size=400 base align=8
+QOpenGLFunctions_1_0_CoreBackend (0x0x7f1d1d9171a0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1d3ba180) 0
+
+Class QOpenGLFunctions_1_1_CoreBackend::Functions
+ size=128 align=8
+ base size=128 base align=8
+QOpenGLFunctions_1_1_CoreBackend::Functions (0x0x7f1d1d3d7960) 0
+
+Class QOpenGLFunctions_1_1_CoreBackend
+ size=144 align=8
+ base size=144 base align=8
+QOpenGLFunctions_1_1_CoreBackend (0x0x7f1d1d9d4d68) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1d3d7540) 0
+
+Class QOpenGLFunctions_1_2_CoreBackend::Functions
+ size=48 align=8
+ base size=48 base align=8
+QOpenGLFunctions_1_2_CoreBackend::Functions (0x0x7f1d1d439420) 0
+
+Class QOpenGLFunctions_1_2_CoreBackend
+ size=64 align=8
+ base size=64 base align=8
+QOpenGLFunctions_1_2_CoreBackend (0x0x7f1d1d9d4dd0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1d4393c0) 0
+
+Class QOpenGLFunctions_1_3_CoreBackend::Functions
+ size=72 align=8
+ base size=72 base align=8
+QOpenGLFunctions_1_3_CoreBackend::Functions (0x0x7f1d1d455660) 0
+
+Class QOpenGLFunctions_1_3_CoreBackend
+ size=88 align=8
+ base size=88 base align=8
+QOpenGLFunctions_1_3_CoreBackend (0x0x7f1d1d9d4f08) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1d4555a0) 0
+
+Class QOpenGLFunctions_1_4_CoreBackend::Functions
+ size=56 align=8
+ base size=56 base align=8
+QOpenGLFunctions_1_4_CoreBackend::Functions (0x0x7f1d1d4ab3c0) 0
+
+Class QOpenGLFunctions_1_4_CoreBackend
+ size=72 align=8
+ base size=72 base align=8
+QOpenGLFunctions_1_4_CoreBackend (0x0x7f1d1d9eb0d0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1d4ab360) 0
+
+Class QOpenGLFunctions_1_5_CoreBackend::Functions
+ size=152 align=8
+ base size=152 base align=8
+QOpenGLFunctions_1_5_CoreBackend::Functions (0x0x7f1d1d0f64e0) 0
+
+Class QOpenGLFunctions_1_5_CoreBackend
+ size=168 align=8
+ base size=168 base align=8
+QOpenGLFunctions_1_5_CoreBackend (0x0x7f1d1d9eb208) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1d0f6480) 0
+
+Class QOpenGLFunctions_2_0_CoreBackend::Functions
+ size=744 align=8
+ base size=744 base align=8
+QOpenGLFunctions_2_0_CoreBackend::Functions (0x0x7f1d1d063600) 0
+
+Class QOpenGLFunctions_2_0_CoreBackend
+ size=760 align=8
+ base size=760 base align=8
+QOpenGLFunctions_2_0_CoreBackend (0x0x7f1d1d9eb270) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1cfacf00) 0
+
+Class QOpenGLFunctions_2_1_CoreBackend::Functions
+ size=48 align=8
+ base size=48 base align=8
+QOpenGLFunctions_2_1_CoreBackend::Functions (0x0x7f1d1d081420) 0
+
+Class QOpenGLFunctions_2_1_CoreBackend
+ size=64 align=8
+ base size=64 base align=8
+QOpenGLFunctions_2_1_CoreBackend (0x0x7f1d1d9eb3a8) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1d0813c0) 0
+
+Class QOpenGLFunctions_3_0_CoreBackend::Functions
+ size=672 align=8
+ base size=672 base align=8
+QOpenGLFunctions_3_0_CoreBackend::Functions (0x0x7f1d1d0818a0) 0
+
+Class QOpenGLFunctions_3_0_CoreBackend
+ size=688 align=8
+ base size=688 base align=8
+QOpenGLFunctions_3_0_CoreBackend (0x0x7f1d1d9eb548) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1d081840) 0
+
+Class QOpenGLFunctions_3_1_CoreBackend::Functions
+ size=96 align=8
+ base size=96 base align=8
+QOpenGLFunctions_3_1_CoreBackend::Functions (0x0x7f1d1d081de0) 0
+
+Class QOpenGLFunctions_3_1_CoreBackend
+ size=112 align=8
+ base size=112 base align=8
+QOpenGLFunctions_3_1_CoreBackend (0x0x7f1d1d9eb750) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1d081d80) 0
+
+Class QOpenGLFunctions_3_2_CoreBackend::Functions
+ size=152 align=8
+ base size=152 base align=8
+QOpenGLFunctions_3_2_CoreBackend::Functions (0x0x7f1d1cdcc900) 0
+
+Class QOpenGLFunctions_3_2_CoreBackend
+ size=168 align=8
+ base size=168 base align=8
+QOpenGLFunctions_3_2_CoreBackend (0x0x7f1d1d9eb9c0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1cdcc8a0) 0
+
+Class QOpenGLFunctions_3_3_CoreBackend::Functions
+ size=464 align=8
+ base size=464 base align=8
+QOpenGLFunctions_3_3_CoreBackend::Functions (0x0x7f1d1cdf0ea0) 0
+
+Class QOpenGLFunctions_3_3_CoreBackend
+ size=480 align=8
+ base size=480 base align=8
+QOpenGLFunctions_3_3_CoreBackend (0x0x7f1d1d9ebe38) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1cdf0e40) 0
+
+Class QOpenGLFunctions_4_0_CoreBackend::Functions
+ size=368 align=8
+ base size=368 base align=8
+QOpenGLFunctions_4_0_CoreBackend::Functions (0x0x7f1d1cab02a0) 0
+
+Class QOpenGLFunctions_4_0_CoreBackend
+ size=384 align=8
+ base size=384 base align=8
+QOpenGLFunctions_4_0_CoreBackend (0x0x7f1d1d9ebea0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1cab0240) 0
+
+Class QOpenGLFunctions_4_1_CoreBackend::Functions
+ size=704 align=8
+ base size=704 base align=8
+QOpenGLFunctions_4_1_CoreBackend::Functions (0x0x7f1d1cb30c00) 0
+
+Class QOpenGLFunctions_4_1_CoreBackend
+ size=720 align=8
+ base size=720 base align=8
+QOpenGLFunctions_4_1_CoreBackend (0x0x7f1d1da02208) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1cb30ba0) 0
+
+Class QOpenGLFunctions_4_2_CoreBackend::Functions
+ size=96 align=8
+ base size=96 base align=8
+QOpenGLFunctions_4_2_CoreBackend::Functions (0x0x7f1d1cb9c780) 0
+
+Class QOpenGLFunctions_4_2_CoreBackend
+ size=112 align=8
+ base size=112 base align=8
+QOpenGLFunctions_4_2_CoreBackend (0x0x7f1d1da02270) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1cb9c720) 0
+
+Class QOpenGLFunctions_4_3_CoreBackend::Functions
+ size=344 align=8
+ base size=344 base align=8
+QOpenGLFunctions_4_3_CoreBackend::Functions (0x0x7f1d1cc13480) 0
+
+Class QOpenGLFunctions_4_3_CoreBackend
+ size=360 align=8
+ base size=360 base align=8
+QOpenGLFunctions_4_3_CoreBackend (0x0x7f1d1da1a270) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1cc13420) 0
+
+Class QOpenGLFunctions_4_4_CoreBackend::Functions
+ size=72 align=8
+ base size=72 base align=8
+QOpenGLFunctions_4_4_CoreBackend::Functions (0x0x7f1d1cc47360) 0
+
+Class QOpenGLFunctions_4_4_CoreBackend
+ size=88 align=8
+ base size=88 base align=8
+QOpenGLFunctions_4_4_CoreBackend (0x0x7f1d1da1a2d8) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1cc13ea0) 0
+
+Class QOpenGLFunctions_4_5_CoreBackend::Functions
+ size=848 align=8
+ base size=848 base align=8
+QOpenGLFunctions_4_5_CoreBackend::Functions (0x0x7f1d1cc47cc0) 0
+
+Class QOpenGLFunctions_4_5_CoreBackend
+ size=864 align=8
+ base size=864 base align=8
+QOpenGLFunctions_4_5_CoreBackend (0x0x7f1d1da1a680) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1cc47ba0) 0
+
+Class QOpenGLFunctions_1_0_DeprecatedBackend::Functions
+ size=2064 align=8
+ base size=2064 base align=8
+QOpenGLFunctions_1_0_DeprecatedBackend::Functions (0x0x7f1d1cc628a0) 0
+
+Class QOpenGLFunctions_1_0_DeprecatedBackend
+ size=2080 align=8
+ base size=2080 base align=8
+QOpenGLFunctions_1_0_DeprecatedBackend (0x0x7f1d1da1a6e8) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1cc62840) 0
+
+Class QOpenGLFunctions_1_1_DeprecatedBackend::Functions
+ size=136 align=8
+ base size=136 base align=8
+QOpenGLFunctions_1_1_DeprecatedBackend::Functions (0x0x7f1d1cc7e000) 0
+
+Class QOpenGLFunctions_1_1_DeprecatedBackend
+ size=152 align=8
+ base size=152 base align=8
+QOpenGLFunctions_1_1_DeprecatedBackend (0x0x7f1d1da620d0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1cc62f60) 0
+
+Class QOpenGLFunctions_1_2_DeprecatedBackend::Functions
+ size=256 align=8
+ base size=256 base align=8
+QOpenGLFunctions_1_2_DeprecatedBackend::Functions (0x0x7f1d1cc7eb40) 0
+
+Class QOpenGLFunctions_1_2_DeprecatedBackend
+ size=272 align=8
+ base size=272 base align=8
+QOpenGLFunctions_1_2_DeprecatedBackend (0x0x7f1d1da62138) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1cc7ea20) 0
+
+Class QOpenGLFunctions_1_3_DeprecatedBackend::Functions
+ size=296 align=8
+ base size=296 base align=8
+QOpenGLFunctions_1_3_DeprecatedBackend::Functions (0x0x7f1d1cc96a80) 0
+
+Class QOpenGLFunctions_1_3_DeprecatedBackend
+ size=312 align=8
+ base size=312 base align=8
+QOpenGLFunctions_1_3_DeprecatedBackend (0x0x7f1d1da62478) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1cc96a20) 0
+
+Class QOpenGLFunctions_1_4_DeprecatedBackend::Functions
+ size=304 align=8
+ base size=304 base align=8
+QOpenGLFunctions_1_4_DeprecatedBackend::Functions (0x0x7f1d1c8f95a0) 0
+
+Class QOpenGLFunctions_1_4_DeprecatedBackend
+ size=320 align=8
+ base size=320 base align=8
+QOpenGLFunctions_1_4_DeprecatedBackend (0x0x7f1d1da624e0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1c8f9540) 0
+
+Class QOpenGLFunctions_2_0_DeprecatedBackend::Functions
+ size=288 align=8
+ base size=288 base align=8
+QOpenGLFunctions_2_0_DeprecatedBackend::Functions (0x0x7f1d1c965240) 0
+
+Class QOpenGLFunctions_2_0_DeprecatedBackend
+ size=304 align=8
+ base size=304 base align=8
+QOpenGLFunctions_2_0_DeprecatedBackend (0x0x7f1d1da62c98) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1c9651e0) 0
+
+Class QOpenGLFunctions_3_0_DeprecatedBackend::Functions
+ size=160 align=8
+ base size=160 base align=8
+QOpenGLFunctions_3_0_DeprecatedBackend::Functions (0x0x7f1d1c984ae0) 0
+
+Class QOpenGLFunctions_3_0_DeprecatedBackend
+ size=176 align=8
+ base size=176 base align=8
+QOpenGLFunctions_3_0_DeprecatedBackend (0x0x7f1d1da62d00) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1c984a80) 0
+
+Class QOpenGLFunctions_3_3_DeprecatedBackend::Functions
+ size=240 align=8
+ base size=240 base align=8
+QOpenGLFunctions_3_3_DeprecatedBackend::Functions (0x0x7f1d1ca91180) 0
+
+Class QOpenGLFunctions_3_3_DeprecatedBackend
+ size=256 align=8
+ base size=256 base align=8
+QOpenGLFunctions_3_3_DeprecatedBackend (0x0x7f1d1da62ea0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1ca72660) 0
+
+Class QOpenGLFunctions_4_5_DeprecatedBackend::Functions
+ size=96 align=8
+ base size=96 base align=8
+QOpenGLFunctions_4_5_DeprecatedBackend::Functions (0x0x7f1d1c6ffba0) 0
+
+Class QOpenGLFunctions_4_5_DeprecatedBackend
+ size=112 align=8
+ base size=112 base align=8
+QOpenGLFunctions_4_5_DeprecatedBackend (0x0x7f1d1da7a0d0) 0
+ QOpenGLVersionFunctionsBackend (0x0x7f1d1c6ff5a0) 0
+
+Class QOpenGLVersionProfile
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLVersionProfile (0x0x7f1d1c723de0) 0
+
+Class QOpenGLContextGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLContextGroup::QPrivateSignal (0x0x7f1d1c867ea0) 0 empty
+
+Vtable for QOpenGLContextGroup
+QOpenGLContextGroup::_ZTV19QOpenGLContextGroup: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QOpenGLContextGroup)
+16 (int (*)(...))QOpenGLContextGroup::metaObject
+24 (int (*)(...))QOpenGLContextGroup::qt_metacast
+32 (int (*)(...))QOpenGLContextGroup::qt_metacall
+40 (int (*)(...))QOpenGLContextGroup::~QOpenGLContextGroup
+48 (int (*)(...))QOpenGLContextGroup::~QOpenGLContextGroup
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLContextGroup
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLContextGroup (0x0x7f1d1d6c4c30) 0
+ vptr=((& QOpenGLContextGroup::_ZTV19QOpenGLContextGroup) + 16)
+ QObject (0x0x7f1d1c867e40) 0
+ primary-for QOpenGLContextGroup (0x0x7f1d1d6c4c30)
+
+Class QOpenGLContext::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLContext::QPrivateSignal (0x0x7f1d1c883c00) 0 empty
+
+Vtable for QOpenGLContext
+QOpenGLContext::_ZTV14QOpenGLContext: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QOpenGLContext)
+16 (int (*)(...))QOpenGLContext::metaObject
+24 (int (*)(...))QOpenGLContext::qt_metacast
+32 (int (*)(...))QOpenGLContext::qt_metacall
+40 (int (*)(...))QOpenGLContext::~QOpenGLContext
+48 (int (*)(...))QOpenGLContext::~QOpenGLContext
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLContext
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLContext (0x0x7f1d1d6c4ea0) 0
+ vptr=((& QOpenGLContext::_ZTV14QOpenGLContext) + 16)
+ QObject (0x0x7f1d1c883ba0) 0
+ primary-for QOpenGLContext (0x0x7f1d1d6c4ea0)
+
+Class QOpenGLDebugMessage
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLDebugMessage (0x0x7f1d1c507000) 0
+
+Class QOpenGLDebugLogger::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLDebugLogger::QPrivateSignal (0x0x7f1d1b765900) 0 empty
+
+Vtable for QOpenGLDebugLogger
+QOpenGLDebugLogger::_ZTV18QOpenGLDebugLogger: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QOpenGLDebugLogger)
+16 (int (*)(...))QOpenGLDebugLogger::metaObject
+24 (int (*)(...))QOpenGLDebugLogger::qt_metacast
+32 (int (*)(...))QOpenGLDebugLogger::qt_metacall
+40 (int (*)(...))QOpenGLDebugLogger::~QOpenGLDebugLogger
+48 (int (*)(...))QOpenGLDebugLogger::~QOpenGLDebugLogger
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLDebugLogger
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLDebugLogger (0x0x7f1d1c788bc8) 0
+ vptr=((& QOpenGLDebugLogger::_ZTV18QOpenGLDebugLogger) + 16)
+ QObject (0x0x7f1d1b765180) 0
+ primary-for QOpenGLDebugLogger (0x0x7f1d1c788bc8)
+
+Class QOpenGLFunctions
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLFunctions (0x0x7f1d1b7a1300) 0
+
+Class QOpenGLFunctionsPrivate::Functions
+ size=1152 align=8
+ base size=1152 base align=8
+QOpenGLFunctionsPrivate::Functions (0x0x7f1d1b82a7e0) 0
+
+Class QOpenGLFunctionsPrivate
+ size=1152 align=8
+ base size=1152 base align=8
+QOpenGLFunctionsPrivate (0x0x7f1d1b82a4e0) 0
+
+Class QOpenGLExtraFunctions
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLExtraFunctions (0x0x7f1d1c878958) 0
+ QOpenGLFunctions (0x0x7f1d215849c0) 0
+
+Class QOpenGLExtraFunctionsPrivate::Functions
+ size=1728 align=8
+ base size=1728 base align=8
+QOpenGLExtraFunctionsPrivate::Functions (0x0x7f1d21584d20) 0
+
+Class QOpenGLExtraFunctionsPrivate
+ size=2880 align=8
+ base size=2880 base align=8
+QOpenGLExtraFunctionsPrivate (0x0x7f1d1c878bc8) 0
+ QOpenGLFunctionsPrivate (0x0x7f1d21584cc0) 0
+
+Vtable for QOpenGLFramebufferObject
+QOpenGLFramebufferObject::_ZTV24QOpenGLFramebufferObject: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QOpenGLFramebufferObject)
+16 (int (*)(...))QOpenGLFramebufferObject::~QOpenGLFramebufferObject
+24 (int (*)(...))QOpenGLFramebufferObject::~QOpenGLFramebufferObject
+
+Class QOpenGLFramebufferObject
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLFramebufferObject (0x0x7f1d1df1e7e0) 0
+ vptr=((& QOpenGLFramebufferObject::_ZTV24QOpenGLFramebufferObject) + 16)
+
+Class QOpenGLFramebufferObjectFormat
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLFramebufferObjectFormat (0x0x7f1d1df1ea80) 0
+
+Vtable for QOpenGLPaintDevice
+QOpenGLPaintDevice::_ZTV18QOpenGLPaintDevice: 11 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QOpenGLPaintDevice)
+16 (int (*)(...))QOpenGLPaintDevice::~QOpenGLPaintDevice
+24 (int (*)(...))QOpenGLPaintDevice::~QOpenGLPaintDevice
+32 (int (*)(...))QOpenGLPaintDevice::devType
+40 (int (*)(...))QOpenGLPaintDevice::paintEngine
+48 (int (*)(...))QOpenGLPaintDevice::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+80 (int (*)(...))QOpenGLPaintDevice::ensureActiveTarget
+
+Class QOpenGLPaintDevice
+ size=32 align=8
+ base size=32 base align=8
+QOpenGLPaintDevice (0x0x7f1d1b524f70) 0
+ vptr=((& QOpenGLPaintDevice::_ZTV18QOpenGLPaintDevice) + 16)
+ QPaintDevice (0x0x7f1d1df1eae0) 0
+ primary-for QOpenGLPaintDevice (0x0x7f1d1b524f70)
+
+Class QOpenGLPixelTransferOptions
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLPixelTransferOptions (0x0x7f1d1df1ed20) 0
+
+Class QOpenGLShader::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLShader::QPrivateSignal (0x0x7f1d1d337b40) 0 empty
+
+Vtable for QOpenGLShader
+QOpenGLShader::_ZTV13QOpenGLShader: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QOpenGLShader)
+16 (int (*)(...))QOpenGLShader::metaObject
+24 (int (*)(...))QOpenGLShader::qt_metacast
+32 (int (*)(...))QOpenGLShader::qt_metacall
+40 (int (*)(...))QOpenGLShader::~QOpenGLShader
+48 (int (*)(...))QOpenGLShader::~QOpenGLShader
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLShader
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLShader (0x0x7f1d1d36a068) 0
+ vptr=((& QOpenGLShader::_ZTV13QOpenGLShader) + 16)
+ QObject (0x0x7f1d1d337ae0) 0
+ primary-for QOpenGLShader (0x0x7f1d1d36a068)
+
+Class QOpenGLShaderProgram::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLShaderProgram::QPrivateSignal (0x0x7f1d1d07f480) 0 empty
+
+Vtable for QOpenGLShaderProgram
+QOpenGLShaderProgram::_ZTV20QOpenGLShaderProgram: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QOpenGLShaderProgram)
+16 (int (*)(...))QOpenGLShaderProgram::metaObject
+24 (int (*)(...))QOpenGLShaderProgram::qt_metacast
+32 (int (*)(...))QOpenGLShaderProgram::qt_metacall
+40 (int (*)(...))QOpenGLShaderProgram::~QOpenGLShaderProgram
+48 (int (*)(...))QOpenGLShaderProgram::~QOpenGLShaderProgram
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QOpenGLShaderProgram::link
+
+Class QOpenGLShaderProgram
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLShaderProgram (0x0x7f1d1d36a1a0) 0
+ vptr=((& QOpenGLShaderProgram::_ZTV20QOpenGLShaderProgram) + 16)
+ QObject (0x0x7f1d1d07f420) 0
+ primary-for QOpenGLShaderProgram (0x0x7f1d1d36a1a0)
+
+Class QOpenGLTexture
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLTexture (0x0x7f1d1d07f660) 0
+
+Class QOpenGLTextureBlitter
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLTextureBlitter (0x0x7f1d1b76db40) 0
+
+Class QOpenGLTimerQuery::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLTimerQuery::QPrivateSignal (0x0x7f1d1b76dd80) 0 empty
+
+Vtable for QOpenGLTimerQuery
+QOpenGLTimerQuery::_ZTV17QOpenGLTimerQuery: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QOpenGLTimerQuery)
+16 (int (*)(...))QOpenGLTimerQuery::metaObject
+24 (int (*)(...))QOpenGLTimerQuery::qt_metacast
+32 (int (*)(...))QOpenGLTimerQuery::qt_metacall
+40 (int (*)(...))QOpenGLTimerQuery::~QOpenGLTimerQuery
+48 (int (*)(...))QOpenGLTimerQuery::~QOpenGLTimerQuery
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLTimerQuery
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLTimerQuery (0x0x7f1d1d36a2d8) 0
+ vptr=((& QOpenGLTimerQuery::_ZTV17QOpenGLTimerQuery) + 16)
+ QObject (0x0x7f1d1b76dd20) 0
+ primary-for QOpenGLTimerQuery (0x0x7f1d1d36a2d8)
+
+Class QOpenGLTimeMonitor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLTimeMonitor::QPrivateSignal (0x0x7f1d25233000) 0 empty
+
+Vtable for QOpenGLTimeMonitor
+QOpenGLTimeMonitor::_ZTV18QOpenGLTimeMonitor: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QOpenGLTimeMonitor)
+16 (int (*)(...))QOpenGLTimeMonitor::metaObject
+24 (int (*)(...))QOpenGLTimeMonitor::qt_metacast
+32 (int (*)(...))QOpenGLTimeMonitor::qt_metacall
+40 (int (*)(...))QOpenGLTimeMonitor::~QOpenGLTimeMonitor
+48 (int (*)(...))QOpenGLTimeMonitor::~QOpenGLTimeMonitor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLTimeMonitor
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLTimeMonitor (0x0x7f1d1d36a340) 0
+ vptr=((& QOpenGLTimeMonitor::_ZTV18QOpenGLTimeMonitor) + 16)
+ QObject (0x0x7f1d1b76df60) 0
+ primary-for QOpenGLTimeMonitor (0x0x7f1d1d36a340)
+
+Class QOpenGLVertexArrayObject::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLVertexArrayObject::QPrivateSignal (0x0x7f1d25233240) 0 empty
+
+Class QOpenGLVertexArrayObject::Binder
+ size=8 align=8
+ base size=8 base align=8
+QOpenGLVertexArrayObject::Binder (0x0x7f1d252332a0) 0
+
+Vtable for QOpenGLVertexArrayObject
+QOpenGLVertexArrayObject::_ZTV24QOpenGLVertexArrayObject: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QOpenGLVertexArrayObject)
+16 (int (*)(...))QOpenGLVertexArrayObject::metaObject
+24 (int (*)(...))QOpenGLVertexArrayObject::qt_metacast
+32 (int (*)(...))QOpenGLVertexArrayObject::qt_metacall
+40 (int (*)(...))QOpenGLVertexArrayObject::~QOpenGLVertexArrayObject
+48 (int (*)(...))QOpenGLVertexArrayObject::~QOpenGLVertexArrayObject
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOpenGLVertexArrayObject
+ size=16 align=8
+ base size=16 base align=8
+QOpenGLVertexArrayObject (0x0x7f1d1d36a3a8) 0
+ vptr=((& QOpenGLVertexArrayObject::_ZTV24QOpenGLVertexArrayObject) + 16)
+ QObject (0x0x7f1d252331e0) 0
+ primary-for QOpenGLVertexArrayObject (0x0x7f1d1d36a3a8)
+
+Class QPaintDeviceWindow::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPaintDeviceWindow::QPrivateSignal (0x0x7f1d25233960) 0 empty
+
+Vtable for QPaintDeviceWindow
+QPaintDeviceWindow::_ZTV18QPaintDeviceWindow: 58 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QPaintDeviceWindow)
+16 (int (*)(...))QPaintDeviceWindow::metaObject
+24 (int (*)(...))QPaintDeviceWindow::qt_metacast
+32 (int (*)(...))QPaintDeviceWindow::qt_metacall
+40 (int (*)(...))QPaintDeviceWindow::~QPaintDeviceWindow
+48 (int (*)(...))QPaintDeviceWindow::~QPaintDeviceWindow
+56 (int (*)(...))QPaintDeviceWindow::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWindow::surfaceType
+120 (int (*)(...))QWindow::format
+128 (int (*)(...))QWindow::size
+136 (int (*)(...))QWindow::accessibleRoot
+144 (int (*)(...))QWindow::focusObject
+152 (int (*)(...))QPaintDeviceWindow::exposeEvent
+160 (int (*)(...))QWindow::resizeEvent
+168 (int (*)(...))QWindow::moveEvent
+176 (int (*)(...))QWindow::focusInEvent
+184 (int (*)(...))QWindow::focusOutEvent
+192 (int (*)(...))QWindow::showEvent
+200 (int (*)(...))QWindow::hideEvent
+208 (int (*)(...))QWindow::keyPressEvent
+216 (int (*)(...))QWindow::keyReleaseEvent
+224 (int (*)(...))QWindow::mousePressEvent
+232 (int (*)(...))QWindow::mouseReleaseEvent
+240 (int (*)(...))QWindow::mouseDoubleClickEvent
+248 (int (*)(...))QWindow::mouseMoveEvent
+256 (int (*)(...))QWindow::wheelEvent
+264 (int (*)(...))QWindow::touchEvent
+272 (int (*)(...))QWindow::tabletEvent
+280 (int (*)(...))QWindow::nativeEvent
+288 (int (*)(...))QWindow::surfaceHandle
+296 (int (*)(...))QPaintDeviceWindow::paintEvent
+304 (int (*)(...))QPaintDeviceWindow::metric
+312 (int (*)(...))QPaintDeviceWindow::paintEngine
+320 (int (*)(...))-16
+328 (int (*)(...))(& _ZTI18QPaintDeviceWindow)
+336 (int (*)(...))QPaintDeviceWindow::_ZThn16_N18QPaintDeviceWindowD1Ev
+344 (int (*)(...))QPaintDeviceWindow::_ZThn16_N18QPaintDeviceWindowD0Ev
+352 (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
+360 (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
+368 (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
+376 (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv
+384 (int (*)(...))-40
+392 (int (*)(...))(& _ZTI18QPaintDeviceWindow)
+400 (int (*)(...))QPaintDeviceWindow::_ZThn40_N18QPaintDeviceWindowD1Ev
+408 (int (*)(...))QPaintDeviceWindow::_ZThn40_N18QPaintDeviceWindowD0Ev
+416 (int (*)(...))QPaintDevice::devType
+424 (int (*)(...))QPaintDeviceWindow::_ZThn40_NK18QPaintDeviceWindow11paintEngineEv
+432 (int (*)(...))QPaintDeviceWindow::_ZThn40_NK18QPaintDeviceWindow6metricEN12QPaintDevice17PaintDeviceMetricE
+440 (int (*)(...))QPaintDevice::initPainter
+448 (int (*)(...))QPaintDevice::redirected
+456 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QPaintDeviceWindow
+ size=64 align=8
+ base size=64 base align=8
+QPaintDeviceWindow (0x0x7f1d254cb770) 0
+ vptr=((& QPaintDeviceWindow::_ZTV18QPaintDeviceWindow) + 16)
+ QWindow (0x0x7f1d254cb7e0) 0
+ primary-for QPaintDeviceWindow (0x0x7f1d254cb770)
+ QObject (0x0x7f1d25233840) 0
+ primary-for QWindow (0x0x7f1d254cb7e0)
+ QSurface (0x0x7f1d252338a0) 16
+ vptr=((& QPaintDeviceWindow::_ZTV18QPaintDeviceWindow) + 336)
+ QPaintDevice (0x0x7f1d25233900) 40
+ vptr=((& QPaintDeviceWindow::_ZTV18QPaintDeviceWindow) + 400)
+
+Class QOpenGLWindow::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLWindow::QPrivateSignal (0x0x7f1d25233c60) 0 empty
+
+Vtable for QOpenGLWindow
+QOpenGLWindow::_ZTV13QOpenGLWindow: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QOpenGLWindow)
+16 (int (*)(...))QOpenGLWindow::metaObject
+24 (int (*)(...))QOpenGLWindow::qt_metacast
+32 (int (*)(...))QOpenGLWindow::qt_metacall
+40 (int (*)(...))QOpenGLWindow::~QOpenGLWindow
+48 (int (*)(...))QOpenGLWindow::~QOpenGLWindow
+56 (int (*)(...))QPaintDeviceWindow::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWindow::surfaceType
+120 (int (*)(...))QWindow::format
+128 (int (*)(...))QWindow::size
+136 (int (*)(...))QWindow::accessibleRoot
+144 (int (*)(...))QWindow::focusObject
+152 (int (*)(...))QPaintDeviceWindow::exposeEvent
+160 (int (*)(...))QOpenGLWindow::resizeEvent
+168 (int (*)(...))QWindow::moveEvent
+176 (int (*)(...))QWindow::focusInEvent
+184 (int (*)(...))QWindow::focusOutEvent
+192 (int (*)(...))QWindow::showEvent
+200 (int (*)(...))QWindow::hideEvent
+208 (int (*)(...))QWindow::keyPressEvent
+216 (int (*)(...))QWindow::keyReleaseEvent
+224 (int (*)(...))QWindow::mousePressEvent
+232 (int (*)(...))QWindow::mouseReleaseEvent
+240 (int (*)(...))QWindow::mouseDoubleClickEvent
+248 (int (*)(...))QWindow::mouseMoveEvent
+256 (int (*)(...))QWindow::wheelEvent
+264 (int (*)(...))QWindow::touchEvent
+272 (int (*)(...))QWindow::tabletEvent
+280 (int (*)(...))QWindow::nativeEvent
+288 (int (*)(...))QWindow::surfaceHandle
+296 (int (*)(...))QOpenGLWindow::paintEvent
+304 (int (*)(...))QOpenGLWindow::metric
+312 (int (*)(...))QPaintDeviceWindow::paintEngine
+320 (int (*)(...))QOpenGLWindow::initializeGL
+328 (int (*)(...))QOpenGLWindow::resizeGL
+336 (int (*)(...))QOpenGLWindow::paintGL
+344 (int (*)(...))QOpenGLWindow::paintUnderGL
+352 (int (*)(...))QOpenGLWindow::paintOverGL
+360 (int (*)(...))QOpenGLWindow::redirected
+368 (int (*)(...))-16
+376 (int (*)(...))(& _ZTI13QOpenGLWindow)
+384 (int (*)(...))QOpenGLWindow::_ZThn16_N13QOpenGLWindowD1Ev
+392 (int (*)(...))QOpenGLWindow::_ZThn16_N13QOpenGLWindowD0Ev
+400 (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
+408 (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
+416 (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
+424 (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv
+432 (int (*)(...))-40
+440 (int (*)(...))(& _ZTI13QOpenGLWindow)
+448 (int (*)(...))QOpenGLWindow::_ZThn40_N13QOpenGLWindowD1Ev
+456 (int (*)(...))QOpenGLWindow::_ZThn40_N13QOpenGLWindowD0Ev
+464 (int (*)(...))QPaintDevice::devType
+472 (int (*)(...))QPaintDeviceWindow::_ZThn40_NK18QPaintDeviceWindow11paintEngineEv
+480 (int (*)(...))QOpenGLWindow::_ZThn40_NK13QOpenGLWindow6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QPaintDevice::initPainter
+496 (int (*)(...))QOpenGLWindow::_ZThn40_NK13QOpenGLWindow10redirectedEP6QPoint
+504 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QOpenGLWindow
+ size=64 align=8
+ base size=64 base align=8
+QOpenGLWindow (0x0x7f1d1d36a478) 0
+ vptr=((& QOpenGLWindow::_ZTV13QOpenGLWindow) + 16)
+ QPaintDeviceWindow (0x0x7f1d254cb9a0) 0
+ primary-for QOpenGLWindow (0x0x7f1d1d36a478)
+ QWindow (0x0x7f1d254cba10) 0
+ primary-for QPaintDeviceWindow (0x0x7f1d254cb9a0)
+ QObject (0x0x7f1d25233b40) 0
+ primary-for QWindow (0x0x7f1d254cba10)
+ QSurface (0x0x7f1d25233ba0) 16
+ vptr=((& QOpenGLWindow::_ZTV13QOpenGLWindow) + 384)
+ QPaintDevice (0x0x7f1d25233c00) 40
+ vptr=((& QOpenGLWindow::_ZTV13QOpenGLWindow) + 448)
+
+Class QPageSize
+ size=8 align=8
+ base size=8 base align=8
+QPageSize (0x0x7f1d25233e40) 0
+
+Class QPageLayout
+ size=8 align=8
+ base size=8 base align=8
+QPageLayout (0x0x7f1d225573c0) 0
+
+Class QPagedPaintDevice::Margins
+ size=32 align=8
+ base size=32 base align=8
+QPagedPaintDevice::Margins (0x0x7f1d21824e40) 0
+
+Vtable for QPagedPaintDevice
+QPagedPaintDevice::_ZTV17QPagedPaintDevice: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QPagedPaintDevice)
+16 0
+24 0
+32 (int (*)(...))QPaintDevice::devType
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))QPaintDevice::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))QPagedPaintDevice::setPageSize
+96 (int (*)(...))QPagedPaintDevice::setPageSizeMM
+104 (int (*)(...))QPagedPaintDevice::setMargins
+
+Class QPagedPaintDevice
+ size=32 align=8
+ base size=32 base align=8
+QPagedPaintDevice (0x0x7f1d21804888) 0
+ vptr=((& QPagedPaintDevice::_ZTV17QPagedPaintDevice) + 16)
+ QPaintDevice (0x0x7f1d21824de0) 0
+ primary-for QPagedPaintDevice (0x0x7f1d21804888)
+
+Class QPainter::PixmapFragment
+ size=80 align=8
+ base size=80 base align=8
+QPainter::PixmapFragment (0x0x7f1d21824f00) 0
+
+Class QPainter
+ size=8 align=8
+ base size=8 base align=8
+QPainter (0x0x7f1d21824ea0) 0
+
+Class QTextItem
+ size=1 align=1
+ base size=0 base align=1
+QTextItem (0x0x7f1d1bb9e120) 0 empty
+
+Vtable for QPaintEngine
+QPaintEngine::_ZTV12QPaintEngine: 24 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QPaintEngine)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))QPaintEngine::drawRects
+64 (int (*)(...))QPaintEngine::drawRects
+72 (int (*)(...))QPaintEngine::drawLines
+80 (int (*)(...))QPaintEngine::drawLines
+88 (int (*)(...))QPaintEngine::drawEllipse
+96 (int (*)(...))QPaintEngine::drawEllipse
+104 (int (*)(...))QPaintEngine::drawPath
+112 (int (*)(...))QPaintEngine::drawPoints
+120 (int (*)(...))QPaintEngine::drawPoints
+128 (int (*)(...))QPaintEngine::drawPolygon
+136 (int (*)(...))QPaintEngine::drawPolygon
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QPaintEngine::drawTextItem
+160 (int (*)(...))QPaintEngine::drawTiledPixmap
+168 (int (*)(...))QPaintEngine::drawImage
+176 (int (*)(...))QPaintEngine::coordinateOffset
+184 (int (*)(...))__cxa_pure_virtual
+
+Class QPaintEngine
+ size=32 align=8
+ base size=32 base align=8
+QPaintEngine (0x0x7f1d26c2f060) 0
+ vptr=((& QPaintEngine::_ZTV12QPaintEngine) + 16)
+
+Class QPaintEngineState
+ size=4 align=4
+ base size=4 base align=4
+QPaintEngineState (0x0x7f1d26c2f840) 0
+
+Class QPdfWriter::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPdfWriter::QPrivateSignal (0x0x7f1d207e2000) 0 empty
+
+Vtable for QPdfWriter
+QPdfWriter::_ZTV10QPdfWriter: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QPdfWriter)
+16 (int (*)(...))QPdfWriter::metaObject
+24 (int (*)(...))QPdfWriter::qt_metacast
+32 (int (*)(...))QPdfWriter::qt_metacall
+40 (int (*)(...))QPdfWriter::~QPdfWriter
+48 (int (*)(...))QPdfWriter::~QPdfWriter
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QPdfWriter::newPage
+120 (int (*)(...))QPdfWriter::setPageSize
+128 (int (*)(...))QPdfWriter::setPageSizeMM
+136 (int (*)(...))QPdfWriter::setMargins
+144 (int (*)(...))QPdfWriter::paintEngine
+152 (int (*)(...))QPdfWriter::metric
+160 (int (*)(...))-16
+168 (int (*)(...))(& _ZTI10QPdfWriter)
+176 (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriterD1Ev
+184 (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriterD0Ev
+192 (int (*)(...))QPaintDevice::devType
+200 (int (*)(...))QPdfWriter::_ZThn16_NK10QPdfWriter11paintEngineEv
+208 (int (*)(...))QPdfWriter::_ZThn16_NK10QPdfWriter6metricEN12QPaintDevice17PaintDeviceMetricE
+216 (int (*)(...))QPaintDevice::initPainter
+224 (int (*)(...))QPaintDevice::redirected
+232 (int (*)(...))QPaintDevice::sharedPainter
+240 (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriter7newPageEv
+248 (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriter11setPageSizeEN17QPagedPaintDevice8PageSizeE
+256 (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriter13setPageSizeMMERK6QSizeF
+264 (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriter10setMarginsERKN17QPagedPaintDevice7MarginsE
+
+Class QPdfWriter
+ size=48 align=8
+ base size=48 base align=8
+QPdfWriter (0x0x7f1d23ab4ee0) 0
+ vptr=((& QPdfWriter::_ZTV10QPdfWriter) + 16)
+ QObject (0x0x7f1d21bf7f00) 0
+ primary-for QPdfWriter (0x0x7f1d23ab4ee0)
+ QPagedPaintDevice (0x0x7f1d1b802c30) 16
+ vptr=((& QPdfWriter::_ZTV10QPdfWriter) + 176)
+ QPaintDevice (0x0x7f1d21bf7f60) 16
+ primary-for QPagedPaintDevice (0x0x7f1d1b802c30)
+
+Vtable for QPicture
+QPicture::_ZTV8QPicture: 11 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QPicture)
+16 (int (*)(...))QPicture::~QPicture
+24 (int (*)(...))QPicture::~QPicture
+32 (int (*)(...))QPicture::devType
+40 (int (*)(...))QPicture::paintEngine
+48 (int (*)(...))QPicture::metric
+56 (int (*)(...))QPaintDevice::initPainter
+64 (int (*)(...))QPaintDevice::redirected
+72 (int (*)(...))QPaintDevice::sharedPainter
+80 (int (*)(...))QPicture::setData
+
+Class QPicture
+ size=32 align=8
+ base size=32 base align=8
+QPicture (0x0x7f1d1b802c98) 0
+ vptr=((& QPicture::_ZTV8QPicture) + 16)
+ QPaintDevice (0x0x7f1d207e2360) 0
+ primary-for QPicture (0x0x7f1d1b802c98)
+
+Class QPictureIO
+ size=8 align=8
+ base size=8 base align=8
+QPictureIO (0x0x7f1d1b982420) 0
+
+Class QPictureFormatPlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPictureFormatPlugin::QPrivateSignal (0x0x7f1d1b9824e0) 0 empty
+
+Vtable for QPictureFormatPlugin
+QPictureFormatPlugin::_ZTV20QPictureFormatPlugin: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QPictureFormatPlugin)
+16 (int (*)(...))QPictureFormatPlugin::metaObject
+24 (int (*)(...))QPictureFormatPlugin::qt_metacast
+32 (int (*)(...))QPictureFormatPlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QPictureFormatPlugin::loadPicture
+120 (int (*)(...))QPictureFormatPlugin::savePicture
+128 (int (*)(...))__cxa_pure_virtual
+
+Class QPictureFormatPlugin
+ size=16 align=8
+ base size=16 base align=8
+QPictureFormatPlugin (0x0x7f1d1b96e680) 0
+ vptr=((& QPictureFormatPlugin::_ZTV20QPictureFormatPlugin) + 16)
+ QObject (0x0x7f1d1b982480) 0
+ primary-for QPictureFormatPlugin (0x0x7f1d1b96e680)
+
+Class QPixmapCache::Key
+ size=8 align=8
+ base size=8 base align=8
+QPixmapCache::Key (0x0x7f1d1b982660) 0
+
+Class QPixmapCache
+ size=1 align=1
+ base size=0 base align=1
+QPixmapCache (0x0x7f1d1b982600) 0 empty
+
+Class QRasterWindow::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QRasterWindow::QPrivateSignal (0x0x7f1d1de5ede0) 0 empty
+
+Vtable for QRasterWindow
+QRasterWindow::_ZTV13QRasterWindow: 59 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QRasterWindow)
+16 (int (*)(...))QRasterWindow::metaObject
+24 (int (*)(...))QRasterWindow::qt_metacast
+32 (int (*)(...))QRasterWindow::qt_metacall
+40 (int (*)(...))QRasterWindow::~QRasterWindow
+48 (int (*)(...))QRasterWindow::~QRasterWindow
+56 (int (*)(...))QPaintDeviceWindow::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWindow::surfaceType
+120 (int (*)(...))QWindow::format
+128 (int (*)(...))QWindow::size
+136 (int (*)(...))QWindow::accessibleRoot
+144 (int (*)(...))QWindow::focusObject
+152 (int (*)(...))QPaintDeviceWindow::exposeEvent
+160 (int (*)(...))QWindow::resizeEvent
+168 (int (*)(...))QWindow::moveEvent
+176 (int (*)(...))QWindow::focusInEvent
+184 (int (*)(...))QWindow::focusOutEvent
+192 (int (*)(...))QWindow::showEvent
+200 (int (*)(...))QWindow::hideEvent
+208 (int (*)(...))QWindow::keyPressEvent
+216 (int (*)(...))QWindow::keyReleaseEvent
+224 (int (*)(...))QWindow::mousePressEvent
+232 (int (*)(...))QWindow::mouseReleaseEvent
+240 (int (*)(...))QWindow::mouseDoubleClickEvent
+248 (int (*)(...))QWindow::mouseMoveEvent
+256 (int (*)(...))QWindow::wheelEvent
+264 (int (*)(...))QWindow::touchEvent
+272 (int (*)(...))QWindow::tabletEvent
+280 (int (*)(...))QWindow::nativeEvent
+288 (int (*)(...))QWindow::surfaceHandle
+296 (int (*)(...))QPaintDeviceWindow::paintEvent
+304 (int (*)(...))QRasterWindow::metric
+312 (int (*)(...))QPaintDeviceWindow::paintEngine
+320 (int (*)(...))QRasterWindow::redirected
+328 (int (*)(...))-16
+336 (int (*)(...))(& _ZTI13QRasterWindow)
+344 (int (*)(...))QRasterWindow::_ZThn16_N13QRasterWindowD1Ev
+352 (int (*)(...))QRasterWindow::_ZThn16_N13QRasterWindowD0Ev
+360 (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
+368 (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
+376 (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
+384 (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv
+392 (int (*)(...))-40
+400 (int (*)(...))(& _ZTI13QRasterWindow)
+408 (int (*)(...))QRasterWindow::_ZThn40_N13QRasterWindowD1Ev
+416 (int (*)(...))QRasterWindow::_ZThn40_N13QRasterWindowD0Ev
+424 (int (*)(...))QPaintDevice::devType
+432 (int (*)(...))QPaintDeviceWindow::_ZThn40_NK18QPaintDeviceWindow11paintEngineEv
+440 (int (*)(...))QRasterWindow::_ZThn40_NK13QRasterWindow6metricEN12QPaintDevice17PaintDeviceMetricE
+448 (int (*)(...))QPaintDevice::initPainter
+456 (int (*)(...))QRasterWindow::_ZThn40_NK13QRasterWindow10redirectedEP6QPoint
+464 (int (*)(...))QPaintDevice::sharedPainter
+
+Class QRasterWindow
+ size=64 align=8
+ base size=64 base align=8
+QRasterWindow (0x0x7f1d1c3952d8) 0
+ vptr=((& QRasterWindow::_ZTV13QRasterWindow) + 16)
+ QPaintDeviceWindow (0x0x7f1d235978c0) 0
+ primary-for QRasterWindow (0x0x7f1d1c3952d8)
+ QWindow (0x0x7f1d23597930) 0
+ primary-for QPaintDeviceWindow (0x0x7f1d235978c0)
+ QObject (0x0x7f1d1de5ecc0) 0
+ primary-for QWindow (0x0x7f1d23597930)
+ QSurface (0x0x7f1d1de5ed20) 16
+ vptr=((& QRasterWindow::_ZTV13QRasterWindow) + 344)
+ QPaintDevice (0x0x7f1d1de5ed80) 40
+ vptr=((& QRasterWindow::_ZTV13QRasterWindow) + 408)
+
+Class QScreen::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QScreen::QPrivateSignal (0x0x7f1d23450060) 0 empty
+
+Vtable for QScreen
+QScreen::_ZTV7QScreen: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QScreen)
+16 (int (*)(...))QScreen::metaObject
+24 (int (*)(...))QScreen::qt_metacast
+32 (int (*)(...))QScreen::qt_metacall
+40 (int (*)(...))QScreen::~QScreen
+48 (int (*)(...))QScreen::~QScreen
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QScreen
+ size=16 align=8
+ base size=16 base align=8
+QScreen (0x0x7f1d1c3953a8) 0
+ vptr=((& QScreen::_ZTV7QScreen) + 16)
+ QObject (0x0x7f1d23450000) 0
+ primary-for QScreen (0x0x7f1d1c3953a8)
+
+Class QSessionManager::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSessionManager::QPrivateSignal (0x0x7f1d234502a0) 0 empty
+
+Vtable for QSessionManager
+QSessionManager::_ZTV15QSessionManager: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QSessionManager)
+16 (int (*)(...))QSessionManager::metaObject
+24 (int (*)(...))QSessionManager::qt_metacast
+32 (int (*)(...))QSessionManager::qt_metacall
+40 (int (*)(...))QSessionManager::~QSessionManager
+48 (int (*)(...))QSessionManager::~QSessionManager
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSessionManager
+ size=16 align=8
+ base size=16 base align=8
+QSessionManager (0x0x7f1d1c395410) 0
+ vptr=((& QSessionManager::_ZTV15QSessionManager) + 16)
+ QObject (0x0x7f1d23450240) 0
+ primary-for QSessionManager (0x0x7f1d1c395410)
+
+Vtable for QStandardItem
+QStandardItem::_ZTV13QStandardItem: 11 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QStandardItem)
+16 (int (*)(...))QStandardItem::~QStandardItem
+24 (int (*)(...))QStandardItem::~QStandardItem
+32 (int (*)(...))QStandardItem::data
+40 (int (*)(...))QStandardItem::setData
+48 (int (*)(...))QStandardItem::clone
+56 (int (*)(...))QStandardItem::type
+64 (int (*)(...))QStandardItem::read
+72 (int (*)(...))QStandardItem::write
+80 (int (*)(...))QStandardItem::operator<
+
+Class QStandardItem
+ size=16 align=8
+ base size=16 base align=8
+QStandardItem (0x0x7f1d23450480) 0
+ vptr=((& QStandardItem::_ZTV13QStandardItem) + 16)
+
+Class QStandardItemModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStandardItemModel::QPrivateSignal (0x0x7f1d21730c00) 0 empty
+
+Vtable for QStandardItemModel
+QStandardItemModel::_ZTV18QStandardItemModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QStandardItemModel)
+16 (int (*)(...))QStandardItemModel::metaObject
+24 (int (*)(...))QStandardItemModel::qt_metacast
+32 (int (*)(...))QStandardItemModel::qt_metacall
+40 (int (*)(...))QStandardItemModel::~QStandardItemModel
+48 (int (*)(...))QStandardItemModel::~QStandardItemModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QStandardItemModel::index
+120 (int (*)(...))QStandardItemModel::parent
+128 (int (*)(...))QStandardItemModel::sibling
+136 (int (*)(...))QStandardItemModel::rowCount
+144 (int (*)(...))QStandardItemModel::columnCount
+152 (int (*)(...))QStandardItemModel::hasChildren
+160 (int (*)(...))QStandardItemModel::data
+168 (int (*)(...))QStandardItemModel::setData
+176 (int (*)(...))QStandardItemModel::headerData
+184 (int (*)(...))QStandardItemModel::setHeaderData
+192 (int (*)(...))QStandardItemModel::itemData
+200 (int (*)(...))QStandardItemModel::setItemData
+208 (int (*)(...))QStandardItemModel::mimeTypes
+216 (int (*)(...))QStandardItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QStandardItemModel::dropMimeData
+240 (int (*)(...))QStandardItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QStandardItemModel::insertRows
+264 (int (*)(...))QStandardItemModel::insertColumns
+272 (int (*)(...))QStandardItemModel::removeRows
+280 (int (*)(...))QStandardItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QStandardItemModel::flags
+328 (int (*)(...))QStandardItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QStandardItemModel
+ size=16 align=8
+ base size=16 base align=8
+QStandardItemModel (0x0x7f1d1c3959c0) 0
+ vptr=((& QStandardItemModel::_ZTV18QStandardItemModel) + 16)
+ QAbstractItemModel (0x0x7f1d1c395a28) 0
+ primary-for QStandardItemModel (0x0x7f1d1c3959c0)
+ QObject (0x0x7f1d21730ba0) 0
+ primary-for QAbstractItemModel (0x0x7f1d1c395a28)
+
+Class QStaticText
+ size=8 align=8
+ base size=8 base align=8
+QStaticText (0x0x7f1d20636000) 0
+
+Class QStyleHints::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStyleHints::QPrivateSignal (0x0x7f1d1d4ba300) 0 empty
+
+Vtable for QStyleHints
+QStyleHints::_ZTV11QStyleHints: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QStyleHints)
+16 (int (*)(...))QStyleHints::metaObject
+24 (int (*)(...))QStyleHints::qt_metacast
+32 (int (*)(...))QStyleHints::qt_metacall
+40 (int (*)(...))QStyleHints::~QStyleHints
+48 (int (*)(...))QStyleHints::~QStyleHints
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QStyleHints
+ size=16 align=8
+ base size=16 base align=8
+QStyleHints (0x0x7f1d1d8435b0) 0
+ vptr=((& QStyleHints::_ZTV11QStyleHints) + 16)
+ QObject (0x0x7f1d1d4ba2a0) 0
+ primary-for QStyleHints (0x0x7f1d1d8435b0)
+
+Class QTextObject::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextObject::QPrivateSignal (0x0x7f1d1d4ba540) 0 empty
+
+Vtable for QTextObject
+QTextObject::_ZTV11QTextObject: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTextObject)
+16 (int (*)(...))QTextObject::metaObject
+24 (int (*)(...))QTextObject::qt_metacast
+32 (int (*)(...))QTextObject::qt_metacall
+40 (int (*)(...))QTextObject::~QTextObject
+48 (int (*)(...))QTextObject::~QTextObject
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTextObject
+ size=16 align=8
+ base size=16 base align=8
+QTextObject (0x0x7f1d1d843618) 0
+ vptr=((& QTextObject::_ZTV11QTextObject) + 16)
+ QObject (0x0x7f1d1d4ba4e0) 0
+ primary-for QTextObject (0x0x7f1d1d843618)
+
+Class QTextBlockGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextBlockGroup::QPrivateSignal (0x0x7f1d1d4ba780) 0 empty
+
+Vtable for QTextBlockGroup
+QTextBlockGroup::_ZTV15QTextBlockGroup: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QTextBlockGroup)
+16 (int (*)(...))QTextBlockGroup::metaObject
+24 (int (*)(...))QTextBlockGroup::qt_metacast
+32 (int (*)(...))QTextBlockGroup::qt_metacall
+40 (int (*)(...))QTextBlockGroup::~QTextBlockGroup
+48 (int (*)(...))QTextBlockGroup::~QTextBlockGroup
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTextBlockGroup::blockInserted
+120 (int (*)(...))QTextBlockGroup::blockRemoved
+128 (int (*)(...))QTextBlockGroup::blockFormatChanged
+
+Class QTextBlockGroup
+ size=16 align=8
+ base size=16 base align=8
+QTextBlockGroup (0x0x7f1d1d843680) 0
+ vptr=((& QTextBlockGroup::_ZTV15QTextBlockGroup) + 16)
+ QTextObject (0x0x7f1d1d8436e8) 0
+ primary-for QTextBlockGroup (0x0x7f1d1d843680)
+ QObject (0x0x7f1d1d4ba720) 0
+ primary-for QTextObject (0x0x7f1d1d8436e8)
+
+Vtable for QTextFrameLayoutData
+QTextFrameLayoutData::_ZTV20QTextFrameLayoutData: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QTextFrameLayoutData)
+16 (int (*)(...))QTextFrameLayoutData::~QTextFrameLayoutData
+24 (int (*)(...))QTextFrameLayoutData::~QTextFrameLayoutData
+
+Class QTextFrameLayoutData
+ size=8 align=8
+ base size=8 base align=8
+QTextFrameLayoutData (0x0x7f1d1d4ba960) 0 nearly-empty
+ vptr=((& QTextFrameLayoutData::_ZTV20QTextFrameLayoutData) + 16)
+
+Class QTextFrame::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextFrame::QPrivateSignal (0x0x7f1d1d4baa20) 0 empty
+
+Class QTextFrame::iterator
+ size=32 align=8
+ base size=28 base align=8
+QTextFrame::iterator (0x0x7f1d1d4baa80) 0
+
+Vtable for QTextFrame
+QTextFrame::_ZTV10QTextFrame: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTextFrame)
+16 (int (*)(...))QTextFrame::metaObject
+24 (int (*)(...))QTextFrame::qt_metacast
+32 (int (*)(...))QTextFrame::qt_metacall
+40 (int (*)(...))QTextFrame::~QTextFrame
+48 (int (*)(...))QTextFrame::~QTextFrame
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTextFrame
+ size=16 align=8
+ base size=16 base align=8
+QTextFrame (0x0x7f1d1d843750) 0
+ vptr=((& QTextFrame::_ZTV10QTextFrame) + 16)
+ QTextObject (0x0x7f1d1d8437b8) 0
+ primary-for QTextFrame (0x0x7f1d1d843750)
+ QObject (0x0x7f1d1d4ba9c0) 0
+ primary-for QTextObject (0x0x7f1d1d8437b8)
+
+Vtable for QTextBlockUserData
+QTextBlockUserData::_ZTV18QTextBlockUserData: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QTextBlockUserData)
+16 (int (*)(...))QTextBlockUserData::~QTextBlockUserData
+24 (int (*)(...))QTextBlockUserData::~QTextBlockUserData
+
+Class QTextBlockUserData
+ size=8 align=8
+ base size=8 base align=8
+QTextBlockUserData (0x0x7f1d1d2d2420) 0 nearly-empty
+ vptr=((& QTextBlockUserData::_ZTV18QTextBlockUserData) + 16)
+
+Class QTextBlock::iterator
+ size=24 align=8
+ base size=20 base align=8
+QTextBlock::iterator (0x0x7f1d1d2d24e0) 0
+
+Class QTextBlock
+ size=16 align=8
+ base size=12 base align=8
+QTextBlock (0x0x7f1d1d2d2480) 0
+
+Class QTextFragment
+ size=16 align=8
+ base size=16 base align=8
+QTextFragment (0x0x7f1d1c4bd1e0) 0
+
+Class QSyntaxHighlighter::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSyntaxHighlighter::QPrivateSignal (0x0x7f1d1bfa29c0) 0 empty
+
+Vtable for QSyntaxHighlighter
+QSyntaxHighlighter::_ZTV18QSyntaxHighlighter: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QSyntaxHighlighter)
+16 (int (*)(...))QSyntaxHighlighter::metaObject
+24 (int (*)(...))QSyntaxHighlighter::qt_metacast
+32 (int (*)(...))QSyntaxHighlighter::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QSyntaxHighlighter
+ size=16 align=8
+ base size=16 base align=8
+QSyntaxHighlighter (0x0x7f1d1c437a28) 0
+ vptr=((& QSyntaxHighlighter::_ZTV18QSyntaxHighlighter) + 16)
+ QObject (0x0x7f1d1bfa2960) 0
+ primary-for QSyntaxHighlighter (0x0x7f1d1c437a28)
+
+Class QTextDocumentFragment
+ size=8 align=8
+ base size=8 base align=8
+QTextDocumentFragment (0x0x7f1d1bfa2ba0) 0
+
+Class QTextDocumentWriter
+ size=8 align=8
+ base size=8 base align=8
+QTextDocumentWriter (0x0x7f1d1bfa2c00) 0
+
+Class QTextList::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextList::QPrivateSignal (0x0x7f1d1bfa2cc0) 0 empty
+
+Vtable for QTextList
+QTextList::_ZTV9QTextList: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QTextList)
+16 (int (*)(...))QTextList::metaObject
+24 (int (*)(...))QTextList::qt_metacast
+32 (int (*)(...))QTextList::qt_metacall
+40 (int (*)(...))QTextList::~QTextList
+48 (int (*)(...))QTextList::~QTextList
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTextBlockGroup::blockInserted
+120 (int (*)(...))QTextBlockGroup::blockRemoved
+128 (int (*)(...))QTextBlockGroup::blockFormatChanged
+
+Class QTextList
+ size=16 align=8
+ base size=16 base align=8
+QTextList (0x0x7f1d1c437a90) 0
+ vptr=((& QTextList::_ZTV9QTextList) + 16)
+ QTextBlockGroup (0x0x7f1d1c437af8) 0
+ primary-for QTextList (0x0x7f1d1c437a90)
+ QTextObject (0x0x7f1d1c437b60) 0
+ primary-for QTextBlockGroup (0x0x7f1d1c437af8)
+ QObject (0x0x7f1d1bfa2c60) 0
+ primary-for QTextObject (0x0x7f1d1c437b60)
+
+Class QTextTableCell
+ size=16 align=8
+ base size=12 base align=8
+QTextTableCell (0x0x7f1d1b9dd300) 0
+
+Class QTextTable::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextTable::QPrivateSignal (0x0x7f1d1b9ddb40) 0 empty
+
+Vtable for QTextTable
+QTextTable::_ZTV10QTextTable: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTextTable)
+16 (int (*)(...))QTextTable::metaObject
+24 (int (*)(...))QTextTable::qt_metacast
+32 (int (*)(...))QTextTable::qt_metacall
+40 (int (*)(...))QTextTable::~QTextTable
+48 (int (*)(...))QTextTable::~QTextTable
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTextTable
+ size=16 align=8
+ base size=16 base align=8
+QTextTable (0x0x7f1d1c437bc8) 0
+ vptr=((& QTextTable::_ZTV10QTextTable) + 16)
+ QTextFrame (0x0x7f1d1c437c30) 0
+ primary-for QTextTable (0x0x7f1d1c437bc8)
+ QTextObject (0x0x7f1d1c437c98) 0
+ primary-for QTextFrame (0x0x7f1d1c437c30)
+ QObject (0x0x7f1d1b9ddae0) 0
+ primary-for QTextObject (0x0x7f1d1c437c98)
+
+Class QValidator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QValidator::QPrivateSignal (0x0x7f1d1ba06120) 0 empty
+
+Vtable for QValidator
+QValidator::_ZTV10QValidator: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QValidator)
+16 (int (*)(...))QValidator::metaObject
+24 (int (*)(...))QValidator::qt_metacast
+32 (int (*)(...))QValidator::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))QValidator::fixup
+
+Class QValidator
+ size=16 align=8
+ base size=16 base align=8
+QValidator (0x0x7f1d1c437d00) 0
+ vptr=((& QValidator::_ZTV10QValidator) + 16)
+ QObject (0x0x7f1d1ba060c0) 0
+ primary-for QValidator (0x0x7f1d1c437d00)
+
+Class QIntValidator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QIntValidator::QPrivateSignal (0x0x7f1d1ba06420) 0 empty
+
+Vtable for QIntValidator
+QIntValidator::_ZTV13QIntValidator: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QIntValidator)
+16 (int (*)(...))QIntValidator::metaObject
+24 (int (*)(...))QIntValidator::qt_metacast
+32 (int (*)(...))QIntValidator::qt_metacall
+40 (int (*)(...))QIntValidator::~QIntValidator
+48 (int (*)(...))QIntValidator::~QIntValidator
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QIntValidator::validate
+120 (int (*)(...))QIntValidator::fixup
+128 (int (*)(...))QIntValidator::setRange
+
+Class QIntValidator
+ size=24 align=8
+ base size=24 base align=8
+QIntValidator (0x0x7f1d1c437d68) 0
+ vptr=((& QIntValidator::_ZTV13QIntValidator) + 16)
+ QValidator (0x0x7f1d1c437dd0) 0
+ primary-for QIntValidator (0x0x7f1d1c437d68)
+ QObject (0x0x7f1d1ba063c0) 0
+ primary-for QValidator (0x0x7f1d1c437dd0)
+
+Class QDoubleValidator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDoubleValidator::QPrivateSignal (0x0x7f1d1ba06660) 0 empty
+
+Vtable for QDoubleValidator
+QDoubleValidator::_ZTV16QDoubleValidator: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QDoubleValidator)
+16 (int (*)(...))QDoubleValidator::metaObject
+24 (int (*)(...))QDoubleValidator::qt_metacast
+32 (int (*)(...))QDoubleValidator::qt_metacall
+40 (int (*)(...))QDoubleValidator::~QDoubleValidator
+48 (int (*)(...))QDoubleValidator::~QDoubleValidator
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QDoubleValidator::validate
+120 (int (*)(...))QValidator::fixup
+128 (int (*)(...))QDoubleValidator::setRange
+
+Class QDoubleValidator
+ size=40 align=8
+ base size=36 base align=8
+QDoubleValidator (0x0x7f1d1c437e38) 0
+ vptr=((& QDoubleValidator::_ZTV16QDoubleValidator) + 16)
+ QValidator (0x0x7f1d1c437ea0) 0
+ primary-for QDoubleValidator (0x0x7f1d1c437e38)
+ QObject (0x0x7f1d1ba06600) 0
+ primary-for QValidator (0x0x7f1d1c437ea0)
+
+Class QRegExpValidator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QRegExpValidator::QPrivateSignal (0x0x7f1d1ba06ae0) 0 empty
+
+Vtable for QRegExpValidator
+QRegExpValidator::_ZTV16QRegExpValidator: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QRegExpValidator)
+16 (int (*)(...))QRegExpValidator::metaObject
+24 (int (*)(...))QRegExpValidator::qt_metacast
+32 (int (*)(...))QRegExpValidator::qt_metacall
+40 (int (*)(...))QRegExpValidator::~QRegExpValidator
+48 (int (*)(...))QRegExpValidator::~QRegExpValidator
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QRegExpValidator::validate
+120 (int (*)(...))QValidator::fixup
+
+Class QRegExpValidator
+ size=24 align=8
+ base size=24 base align=8
+QRegExpValidator (0x0x7f1d1c437f08) 0
+ vptr=((& QRegExpValidator::_ZTV16QRegExpValidator) + 16)
+ QValidator (0x0x7f1d1c437f70) 0
+ primary-for QRegExpValidator (0x0x7f1d1c437f08)
+ QObject (0x0x7f1d1ba06a80) 0
+ primary-for QValidator (0x0x7f1d1c437f70)
+
+Class QRegularExpressionValidator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QRegularExpressionValidator::QPrivateSignal (0x0x7f1d1ba06cc0) 0 empty
+
+Vtable for QRegularExpressionValidator
+QRegularExpressionValidator::_ZTV27QRegularExpressionValidator: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QRegularExpressionValidator)
+16 (int (*)(...))QRegularExpressionValidator::metaObject
+24 (int (*)(...))QRegularExpressionValidator::qt_metacast
+32 (int (*)(...))QRegularExpressionValidator::qt_metacall
+40 (int (*)(...))QRegularExpressionValidator::~QRegularExpressionValidator
+48 (int (*)(...))QRegularExpressionValidator::~QRegularExpressionValidator
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QRegularExpressionValidator::validate
+120 (int (*)(...))QValidator::fixup
+
+Class QRegularExpressionValidator
+ size=16 align=8
+ base size=16 base align=8
+QRegularExpressionValidator (0x0x7f1d1b2c2000) 0
+ vptr=((& QRegularExpressionValidator::_ZTV27QRegularExpressionValidator) + 16)
+ QValidator (0x0x7f1d1b2c2068) 0
+ primary-for QRegularExpressionValidator (0x0x7f1d1b2c2000)
+ QObject (0x0x7f1d1ba06c60) 0
+ primary-for QValidator (0x0x7f1d1b2c2068)
+
+Class QNetworkRequest
+ size=8 align=8
+ base size=8 base align=8
+QNetworkRequest (0x0x7f1d1ba06ea0) 0
+
+Class QNetworkCacheMetaData
+ size=8 align=8
+ base size=8 base align=8
+QNetworkCacheMetaData (0x0x7f1d1b304360) 0
+
+Class QAbstractNetworkCache::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractNetworkCache::QPrivateSignal (0x0x7f1d1b340840) 0 empty
+
+Vtable for QAbstractNetworkCache
+QAbstractNetworkCache::_ZTV21QAbstractNetworkCache: 22 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QAbstractNetworkCache)
+16 (int (*)(...))QAbstractNetworkCache::metaObject
+24 (int (*)(...))QAbstractNetworkCache::qt_metacast
+32 (int (*)(...))QAbstractNetworkCache::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))__cxa_pure_virtual
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractNetworkCache
+ size=16 align=8
+ base size=16 base align=8
+QAbstractNetworkCache (0x0x7f1d1b33cd00) 0
+ vptr=((& QAbstractNetworkCache::_ZTV21QAbstractNetworkCache) + 16)
+ QObject (0x0x7f1d1b3407e0) 0
+ primary-for QAbstractNetworkCache (0x0x7f1d1b33cd00)
+
+Class QAbstractSocket::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractSocket::QPrivateSignal (0x0x7f1d1b340a80) 0 empty
+
+Vtable for QAbstractSocket
+QAbstractSocket::_ZTV15QAbstractSocket: 41 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QAbstractSocket)
+16 (int (*)(...))QAbstractSocket::metaObject
+24 (int (*)(...))QAbstractSocket::qt_metacast
+32 (int (*)(...))QAbstractSocket::qt_metacall
+40 (int (*)(...))QAbstractSocket::~QAbstractSocket
+48 (int (*)(...))QAbstractSocket::~QAbstractSocket
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractSocket::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QAbstractSocket::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QAbstractSocket::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QAbstractSocket::bytesAvailable
+184 (int (*)(...))QAbstractSocket::bytesToWrite
+192 (int (*)(...))QAbstractSocket::canReadLine
+200 (int (*)(...))QAbstractSocket::waitForReadyRead
+208 (int (*)(...))QAbstractSocket::waitForBytesWritten
+216 (int (*)(...))QAbstractSocket::readData
+224 (int (*)(...))QAbstractSocket::readLineData
+232 (int (*)(...))QAbstractSocket::writeData
+240 (int (*)(...))QAbstractSocket::resume
+248 (int (*)(...))QAbstractSocket::connectToHost
+256 (int (*)(...))QAbstractSocket::connectToHost
+264 (int (*)(...))QAbstractSocket::disconnectFromHost
+272 (int (*)(...))QAbstractSocket::setReadBufferSize
+280 (int (*)(...))QAbstractSocket::socketDescriptor
+288 (int (*)(...))QAbstractSocket::setSocketDescriptor
+296 (int (*)(...))QAbstractSocket::setSocketOption
+304 (int (*)(...))QAbstractSocket::socketOption
+312 (int (*)(...))QAbstractSocket::waitForConnected
+320 (int (*)(...))QAbstractSocket::waitForDisconnected
+
+Class QAbstractSocket
+ size=16 align=8
+ base size=16 base align=8
+QAbstractSocket (0x0x7f1d1b33cd68) 0
+ vptr=((& QAbstractSocket::_ZTV15QAbstractSocket) + 16)
+ QIODevice (0x0x7f1d1b33cdd0) 0
+ primary-for QAbstractSocket (0x0x7f1d1b33cd68)
+ QObject (0x0x7f1d1b340a20) 0
+ primary-for QIODevice (0x0x7f1d1b33cdd0)
+
+Class QAuthenticator
+ size=8 align=8
+ base size=8 base align=8
+QAuthenticator (0x0x7f1d1b37a1e0) 0
+
+Class QDnsDomainNameRecord
+ size=8 align=8
+ base size=8 base align=8
+QDnsDomainNameRecord (0x0x7f1d1b37a2a0) 0
+
+Class QDnsHostAddressRecord
+ size=8 align=8
+ base size=8 base align=8
+QDnsHostAddressRecord (0x0x7f1d1b3b4360) 0
+
+Class QDnsMailExchangeRecord
+ size=8 align=8
+ base size=8 base align=8
+QDnsMailExchangeRecord (0x0x7f1d1b3eb420) 0
+
+Class QDnsServiceRecord
+ size=8 align=8
+ base size=8 base align=8
+QDnsServiceRecord (0x0x7f1d1b421420) 0
+
+Class QDnsTextRecord
+ size=8 align=8
+ base size=8 base align=8
+QDnsTextRecord (0x0x7f1d1b454300) 0
+
+Class QDnsLookup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDnsLookup::QPrivateSignal (0x0x7f1d1b48b360) 0 empty
+
+Vtable for QDnsLookup
+QDnsLookup::_ZTV10QDnsLookup: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QDnsLookup)
+16 (int (*)(...))QDnsLookup::metaObject
+24 (int (*)(...))QDnsLookup::qt_metacast
+32 (int (*)(...))QDnsLookup::qt_metacall
+40 (int (*)(...))QDnsLookup::~QDnsLookup
+48 (int (*)(...))QDnsLookup::~QDnsLookup
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QDnsLookup
+ size=16 align=8
+ base size=16 base align=8
+QDnsLookup (0x0x7f1d1b487c98) 0
+ vptr=((& QDnsLookup::_ZTV10QDnsLookup) + 16)
+ QObject (0x0x7f1d1b48b300) 0
+ primary-for QDnsLookup (0x0x7f1d1b487c98)
+
+Class QTcpSocket::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTcpSocket::QPrivateSignal (0x0x7f1d1b48b720) 0 empty
+
+Vtable for QTcpSocket
+QTcpSocket::_ZTV10QTcpSocket: 41 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTcpSocket)
+16 (int (*)(...))QTcpSocket::metaObject
+24 (int (*)(...))QTcpSocket::qt_metacast
+32 (int (*)(...))QTcpSocket::qt_metacall
+40 (int (*)(...))QTcpSocket::~QTcpSocket
+48 (int (*)(...))QTcpSocket::~QTcpSocket
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractSocket::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QAbstractSocket::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QAbstractSocket::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QAbstractSocket::bytesAvailable
+184 (int (*)(...))QAbstractSocket::bytesToWrite
+192 (int (*)(...))QAbstractSocket::canReadLine
+200 (int (*)(...))QAbstractSocket::waitForReadyRead
+208 (int (*)(...))QAbstractSocket::waitForBytesWritten
+216 (int (*)(...))QAbstractSocket::readData
+224 (int (*)(...))QAbstractSocket::readLineData
+232 (int (*)(...))QAbstractSocket::writeData
+240 (int (*)(...))QAbstractSocket::resume
+248 (int (*)(...))QAbstractSocket::connectToHost
+256 (int (*)(...))QAbstractSocket::connectToHost
+264 (int (*)(...))QAbstractSocket::disconnectFromHost
+272 (int (*)(...))QAbstractSocket::setReadBufferSize
+280 (int (*)(...))QAbstractSocket::socketDescriptor
+288 (int (*)(...))QAbstractSocket::setSocketDescriptor
+296 (int (*)(...))QAbstractSocket::setSocketOption
+304 (int (*)(...))QAbstractSocket::socketOption
+312 (int (*)(...))QAbstractSocket::waitForConnected
+320 (int (*)(...))QAbstractSocket::waitForDisconnected
+
+Class QTcpSocket
+ size=16 align=8
+ base size=16 base align=8
+QTcpSocket (0x0x7f1d1b487d00) 0
+ vptr=((& QTcpSocket::_ZTV10QTcpSocket) + 16)
+ QAbstractSocket (0x0x7f1d1b487d68) 0
+ primary-for QTcpSocket (0x0x7f1d1b487d00)
+ QIODevice (0x0x7f1d1b487dd0) 0
+ primary-for QAbstractSocket (0x0x7f1d1b487d68)
+ QObject (0x0x7f1d1b48b6c0) 0
+ primary-for QIODevice (0x0x7f1d1b487dd0)
+
+Class QSslCertificate
+ size=8 align=8
+ base size=8 base align=8
+QSslCertificate (0x0x7f1d1b0ae000) 0
+
+Class QSslError
+ size=8 align=8
+ base size=8 base align=8
+QSslError (0x0x7f1d1b0e9840) 0
+
+Class QSslSocket::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSslSocket::QPrivateSignal (0x0x7f1d1b126ae0) 0 empty
+
+Vtable for QSslSocket
+QSslSocket::_ZTV10QSslSocket: 41 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QSslSocket)
+16 (int (*)(...))QSslSocket::metaObject
+24 (int (*)(...))QSslSocket::qt_metacast
+32 (int (*)(...))QSslSocket::qt_metacall
+40 (int (*)(...))QSslSocket::~QSslSocket
+48 (int (*)(...))QSslSocket::~QSslSocket
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractSocket::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QSslSocket::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QSslSocket::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QSslSocket::bytesAvailable
+184 (int (*)(...))QSslSocket::bytesToWrite
+192 (int (*)(...))QSslSocket::canReadLine
+200 (int (*)(...))QSslSocket::waitForReadyRead
+208 (int (*)(...))QSslSocket::waitForBytesWritten
+216 (int (*)(...))QSslSocket::readData
+224 (int (*)(...))QAbstractSocket::readLineData
+232 (int (*)(...))QSslSocket::writeData
+240 (int (*)(...))QSslSocket::resume
+248 (int (*)(...))QSslSocket::connectToHost
+256 (int (*)(...))QAbstractSocket::connectToHost
+264 (int (*)(...))QSslSocket::disconnectFromHost
+272 (int (*)(...))QSslSocket::setReadBufferSize
+280 (int (*)(...))QAbstractSocket::socketDescriptor
+288 (int (*)(...))QSslSocket::setSocketDescriptor
+296 (int (*)(...))QSslSocket::setSocketOption
+304 (int (*)(...))QSslSocket::socketOption
+312 (int (*)(...))QSslSocket::waitForConnected
+320 (int (*)(...))QSslSocket::waitForDisconnected
+
+Class QSslSocket
+ size=16 align=8
+ base size=16 base align=8
+QSslSocket (0x0x7f1d1b125a90) 0
+ vptr=((& QSslSocket::_ZTV10QSslSocket) + 16)
+ QTcpSocket (0x0x7f1d1b125af8) 0
+ primary-for QSslSocket (0x0x7f1d1b125a90)
+ QAbstractSocket (0x0x7f1d1b125b60) 0
+ primary-for QTcpSocket (0x0x7f1d1b125af8)
+ QIODevice (0x0x7f1d1b125bc8) 0
+ primary-for QAbstractSocket (0x0x7f1d1b125b60)
+ QObject (0x0x7f1d1b126a80) 0
+ primary-for QIODevice (0x0x7f1d1b125bc8)
+
+Class QDtlsClientVerifier::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDtlsClientVerifier::QPrivateSignal (0x0x7f1d1b126d20) 0 empty
+
+Class QDtlsClientVerifier::GeneratorParameters
+ size=16 align=8
+ base size=16 base align=8
+QDtlsClientVerifier::GeneratorParameters (0x0x7f1d1b126d80) 0
+
+Vtable for QDtlsClientVerifier
+QDtlsClientVerifier::_ZTV19QDtlsClientVerifier: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QDtlsClientVerifier)
+16 (int (*)(...))QDtlsClientVerifier::metaObject
+24 (int (*)(...))QDtlsClientVerifier::qt_metacast
+32 (int (*)(...))QDtlsClientVerifier::qt_metacall
+40 (int (*)(...))QDtlsClientVerifier::~QDtlsClientVerifier
+48 (int (*)(...))QDtlsClientVerifier::~QDtlsClientVerifier
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QDtlsClientVerifier
+ size=16 align=8
+ base size=16 base align=8
+QDtlsClientVerifier (0x0x7f1d1b125c30) 0
+ vptr=((& QDtlsClientVerifier::_ZTV19QDtlsClientVerifier) + 16)
+ QObject (0x0x7f1d1b126cc0) 0
+ primary-for QDtlsClientVerifier (0x0x7f1d1b125c30)
+
+Class QDtls::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDtls::QPrivateSignal (0x0x7f1d1b15e000) 0 empty
+
+Vtable for QDtls
+QDtls::_ZTV5QDtls: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI5QDtls)
+16 (int (*)(...))QDtls::metaObject
+24 (int (*)(...))QDtls::qt_metacast
+32 (int (*)(...))QDtls::qt_metacall
+40 (int (*)(...))QDtls::~QDtls
+48 (int (*)(...))QDtls::~QDtls
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QDtls
+ size=16 align=8
+ base size=16 base align=8
+QDtls (0x0x7f1d1b125c98) 0
+ vptr=((& QDtls::_ZTV5QDtls) + 16)
+ QObject (0x0x7f1d1b126f60) 0
+ primary-for QDtls (0x0x7f1d1b125c98)
+
+Class QIPv6Address
+ size=16 align=1
+ base size=16 base align=1
+QIPv6Address (0x0x7f1d1b15e240) 0
+
+Class QHostAddress
+ size=8 align=8
+ base size=8 base align=8
+QHostAddress (0x0x7f1d1b15e360) 0
+
+Class QHostInfo
+ size=8 align=8
+ base size=8 base align=8
+QHostInfo (0x0x7f1d1b19b120) 0
+
+Class QHstsPolicy
+ size=8 align=8
+ base size=8 base align=8
+QHstsPolicy (0x0x7f1d1b1d37e0) 0
+
+Class QHttp2Configuration
+ size=8 align=8
+ base size=8 base align=8
+QHttp2Configuration (0x0x7f1d1b20ff00) 0
+
+Class QHttpPart
+ size=8 align=8
+ base size=8 base align=8
+QHttpPart (0x0x7f1d1b23c480) 0
+
+Class QHttpMultiPart::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QHttpMultiPart::QPrivateSignal (0x0x7f1d1b276120) 0 empty
+
+Vtable for QHttpMultiPart
+QHttpMultiPart::_ZTV14QHttpMultiPart: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QHttpMultiPart)
+16 (int (*)(...))QHttpMultiPart::metaObject
+24 (int (*)(...))QHttpMultiPart::qt_metacast
+32 (int (*)(...))QHttpMultiPart::qt_metacall
+40 (int (*)(...))QHttpMultiPart::~QHttpMultiPart
+48 (int (*)(...))QHttpMultiPart::~QHttpMultiPart
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QHttpMultiPart
+ size=16 align=8
+ base size=16 base align=8
+QHttpMultiPart (0x0x7f1d1b273410) 0
+ vptr=((& QHttpMultiPart::_ZTV14QHttpMultiPart) + 16)
+ QObject (0x0x7f1d1b2760c0) 0
+ primary-for QHttpMultiPart (0x0x7f1d1b273410)
+
+Class QLocalServer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLocalServer::QPrivateSignal (0x0x7f1d1b276360) 0 empty
+
+Vtable for QLocalServer
+QLocalServer::_ZTV12QLocalServer: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QLocalServer)
+16 (int (*)(...))QLocalServer::metaObject
+24 (int (*)(...))QLocalServer::qt_metacast
+32 (int (*)(...))QLocalServer::qt_metacall
+40 (int (*)(...))QLocalServer::~QLocalServer
+48 (int (*)(...))QLocalServer::~QLocalServer
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QLocalServer::hasPendingConnections
+120 (int (*)(...))QLocalServer::nextPendingConnection
+128 (int (*)(...))QLocalServer::incomingConnection
+
+Class QLocalServer
+ size=16 align=8
+ base size=16 base align=8
+QLocalServer (0x0x7f1d1b273478) 0
+ vptr=((& QLocalServer::_ZTV12QLocalServer) + 16)
+ QObject (0x0x7f1d1b276300) 0
+ primary-for QLocalServer (0x0x7f1d1b273478)
+
+Class QLocalSocket::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLocalSocket::QPrivateSignal (0x0x7f1d1b276de0) 0 empty
+
+Vtable for QLocalSocket
+QLocalSocket::_ZTV12QLocalSocket: 30 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QLocalSocket)
+16 (int (*)(...))QLocalSocket::metaObject
+24 (int (*)(...))QLocalSocket::qt_metacast
+32 (int (*)(...))QLocalSocket::qt_metacall
+40 (int (*)(...))QLocalSocket::~QLocalSocket
+48 (int (*)(...))QLocalSocket::~QLocalSocket
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QLocalSocket::isSequential
+120 (int (*)(...))QLocalSocket::open
+128 (int (*)(...))QLocalSocket::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QIODevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QLocalSocket::bytesAvailable
+184 (int (*)(...))QLocalSocket::bytesToWrite
+192 (int (*)(...))QLocalSocket::canReadLine
+200 (int (*)(...))QLocalSocket::waitForReadyRead
+208 (int (*)(...))QLocalSocket::waitForBytesWritten
+216 (int (*)(...))QLocalSocket::readData
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))QLocalSocket::writeData
+
+Class QLocalSocket
+ size=16 align=8
+ base size=16 base align=8
+QLocalSocket (0x0x7f1d1b273618) 0
+ vptr=((& QLocalSocket::_ZTV12QLocalSocket) + 16)
+ QIODevice (0x0x7f1d1b273680) 0
+ primary-for QLocalSocket (0x0x7f1d1b273618)
+ QObject (0x0x7f1d1b276d80) 0
+ primary-for QIODevice (0x0x7f1d1b273680)
+
+Class QSslConfiguration
+ size=8 align=8
+ base size=8 base align=8
+QSslConfiguration (0x0x7f1d1b29d000) 0
+
+Class QSslPreSharedKeyAuthenticator
+ size=8 align=8
+ base size=8 base align=8
+QSslPreSharedKeyAuthenticator (0x0x7f1d1aeed4e0) 0
+
+Class QNetworkAccessManager::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QNetworkAccessManager::QPrivateSignal (0x0x7f1d1af29b40) 0 empty
+
+Vtable for QNetworkAccessManager
+QNetworkAccessManager::_ZTV21QNetworkAccessManager: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QNetworkAccessManager)
+16 (int (*)(...))QNetworkAccessManager::metaObject
+24 (int (*)(...))QNetworkAccessManager::qt_metacast
+32 (int (*)(...))QNetworkAccessManager::qt_metacall
+40 (int (*)(...))QNetworkAccessManager::~QNetworkAccessManager
+48 (int (*)(...))QNetworkAccessManager::~QNetworkAccessManager
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QNetworkAccessManager::createRequest
+
+Class QNetworkAccessManager
+ size=16 align=8
+ base size=16 base align=8
+QNetworkAccessManager (0x0x7f1d1af26b60) 0
+ vptr=((& QNetworkAccessManager::_ZTV21QNetworkAccessManager) + 16)
+ QObject (0x0x7f1d1af29ae0) 0
+ primary-for QNetworkAccessManager (0x0x7f1d1af26b60)
+
+Class QNetworkConfiguration
+ size=8 align=8
+ base size=8 base align=8
+QNetworkConfiguration (0x0x7f1d1af29de0) 0
+
+Class QNetworkConfigurationManager::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QNetworkConfigurationManager::QPrivateSignal (0x0x7f1d1af831e0) 0 empty
+
+Vtable for QNetworkConfigurationManager
+QNetworkConfigurationManager::_ZTV28QNetworkConfigurationManager: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI28QNetworkConfigurationManager)
+16 (int (*)(...))QNetworkConfigurationManager::metaObject
+24 (int (*)(...))QNetworkConfigurationManager::qt_metacast
+32 (int (*)(...))QNetworkConfigurationManager::qt_metacall
+40 (int (*)(...))QNetworkConfigurationManager::~QNetworkConfigurationManager
+48 (int (*)(...))QNetworkConfigurationManager::~QNetworkConfigurationManager
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QNetworkConfigurationManager
+ size=16 align=8
+ base size=16 base align=8
+QNetworkConfigurationManager (0x0x7f1d1af79e38) 0
+ vptr=((& QNetworkConfigurationManager::_ZTV28QNetworkConfigurationManager) + 16)
+ QObject (0x0x7f1d1af83180) 0
+ primary-for QNetworkConfigurationManager (0x0x7f1d1af79e38)
+
+Class QNetworkCookie
+ size=8 align=8
+ base size=8 base align=8
+QNetworkCookie (0x0x7f1d1af83d20) 0
+
+Class QNetworkCookieJar::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QNetworkCookieJar::QPrivateSignal (0x0x7f1d1aff1360) 0 empty
+
+Vtable for QNetworkCookieJar
+QNetworkCookieJar::_ZTV17QNetworkCookieJar: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QNetworkCookieJar)
+16 (int (*)(...))QNetworkCookieJar::metaObject
+24 (int (*)(...))QNetworkCookieJar::qt_metacast
+32 (int (*)(...))QNetworkCookieJar::qt_metacall
+40 (int (*)(...))QNetworkCookieJar::~QNetworkCookieJar
+48 (int (*)(...))QNetworkCookieJar::~QNetworkCookieJar
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QNetworkCookieJar::cookiesForUrl
+120 (int (*)(...))QNetworkCookieJar::setCookiesFromUrl
+128 (int (*)(...))QNetworkCookieJar::insertCookie
+136 (int (*)(...))QNetworkCookieJar::updateCookie
+144 (int (*)(...))QNetworkCookieJar::deleteCookie
+152 (int (*)(...))QNetworkCookieJar::validateCookie
+
+Class QNetworkCookieJar
+ size=16 align=8
+ base size=16 base align=8
+QNetworkCookieJar (0x0x7f1d1aff00d0) 0
+ vptr=((& QNetworkCookieJar::_ZTV17QNetworkCookieJar) + 16)
+ QObject (0x0x7f1d1aff1300) 0
+ primary-for QNetworkCookieJar (0x0x7f1d1aff00d0)
+
+Class QNetworkDatagram
+ size=8 align=8
+ base size=8 base align=8
+QNetworkDatagram (0x0x7f1d1aff1540) 0
+
+Class QNetworkDiskCache::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QNetworkDiskCache::QPrivateSignal (0x0x7f1d1b06e0c0) 0 empty
+
+Vtable for QNetworkDiskCache
+QNetworkDiskCache::_ZTV17QNetworkDiskCache: 23 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QNetworkDiskCache)
+16 (int (*)(...))QNetworkDiskCache::metaObject
+24 (int (*)(...))QNetworkDiskCache::qt_metacast
+32 (int (*)(...))QNetworkDiskCache::qt_metacall
+40 (int (*)(...))QNetworkDiskCache::~QNetworkDiskCache
+48 (int (*)(...))QNetworkDiskCache::~QNetworkDiskCache
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QNetworkDiskCache::metaData
+120 (int (*)(...))QNetworkDiskCache::updateMetaData
+128 (int (*)(...))QNetworkDiskCache::data
+136 (int (*)(...))QNetworkDiskCache::remove
+144 (int (*)(...))QNetworkDiskCache::cacheSize
+152 (int (*)(...))QNetworkDiskCache::prepare
+160 (int (*)(...))QNetworkDiskCache::insert
+168 (int (*)(...))QNetworkDiskCache::clear
+176 (int (*)(...))QNetworkDiskCache::expire
+
+Class QNetworkDiskCache
+ size=16 align=8
+ base size=16 base align=8
+QNetworkDiskCache (0x0x7f1d1b05ef70) 0
+ vptr=((& QNetworkDiskCache::_ZTV17QNetworkDiskCache) + 16)
+ QAbstractNetworkCache (0x0x7f1d1b070000) 0
+ primary-for QNetworkDiskCache (0x0x7f1d1b05ef70)
+ QObject (0x0x7f1d1b06e060) 0
+ primary-for QAbstractNetworkCache (0x0x7f1d1b070000)
+
+Class QNetworkAddressEntry
+ size=8 align=8
+ base size=8 base align=8
+QNetworkAddressEntry (0x0x7f1d1b06e2a0) 0
+
+Class QNetworkInterface
+ size=8 align=8
+ base size=8 base align=8
+QNetworkInterface (0x0x7f1d1ace5240) 0
+
+Class QNetworkProxyQuery
+ size=8 align=8
+ base size=8 base align=8
+QNetworkProxyQuery (0x0x7f1d1ad5cd20) 0
+
+Class QNetworkProxy
+ size=8 align=8
+ base size=8 base align=8
+QNetworkProxy (0x0x7f1d1ade4060) 0
+
+Vtable for QNetworkProxyFactory
+QNetworkProxyFactory::_ZTV20QNetworkProxyFactory: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QNetworkProxyFactory)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QNetworkProxyFactory
+ size=8 align=8
+ base size=8 base align=8
+QNetworkProxyFactory (0x0x7f1d1ae4f8a0) 0 nearly-empty
+ vptr=((& QNetworkProxyFactory::_ZTV20QNetworkProxyFactory) + 16)
+
+Class QNetworkReply::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QNetworkReply::QPrivateSignal (0x0x7f1d1ae4fb40) 0 empty
+
+Vtable for QNetworkReply
+QNetworkReply::_ZTV13QNetworkReply: 36 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QNetworkReply)
+16 (int (*)(...))QNetworkReply::metaObject
+24 (int (*)(...))QNetworkReply::qt_metacast
+32 (int (*)(...))QNetworkReply::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QNetworkReply::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QNetworkReply::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QIODevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))__cxa_pure_virtual
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))QNetworkReply::writeData
+240 (int (*)(...))QNetworkReply::setReadBufferSize
+248 (int (*)(...))__cxa_pure_virtual
+256 (int (*)(...))QNetworkReply::ignoreSslErrors
+264 (int (*)(...))QNetworkReply::sslConfigurationImplementation
+272 (int (*)(...))QNetworkReply::setSslConfigurationImplementation
+280 (int (*)(...))QNetworkReply::ignoreSslErrorsImplementation
+
+Class QNetworkReply
+ size=16 align=8
+ base size=16 base align=8
+QNetworkReply (0x0x7f1d1ae4e410) 0
+ vptr=((& QNetworkReply::_ZTV13QNetworkReply) + 16)
+ QIODevice (0x0x7f1d1ae4e478) 0
+ primary-for QNetworkReply (0x0x7f1d1ae4e410)
+ QObject (0x0x7f1d1ae4fae0) 0
+ primary-for QIODevice (0x0x7f1d1ae4e478)
+
+Class QNetworkSession::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QNetworkSession::QPrivateSignal (0x0x7f1d1ae82060) 0 empty
+
+Vtable for QNetworkSession
+QNetworkSession::_ZTV15QNetworkSession: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QNetworkSession)
+16 (int (*)(...))QNetworkSession::metaObject
+24 (int (*)(...))QNetworkSession::qt_metacast
+32 (int (*)(...))QNetworkSession::qt_metacall
+40 (int (*)(...))QNetworkSession::~QNetworkSession
+48 (int (*)(...))QNetworkSession::~QNetworkSession
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QNetworkSession::connectNotify
+104 (int (*)(...))QNetworkSession::disconnectNotify
+
+Class QNetworkSession
+ size=24 align=8
+ base size=24 base align=8
+QNetworkSession (0x0x7f1d1ae4e4e0) 0
+ vptr=((& QNetworkSession::_ZTV15QNetworkSession) + 16)
+ QObject (0x0x7f1d1ae82000) 0
+ primary-for QNetworkSession (0x0x7f1d1ae4e4e0)
+
+Class QOcspResponse
+ size=8 align=8
+ base size=8 base align=8
+QOcspResponse (0x0x7f1d1ae828a0) 0
+
+Class QTcpServer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTcpServer::QPrivateSignal (0x0x7f1d1aad9120) 0 empty
+
+Vtable for QTcpServer
+QTcpServer::_ZTV10QTcpServer: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTcpServer)
+16 (int (*)(...))QTcpServer::metaObject
+24 (int (*)(...))QTcpServer::qt_metacast
+32 (int (*)(...))QTcpServer::qt_metacall
+40 (int (*)(...))QTcpServer::~QTcpServer
+48 (int (*)(...))QTcpServer::~QTcpServer
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTcpServer::hasPendingConnections
+120 (int (*)(...))QTcpServer::nextPendingConnection
+128 (int (*)(...))QTcpServer::incomingConnection
+
+Class QTcpServer
+ size=16 align=8
+ base size=16 base align=8
+QTcpServer (0x0x7f1d1aac8d68) 0
+ vptr=((& QTcpServer::_ZTV10QTcpServer) + 16)
+ QObject (0x0x7f1d1aad90c0) 0
+ primary-for QTcpServer (0x0x7f1d1aac8d68)
+
+Class QSslCertificateExtension
+ size=8 align=8
+ base size=8 base align=8
+QSslCertificateExtension (0x0x7f1d1aad9300) 0
+
+Class QSslCipher
+ size=8 align=8
+ base size=8 base align=8
+QSslCipher (0x0x7f1d1ab4d2a0) 0
+
+Class QSslDiffieHellmanParameters
+ size=8 align=8
+ base size=8 base align=8
+QSslDiffieHellmanParameters (0x0x7f1d1abb8360) 0
+
+Class QSslEllipticCurve
+ size=4 align=4
+ base size=4 base align=4
+QSslEllipticCurve (0x0x7f1d1ac220c0) 0
+
+Class QSslKey
+ size=8 align=8
+ base size=8 base align=8
+QSslKey (0x0x7f1d1ac46a20) 0
+
+Class QUdpSocket::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QUdpSocket::QPrivateSignal (0x0x7f1d1a8b8900) 0 empty
+
+Vtable for QUdpSocket
+QUdpSocket::_ZTV10QUdpSocket: 41 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QUdpSocket)
+16 (int (*)(...))QUdpSocket::metaObject
+24 (int (*)(...))QUdpSocket::qt_metacast
+32 (int (*)(...))QUdpSocket::qt_metacall
+40 (int (*)(...))QUdpSocket::~QUdpSocket
+48 (int (*)(...))QUdpSocket::~QUdpSocket
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractSocket::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QAbstractSocket::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QAbstractSocket::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QAbstractSocket::bytesAvailable
+184 (int (*)(...))QAbstractSocket::bytesToWrite
+192 (int (*)(...))QAbstractSocket::canReadLine
+200 (int (*)(...))QAbstractSocket::waitForReadyRead
+208 (int (*)(...))QAbstractSocket::waitForBytesWritten
+216 (int (*)(...))QAbstractSocket::readData
+224 (int (*)(...))QAbstractSocket::readLineData
+232 (int (*)(...))QAbstractSocket::writeData
+240 (int (*)(...))QAbstractSocket::resume
+248 (int (*)(...))QAbstractSocket::connectToHost
+256 (int (*)(...))QAbstractSocket::connectToHost
+264 (int (*)(...))QAbstractSocket::disconnectFromHost
+272 (int (*)(...))QAbstractSocket::setReadBufferSize
+280 (int (*)(...))QAbstractSocket::socketDescriptor
+288 (int (*)(...))QAbstractSocket::setSocketDescriptor
+296 (int (*)(...))QAbstractSocket::setSocketOption
+304 (int (*)(...))QAbstractSocket::socketOption
+312 (int (*)(...))QAbstractSocket::waitForConnected
+320 (int (*)(...))QAbstractSocket::waitForDisconnected
+
+Class QUdpSocket
+ size=16 align=8
+ base size=16 base align=8
+QUdpSocket (0x0x7f1d1a8bb340) 0
+ vptr=((& QUdpSocket::_ZTV10QUdpSocket) + 16)
+ QAbstractSocket (0x0x7f1d1a8bb3a8) 0
+ primary-for QUdpSocket (0x0x7f1d1a8bb340)
+ QIODevice (0x0x7f1d1a8bb410) 0
+ primary-for QAbstractSocket (0x0x7f1d1a8bb3a8)
+ QObject (0x0x7f1d1a8b88a0) 0
+ primary-for QIODevice (0x0x7f1d1a8bb410)
+
+Class QJSValue
+ size=8 align=8
+ base size=8 base align=8
+QJSValue (0x0x7f1d1a8b8b40) 0
+
+Class QQmlDebuggingEnabler
+ size=1 align=1
+ base size=0 base align=1
+QQmlDebuggingEnabler (0x0x7f1d1a8fc0c0) 0 empty
+
+Class QJSEngine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QJSEngine::QPrivateSignal (0x0x7f1d1a8fc180) 0 empty
+
+Vtable for QJSEngine
+QJSEngine::_ZTV9QJSEngine: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QJSEngine)
+16 (int (*)(...))QJSEngine::metaObject
+24 (int (*)(...))QJSEngine::qt_metacast
+32 (int (*)(...))QJSEngine::qt_metacall
+40 (int (*)(...))QJSEngine::~QJSEngine
+48 (int (*)(...))QJSEngine::~QJSEngine
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QJSEngine
+ size=24 align=8
+ base size=24 base align=8
+QJSEngine (0x0x7f1d1a8bb4e0) 0
+ vptr=((& QJSEngine::_ZTV9QJSEngine) + 16)
+ QObject (0x0x7f1d1a8fc120) 0
+ primary-for QJSEngine (0x0x7f1d1a8bb4e0)
+
+Class QJSValueIterator
+ size=8 align=8
+ base size=8 base align=8
+QJSValueIterator (0x0x7f1d1a8fccc0) 0
+
+Class QQmlPrivate::RegisterType
+ size=128 align=8
+ base size=124 base align=8
+QQmlPrivate::RegisterType (0x0x7f1d1a9328a0) 0
+
+Class QQmlPrivate::RegisterInterface
+ size=24 align=8
+ base size=24 base align=8
+QQmlPrivate::RegisterInterface (0x0x7f1d1a932900) 0
+
+Class QQmlPrivate::RegisterAutoParent
+ size=16 align=8
+ base size=16 base align=8
+QQmlPrivate::RegisterAutoParent (0x0x7f1d1a932960) 0
+
+Class QQmlPrivate::RegisterSingletonType
+ size=96 align=8
+ base size=96 base align=8
+QQmlPrivate::RegisterSingletonType (0x0x7f1d1a9329c0) 0
+
+Class QQmlPrivate::RegisterCompositeType
+ size=32 align=8
+ base size=32 base align=8
+QQmlPrivate::RegisterCompositeType (0x0x7f1d1a932ba0) 0
+
+Class QQmlPrivate::RegisterCompositeSingletonType
+ size=32 align=8
+ base size=32 base align=8
+QQmlPrivate::RegisterCompositeSingletonType (0x0x7f1d1a932c00) 0
+
+Class QQmlPrivate::CachedQmlUnit
+ size=24 align=8
+ base size=24 base align=8
+QQmlPrivate::CachedQmlUnit (0x0x7f1d1a932c60) 0
+
+Class QQmlPrivate::RegisterQmlUnitCacheHook
+ size=16 align=8
+ base size=16 base align=8
+QQmlPrivate::RegisterQmlUnitCacheHook (0x0x7f1d1a932cc0) 0
+
+Class QQmlPrivate::RegisterSingletonFunctor
+ size=24 align=8
+ base size=17 base align=8
+QQmlPrivate::RegisterSingletonFunctor (0x0x7f1d1a932d20) 0
+
+Vtable for QQmlParserStatus
+QQmlParserStatus::_ZTV16QQmlParserStatus: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QQmlParserStatus)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlParserStatus
+ size=16 align=8
+ base size=16 base align=8
+QQmlParserStatus (0x0x7f1d1a959120) 0
+ vptr=((& QQmlParserStatus::_ZTV16QQmlParserStatus) + 16)
+
+Vtable for QQmlPropertyValueSource
+QQmlPropertyValueSource::_ZTV23QQmlPropertyValueSource: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QQmlPropertyValueSource)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlPropertyValueSource
+ size=8 align=8
+ base size=8 base align=8
+QQmlPropertyValueSource (0x0x7f1d1a959300) 0 nearly-empty
+ vptr=((& QQmlPropertyValueSource::_ZTV23QQmlPropertyValueSource) + 16)
+
+Class QQmlListReference
+ size=8 align=8
+ base size=8 base align=8
+QQmlListReference (0x0x7f1d1a9598a0) 0
+
+Vtable for QQmlAbstractUrlInterceptor
+QQmlAbstractUrlInterceptor::_ZTV26QQmlAbstractUrlInterceptor: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QQmlAbstractUrlInterceptor)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlAbstractUrlInterceptor
+ size=8 align=8
+ base size=8 base align=8
+QQmlAbstractUrlInterceptor (0x0x7f1d1a9dc0c0) 0 nearly-empty
+ vptr=((& QQmlAbstractUrlInterceptor::_ZTV26QQmlAbstractUrlInterceptor) + 16)
+
+Class QQmlError
+ size=8 align=8
+ base size=8 base align=8
+QQmlError (0x0x7f1d1a9dc120) 0
+
+Vtable for QQmlImageProviderBase
+QQmlImageProviderBase::_ZTV21QQmlImageProviderBase: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QQmlImageProviderBase)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlImageProviderBase
+ size=8 align=8
+ base size=8 base align=8
+QQmlImageProviderBase (0x0x7f1d1aa06060) 0 nearly-empty
+ vptr=((& QQmlImageProviderBase::_ZTV21QQmlImageProviderBase) + 16)
+
+Class QQmlEngine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlEngine::QPrivateSignal (0x0x7f1d1aa067e0) 0 empty
+
+Vtable for QQmlEngine
+QQmlEngine::_ZTV10QQmlEngine: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QQmlEngine)
+16 (int (*)(...))QQmlEngine::metaObject
+24 (int (*)(...))QQmlEngine::qt_metacast
+32 (int (*)(...))QQmlEngine::qt_metacall
+40 (int (*)(...))QQmlEngine::~QQmlEngine
+48 (int (*)(...))QQmlEngine::~QQmlEngine
+56 (int (*)(...))QQmlEngine::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QQmlEngine
+ size=24 align=8
+ base size=24 base align=8
+QQmlEngine (0x0x7f1d1a9f9f08) 0
+ vptr=((& QQmlEngine::_ZTV10QQmlEngine) + 16)
+ QJSEngine (0x0x7f1d1a9f9f70) 0
+ primary-for QQmlEngine (0x0x7f1d1a9f9f08)
+ QObject (0x0x7f1d1aa06780) 0
+ primary-for QJSEngine (0x0x7f1d1a9f9f70)
+
+Class QQmlApplicationEngine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlApplicationEngine::QPrivateSignal (0x0x7f1d1aa06a80) 0 empty
+
+Vtable for QQmlApplicationEngine
+QQmlApplicationEngine::_ZTV21QQmlApplicationEngine: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QQmlApplicationEngine)
+16 (int (*)(...))QQmlApplicationEngine::metaObject
+24 (int (*)(...))QQmlApplicationEngine::qt_metacast
+32 (int (*)(...))QQmlApplicationEngine::qt_metacall
+40 (int (*)(...))QQmlApplicationEngine::~QQmlApplicationEngine
+48 (int (*)(...))QQmlApplicationEngine::~QQmlApplicationEngine
+56 (int (*)(...))QQmlEngine::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QQmlApplicationEngine
+ size=24 align=8
+ base size=24 base align=8
+QQmlApplicationEngine (0x0x7f1d1aa2f000) 0
+ vptr=((& QQmlApplicationEngine::_ZTV21QQmlApplicationEngine) + 16)
+ QQmlEngine (0x0x7f1d1aa2f068) 0
+ primary-for QQmlApplicationEngine (0x0x7f1d1aa2f000)
+ QJSEngine (0x0x7f1d1aa2f0d0) 0
+ primary-for QQmlEngine (0x0x7f1d1aa2f068)
+ QObject (0x0x7f1d1aa06a20) 0
+ primary-for QJSEngine (0x0x7f1d1aa2f0d0)
+
+Class QQmlComponent::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlComponent::QPrivateSignal (0x0x7f1d1aa06cc0) 0 empty
+
+Vtable for QQmlComponent
+QQmlComponent::_ZTV13QQmlComponent: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QQmlComponent)
+16 (int (*)(...))QQmlComponent::metaObject
+24 (int (*)(...))QQmlComponent::qt_metacast
+32 (int (*)(...))QQmlComponent::qt_metacall
+40 (int (*)(...))QQmlComponent::~QQmlComponent
+48 (int (*)(...))QQmlComponent::~QQmlComponent
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QQmlComponent::create
+120 (int (*)(...))QQmlComponent::beginCreate
+128 (int (*)(...))QQmlComponent::completeCreate
+
+Class QQmlComponent
+ size=16 align=8
+ base size=16 base align=8
+QQmlComponent (0x0x7f1d1aa2f138) 0
+ vptr=((& QQmlComponent::_ZTV13QQmlComponent) + 16)
+ QObject (0x0x7f1d1aa06c60) 0
+ primary-for QQmlComponent (0x0x7f1d1aa2f138)
+
+Class QQmlContext::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlContext::QPrivateSignal (0x0x7f1d1aa4d9c0) 0 empty
+
+Class QQmlContext::PropertyPair
+ size=24 align=8
+ base size=24 base align=8
+QQmlContext::PropertyPair (0x0x7f1d1aa4da20) 0
+
+Vtable for QQmlContext
+QQmlContext::_ZTV11QQmlContext: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QQmlContext)
+16 (int (*)(...))QQmlContext::metaObject
+24 (int (*)(...))QQmlContext::qt_metacast
+32 (int (*)(...))QQmlContext::qt_metacall
+40 (int (*)(...))QQmlContext::~QQmlContext
+48 (int (*)(...))QQmlContext::~QQmlContext
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QQmlContext
+ size=16 align=8
+ base size=16 base align=8
+QQmlContext (0x0x7f1d1aa2f680) 0
+ vptr=((& QQmlContext::_ZTV11QQmlContext) + 16)
+ QObject (0x0x7f1d1aa4d960) 0
+ primary-for QQmlContext (0x0x7f1d1aa2f680)
+
+Class QQmlScriptString
+ size=8 align=8
+ base size=8 base align=8
+QQmlScriptString (0x0x7f1d1aa4dde0) 0
+
+Class QQmlExpression::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlExpression::QPrivateSignal (0x0x7f1d1aa7a120) 0 empty
+
+Vtable for QQmlExpression
+QQmlExpression::_ZTV14QQmlExpression: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QQmlExpression)
+16 (int (*)(...))QQmlExpression::metaObject
+24 (int (*)(...))QQmlExpression::qt_metacast
+32 (int (*)(...))QQmlExpression::qt_metacall
+40 (int (*)(...))QQmlExpression::~QQmlExpression
+48 (int (*)(...))QQmlExpression::~QQmlExpression
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QQmlExpression
+ size=16 align=8
+ base size=16 base align=8
+QQmlExpression (0x0x7f1d1aa2f6e8) 0
+ vptr=((& QQmlExpression::_ZTV14QQmlExpression) + 16)
+ QObject (0x0x7f1d1aa7a0c0) 0
+ primary-for QQmlExpression (0x0x7f1d1aa2f6e8)
+
+Vtable for QQmlTypesExtensionInterface
+QQmlTypesExtensionInterface::_ZTV27QQmlTypesExtensionInterface: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QQmlTypesExtensionInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlTypesExtensionInterface
+ size=8 align=8
+ base size=8 base align=8
+QQmlTypesExtensionInterface (0x0x7f1d1aa7a300) 0 nearly-empty
+ vptr=((& QQmlTypesExtensionInterface::_ZTV27QQmlTypesExtensionInterface) + 16)
+
+Vtable for QQmlExtensionInterface
+QQmlExtensionInterface::_ZTV22QQmlExtensionInterface: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QQmlExtensionInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlExtensionInterface
+ size=8 align=8
+ base size=8 base align=8
+QQmlExtensionInterface (0x0x7f1d1aa2f750) 0 nearly-empty
+ vptr=((& QQmlExtensionInterface::_ZTV22QQmlExtensionInterface) + 16)
+ QQmlTypesExtensionInterface (0x0x7f1d1aa7a360) 0 nearly-empty
+ primary-for QQmlExtensionInterface (0x0x7f1d1aa2f750)
+
+Class QQmlExtensionPlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlExtensionPlugin::QPrivateSignal (0x0x7f1d1aa7a780) 0 empty
+
+Vtable for QQmlExtensionPlugin
+QQmlExtensionPlugin::_ZTV19QQmlExtensionPlugin: 22 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QQmlExtensionPlugin)
+16 (int (*)(...))QQmlExtensionPlugin::metaObject
+24 (int (*)(...))QQmlExtensionPlugin::qt_metacast
+32 (int (*)(...))QQmlExtensionPlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))QQmlExtensionPlugin::initializeEngine
+128 (int (*)(...))-16
+136 (int (*)(...))(& _ZTI19QQmlExtensionPlugin)
+144 0
+152 0
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QQmlExtensionPlugin::_ZThn16_N19QQmlExtensionPlugin16initializeEngineEP10QQmlEnginePKc
+
+Class QQmlExtensionPlugin
+ size=24 align=8
+ base size=24 base align=8
+QQmlExtensionPlugin (0x0x7f1d1bc541c0) 0
+ vptr=((& QQmlExtensionPlugin::_ZTV19QQmlExtensionPlugin) + 16)
+ QObject (0x0x7f1d1aa7a6c0) 0
+ primary-for QQmlExtensionPlugin (0x0x7f1d1bc541c0)
+ QQmlExtensionInterface (0x0x7f1d1aa2f7b8) 16 nearly-empty
+ vptr=((& QQmlExtensionPlugin::_ZTV19QQmlExtensionPlugin) + 144)
+ QQmlTypesExtensionInterface (0x0x7f1d1aa7a720) 16 nearly-empty
+ primary-for QQmlExtensionInterface (0x0x7f1d1aa2f7b8)
+
+Class QQmlFile
+ size=8 align=8
+ base size=8 base align=8
+QQmlFile (0x0x7f1d1aa7a960) 0
+
+Class QQmlFileSelector::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlFileSelector::QPrivateSignal (0x0x7f1d1aa7aa20) 0 empty
+
+Vtable for QQmlFileSelector
+QQmlFileSelector::_ZTV16QQmlFileSelector: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QQmlFileSelector)
+16 (int (*)(...))QQmlFileSelector::metaObject
+24 (int (*)(...))QQmlFileSelector::qt_metacast
+32 (int (*)(...))QQmlFileSelector::qt_metacall
+40 (int (*)(...))QQmlFileSelector::~QQmlFileSelector
+48 (int (*)(...))QQmlFileSelector::~QQmlFileSelector
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QQmlFileSelector
+ size=16 align=8
+ base size=16 base align=8
+QQmlFileSelector (0x0x7f1d1aa2f888) 0
+ vptr=((& QQmlFileSelector::_ZTV16QQmlFileSelector) + 16)
+ QObject (0x0x7f1d1aa7a9c0) 0
+ primary-for QQmlFileSelector (0x0x7f1d1aa2f888)
+
+Vtable for QQmlIncubator
+QQmlIncubator::_ZTV13QQmlIncubator: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QQmlIncubator)
+16 (int (*)(...))QQmlIncubator::~QQmlIncubator
+24 (int (*)(...))QQmlIncubator::~QQmlIncubator
+32 (int (*)(...))QQmlIncubator::statusChanged
+40 (int (*)(...))QQmlIncubator::setInitialState
+
+Class QQmlIncubator
+ size=16 align=8
+ base size=16 base align=8
+QQmlIncubator (0x0x7f1d1aa7ac00) 0
+ vptr=((& QQmlIncubator::_ZTV13QQmlIncubator) + 16)
+
+Vtable for QQmlIncubationController
+QQmlIncubationController::_ZTV24QQmlIncubationController: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QQmlIncubationController)
+16 (int (*)(...))QQmlIncubationController::~QQmlIncubationController
+24 (int (*)(...))QQmlIncubationController::~QQmlIncubationController
+32 (int (*)(...))QQmlIncubationController::incubatingObjectCountChanged
+
+Class QQmlIncubationController
+ size=16 align=8
+ base size=16 base align=8
+QQmlIncubationController (0x0x7f1d1aa7ac60) 0
+ vptr=((& QQmlIncubationController::_ZTV24QQmlIncubationController) + 16)
+
+Class QQmlInfo
+ size=16 align=8
+ base size=16 base align=8
+QQmlInfo (0x0x7f1d1aa2f8f0) 0
+ QDebug (0x0x7f1d1aa7acc0) 0
+
+Vtable for QQmlNetworkAccessManagerFactory
+QQmlNetworkAccessManagerFactory::_ZTV31QQmlNetworkAccessManagerFactory: 5 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI31QQmlNetworkAccessManagerFactory)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QQmlNetworkAccessManagerFactory
+ size=8 align=8
+ base size=8 base align=8
+QQmlNetworkAccessManagerFactory (0x0x7f1d1a6bbc60) 0 nearly-empty
+ vptr=((& QQmlNetworkAccessManagerFactory::_ZTV31QQmlNetworkAccessManagerFactory) + 16)
+
+Class QQmlProperty
+ size=8 align=8
+ base size=8 base align=8
+QQmlProperty (0x0x7f1d1a6bbcc0) 0
+
+Class QQmlPropertyMap::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQmlPropertyMap::QPrivateSignal (0x0x7f1d1a6fa540) 0 empty
+
+Vtable for QQmlPropertyMap
+QQmlPropertyMap::_ZTV15QQmlPropertyMap: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QQmlPropertyMap)
+16 (int (*)(...))QQmlPropertyMap::metaObject
+24 (int (*)(...))QQmlPropertyMap::qt_metacast
+32 (int (*)(...))QQmlPropertyMap::qt_metacall
+40 (int (*)(...))QQmlPropertyMap::~QQmlPropertyMap
+48 (int (*)(...))QQmlPropertyMap::~QQmlPropertyMap
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QQmlPropertyMap::updateValue
+
+Class QQmlPropertyMap
+ size=16 align=8
+ base size=16 base align=8
+QQmlPropertyMap (0x0x7f1d1a6f1f08) 0
+ vptr=((& QQmlPropertyMap::_ZTV15QQmlPropertyMap) + 16)
+ QObject (0x0x7f1d1a6fa4e0) 0
+ primary-for QQmlPropertyMap (0x0x7f1d1a6f1f08)
+
+Class QQuickTransform::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickTransform::QPrivateSignal (0x0x7f1d1a6fa7e0) 0 empty
+
+Vtable for QQuickTransform
+QQuickTransform::_ZTV15QQuickTransform: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QQuickTransform)
+16 (int (*)(...))QQuickTransform::metaObject
+24 (int (*)(...))QQuickTransform::qt_metacast
+32 (int (*)(...))QQuickTransform::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QQuickTransform
+ size=16 align=8
+ base size=16 base align=8
+QQuickTransform (0x0x7f1d1a6f1f70) 0
+ vptr=((& QQuickTransform::_ZTV15QQuickTransform) + 16)
+ QObject (0x0x7f1d1a6fa780) 0
+ primary-for QQuickTransform (0x0x7f1d1a6f1f70)
+
+Class QQuickItem::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickItem::QPrivateSignal (0x0x7f1d1a6faa80) 0 empty
+
+Class QQuickItem::ItemChangeData
+ size=8 align=8
+ base size=8 base align=8
+QQuickItem::ItemChangeData (0x0x7f1d1a6faae0) 0
+
+Class QQuickItem::UpdatePaintNodeData
+ size=8 align=8
+ base size=8 base align=8
+QQuickItem::UpdatePaintNodeData (0x0x7f1d1a6fab40) 0
+
+Vtable for QQuickItem
+QQuickItem::_ZTV10QQuickItem: 55 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QQuickItem)
+16 (int (*)(...))QQuickItem::metaObject
+24 (int (*)(...))QQuickItem::qt_metacast
+32 (int (*)(...))QQuickItem::qt_metacall
+40 (int (*)(...))QQuickItem::~QQuickItem
+48 (int (*)(...))QQuickItem::~QQuickItem
+56 (int (*)(...))QQuickItem::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QQuickItem::boundingRect
+120 (int (*)(...))QQuickItem::clipRect
+128 (int (*)(...))QQuickItem::contains
+136 (int (*)(...))QQuickItem::inputMethodQuery
+144 (int (*)(...))QQuickItem::isTextureProvider
+152 (int (*)(...))QQuickItem::textureProvider
+160 (int (*)(...))QQuickItem::itemChange
+168 (int (*)(...))QQuickItem::classBegin
+176 (int (*)(...))QQuickItem::componentComplete
+184 (int (*)(...))QQuickItem::keyPressEvent
+192 (int (*)(...))QQuickItem::keyReleaseEvent
+200 (int (*)(...))QQuickItem::inputMethodEvent
+208 (int (*)(...))QQuickItem::focusInEvent
+216 (int (*)(...))QQuickItem::focusOutEvent
+224 (int (*)(...))QQuickItem::mousePressEvent
+232 (int (*)(...))QQuickItem::mouseMoveEvent
+240 (int (*)(...))QQuickItem::mouseReleaseEvent
+248 (int (*)(...))QQuickItem::mouseDoubleClickEvent
+256 (int (*)(...))QQuickItem::mouseUngrabEvent
+264 (int (*)(...))QQuickItem::touchUngrabEvent
+272 (int (*)(...))QQuickItem::wheelEvent
+280 (int (*)(...))QQuickItem::touchEvent
+288 (int (*)(...))QQuickItem::hoverEnterEvent
+296 (int (*)(...))QQuickItem::hoverMoveEvent
+304 (int (*)(...))QQuickItem::hoverLeaveEvent
+312 (int (*)(...))QQuickItem::dragEnterEvent
+320 (int (*)(...))QQuickItem::dragMoveEvent
+328 (int (*)(...))QQuickItem::dragLeaveEvent
+336 (int (*)(...))QQuickItem::dropEvent
+344 (int (*)(...))QQuickItem::childMouseEventFilter
+352 (int (*)(...))QQuickItem::windowDeactivateEvent
+360 (int (*)(...))QQuickItem::geometryChanged
+368 (int (*)(...))QQuickItem::updatePaintNode
+376 (int (*)(...))QQuickItem::releaseResources
+384 (int (*)(...))QQuickItem::updatePolish
+392 (int (*)(...))-16
+400 (int (*)(...))(& _ZTI10QQuickItem)
+408 (int (*)(...))QQuickItem::_ZThn16_N10QQuickItemD1Ev
+416 (int (*)(...))QQuickItem::_ZThn16_N10QQuickItemD0Ev
+424 (int (*)(...))QQuickItem::_ZThn16_N10QQuickItem10classBeginEv
+432 (int (*)(...))QQuickItem::_ZThn16_N10QQuickItem17componentCompleteEv
+
+Class QQuickItem
+ size=32 align=8
+ base size=32 base align=8
+QQuickItem (0x0x7f1d1b7c61c0) 0
+ vptr=((& QQuickItem::_ZTV10QQuickItem) + 16)
+ QObject (0x0x7f1d1a6fa9c0) 0
+ primary-for QQuickItem (0x0x7f1d1b7c61c0)
+ QQmlParserStatus (0x0x7f1d1a6faa20) 16
+ vptr=((& QQuickItem::_ZTV10QQuickItem) + 408)
+
+Class QQuickFramebufferObject::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickFramebufferObject::QPrivateSignal (0x0x7f1d1a7624e0) 0 empty
+
+Vtable for QQuickFramebufferObject::Renderer
+QQuickFramebufferObject::Renderer::_ZTVN23QQuickFramebufferObject8RendererE: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN23QQuickFramebufferObject8RendererE)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))QQuickFramebufferObject::Renderer::createFramebufferObject
+48 (int (*)(...))QQuickFramebufferObject::Renderer::synchronize
+
+Class QQuickFramebufferObject::Renderer
+ size=16 align=8
+ base size=16 base align=8
+QQuickFramebufferObject::Renderer (0x0x7f1d1a762540) 0
+ vptr=((& QQuickFramebufferObject::Renderer::_ZTVN23QQuickFramebufferObject8RendererE) + 16)
+
+Vtable for QQuickFramebufferObject
+QQuickFramebufferObject::_ZTV23QQuickFramebufferObject: 56 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QQuickFramebufferObject)
+16 (int (*)(...))QQuickFramebufferObject::metaObject
+24 (int (*)(...))QQuickFramebufferObject::qt_metacast
+32 (int (*)(...))QQuickFramebufferObject::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QQuickItem::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QQuickItem::boundingRect
+120 (int (*)(...))QQuickItem::clipRect
+128 (int (*)(...))QQuickItem::contains
+136 (int (*)(...))QQuickItem::inputMethodQuery
+144 (int (*)(...))QQuickFramebufferObject::isTextureProvider
+152 (int (*)(...))QQuickFramebufferObject::textureProvider
+160 (int (*)(...))QQuickItem::itemChange
+168 (int (*)(...))QQuickItem::classBegin
+176 (int (*)(...))QQuickItem::componentComplete
+184 (int (*)(...))QQuickItem::keyPressEvent
+192 (int (*)(...))QQuickItem::keyReleaseEvent
+200 (int (*)(...))QQuickItem::inputMethodEvent
+208 (int (*)(...))QQuickItem::focusInEvent
+216 (int (*)(...))QQuickItem::focusOutEvent
+224 (int (*)(...))QQuickItem::mousePressEvent
+232 (int (*)(...))QQuickItem::mouseMoveEvent
+240 (int (*)(...))QQuickItem::mouseReleaseEvent
+248 (int (*)(...))QQuickItem::mouseDoubleClickEvent
+256 (int (*)(...))QQuickItem::mouseUngrabEvent
+264 (int (*)(...))QQuickItem::touchUngrabEvent
+272 (int (*)(...))QQuickItem::wheelEvent
+280 (int (*)(...))QQuickItem::touchEvent
+288 (int (*)(...))QQuickItem::hoverEnterEvent
+296 (int (*)(...))QQuickItem::hoverMoveEvent
+304 (int (*)(...))QQuickItem::hoverLeaveEvent
+312 (int (*)(...))QQuickItem::dragEnterEvent
+320 (int (*)(...))QQuickItem::dragMoveEvent
+328 (int (*)(...))QQuickItem::dragLeaveEvent
+336 (int (*)(...))QQuickItem::dropEvent
+344 (int (*)(...))QQuickItem::childMouseEventFilter
+352 (int (*)(...))QQuickItem::windowDeactivateEvent
+360 (int (*)(...))QQuickFramebufferObject::geometryChanged
+368 (int (*)(...))QQuickFramebufferObject::updatePaintNode
+376 (int (*)(...))QQuickFramebufferObject::releaseResources
+384 (int (*)(...))QQuickItem::updatePolish
+392 (int (*)(...))__cxa_pure_virtual
+400 (int (*)(...))-16
+408 (int (*)(...))(& _ZTI23QQuickFramebufferObject)
+416 0
+424 0
+432 (int (*)(...))QQuickItem::_ZThn16_N10QQuickItem10classBeginEv
+440 (int (*)(...))QQuickItem::_ZThn16_N10QQuickItem17componentCompleteEv
+
+Class QQuickFramebufferObject
+ size=32 align=8
+ base size=32 base align=8
+QQuickFramebufferObject (0x0x7f1d1a73f0d0) 0
+ vptr=((& QQuickFramebufferObject::_ZTV23QQuickFramebufferObject) + 16)
+ QQuickItem (0x0x7f1d1b856e00) 0
+ primary-for QQuickFramebufferObject (0x0x7f1d1a73f0d0)
+ QObject (0x0x7f1d1a762420) 0
+ primary-for QQuickItem (0x0x7f1d1b856e00)
+ QQmlParserStatus (0x0x7f1d1a762480) 16
+ vptr=((& QQuickFramebufferObject::_ZTV23QQuickFramebufferObject) + 416)
+
+Class QQuickTextureFactory::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickTextureFactory::QPrivateSignal (0x0x7f1d1a762780) 0 empty
+
+Vtable for QQuickTextureFactory
+QQuickTextureFactory::_ZTV20QQuickTextureFactory: 18 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QQuickTextureFactory)
+16 (int (*)(...))QQuickTextureFactory::metaObject
+24 (int (*)(...))QQuickTextureFactory::qt_metacast
+32 (int (*)(...))QQuickTextureFactory::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))QQuickTextureFactory::image
+
+Class QQuickTextureFactory
+ size=16 align=8
+ base size=16 base align=8
+QQuickTextureFactory (0x0x7f1d1a73f138) 0
+ vptr=((& QQuickTextureFactory::_ZTV20QQuickTextureFactory) + 16)
+ QObject (0x0x7f1d1a762720) 0
+ primary-for QQuickTextureFactory (0x0x7f1d1a73f138)
+
+Class QQuickImageResponse::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickImageResponse::QPrivateSignal (0x0x7f1d1a762900) 0 empty
+
+Vtable for QQuickImageResponse
+QQuickImageResponse::_ZTV19QQuickImageResponse: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QQuickImageResponse)
+16 (int (*)(...))QQuickImageResponse::metaObject
+24 (int (*)(...))QQuickImageResponse::qt_metacast
+32 (int (*)(...))QQuickImageResponse::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))QQuickImageResponse::errorString
+128 (int (*)(...))QQuickImageResponse::cancel
+
+Class QQuickImageResponse
+ size=16 align=8
+ base size=16 base align=8
+QQuickImageResponse (0x0x7f1d1a73f1a0) 0
+ vptr=((& QQuickImageResponse::_ZTV19QQuickImageResponse) + 16)
+ QObject (0x0x7f1d1a7628a0) 0
+ primary-for QQuickImageResponse (0x0x7f1d1a73f1a0)
+
+Vtable for QQuickImageProvider
+QQuickImageProvider::_ZTV19QQuickImageProvider: 9 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QQuickImageProvider)
+16 (int (*)(...))QQuickImageProvider::~QQuickImageProvider
+24 (int (*)(...))QQuickImageProvider::~QQuickImageProvider
+32 (int (*)(...))QQuickImageProvider::imageType
+40 (int (*)(...))QQuickImageProvider::flags
+48 (int (*)(...))QQuickImageProvider::requestImage
+56 (int (*)(...))QQuickImageProvider::requestPixmap
+64 (int (*)(...))QQuickImageProvider::requestTexture
+
+Class QQuickImageProvider
+ size=16 align=8
+ base size=16 base align=8
+QQuickImageProvider (0x0x7f1d1a73f208) 0
+ vptr=((& QQuickImageProvider::_ZTV19QQuickImageProvider) + 16)
+ QQmlImageProviderBase (0x0x7f1d1a762ae0) 0 nearly-empty
+ primary-for QQuickImageProvider (0x0x7f1d1a73f208)
+
+Vtable for QQuickAsyncImageProvider
+QQuickAsyncImageProvider::_ZTV24QQuickAsyncImageProvider: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QQuickAsyncImageProvider)
+16 0
+24 0
+32 (int (*)(...))QQuickImageProvider::imageType
+40 (int (*)(...))QQuickImageProvider::flags
+48 (int (*)(...))QQuickImageProvider::requestImage
+56 (int (*)(...))QQuickImageProvider::requestPixmap
+64 (int (*)(...))QQuickImageProvider::requestTexture
+72 (int (*)(...))__cxa_pure_virtual
+
+Class QQuickAsyncImageProvider
+ size=24 align=8
+ base size=24 base align=8
+QQuickAsyncImageProvider (0x0x7f1d1a73f270) 0
+ vptr=((& QQuickAsyncImageProvider::_ZTV24QQuickAsyncImageProvider) + 16)
+ QQuickImageProvider (0x0x7f1d1a73f2d8) 0
+ primary-for QQuickAsyncImageProvider (0x0x7f1d1a73f270)
+ QQmlImageProviderBase (0x0x7f1d1a762d20) 0 nearly-empty
+ primary-for QQuickImageProvider (0x0x7f1d1a73f2d8)
+
+Class QQuickItemGrabResult::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickItemGrabResult::QPrivateSignal (0x0x7f1d1a762de0) 0 empty
+
+Vtable for QQuickItemGrabResult
+QQuickItemGrabResult::_ZTV20QQuickItemGrabResult: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QQuickItemGrabResult)
+16 (int (*)(...))QQuickItemGrabResult::metaObject
+24 (int (*)(...))QQuickItemGrabResult::qt_metacast
+32 (int (*)(...))QQuickItemGrabResult::qt_metacall
+40 (int (*)(...))QQuickItemGrabResult::~QQuickItemGrabResult
+48 (int (*)(...))QQuickItemGrabResult::~QQuickItemGrabResult
+56 (int (*)(...))QQuickItemGrabResult::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QQuickItemGrabResult
+ size=16 align=8
+ base size=16 base align=8
+QQuickItemGrabResult (0x0x7f1d1a73f340) 0
+ vptr=((& QQuickItemGrabResult::_ZTV20QQuickItemGrabResult) + 16)
+ QObject (0x0x7f1d1a762d80) 0
+ primary-for QQuickItemGrabResult (0x0x7f1d1a73f340)
+
+Class QQuickPaintedItem::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickPaintedItem::QPrivateSignal (0x0x7f1d1a79a0c0) 0 empty
+
+Vtable for QQuickPaintedItem
+QQuickPaintedItem::_ZTV17QQuickPaintedItem: 56 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QQuickPaintedItem)
+16 (int (*)(...))QQuickPaintedItem::metaObject
+24 (int (*)(...))QQuickPaintedItem::qt_metacast
+32 (int (*)(...))QQuickPaintedItem::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QQuickItem::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QQuickItem::boundingRect
+120 (int (*)(...))QQuickItem::clipRect
+128 (int (*)(...))QQuickItem::contains
+136 (int (*)(...))QQuickItem::inputMethodQuery
+144 (int (*)(...))QQuickPaintedItem::isTextureProvider
+152 (int (*)(...))QQuickPaintedItem::textureProvider
+160 (int (*)(...))QQuickPaintedItem::itemChange
+168 (int (*)(...))QQuickItem::classBegin
+176 (int (*)(...))QQuickItem::componentComplete
+184 (int (*)(...))QQuickItem::keyPressEvent
+192 (int (*)(...))QQuickItem::keyReleaseEvent
+200 (int (*)(...))QQuickItem::inputMethodEvent
+208 (int (*)(...))QQuickItem::focusInEvent
+216 (int (*)(...))QQuickItem::focusOutEvent
+224 (int (*)(...))QQuickItem::mousePressEvent
+232 (int (*)(...))QQuickItem::mouseMoveEvent
+240 (int (*)(...))QQuickItem::mouseReleaseEvent
+248 (int (*)(...))QQuickItem::mouseDoubleClickEvent
+256 (int (*)(...))QQuickItem::mouseUngrabEvent
+264 (int (*)(...))QQuickItem::touchUngrabEvent
+272 (int (*)(...))QQuickItem::wheelEvent
+280 (int (*)(...))QQuickItem::touchEvent
+288 (int (*)(...))QQuickItem::hoverEnterEvent
+296 (int (*)(...))QQuickItem::hoverMoveEvent
+304 (int (*)(...))QQuickItem::hoverLeaveEvent
+312 (int (*)(...))QQuickItem::dragEnterEvent
+320 (int (*)(...))QQuickItem::dragMoveEvent
+328 (int (*)(...))QQuickItem::dragLeaveEvent
+336 (int (*)(...))QQuickItem::dropEvent
+344 (int (*)(...))QQuickItem::childMouseEventFilter
+352 (int (*)(...))QQuickItem::windowDeactivateEvent
+360 (int (*)(...))QQuickItem::geometryChanged
+368 (int (*)(...))QQuickPaintedItem::updatePaintNode
+376 (int (*)(...))QQuickPaintedItem::releaseResources
+384 (int (*)(...))QQuickItem::updatePolish
+392 (int (*)(...))__cxa_pure_virtual
+400 (int (*)(...))-16
+408 (int (*)(...))(& _ZTI17QQuickPaintedItem)
+416 0
+424 0
+432 (int (*)(...))QQuickItem::_ZThn16_N10QQuickItem10classBeginEv
+440 (int (*)(...))QQuickItem::_ZThn16_N10QQuickItem17componentCompleteEv
+
+Class QQuickPaintedItem
+ size=32 align=8
+ base size=32 base align=8
+QQuickPaintedItem (0x0x7f1d1a73f3a8) 0
+ vptr=((& QQuickPaintedItem::_ZTV17QQuickPaintedItem) + 16)
+ QQuickItem (0x0x7f1d1b88ad20) 0
+ primary-for QQuickPaintedItem (0x0x7f1d1a73f3a8)
+ QObject (0x0x7f1d1a79a000) 0
+ primary-for QQuickItem (0x0x7f1d1b88ad20)
+ QQmlParserStatus (0x0x7f1d1a79a060) 16
+ vptr=((& QQuickPaintedItem::_ZTV17QQuickPaintedItem) + 416)
+
+Class QQuickRenderControl::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickRenderControl::QPrivateSignal (0x0x7f1d1a79ab40) 0 empty
+
+Vtable for QQuickRenderControl
+QQuickRenderControl::_ZTV19QQuickRenderControl: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QQuickRenderControl)
+16 (int (*)(...))QQuickRenderControl::metaObject
+24 (int (*)(...))QQuickRenderControl::qt_metacast
+32 (int (*)(...))QQuickRenderControl::qt_metacall
+40 (int (*)(...))QQuickRenderControl::~QQuickRenderControl
+48 (int (*)(...))QQuickRenderControl::~QQuickRenderControl
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QQuickRenderControl::renderWindow
+
+Class QQuickRenderControl
+ size=16 align=8
+ base size=16 base align=8
+QQuickRenderControl (0x0x7f1d1a73f548) 0
+ vptr=((& QQuickRenderControl::_ZTV19QQuickRenderControl) + 16)
+ QObject (0x0x7f1d1a79aae0) 0
+ primary-for QQuickRenderControl (0x0x7f1d1a73f548)
+
+Class QQuickTextDocument::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickTextDocument::QPrivateSignal (0x0x7f1d1a79ade0) 0 empty
+
+Vtable for QQuickTextDocument
+QQuickTextDocument::_ZTV18QQuickTextDocument: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QQuickTextDocument)
+16 (int (*)(...))QQuickTextDocument::metaObject
+24 (int (*)(...))QQuickTextDocument::qt_metacast
+32 (int (*)(...))QQuickTextDocument::qt_metacall
+40 (int (*)(...))QQuickTextDocument::~QQuickTextDocument
+48 (int (*)(...))QQuickTextDocument::~QQuickTextDocument
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QQuickTextDocument
+ size=16 align=8
+ base size=16 base align=8
+QQuickTextDocument (0x0x7f1d1a73f5b0) 0
+ vptr=((& QQuickTextDocument::_ZTV18QQuickTextDocument) + 16)
+ QObject (0x0x7f1d1a79ad80) 0
+ primary-for QQuickTextDocument (0x0x7f1d1a73f5b0)
+
+Class QSGGeometry::Attribute
+ size=16 align=4
+ base size=16 base align=4
+QSGGeometry::Attribute (0x0x7f1d1a7cb480) 0
+
+Class QSGGeometry::AttributeSet
+ size=16 align=8
+ base size=16 base align=8
+QSGGeometry::AttributeSet (0x0x7f1d1a7cb4e0) 0
+
+Class QSGGeometry::Point2D
+ size=8 align=4
+ base size=8 base align=4
+QSGGeometry::Point2D (0x0x7f1d1a7cb540) 0
+
+Class QSGGeometry::TexturedPoint2D
+ size=16 align=4
+ base size=16 base align=4
+QSGGeometry::TexturedPoint2D (0x0x7f1d1a7cb5a0) 0
+
+Class QSGGeometry::ColoredPoint2D
+ size=12 align=4
+ base size=12 base align=4
+QSGGeometry::ColoredPoint2D (0x0x7f1d1a7cb600) 0
+
+Vtable for QSGGeometry
+QSGGeometry::_ZTV11QSGGeometry: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QSGGeometry)
+16 (int (*)(...))QSGGeometry::~QSGGeometry
+24 (int (*)(...))QSGGeometry::~QSGGeometry
+
+Class QSGGeometry
+ size=128 align=8
+ base size=128 base align=8
+QSGGeometry (0x0x7f1d1a7cb420) 0
+ vptr=((& QSGGeometry::_ZTV11QSGGeometry) + 16)
+
+Vtable for QSGNode
+QSGNode::_ZTV7QSGNode: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QSGNode)
+16 (int (*)(...))QSGNode::~QSGNode
+24 (int (*)(...))QSGNode::~QSGNode
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+
+Class QSGNode
+ size=80 align=8
+ base size=80 base align=8
+QSGNode (0x0x7f1d1a7f6600) 0
+ vptr=((& QSGNode::_ZTV7QSGNode) + 16)
+
+Vtable for QSGBasicGeometryNode
+QSGBasicGeometryNode::_ZTV20QSGBasicGeometryNode: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QSGBasicGeometryNode)
+16 (int (*)(...))QSGBasicGeometryNode::~QSGBasicGeometryNode
+24 (int (*)(...))QSGBasicGeometryNode::~QSGBasicGeometryNode
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+
+Class QSGBasicGeometryNode
+ size=112 align=8
+ base size=112 base align=8
+QSGBasicGeometryNode (0x0x7f1d1a73fc98) 0
+ vptr=((& QSGBasicGeometryNode::_ZTV20QSGBasicGeometryNode) + 16)
+ QSGNode (0x0x7f1d1a7f6f60) 0
+ primary-for QSGBasicGeometryNode (0x0x7f1d1a73fc98)
+
+Vtable for QSGGeometryNode
+QSGGeometryNode::_ZTV15QSGGeometryNode: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QSGGeometryNode)
+16 (int (*)(...))QSGGeometryNode::~QSGGeometryNode
+24 (int (*)(...))QSGGeometryNode::~QSGGeometryNode
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+
+Class QSGGeometryNode
+ size=144 align=8
+ base size=144 base align=8
+QSGGeometryNode (0x0x7f1d1a73fd00) 0
+ vptr=((& QSGGeometryNode::_ZTV15QSGGeometryNode) + 16)
+ QSGBasicGeometryNode (0x0x7f1d1a73fd68) 0
+ primary-for QSGGeometryNode (0x0x7f1d1a73fd00)
+ QSGNode (0x0x7f1d1a830240) 0
+ primary-for QSGBasicGeometryNode (0x0x7f1d1a73fd68)
+
+Vtable for QSGClipNode
+QSGClipNode::_ZTV11QSGClipNode: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QSGClipNode)
+16 (int (*)(...))QSGClipNode::~QSGClipNode
+24 (int (*)(...))QSGClipNode::~QSGClipNode
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+
+Class QSGClipNode
+ size=152 align=8
+ base size=152 base align=8
+QSGClipNode (0x0x7f1d1a73fdd0) 0
+ vptr=((& QSGClipNode::_ZTV11QSGClipNode) + 16)
+ QSGBasicGeometryNode (0x0x7f1d1a73fe38) 0
+ primary-for QSGClipNode (0x0x7f1d1a73fdd0)
+ QSGNode (0x0x7f1d1a830420) 0
+ primary-for QSGBasicGeometryNode (0x0x7f1d1a73fe38)
+
+Vtable for QSGTransformNode
+QSGTransformNode::_ZTV16QSGTransformNode: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QSGTransformNode)
+16 (int (*)(...))QSGTransformNode::~QSGTransformNode
+24 (int (*)(...))QSGTransformNode::~QSGTransformNode
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+
+Class QSGTransformNode
+ size=216 align=8
+ base size=216 base align=8
+QSGTransformNode (0x0x7f1d1a73fea0) 0
+ vptr=((& QSGTransformNode::_ZTV16QSGTransformNode) + 16)
+ QSGNode (0x0x7f1d1a830540) 0
+ primary-for QSGTransformNode (0x0x7f1d1a73fea0)
+
+Vtable for QSGRootNode
+QSGRootNode::_ZTV11QSGRootNode: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QSGRootNode)
+16 (int (*)(...))QSGRootNode::~QSGRootNode
+24 (int (*)(...))QSGRootNode::~QSGRootNode
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+
+Class QSGRootNode
+ size=88 align=8
+ base size=88 base align=8
+QSGRootNode (0x0x7f1d1a73ff08) 0
+ vptr=((& QSGRootNode::_ZTV11QSGRootNode) + 16)
+ QSGNode (0x0x7f1d1a830660) 0
+ primary-for QSGRootNode (0x0x7f1d1a73ff08)
+
+Vtable for QSGOpacityNode
+QSGOpacityNode::_ZTV14QSGOpacityNode: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QSGOpacityNode)
+16 (int (*)(...))QSGOpacityNode::~QSGOpacityNode
+24 (int (*)(...))QSGOpacityNode::~QSGOpacityNode
+32 (int (*)(...))QSGOpacityNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+
+Class QSGOpacityNode
+ size=96 align=8
+ base size=96 base align=8
+QSGOpacityNode (0x0x7f1d1a861000) 0
+ vptr=((& QSGOpacityNode::_ZTV14QSGOpacityNode) + 16)
+ QSGNode (0x0x7f1d1a8307e0) 0
+ primary-for QSGOpacityNode (0x0x7f1d1a861000)
+
+Vtable for QSGNodeVisitor
+QSGNodeVisitor::_ZTV14QSGNodeVisitor: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QSGNodeVisitor)
+16 (int (*)(...))QSGNodeVisitor::~QSGNodeVisitor
+24 (int (*)(...))QSGNodeVisitor::~QSGNodeVisitor
+32 (int (*)(...))QSGNodeVisitor::enterTransformNode
+40 (int (*)(...))QSGNodeVisitor::leaveTransformNode
+48 (int (*)(...))QSGNodeVisitor::enterClipNode
+56 (int (*)(...))QSGNodeVisitor::leaveClipNode
+64 (int (*)(...))QSGNodeVisitor::enterGeometryNode
+72 (int (*)(...))QSGNodeVisitor::leaveGeometryNode
+80 (int (*)(...))QSGNodeVisitor::enterOpacityNode
+88 (int (*)(...))QSGNodeVisitor::leaveOpacityNode
+96 (int (*)(...))QSGNodeVisitor::visitNode
+104 (int (*)(...))QSGNodeVisitor::visitChildren
+
+Class QSGNodeVisitor
+ size=8 align=8
+ base size=8 base align=8
+QSGNodeVisitor (0x0x7f1d1a830900) 0 nearly-empty
+ vptr=((& QSGNodeVisitor::_ZTV14QSGNodeVisitor) + 16)
+
+Vtable for QSGRendererInterface
+QSGRendererInterface::_ZTV20QSGRendererInterface: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QSGRendererInterface)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))QSGRendererInterface::getResource
+48 (int (*)(...))QSGRendererInterface::getResource
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+
+Class QSGRendererInterface
+ size=8 align=8
+ base size=8 base align=8
+QSGRendererInterface (0x0x7f1d1a86f720) 0 nearly-empty
+ vptr=((& QSGRendererInterface::_ZTV20QSGRendererInterface) + 16)
+
+Class QQuickWindow::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickWindow::QPrivateSignal (0x0x7f1d1a89e600) 0 empty
+
+Class QQuickWindow::GraphicsStateInfo
+ size=8 align=4
+ base size=8 base align=4
+QQuickWindow::GraphicsStateInfo (0x0x7f1d1a89e660) 0
+
+Vtable for QQuickWindow
+QQuickWindow::_ZTV12QQuickWindow: 45 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QQuickWindow)
+16 (int (*)(...))QQuickWindow::metaObject
+24 (int (*)(...))QQuickWindow::qt_metacast
+32 (int (*)(...))QQuickWindow::qt_metacall
+40 (int (*)(...))QQuickWindow::~QQuickWindow
+48 (int (*)(...))QQuickWindow::~QQuickWindow
+56 (int (*)(...))QQuickWindow::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWindow::surfaceType
+120 (int (*)(...))QWindow::format
+128 (int (*)(...))QWindow::size
+136 (int (*)(...))QQuickWindow::accessibleRoot
+144 (int (*)(...))QQuickWindow::focusObject
+152 (int (*)(...))QQuickWindow::exposeEvent
+160 (int (*)(...))QQuickWindow::resizeEvent
+168 (int (*)(...))QWindow::moveEvent
+176 (int (*)(...))QQuickWindow::focusInEvent
+184 (int (*)(...))QQuickWindow::focusOutEvent
+192 (int (*)(...))QQuickWindow::showEvent
+200 (int (*)(...))QQuickWindow::hideEvent
+208 (int (*)(...))QQuickWindow::keyPressEvent
+216 (int (*)(...))QQuickWindow::keyReleaseEvent
+224 (int (*)(...))QQuickWindow::mousePressEvent
+232 (int (*)(...))QQuickWindow::mouseReleaseEvent
+240 (int (*)(...))QQuickWindow::mouseDoubleClickEvent
+248 (int (*)(...))QQuickWindow::mouseMoveEvent
+256 (int (*)(...))QQuickWindow::wheelEvent
+264 (int (*)(...))QWindow::touchEvent
+272 (int (*)(...))QWindow::tabletEvent
+280 (int (*)(...))QWindow::nativeEvent
+288 (int (*)(...))QWindow::surfaceHandle
+296 (int (*)(...))-16
+304 (int (*)(...))(& _ZTI12QQuickWindow)
+312 (int (*)(...))QQuickWindow::_ZThn16_N12QQuickWindowD1Ev
+320 (int (*)(...))QQuickWindow::_ZThn16_N12QQuickWindowD0Ev
+328 (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
+336 (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
+344 (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
+352 (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv
+
+Class QQuickWindow
+ size=40 align=8
+ base size=40 base align=8
+QQuickWindow (0x0x7f1d1a861208) 0
+ vptr=((& QQuickWindow::_ZTV12QQuickWindow) + 16)
+ QWindow (0x0x7f1d1a88d8c0) 0
+ primary-for QQuickWindow (0x0x7f1d1a861208)
+ QObject (0x0x7f1d1a89e540) 0
+ primary-for QWindow (0x0x7f1d1a88d8c0)
+ QSurface (0x0x7f1d1a89e5a0) 16
+ vptr=((& QQuickWindow::_ZTV12QQuickWindow) + 312)
+
+Class QQuickView::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickView::QPrivateSignal (0x0x7f1d1a4d5180) 0 empty
+
+Vtable for QQuickView
+QQuickView::_ZTV10QQuickView: 45 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QQuickView)
+16 (int (*)(...))QQuickView::metaObject
+24 (int (*)(...))QQuickView::qt_metacast
+32 (int (*)(...))QQuickView::qt_metacall
+40 (int (*)(...))QQuickView::~QQuickView
+48 (int (*)(...))QQuickView::~QQuickView
+56 (int (*)(...))QQuickWindow::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QQuickView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWindow::surfaceType
+120 (int (*)(...))QWindow::format
+128 (int (*)(...))QWindow::size
+136 (int (*)(...))QQuickWindow::accessibleRoot
+144 (int (*)(...))QQuickWindow::focusObject
+152 (int (*)(...))QQuickWindow::exposeEvent
+160 (int (*)(...))QQuickView::resizeEvent
+168 (int (*)(...))QWindow::moveEvent
+176 (int (*)(...))QQuickWindow::focusInEvent
+184 (int (*)(...))QQuickWindow::focusOutEvent
+192 (int (*)(...))QQuickWindow::showEvent
+200 (int (*)(...))QQuickWindow::hideEvent
+208 (int (*)(...))QQuickView::keyPressEvent
+216 (int (*)(...))QQuickView::keyReleaseEvent
+224 (int (*)(...))QQuickView::mousePressEvent
+232 (int (*)(...))QQuickView::mouseReleaseEvent
+240 (int (*)(...))QQuickWindow::mouseDoubleClickEvent
+248 (int (*)(...))QQuickView::mouseMoveEvent
+256 (int (*)(...))QQuickWindow::wheelEvent
+264 (int (*)(...))QWindow::touchEvent
+272 (int (*)(...))QWindow::tabletEvent
+280 (int (*)(...))QWindow::nativeEvent
+288 (int (*)(...))QWindow::surfaceHandle
+296 (int (*)(...))-16
+304 (int (*)(...))(& _ZTI10QQuickView)
+312 (int (*)(...))QQuickView::_ZThn16_N10QQuickViewD1Ev
+320 (int (*)(...))QQuickView::_ZThn16_N10QQuickViewD0Ev
+328 (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
+336 (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
+344 (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
+352 (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv
+
+Class QQuickView
+ size=40 align=8
+ base size=40 base align=8
+QQuickView (0x0x7f1d1a861340) 0
+ vptr=((& QQuickView::_ZTV10QQuickView) + 16)
+ QQuickWindow (0x0x7f1d1a8613a8) 0
+ primary-for QQuickView (0x0x7f1d1a861340)
+ QWindow (0x0x7f1d1a4c4930) 0
+ primary-for QQuickWindow (0x0x7f1d1a8613a8)
+ QObject (0x0x7f1d1a4d50c0) 0
+ primary-for QWindow (0x0x7f1d1a4c4930)
+ QSurface (0x0x7f1d1a4d5120) 16
+ vptr=((& QQuickView::_ZTV10QQuickView) + 312)
+
+Class QSGAbstractRenderer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSGAbstractRenderer::QPrivateSignal (0x0x7f1d1a4d5540) 0 empty
+
+Vtable for QSGAbstractRenderer
+QSGAbstractRenderer::_ZTV19QSGAbstractRenderer: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QSGAbstractRenderer)
+16 (int (*)(...))QSGAbstractRenderer::metaObject
+24 (int (*)(...))QSGAbstractRenderer::qt_metacast
+32 (int (*)(...))QSGAbstractRenderer::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QSGAbstractRenderer
+ size=16 align=8
+ base size=16 base align=8
+QSGAbstractRenderer (0x0x7f1d1a861410) 0
+ vptr=((& QSGAbstractRenderer::_ZTV19QSGAbstractRenderer) + 16)
+ QObject (0x0x7f1d1a4d54e0) 0
+ primary-for QSGAbstractRenderer (0x0x7f1d1a861410)
+
+Class QSGEngine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSGEngine::QPrivateSignal (0x0x7f1d1a516240) 0 empty
+
+Vtable for QSGEngine
+QSGEngine::_ZTV9QSGEngine: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QSGEngine)
+16 (int (*)(...))QSGEngine::metaObject
+24 (int (*)(...))QSGEngine::qt_metacast
+32 (int (*)(...))QSGEngine::qt_metacall
+40 (int (*)(...))QSGEngine::~QSGEngine
+48 (int (*)(...))QSGEngine::~QSGEngine
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSGEngine
+ size=16 align=8
+ base size=16 base align=8
+QSGEngine (0x0x7f1d1a861618) 0
+ vptr=((& QSGEngine::_ZTV9QSGEngine) + 16)
+ QObject (0x0x7f1d1a5161e0) 0
+ primary-for QSGEngine (0x0x7f1d1a861618)
+
+Class QSGMaterialType
+ size=1 align=1
+ base size=0 base align=1
+QSGMaterialType (0x0x7f1d1a5168a0) 0 empty
+
+Class QSGMaterialShader::RenderState
+ size=16 align=8
+ base size=16 base align=8
+QSGMaterialShader::RenderState (0x0x7f1d1a516960) 0
+
+Vtable for QSGMaterialShader
+QSGMaterialShader::_ZTV17QSGMaterialShader: 12 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QSGMaterialShader)
+16 0
+24 0
+32 (int (*)(...))QSGMaterialShader::activate
+40 (int (*)(...))QSGMaterialShader::deactivate
+48 (int (*)(...))QSGMaterialShader::updateState
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))QSGMaterialShader::compile
+72 (int (*)(...))QSGMaterialShader::initialize
+80 (int (*)(...))QSGMaterialShader::vertexShader
+88 (int (*)(...))QSGMaterialShader::fragmentShader
+
+Class QSGMaterialShader
+ size=32 align=8
+ base size=32 base align=8
+QSGMaterialShader (0x0x7f1d1a516900) 0
+ vptr=((& QSGMaterialShader::_ZTV17QSGMaterialShader) + 16)
+
+Class QSGMaterialRhiShader::RenderState
+ size=16 align=8
+ base size=16 base align=8
+QSGMaterialRhiShader::RenderState (0x0x7f1d1a5524e0) 0
+
+Class QSGMaterialRhiShader::GraphicsPipelineState
+ size=36 align=4
+ base size=36 base align=4
+QSGMaterialRhiShader::GraphicsPipelineState (0x0x7f1d1a552540) 0
+
+Vtable for QSGMaterialRhiShader
+QSGMaterialRhiShader::_ZTV20QSGMaterialRhiShader: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QSGMaterialRhiShader)
+16 (int (*)(...))QSGMaterialRhiShader::~QSGMaterialRhiShader
+24 (int (*)(...))QSGMaterialRhiShader::~QSGMaterialRhiShader
+32 (int (*)(...))QSGMaterialShader::activate
+40 (int (*)(...))QSGMaterialShader::deactivate
+48 (int (*)(...))QSGMaterialShader::updateState
+56 (int (*)(...))QSGMaterialRhiShader::attributeNames
+64 (int (*)(...))QSGMaterialShader::compile
+72 (int (*)(...))QSGMaterialShader::initialize
+80 (int (*)(...))QSGMaterialShader::vertexShader
+88 (int (*)(...))QSGMaterialShader::fragmentShader
+96 (int (*)(...))QSGMaterialRhiShader::updateUniformData
+104 (int (*)(...))QSGMaterialRhiShader::updateSampledImage
+112 (int (*)(...))QSGMaterialRhiShader::updateGraphicsPipelineState
+
+Class QSGMaterialRhiShader
+ size=40 align=8
+ base size=40 base align=8
+QSGMaterialRhiShader (0x0x7f1d1a861820) 0
+ vptr=((& QSGMaterialRhiShader::_ZTV20QSGMaterialRhiShader) + 16)
+ QSGMaterialShader (0x0x7f1d1a552480) 0
+ primary-for QSGMaterialRhiShader (0x0x7f1d1a861820)
+
+Vtable for QSGMaterial
+QSGMaterial::_ZTV11QSGMaterial: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QSGMaterial)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))QSGMaterial::compare
+
+Class QSGMaterial
+ size=24 align=8
+ base size=24 base align=8
+QSGMaterial (0x0x7f1d1a581600) 0
+ vptr=((& QSGMaterial::_ZTV11QSGMaterial) + 16)
+
+Vtable for QSGFlatColorMaterial
+QSGFlatColorMaterial::_ZTV20QSGFlatColorMaterial: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QSGFlatColorMaterial)
+16 (int (*)(...))QSGFlatColorMaterial::~QSGFlatColorMaterial
+24 (int (*)(...))QSGFlatColorMaterial::~QSGFlatColorMaterial
+32 (int (*)(...))QSGFlatColorMaterial::type
+40 (int (*)(...))QSGFlatColorMaterial::createShader
+48 (int (*)(...))QSGFlatColorMaterial::compare
+
+Class QSGFlatColorMaterial
+ size=40 align=8
+ base size=40 base align=8
+QSGFlatColorMaterial (0x0x7f1d1a861b60) 0
+ vptr=((& QSGFlatColorMaterial::_ZTV20QSGFlatColorMaterial) + 16)
+ QSGMaterial (0x0x7f1d1a581d80) 0
+ primary-for QSGFlatColorMaterial (0x0x7f1d1a861b60)
+
+Class QSGTexture::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSGTexture::QPrivateSignal (0x0x7f1d1a581ea0) 0 empty
+
+Vtable for QSGTexture
+QSGTexture::_ZTV10QSGTexture: 22 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QSGTexture)
+16 (int (*)(...))QSGTexture::metaObject
+24 (int (*)(...))QSGTexture::qt_metacast
+32 (int (*)(...))QSGTexture::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))QSGTexture::normalizedTextureSubRect
+152 (int (*)(...))QSGTexture::isAtlasTexture
+160 (int (*)(...))QSGTexture::removedFromAtlas
+168 (int (*)(...))__cxa_pure_virtual
+
+Class QSGTexture
+ size=16 align=8
+ base size=16 base align=8
+QSGTexture (0x0x7f1d1a861bc8) 0
+ vptr=((& QSGTexture::_ZTV10QSGTexture) + 16)
+ QObject (0x0x7f1d1a581e40) 0
+ primary-for QSGTexture (0x0x7f1d1a861bc8)
+
+Class QSGDynamicTexture::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSGDynamicTexture::QPrivateSignal (0x0x7f1d1a5bb180) 0 empty
+
+Vtable for QSGDynamicTexture
+QSGDynamicTexture::_ZTV17QSGDynamicTexture: 23 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QSGDynamicTexture)
+16 (int (*)(...))QSGDynamicTexture::metaObject
+24 (int (*)(...))QSGDynamicTexture::qt_metacast
+32 (int (*)(...))QSGDynamicTexture::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))QSGTexture::normalizedTextureSubRect
+152 (int (*)(...))QSGTexture::isAtlasTexture
+160 (int (*)(...))QSGTexture::removedFromAtlas
+168 (int (*)(...))__cxa_pure_virtual
+176 (int (*)(...))__cxa_pure_virtual
+
+Class QSGDynamicTexture
+ size=16 align=8
+ base size=16 base align=8
+QSGDynamicTexture (0x0x7f1d1a861c30) 0
+ vptr=((& QSGDynamicTexture::_ZTV17QSGDynamicTexture) + 16)
+ QSGTexture (0x0x7f1d1a861c98) 0
+ primary-for QSGDynamicTexture (0x0x7f1d1a861c30)
+ QObject (0x0x7f1d1a5bb120) 0
+ primary-for QSGTexture (0x0x7f1d1a861c98)
+
+Vtable for QSGImageNode
+QSGImageNode::_ZTV12QSGImageNode: 20 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QSGImageNode)
+16 0
+24 0
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))__cxa_pure_virtual
+96 (int (*)(...))__cxa_pure_virtual
+104 (int (*)(...))__cxa_pure_virtual
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))__cxa_pure_virtual
+
+Class QSGImageNode
+ size=144 align=8
+ base size=144 base align=8
+QSGImageNode (0x0x7f1d1a861d00) 0
+ vptr=((& QSGImageNode::_ZTV12QSGImageNode) + 16)
+ QSGGeometryNode (0x0x7f1d1a861d68) 0
+ primary-for QSGImageNode (0x0x7f1d1a861d00)
+ QSGBasicGeometryNode (0x0x7f1d1a861dd0) 0
+ primary-for QSGGeometryNode (0x0x7f1d1a861d68)
+ QSGNode (0x0x7f1d1a5bb2a0) 0
+ primary-for QSGBasicGeometryNode (0x0x7f1d1a861dd0)
+
+Vtable for QSGNinePatchNode
+QSGNinePatchNode::_ZTV16QSGNinePatchNode: 11 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QSGNinePatchNode)
+16 0
+24 0
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))__cxa_pure_virtual
+
+Class QSGNinePatchNode
+ size=144 align=8
+ base size=144 base align=8
+QSGNinePatchNode (0x0x7f1d1a861f08) 0
+ vptr=((& QSGNinePatchNode::_ZTV16QSGNinePatchNode) + 16)
+ QSGGeometryNode (0x0x7f1d1a861f70) 0
+ primary-for QSGNinePatchNode (0x0x7f1d1a861f08)
+ QSGBasicGeometryNode (0x0x7f1d1a5da000) 0
+ primary-for QSGGeometryNode (0x0x7f1d1a861f70)
+ QSGNode (0x0x7f1d1a5bba80) 0
+ primary-for QSGBasicGeometryNode (0x0x7f1d1a5da000)
+
+Vtable for QSGRectangleNode
+QSGRectangleNode::_ZTV16QSGRectangleNode: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QSGRectangleNode)
+16 0
+24 0
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+
+Class QSGRectangleNode
+ size=144 align=8
+ base size=144 base align=8
+QSGRectangleNode (0x0x7f1d1a5da068) 0
+ vptr=((& QSGRectangleNode::_ZTV16QSGRectangleNode) + 16)
+ QSGGeometryNode (0x0x7f1d1a5da0d0) 0
+ primary-for QSGRectangleNode (0x0x7f1d1a5da068)
+ QSGBasicGeometryNode (0x0x7f1d1a5da138) 0
+ primary-for QSGGeometryNode (0x0x7f1d1a5da0d0)
+ QSGNode (0x0x7f1d1a5bbae0) 0
+ primary-for QSGBasicGeometryNode (0x0x7f1d1a5da138)
+
+Vtable for QSGRenderNode::RenderState
+QSGRenderNode::RenderState::_ZTVN13QSGRenderNode11RenderStateE: 11 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN13QSGRenderNode11RenderStateE)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))QSGRenderNode::RenderState::get
+
+Class QSGRenderNode::RenderState
+ size=8 align=8
+ base size=8 base align=8
+QSGRenderNode::RenderState (0x0x7f1d1a5bbc00) 0 nearly-empty
+ vptr=((& QSGRenderNode::RenderState::_ZTVN13QSGRenderNode11RenderStateE) + 16)
+
+Vtable for QSGRenderNode
+QSGRenderNode::_ZTV13QSGRenderNode: 11 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSGRenderNode)
+16 0
+24 0
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+48 (int (*)(...))QSGRenderNode::changedStates
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))QSGRenderNode::releaseResources
+72 (int (*)(...))QSGRenderNode::flags
+80 (int (*)(...))QSGRenderNode::rect
+
+Class QSGRenderNode
+ size=88 align=8
+ base size=88 base align=8
+QSGRenderNode (0x0x7f1d1a5da1a0) 0
+ vptr=((& QSGRenderNode::_ZTV13QSGRenderNode) + 16)
+ QSGNode (0x0x7f1d1a5bbba0) 0
+ primary-for QSGRenderNode (0x0x7f1d1a5da1a0)
+
+Vtable for QSGSimpleRectNode
+QSGSimpleRectNode::_ZTV17QSGSimpleRectNode: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QSGSimpleRectNode)
+16 (int (*)(...))QSGSimpleRectNode::~QSGSimpleRectNode
+24 (int (*)(...))QSGSimpleRectNode::~QSGSimpleRectNode
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+
+Class QSGSimpleRectNode
+ size=320 align=8
+ base size=320 base align=8
+QSGSimpleRectNode (0x0x7f1d1a5da618) 0
+ vptr=((& QSGSimpleRectNode::_ZTV17QSGSimpleRectNode) + 16)
+ QSGGeometryNode (0x0x7f1d1a5da680) 0
+ primary-for QSGSimpleRectNode (0x0x7f1d1a5da618)
+ QSGBasicGeometryNode (0x0x7f1d1a5da6e8) 0
+ primary-for QSGGeometryNode (0x0x7f1d1a5da680)
+ QSGNode (0x0x7f1d1a63c360) 0
+ primary-for QSGBasicGeometryNode (0x0x7f1d1a5da6e8)
+
+Vtable for QSGOpaqueTextureMaterial
+QSGOpaqueTextureMaterial::_ZTV24QSGOpaqueTextureMaterial: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QSGOpaqueTextureMaterial)
+16 (int (*)(...))QSGOpaqueTextureMaterial::~QSGOpaqueTextureMaterial
+24 (int (*)(...))QSGOpaqueTextureMaterial::~QSGOpaqueTextureMaterial
+32 (int (*)(...))QSGOpaqueTextureMaterial::type
+40 (int (*)(...))QSGOpaqueTextureMaterial::createShader
+48 (int (*)(...))QSGOpaqueTextureMaterial::compare
+
+Class QSGOpaqueTextureMaterial
+ size=40 align=8
+ base size=36 base align=8
+QSGOpaqueTextureMaterial (0x0x7f1d1a5da750) 0
+ vptr=((& QSGOpaqueTextureMaterial::_ZTV24QSGOpaqueTextureMaterial) + 16)
+ QSGMaterial (0x0x7f1d1a63c420) 0
+ primary-for QSGOpaqueTextureMaterial (0x0x7f1d1a5da750)
+
+Vtable for QSGTextureMaterial
+QSGTextureMaterial::_ZTV18QSGTextureMaterial: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QSGTextureMaterial)
+16 (int (*)(...))QSGTextureMaterial::~QSGTextureMaterial
+24 (int (*)(...))QSGTextureMaterial::~QSGTextureMaterial
+32 (int (*)(...))QSGTextureMaterial::type
+40 (int (*)(...))QSGTextureMaterial::createShader
+48 (int (*)(...))QSGOpaqueTextureMaterial::compare
+
+Class QSGTextureMaterial
+ size=40 align=8
+ base size=36 base align=8
+QSGTextureMaterial (0x0x7f1d1a5da7b8) 0
+ vptr=((& QSGTextureMaterial::_ZTV18QSGTextureMaterial) + 16)
+ QSGOpaqueTextureMaterial (0x0x7f1d1a5da820) 0
+ primary-for QSGTextureMaterial (0x0x7f1d1a5da7b8)
+ QSGMaterial (0x0x7f1d1a63c8a0) 0
+ primary-for QSGOpaqueTextureMaterial (0x0x7f1d1a5da820)
+
+Vtable for QSGSimpleTextureNode
+QSGSimpleTextureNode::_ZTV20QSGSimpleTextureNode: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QSGSimpleTextureNode)
+16 (int (*)(...))QSGSimpleTextureNode::~QSGSimpleTextureNode
+24 (int (*)(...))QSGSimpleTextureNode::~QSGSimpleTextureNode
+32 (int (*)(...))QSGNode::isSubtreeBlocked
+40 (int (*)(...))QSGNode::preprocess
+
+Class QSGSimpleTextureNode
+ size=384 align=8
+ base size=384 base align=8
+QSGSimpleTextureNode (0x0x7f1d1a5da888) 0
+ vptr=((& QSGSimpleTextureNode::_ZTV20QSGSimpleTextureNode) + 16)
+ QSGGeometryNode (0x0x7f1d1a5da8f0) 0
+ primary-for QSGSimpleTextureNode (0x0x7f1d1a5da888)
+ QSGBasicGeometryNode (0x0x7f1d1a5da958) 0
+ primary-for QSGGeometryNode (0x0x7f1d1a5da8f0)
+ QSGNode (0x0x7f1d1a63c900) 0
+ primary-for QSGBasicGeometryNode (0x0x7f1d1a5da958)
+
+Class QSGTextureProvider::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSGTextureProvider::QPrivateSignal (0x0x7f1d1a66f2a0) 0 empty
+
+Vtable for QSGTextureProvider
+QSGTextureProvider::_ZTV18QSGTextureProvider: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QSGTextureProvider)
+16 (int (*)(...))QSGTextureProvider::metaObject
+24 (int (*)(...))QSGTextureProvider::qt_metacast
+32 (int (*)(...))QSGTextureProvider::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QSGTextureProvider
+ size=16 align=8
+ base size=16 base align=8
+QSGTextureProvider (0x0x7f1d1a5daaf8) 0
+ vptr=((& QSGTextureProvider::_ZTV18QSGTextureProvider) + 16)
+ QObject (0x0x7f1d1a66f240) 0
+ primary-for QSGTextureProvider (0x0x7f1d1a5daaf8)
+
+Vtable for QSGVertexColorMaterial
+QSGVertexColorMaterial::_ZTV22QSGVertexColorMaterial: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QSGVertexColorMaterial)
+16 (int (*)(...))QSGVertexColorMaterial::~QSGVertexColorMaterial
+24 (int (*)(...))QSGVertexColorMaterial::~QSGVertexColorMaterial
+32 (int (*)(...))QSGVertexColorMaterial::type
+40 (int (*)(...))QSGVertexColorMaterial::createShader
+48 (int (*)(...))QSGVertexColorMaterial::compare
+
+Class QSGVertexColorMaterial
+ size=24 align=8
+ base size=24 base align=8
+QSGVertexColorMaterial (0x0x7f1d1a5dab60) 0
+ vptr=((& QSGVertexColorMaterial::_ZTV22QSGVertexColorMaterial) + 16)
+ QSGMaterial (0x0x7f1d1a66f3c0) 0
+ primary-for QSGVertexColorMaterial (0x0x7f1d1a5dab60)
+
+Class QSizePolicy::Bits
+ size=4 align=4
+ base size=4 base align=4
+QSizePolicy::Bits (0x0x7f1d1a66f480) 0
+
+Class QSizePolicy
+ size=4 align=4
+ base size=4 base align=4
+QSizePolicy (0x0x7f1d1a66f420) 0
+
+Class QWidgetData
+ size=88 align=8
+ base size=88 base align=8
+QWidgetData (0x0x7f1d1a2d4120) 0
+
+Class QWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QWidget::QPrivateSignal (0x0x7f1d1a2d4240) 0 empty
+
+Vtable for QWidget
+QWidget::_ZTV7QWidget: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QWidget)
+16 (int (*)(...))QWidget::metaObject
+24 (int (*)(...))QWidget::qt_metacast
+32 (int (*)(...))QWidget::qt_metacall
+40 (int (*)(...))QWidget::~QWidget
+48 (int (*)(...))QWidget::~QWidget
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI7QWidget)
+448 (int (*)(...))QWidget::_ZThn16_N7QWidgetD1Ev
+456 (int (*)(...))QWidget::_ZThn16_N7QWidgetD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QWidget
+ size=48 align=8
+ base size=48 base align=8
+QWidget (0x0x7f1d1a2d2310) 0
+ vptr=((& QWidget::_ZTV7QWidget) + 16)
+ QObject (0x0x7f1d1a2d4180) 0
+ primary-for QWidget (0x0x7f1d1a2d2310)
+ QPaintDevice (0x0x7f1d1a2d41e0) 16
+ vptr=((& QWidget::_ZTV7QWidget) + 448)
+
+Class QAbstractButton::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractButton::QPrivateSignal (0x0x7f1d1a343ba0) 0 empty
+
+Vtable for QAbstractButton
+QAbstractButton::_ZTV15QAbstractButton: 67 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QAbstractButton)
+16 (int (*)(...))QAbstractButton::metaObject
+24 (int (*)(...))QAbstractButton::qt_metacast
+32 (int (*)(...))QAbstractButton::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAbstractButton::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractButton::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractButton::mousePressEvent
+176 (int (*)(...))QAbstractButton::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractButton::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QAbstractButton::keyPressEvent
+216 (int (*)(...))QAbstractButton::keyReleaseEvent
+224 (int (*)(...))QAbstractButton::focusInEvent
+232 (int (*)(...))QAbstractButton::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))__cxa_pure_virtual
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractButton::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QAbstractButton::hitButton
+440 (int (*)(...))QAbstractButton::checkStateSet
+448 (int (*)(...))QAbstractButton::nextCheckState
+456 (int (*)(...))-16
+464 (int (*)(...))(& _ZTI15QAbstractButton)
+472 0
+480 0
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QAbstractButton
+ size=48 align=8
+ base size=48 base align=8
+QAbstractButton (0x0x7f1d1a2c9f70) 0
+ vptr=((& QAbstractButton::_ZTV15QAbstractButton) + 16)
+ QWidget (0x0x7f1d1a330d20) 0
+ primary-for QAbstractButton (0x0x7f1d1a2c9f70)
+ QObject (0x0x7f1d1a343ae0) 0
+ primary-for QWidget (0x0x7f1d1a330d20)
+ QPaintDevice (0x0x7f1d1a343b40) 16
+ vptr=((& QAbstractButton::_ZTV15QAbstractButton) + 472)
+
+Class QAbstractSpinBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractSpinBox::QPrivateSignal (0x0x7f1d1a343e40) 0 empty
+
+Vtable for QAbstractSpinBox
+QAbstractSpinBox::_ZTV16QAbstractSpinBox: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QAbstractSpinBox)
+16 (int (*)(...))QAbstractSpinBox::metaObject
+24 (int (*)(...))QAbstractSpinBox::qt_metacast
+32 (int (*)(...))QAbstractSpinBox::qt_metacall
+40 (int (*)(...))QAbstractSpinBox::~QAbstractSpinBox
+48 (int (*)(...))QAbstractSpinBox::~QAbstractSpinBox
+56 (int (*)(...))QAbstractSpinBox::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSpinBox::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractSpinBox::sizeHint
+136 (int (*)(...))QAbstractSpinBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractSpinBox::mousePressEvent
+176 (int (*)(...))QAbstractSpinBox::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractSpinBox::mouseMoveEvent
+200 (int (*)(...))QAbstractSpinBox::wheelEvent
+208 (int (*)(...))QAbstractSpinBox::keyPressEvent
+216 (int (*)(...))QAbstractSpinBox::keyReleaseEvent
+224 (int (*)(...))QAbstractSpinBox::focusInEvent
+232 (int (*)(...))QAbstractSpinBox::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QAbstractSpinBox::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractSpinBox::resizeEvent
+280 (int (*)(...))QAbstractSpinBox::closeEvent
+288 (int (*)(...))QAbstractSpinBox::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QAbstractSpinBox::showEvent
+352 (int (*)(...))QAbstractSpinBox::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSpinBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QAbstractSpinBox::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QAbstractSpinBox::validate
+440 (int (*)(...))QAbstractSpinBox::fixup
+448 (int (*)(...))QAbstractSpinBox::stepBy
+456 (int (*)(...))QAbstractSpinBox::clear
+464 (int (*)(...))QAbstractSpinBox::stepEnabled
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI16QAbstractSpinBox)
+488 (int (*)(...))QAbstractSpinBox::_ZThn16_N16QAbstractSpinBoxD1Ev
+496 (int (*)(...))QAbstractSpinBox::_ZThn16_N16QAbstractSpinBoxD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QAbstractSpinBox
+ size=48 align=8
+ base size=48 base align=8
+QAbstractSpinBox (0x0x7f1d1a35e000) 0
+ vptr=((& QAbstractSpinBox::_ZTV16QAbstractSpinBox) + 16)
+ QWidget (0x0x7f1d1a330d90) 0
+ primary-for QAbstractSpinBox (0x0x7f1d1a35e000)
+ QObject (0x0x7f1d1a343d80) 0
+ primary-for QWidget (0x0x7f1d1a330d90)
+ QPaintDevice (0x0x7f1d1a343de0) 16
+ vptr=((& QAbstractSpinBox::_ZTV16QAbstractSpinBox) + 488)
+
+Class QAbstractSlider::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractSlider::QPrivateSignal (0x0x7f1d1a375a20) 0 empty
+
+Vtable for QAbstractSlider
+QAbstractSlider::_ZTV15QAbstractSlider: 65 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QAbstractSlider)
+16 (int (*)(...))QAbstractSlider::metaObject
+24 (int (*)(...))QAbstractSlider::qt_metacast
+32 (int (*)(...))QAbstractSlider::qt_metacall
+40 (int (*)(...))QAbstractSlider::~QAbstractSlider
+48 (int (*)(...))QAbstractSlider::~QAbstractSlider
+56 (int (*)(...))QAbstractSlider::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSlider::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QAbstractSlider::wheelEvent
+208 (int (*)(...))QAbstractSlider::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSlider::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QAbstractSlider::sliderChange
+440 (int (*)(...))-16
+448 (int (*)(...))(& _ZTI15QAbstractSlider)
+456 (int (*)(...))QAbstractSlider::_ZThn16_N15QAbstractSliderD1Ev
+464 (int (*)(...))QAbstractSlider::_ZThn16_N15QAbstractSliderD0Ev
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QAbstractSlider
+ size=48 align=8
+ base size=48 base align=8
+QAbstractSlider (0x0x7f1d1a35e138) 0
+ vptr=((& QAbstractSlider::_ZTV15QAbstractSlider) + 16)
+ QWidget (0x0x7f1d1a362af0) 0
+ primary-for QAbstractSlider (0x0x7f1d1a35e138)
+ QObject (0x0x7f1d1a375960) 0
+ primary-for QWidget (0x0x7f1d1a362af0)
+ QPaintDevice (0x0x7f1d1a3759c0) 16
+ vptr=((& QAbstractSlider::_ZTV15QAbstractSlider) + 456)
+
+Class QSlider::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSlider::QPrivateSignal (0x0x7f1d1a375cc0) 0 empty
+
+Vtable for QSlider
+QSlider::_ZTV7QSlider: 65 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QSlider)
+16 (int (*)(...))QSlider::metaObject
+24 (int (*)(...))QSlider::qt_metacast
+32 (int (*)(...))QSlider::qt_metacall
+40 (int (*)(...))QSlider::~QSlider
+48 (int (*)(...))QSlider::~QSlider
+56 (int (*)(...))QSlider::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSlider::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QSlider::sizeHint
+136 (int (*)(...))QSlider::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QSlider::mousePressEvent
+176 (int (*)(...))QSlider::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QSlider::mouseMoveEvent
+200 (int (*)(...))QAbstractSlider::wheelEvent
+208 (int (*)(...))QAbstractSlider::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QSlider::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSlider::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QAbstractSlider::sliderChange
+440 (int (*)(...))-16
+448 (int (*)(...))(& _ZTI7QSlider)
+456 (int (*)(...))QSlider::_ZThn16_N7QSliderD1Ev
+464 (int (*)(...))QSlider::_ZThn16_N7QSliderD0Ev
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QSlider
+ size=48 align=8
+ base size=48 base align=8
+QSlider (0x0x7f1d1a35e1a0) 0
+ vptr=((& QSlider::_ZTV7QSlider) + 16)
+ QAbstractSlider (0x0x7f1d1a35e208) 0
+ primary-for QSlider (0x0x7f1d1a35e1a0)
+ QWidget (0x0x7f1d1a3920e0) 0
+ primary-for QAbstractSlider (0x0x7f1d1a35e208)
+ QObject (0x0x7f1d1a375c00) 0
+ primary-for QWidget (0x0x7f1d1a3920e0)
+ QPaintDevice (0x0x7f1d1a375c60) 16
+ vptr=((& QSlider::_ZTV7QSlider) + 456)
+
+Class QStyle::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStyle::QPrivateSignal (0x0x7f1d1a3a9000) 0 empty
+
+Vtable for QStyle
+QStyle::_ZTV6QStyle: 37 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QStyle)
+16 (int (*)(...))QStyle::metaObject
+24 (int (*)(...))QStyle::qt_metacast
+32 (int (*)(...))QStyle::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QStyle::polish
+120 (int (*)(...))QStyle::unpolish
+128 (int (*)(...))QStyle::polish
+136 (int (*)(...))QStyle::unpolish
+144 (int (*)(...))QStyle::polish
+152 (int (*)(...))QStyle::itemTextRect
+160 (int (*)(...))QStyle::itemPixmapRect
+168 (int (*)(...))QStyle::drawItemText
+176 (int (*)(...))QStyle::drawItemPixmap
+184 (int (*)(...))QStyle::standardPalette
+192 (int (*)(...))__cxa_pure_virtual
+200 (int (*)(...))__cxa_pure_virtual
+208 (int (*)(...))__cxa_pure_virtual
+216 (int (*)(...))__cxa_pure_virtual
+224 (int (*)(...))__cxa_pure_virtual
+232 (int (*)(...))__cxa_pure_virtual
+240 (int (*)(...))__cxa_pure_virtual
+248 (int (*)(...))__cxa_pure_virtual
+256 (int (*)(...))__cxa_pure_virtual
+264 (int (*)(...))__cxa_pure_virtual
+272 (int (*)(...))__cxa_pure_virtual
+280 (int (*)(...))__cxa_pure_virtual
+288 (int (*)(...))__cxa_pure_virtual
+
+Class QStyle
+ size=16 align=8
+ base size=16 base align=8
+QStyle (0x0x7f1d1a35e2d8) 0
+ vptr=((& QStyle::_ZTV6QStyle) + 16)
+ QObject (0x0x7f1d1a375f60) 0
+ primary-for QStyle (0x0x7f1d1a35e2d8)
+
+Class QTabBar::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTabBar::QPrivateSignal (0x0x7f1d1a3ee8a0) 0 empty
+
+Vtable for QTabBar
+QTabBar::_ZTV7QTabBar: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QTabBar)
+16 (int (*)(...))QTabBar::metaObject
+24 (int (*)(...))QTabBar::qt_metacast
+32 (int (*)(...))QTabBar::qt_metacall
+40 (int (*)(...))QTabBar::~QTabBar
+48 (int (*)(...))QTabBar::~QTabBar
+56 (int (*)(...))QTabBar::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QTabBar::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QTabBar::sizeHint
+136 (int (*)(...))QTabBar::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QTabBar::mousePressEvent
+176 (int (*)(...))QTabBar::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QTabBar::mouseMoveEvent
+200 (int (*)(...))QTabBar::wheelEvent
+208 (int (*)(...))QTabBar::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QTabBar::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QTabBar::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QTabBar::showEvent
+352 (int (*)(...))QTabBar::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QTabBar::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QTabBar::tabSizeHint
+440 (int (*)(...))QTabBar::minimumTabSizeHint
+448 (int (*)(...))QTabBar::tabInserted
+456 (int (*)(...))QTabBar::tabRemoved
+464 (int (*)(...))QTabBar::tabLayoutChange
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI7QTabBar)
+488 (int (*)(...))QTabBar::_ZThn16_N7QTabBarD1Ev
+496 (int (*)(...))QTabBar::_ZThn16_N7QTabBarD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QTabBar
+ size=48 align=8
+ base size=48 base align=8
+QTabBar (0x0x7f1d1a35e4e0) 0
+ vptr=((& QTabBar::_ZTV7QTabBar) + 16)
+ QWidget (0x0x7f1d1a3ccee0) 0
+ primary-for QTabBar (0x0x7f1d1a35e4e0)
+ QObject (0x0x7f1d1a3ee7e0) 0
+ primary-for QWidget (0x0x7f1d1a3ccee0)
+ QPaintDevice (0x0x7f1d1a3ee840) 16
+ vptr=((& QTabBar::_ZTV7QTabBar) + 488)
+
+Class QTabWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTabWidget::QPrivateSignal (0x0x7f1d1a3eec00) 0 empty
+
+Vtable for QTabWidget
+QTabWidget::_ZTV10QTabWidget: 66 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTabWidget)
+16 (int (*)(...))QTabWidget::metaObject
+24 (int (*)(...))QTabWidget::qt_metacast
+32 (int (*)(...))QTabWidget::qt_metacall
+40 (int (*)(...))QTabWidget::~QTabWidget
+48 (int (*)(...))QTabWidget::~QTabWidget
+56 (int (*)(...))QTabWidget::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QTabWidget::sizeHint
+136 (int (*)(...))QTabWidget::minimumSizeHint
+144 (int (*)(...))QTabWidget::heightForWidth
+152 (int (*)(...))QTabWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QTabWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QTabWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QTabWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QTabWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QTabWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QTabWidget::tabInserted
+440 (int (*)(...))QTabWidget::tabRemoved
+448 (int (*)(...))-16
+456 (int (*)(...))(& _ZTI10QTabWidget)
+464 (int (*)(...))QTabWidget::_ZThn16_N10QTabWidgetD1Ev
+472 (int (*)(...))QTabWidget::_ZThn16_N10QTabWidgetD0Ev
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QTabWidget
+ size=48 align=8
+ base size=48 base align=8
+QTabWidget (0x0x7f1d1a35e548) 0
+ vptr=((& QTabWidget::_ZTV10QTabWidget) + 16)
+ QWidget (0x0x7f1d1a404540) 0
+ primary-for QTabWidget (0x0x7f1d1a35e548)
+ QObject (0x0x7f1d1a3eeb40) 0
+ primary-for QWidget (0x0x7f1d1a404540)
+ QPaintDevice (0x0x7f1d1a3eeba0) 16
+ vptr=((& QTabWidget::_ZTV10QTabWidget) + 464)
+
+Class QRubberBand::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QRubberBand::QPrivateSignal (0x0x7f1d1a436060) 0 empty
+
+Vtable for QRubberBand
+QRubberBand::_ZTV11QRubberBand: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QRubberBand)
+16 (int (*)(...))QRubberBand::metaObject
+24 (int (*)(...))QRubberBand::qt_metacast
+32 (int (*)(...))QRubberBand::qt_metacall
+40 (int (*)(...))QRubberBand::~QRubberBand
+48 (int (*)(...))QRubberBand::~QRubberBand
+56 (int (*)(...))QRubberBand::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QRubberBand::paintEvent
+264 (int (*)(...))QRubberBand::moveEvent
+272 (int (*)(...))QRubberBand::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QRubberBand::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QRubberBand::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI11QRubberBand)
+448 (int (*)(...))QRubberBand::_ZThn16_N11QRubberBandD1Ev
+456 (int (*)(...))QRubberBand::_ZThn16_N11QRubberBandD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QRubberBand
+ size=48 align=8
+ base size=48 base align=8
+QRubberBand (0x0x7f1d1a35e5b0) 0
+ vptr=((& QRubberBand::_ZTV11QRubberBand) + 16)
+ QWidget (0x0x7f1d1a404930) 0
+ primary-for QRubberBand (0x0x7f1d1a35e5b0)
+ QObject (0x0x7f1d1a3eef60) 0
+ primary-for QWidget (0x0x7f1d1a404930)
+ QPaintDevice (0x0x7f1d1a436000) 16
+ vptr=((& QRubberBand::_ZTV11QRubberBand) + 448)
+
+Class QFrame::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFrame::QPrivateSignal (0x0x7f1d1a4364e0) 0 empty
+
+Vtable for QFrame
+QFrame::_ZTV6QFrame: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QFrame)
+16 (int (*)(...))QFrame::metaObject
+24 (int (*)(...))QFrame::qt_metacast
+32 (int (*)(...))QFrame::qt_metacall
+40 (int (*)(...))QFrame::~QFrame
+48 (int (*)(...))QFrame::~QFrame
+56 (int (*)(...))QFrame::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QFrame::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QFrame::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI6QFrame)
+448 (int (*)(...))QFrame::_ZThn16_N6QFrameD1Ev
+456 (int (*)(...))QFrame::_ZThn16_N6QFrameD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QFrame
+ size=48 align=8
+ base size=48 base align=8
+QFrame (0x0x7f1d1a35e618) 0
+ vptr=((& QFrame::_ZTV6QFrame) + 16)
+ QWidget (0x0x7f1d1a404b60) 0
+ primary-for QFrame (0x0x7f1d1a35e618)
+ QObject (0x0x7f1d1a436420) 0
+ primary-for QWidget (0x0x7f1d1a404b60)
+ QPaintDevice (0x0x7f1d1a436480) 16
+ vptr=((& QFrame::_ZTV6QFrame) + 448)
+
+Class QStyleOption
+ size=64 align=8
+ base size=64 base align=8
+QStyleOption (0x0x7f1d1a436840) 0
+
+Class QStyleOptionFocusRect
+ size=80 align=8
+ base size=80 base align=8
+QStyleOptionFocusRect (0x0x7f1d1a35e680) 0
+ QStyleOption (0x0x7f1d1a436900) 0
+
+Class QStyleOptionFrame
+ size=80 align=8
+ base size=80 base align=8
+QStyleOptionFrame (0x0x7f1d1a35e6e8) 0
+ QStyleOption (0x0x7f1d1a436b40) 0
+
+Class QStyleOptionTabWidgetFrame
+ size=136 align=8
+ base size=132 base align=8
+QStyleOptionTabWidgetFrame (0x0x7f1d1a35e820) 0
+ QStyleOption (0x0x7f1d1a477480) 0
+
+Class QStyleOptionTabBarBase
+ size=104 align=8
+ base size=101 base align=8
+QStyleOptionTabBarBase (0x0x7f1d1a35e888) 0
+ QStyleOption (0x0x7f1d1a4776c0) 0
+
+Class QStyleOptionHeader
+ size=120 align=8
+ base size=116 base align=8
+QStyleOptionHeader (0x0x7f1d1a35e8f0) 0
+ QStyleOption (0x0x7f1d1a477960) 0
+
+Class QStyleOptionButton
+ size=96 align=8
+ base size=96 base align=8
+QStyleOptionButton (0x0x7f1d1a35e958) 0
+ QStyleOption (0x0x7f1d1a477ba0) 0
+
+Class QStyleOptionTab
+ size=136 align=8
+ base size=136 base align=8
+QStyleOptionTab (0x0x7f1d1a35ea90) 0
+ QStyleOption (0x0x7f1d1a4a74e0) 0
+
+Class QStyleOptionToolBar
+ size=88 align=8
+ base size=88 base align=8
+QStyleOptionToolBar (0x0x7f1d1a35ec98) 0
+ QStyleOption (0x0x7f1d1a4a7f60) 0
+
+Class QStyleOptionProgressBar
+ size=104 align=8
+ base size=102 base align=8
+QStyleOptionProgressBar (0x0x7f1d1a35edd0) 0
+ QStyleOption (0x0x7f1d1a0dc8a0) 0
+
+Class QStyleOptionMenuItem
+ size=136 align=8
+ base size=136 base align=8
+QStyleOptionMenuItem (0x0x7f1d1a35ee38) 0
+ QStyleOption (0x0x7f1d1a0dcae0) 0
+
+Class QStyleOptionDockWidget
+ size=80 align=8
+ base size=76 base align=8
+QStyleOptionDockWidget (0x0x7f1d1a35eea0) 0
+ QStyleOption (0x0x7f1d1a0dcd20) 0
+
+Class QStyleOptionViewItem
+ size=192 align=8
+ base size=192 base align=8
+QStyleOptionViewItem (0x0x7f1d1a35ef70) 0
+ QStyleOption (0x0x7f1d1a0dcf60) 0
+
+Class QStyleOptionToolBox
+ size=88 align=8
+ base size=88 base align=8
+QStyleOptionToolBox (0x0x7f1d1a10f0d0) 0
+ QStyleOption (0x0x7f1d1a10e8a0) 0
+
+Class QStyleOptionRubberBand
+ size=72 align=8
+ base size=69 base align=8
+QStyleOptionRubberBand (0x0x7f1d1a10f138) 0
+ QStyleOption (0x0x7f1d1a10eae0) 0
+
+Class QStyleOptionComplex
+ size=72 align=8
+ base size=72 base align=8
+QStyleOptionComplex (0x0x7f1d1a10f1a0) 0
+ QStyleOption (0x0x7f1d1a10ed20) 0
+
+Class QStyleOptionSlider
+ size=128 align=8
+ base size=121 base align=8
+QStyleOptionSlider (0x0x7f1d1a10f208) 0
+ QStyleOptionComplex (0x0x7f1d1a10f270) 0
+ QStyleOption (0x0x7f1d1a10ef60) 0
+
+Class QStyleOptionSpinBox
+ size=88 align=8
+ base size=81 base align=8
+QStyleOptionSpinBox (0x0x7f1d1a10f2d8) 0
+ QStyleOptionComplex (0x0x7f1d1a10f340) 0
+ QStyleOption (0x0x7f1d1a142360) 0
+
+Class QStyleOptionToolButton
+ size=136 align=8
+ base size=136 base align=8
+QStyleOptionToolButton (0x0x7f1d1a10f3a8) 0
+ QStyleOptionComplex (0x0x7f1d1a10f410) 0
+ QStyleOption (0x0x7f1d1a1425a0) 0
+
+Class QStyleOptionComboBox
+ size=120 align=8
+ base size=120 base align=8
+QStyleOptionComboBox (0x0x7f1d1a10f548) 0
+ QStyleOptionComplex (0x0x7f1d1a10f5b0) 0
+ QStyleOption (0x0x7f1d1a142ea0) 0
+
+Class QStyleOptionTitleBar
+ size=96 align=8
+ base size=96 base align=8
+QStyleOptionTitleBar (0x0x7f1d1a10f618) 0
+ QStyleOptionComplex (0x0x7f1d1a10f680) 0
+ QStyleOption (0x0x7f1d1a16c120) 0
+
+Class QStyleOptionGroupBox
+ size=120 align=8
+ base size=116 base align=8
+QStyleOptionGroupBox (0x0x7f1d1a10f6e8) 0
+ QStyleOptionComplex (0x0x7f1d1a10f750) 0
+ QStyleOption (0x0x7f1d1a16c3c0) 0
+
+Class QStyleOptionSizeGrip
+ size=80 align=8
+ base size=76 base align=8
+QStyleOptionSizeGrip (0x0x7f1d1a10f7b8) 0
+ QStyleOptionComplex (0x0x7f1d1a10f820) 0
+ QStyleOption (0x0x7f1d1a16c600) 0
+
+Class QStyleOptionGraphicsItem
+ size=152 align=8
+ base size=152 base align=8
+QStyleOptionGraphicsItem (0x0x7f1d1a10f888) 0
+ QStyleOption (0x0x7f1d1a16c840) 0
+
+Class QStyleHintReturn
+ size=8 align=4
+ base size=8 base align=4
+QStyleHintReturn (0x0x7f1d1a18b000) 0
+
+Class QStyleHintReturnMask
+ size=16 align=8
+ base size=16 base align=8
+QStyleHintReturnMask (0x0x7f1d1a10fe38) 0
+ QStyleHintReturn (0x0x7f1d1a18b060) 0
+
+Class QStyleHintReturnVariant
+ size=24 align=8
+ base size=24 base align=8
+QStyleHintReturnVariant (0x0x7f1d1a10fea0) 0
+ QStyleHintReturn (0x0x7f1d1a18b0c0) 0
+
+Class QAbstractItemDelegate::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractItemDelegate::QPrivateSignal (0x0x7f1d1a18b6c0) 0 empty
+
+Vtable for QAbstractItemDelegate
+QAbstractItemDelegate::_ZTV21QAbstractItemDelegate: 24 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QAbstractItemDelegate)
+16 (int (*)(...))QAbstractItemDelegate::metaObject
+24 (int (*)(...))QAbstractItemDelegate::qt_metacast
+32 (int (*)(...))QAbstractItemDelegate::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractItemDelegate::createEditor
+136 (int (*)(...))QAbstractItemDelegate::destroyEditor
+144 (int (*)(...))QAbstractItemDelegate::setEditorData
+152 (int (*)(...))QAbstractItemDelegate::setModelData
+160 (int (*)(...))QAbstractItemDelegate::updateEditorGeometry
+168 (int (*)(...))QAbstractItemDelegate::editorEvent
+176 (int (*)(...))QAbstractItemDelegate::helpEvent
+184 (int (*)(...))QAbstractItemDelegate::paintingRoles
+
+Class QAbstractItemDelegate
+ size=16 align=8
+ base size=16 base align=8
+QAbstractItemDelegate (0x0x7f1d1a198410) 0
+ vptr=((& QAbstractItemDelegate::_ZTV21QAbstractItemDelegate) + 16)
+ QObject (0x0x7f1d1a18b660) 0
+ primary-for QAbstractItemDelegate (0x0x7f1d1a198410)
+
+Class QAbstractScrollArea::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractScrollArea::QPrivateSignal (0x0x7f1d1a18b9c0) 0 empty
+
+Vtable for QAbstractScrollArea
+QAbstractScrollArea::_ZTV19QAbstractScrollArea: 68 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractScrollArea)
+16 (int (*)(...))QAbstractScrollArea::metaObject
+24 (int (*)(...))QAbstractScrollArea::qt_metacast
+32 (int (*)(...))QAbstractScrollArea::qt_metacall
+40 (int (*)(...))QAbstractScrollArea::~QAbstractScrollArea
+48 (int (*)(...))QAbstractScrollArea::~QAbstractScrollArea
+56 (int (*)(...))QAbstractScrollArea::event
+64 (int (*)(...))QAbstractScrollArea::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractScrollArea::mousePressEvent
+176 (int (*)(...))QAbstractScrollArea::mouseReleaseEvent
+184 (int (*)(...))QAbstractScrollArea::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractScrollArea::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QAbstractScrollArea::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QAbstractScrollArea::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractScrollArea::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractScrollArea::dragEnterEvent
+320 (int (*)(...))QAbstractScrollArea::dragMoveEvent
+328 (int (*)(...))QAbstractScrollArea::dragLeaveEvent
+336 (int (*)(...))QAbstractScrollArea::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractScrollArea::viewportEvent
+448 (int (*)(...))QAbstractScrollArea::scrollContentsBy
+456 (int (*)(...))QAbstractScrollArea::viewportSizeHint
+464 (int (*)(...))-16
+472 (int (*)(...))(& _ZTI19QAbstractScrollArea)
+480 (int (*)(...))QAbstractScrollArea::_ZThn16_N19QAbstractScrollAreaD1Ev
+488 (int (*)(...))QAbstractScrollArea::_ZThn16_N19QAbstractScrollAreaD0Ev
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QAbstractScrollArea
+ size=48 align=8
+ base size=48 base align=8
+QAbstractScrollArea (0x0x7f1d1a198478) 0
+ vptr=((& QAbstractScrollArea::_ZTV19QAbstractScrollArea) + 16)
+ QFrame (0x0x7f1d1a1984e0) 0
+ primary-for QAbstractScrollArea (0x0x7f1d1a198478)
+ QWidget (0x0x7f1d1a18cc40) 0
+ primary-for QFrame (0x0x7f1d1a1984e0)
+ QObject (0x0x7f1d1a18b900) 0
+ primary-for QWidget (0x0x7f1d1a18cc40)
+ QPaintDevice (0x0x7f1d1a18b960) 16
+ vptr=((& QAbstractScrollArea::_ZTV19QAbstractScrollArea) + 480)
+
+Class QAbstractItemView::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractItemView::QPrivateSignal (0x0x7f1d1a18bd20) 0 empty
+
+Vtable for QAbstractItemView
+QAbstractItemView::_ZTV17QAbstractItemView: 106 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAbstractItemView)
+16 (int (*)(...))QAbstractItemView::metaObject
+24 (int (*)(...))QAbstractItemView::qt_metacast
+32 (int (*)(...))QAbstractItemView::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QAbstractItemView::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QAbstractItemView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractItemView::mousePressEvent
+176 (int (*)(...))QAbstractItemView::mouseReleaseEvent
+184 (int (*)(...))QAbstractItemView::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractItemView::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QAbstractItemView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QAbstractScrollArea::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractItemView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QAbstractItemView::dragMoveEvent
+328 (int (*)(...))QAbstractItemView::dragLeaveEvent
+336 (int (*)(...))QAbstractItemView::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractItemView::viewportEvent
+448 (int (*)(...))QAbstractScrollArea::scrollContentsBy
+456 (int (*)(...))QAbstractItemView::viewportSizeHint
+464 (int (*)(...))QAbstractItemView::setModel
+472 (int (*)(...))QAbstractItemView::setSelectionModel
+480 (int (*)(...))QAbstractItemView::keyboardSearch
+488 (int (*)(...))__cxa_pure_virtual
+496 (int (*)(...))__cxa_pure_virtual
+504 (int (*)(...))__cxa_pure_virtual
+512 (int (*)(...))QAbstractItemView::sizeHintForRow
+520 (int (*)(...))QAbstractItemView::sizeHintForColumn
+528 (int (*)(...))QAbstractItemView::reset
+536 (int (*)(...))QAbstractItemView::setRootIndex
+544 (int (*)(...))QAbstractItemView::doItemsLayout
+552 (int (*)(...))QAbstractItemView::selectAll
+560 (int (*)(...))QAbstractItemView::dataChanged
+568 (int (*)(...))QAbstractItemView::rowsInserted
+576 (int (*)(...))QAbstractItemView::rowsAboutToBeRemoved
+584 (int (*)(...))QAbstractItemView::selectionChanged
+592 (int (*)(...))QAbstractItemView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QAbstractItemView::updateGeometries
+624 (int (*)(...))QAbstractItemView::verticalScrollbarAction
+632 (int (*)(...))QAbstractItemView::horizontalScrollbarAction
+640 (int (*)(...))QAbstractItemView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))__cxa_pure_virtual
+688 (int (*)(...))__cxa_pure_virtual
+696 (int (*)(...))__cxa_pure_virtual
+704 (int (*)(...))__cxa_pure_virtual
+712 (int (*)(...))__cxa_pure_virtual
+720 (int (*)(...))__cxa_pure_virtual
+728 (int (*)(...))QAbstractItemView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QAbstractItemView::startDrag
+760 (int (*)(...))QAbstractItemView::viewOptions
+768 (int (*)(...))-16
+776 (int (*)(...))(& _ZTI17QAbstractItemView)
+784 0
+792 0
+800 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+808 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+816 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+824 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+832 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+840 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QAbstractItemView
+ size=48 align=8
+ base size=48 base align=8
+QAbstractItemView (0x0x7f1d1a198548) 0
+ vptr=((& QAbstractItemView::_ZTV17QAbstractItemView) + 16)
+ QAbstractScrollArea (0x0x7f1d1a1985b0) 0
+ primary-for QAbstractItemView (0x0x7f1d1a198548)
+ QFrame (0x0x7f1d1a198618) 0
+ primary-for QAbstractScrollArea (0x0x7f1d1a1985b0)
+ QWidget (0x0x7f1d1a18ce70) 0
+ primary-for QFrame (0x0x7f1d1a198618)
+ QObject (0x0x7f1d1a18bc60) 0
+ primary-for QWidget (0x0x7f1d1a18ce70)
+ QPaintDevice (0x0x7f1d1a18bcc0) 16
+ vptr=((& QAbstractItemView::_ZTV17QAbstractItemView) + 784)
+
+Vtable for QAccessibleWidget
+QAccessibleWidget::_ZTV17QAccessibleWidget: 35 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAccessibleWidget)
+16 (int (*)(...))QAccessibleWidget::~QAccessibleWidget
+24 (int (*)(...))QAccessibleWidget::~QAccessibleWidget
+32 (int (*)(...))QAccessibleWidget::isValid
+40 (int (*)(...))QAccessibleObject::object
+48 (int (*)(...))QAccessibleWidget::window
+56 (int (*)(...))QAccessibleWidget::relations
+64 (int (*)(...))QAccessibleWidget::focusChild
+72 (int (*)(...))QAccessibleObject::childAt
+80 (int (*)(...))QAccessibleWidget::parent
+88 (int (*)(...))QAccessibleWidget::child
+96 (int (*)(...))QAccessibleWidget::childCount
+104 (int (*)(...))QAccessibleWidget::indexOfChild
+112 (int (*)(...))QAccessibleWidget::text
+120 (int (*)(...))QAccessibleObject::setText
+128 (int (*)(...))QAccessibleWidget::rect
+136 (int (*)(...))QAccessibleWidget::role
+144 (int (*)(...))QAccessibleWidget::state
+152 (int (*)(...))QAccessibleWidget::foregroundColor
+160 (int (*)(...))QAccessibleWidget::backgroundColor
+168 (int (*)(...))QAccessibleInterface::virtual_hook
+176 (int (*)(...))QAccessibleWidget::interface_cast
+184 (int (*)(...))QAccessibleWidget::actionNames
+192 (int (*)(...))QAccessibleWidget::doAction
+200 (int (*)(...))QAccessibleWidget::keyBindingsForAction
+208 (int (*)(...))-16
+216 (int (*)(...))(& _ZTI17QAccessibleWidget)
+224 (int (*)(...))QAccessibleWidget::_ZThn16_N17QAccessibleWidgetD1Ev
+232 (int (*)(...))QAccessibleWidget::_ZThn16_N17QAccessibleWidgetD0Ev
+240 (int (*)(...))QAccessibleWidget::_ZThn16_NK17QAccessibleWidget11actionNamesEv
+248 (int (*)(...))QAccessibleActionInterface::localizedActionName
+256 (int (*)(...))QAccessibleActionInterface::localizedActionDescription
+264 (int (*)(...))QAccessibleWidget::_ZThn16_N17QAccessibleWidget8doActionERK7QString
+272 (int (*)(...))QAccessibleWidget::_ZThn16_NK17QAccessibleWidget20keyBindingsForActionERK7QString
+
+Class QAccessibleWidget
+ size=32 align=8
+ base size=32 base align=8
+QAccessibleWidget (0x0x7f1d1a1dbc40) 0
+ vptr=((& QAccessibleWidget::_ZTV17QAccessibleWidget) + 16)
+ QAccessibleObject (0x0x7f1d1a198750) 0
+ primary-for QAccessibleWidget (0x0x7f1d1a1dbc40)
+ QAccessibleInterface (0x0x7f1d1a1e8a80) 0 nearly-empty
+ primary-for QAccessibleObject (0x0x7f1d1a198750)
+ QAccessibleActionInterface (0x0x7f1d1a1e8ae0) 16 nearly-empty
+ vptr=((& QAccessibleWidget::_ZTV17QAccessibleWidget) + 224)
+
+Class QAction::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAction::QPrivateSignal (0x0x7f1d1a1e8c00) 0 empty
+
+Vtable for QAction
+QAction::_ZTV7QAction: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QAction)
+16 (int (*)(...))QAction::metaObject
+24 (int (*)(...))QAction::qt_metacast
+32 (int (*)(...))QAction::qt_metacall
+40 (int (*)(...))QAction::~QAction
+48 (int (*)(...))QAction::~QAction
+56 (int (*)(...))QAction::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QAction
+ size=16 align=8
+ base size=16 base align=8
+QAction (0x0x7f1d1a1987b8) 0
+ vptr=((& QAction::_ZTV7QAction) + 16)
+ QObject (0x0x7f1d1a1e8ba0) 0
+ primary-for QAction (0x0x7f1d1a1987b8)
+
+Class QActionGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QActionGroup::QPrivateSignal (0x0x7f1d1a222120) 0 empty
+
+Vtable for QActionGroup
+QActionGroup::_ZTV12QActionGroup: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QActionGroup)
+16 (int (*)(...))QActionGroup::metaObject
+24 (int (*)(...))QActionGroup::qt_metacast
+32 (int (*)(...))QActionGroup::qt_metacall
+40 (int (*)(...))QActionGroup::~QActionGroup
+48 (int (*)(...))QActionGroup::~QActionGroup
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QActionGroup
+ size=16 align=8
+ base size=16 base align=8
+QActionGroup (0x0x7f1d1a198820) 0
+ vptr=((& QActionGroup::_ZTV12QActionGroup) + 16)
+ QObject (0x0x7f1d1a2220c0) 0
+ primary-for QActionGroup (0x0x7f1d1a198820)
+
+Class QApplication::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QApplication::QPrivateSignal (0x0x7f1d1a222480) 0 empty
+
+Vtable for QApplication
+QApplication::_ZTV12QApplication: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QApplication)
+16 (int (*)(...))QApplication::metaObject
+24 (int (*)(...))QApplication::qt_metacast
+32 (int (*)(...))QApplication::qt_metacall
+40 (int (*)(...))QApplication::~QApplication
+48 (int (*)(...))QApplication::~QApplication
+56 (int (*)(...))QApplication::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QApplication::notify
+120 (int (*)(...))QApplication::compressEvent
+
+Class QApplication
+ size=16 align=8
+ base size=16 base align=8
+QApplication (0x0x7f1d1a198888) 0
+ vptr=((& QApplication::_ZTV12QApplication) + 16)
+ QGuiApplication (0x0x7f1d1a1988f0) 0
+ primary-for QApplication (0x0x7f1d1a198888)
+ QCoreApplication (0x0x7f1d1a198958) 0
+ primary-for QGuiApplication (0x0x7f1d1a1988f0)
+ QObject (0x0x7f1d1a222420) 0
+ primary-for QCoreApplication (0x0x7f1d1a198958)
+
+Vtable for QLayoutItem
+QLayoutItem::_ZTV11QLayoutItem: 19 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QLayoutItem)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))__cxa_pure_virtual
+72 (int (*)(...))__cxa_pure_virtual
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))QLayoutItem::hasHeightForWidth
+96 (int (*)(...))QLayoutItem::heightForWidth
+104 (int (*)(...))QLayoutItem::minimumHeightForWidth
+112 (int (*)(...))QLayoutItem::invalidate
+120 (int (*)(...))QLayoutItem::widget
+128 (int (*)(...))QLayoutItem::layout
+136 (int (*)(...))QLayoutItem::spacerItem
+144 (int (*)(...))QLayoutItem::controlTypes
+
+Class QLayoutItem
+ size=16 align=8
+ base size=12 base align=8
+QLayoutItem (0x0x7f1d1a222720) 0
+ vptr=((& QLayoutItem::_ZTV11QLayoutItem) + 16)
+
+Vtable for QSpacerItem
+QSpacerItem::_ZTV11QSpacerItem: 19 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QSpacerItem)
+16 (int (*)(...))QSpacerItem::~QSpacerItem
+24 (int (*)(...))QSpacerItem::~QSpacerItem
+32 (int (*)(...))QSpacerItem::sizeHint
+40 (int (*)(...))QSpacerItem::minimumSize
+48 (int (*)(...))QSpacerItem::maximumSize
+56 (int (*)(...))QSpacerItem::expandingDirections
+64 (int (*)(...))QSpacerItem::setGeometry
+72 (int (*)(...))QSpacerItem::geometry
+80 (int (*)(...))QSpacerItem::isEmpty
+88 (int (*)(...))QLayoutItem::hasHeightForWidth
+96 (int (*)(...))QLayoutItem::heightForWidth
+104 (int (*)(...))QLayoutItem::minimumHeightForWidth
+112 (int (*)(...))QLayoutItem::invalidate
+120 (int (*)(...))QLayoutItem::widget
+128 (int (*)(...))QLayoutItem::layout
+136 (int (*)(...))QSpacerItem::spacerItem
+144 (int (*)(...))QLayoutItem::controlTypes
+
+Class QSpacerItem
+ size=40 align=8
+ base size=40 base align=8
+QSpacerItem (0x0x7f1d1a1989c0) 0
+ vptr=((& QSpacerItem::_ZTV11QSpacerItem) + 16)
+ QLayoutItem (0x0x7f1d1a222b40) 0
+ primary-for QSpacerItem (0x0x7f1d1a1989c0)
+
+Vtable for QWidgetItem
+QWidgetItem::_ZTV11QWidgetItem: 19 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QWidgetItem)
+16 (int (*)(...))QWidgetItem::~QWidgetItem
+24 (int (*)(...))QWidgetItem::~QWidgetItem
+32 (int (*)(...))QWidgetItem::sizeHint
+40 (int (*)(...))QWidgetItem::minimumSize
+48 (int (*)(...))QWidgetItem::maximumSize
+56 (int (*)(...))QWidgetItem::expandingDirections
+64 (int (*)(...))QWidgetItem::setGeometry
+72 (int (*)(...))QWidgetItem::geometry
+80 (int (*)(...))QWidgetItem::isEmpty
+88 (int (*)(...))QWidgetItem::hasHeightForWidth
+96 (int (*)(...))QWidgetItem::heightForWidth
+104 (int (*)(...))QLayoutItem::minimumHeightForWidth
+112 (int (*)(...))QLayoutItem::invalidate
+120 (int (*)(...))QWidgetItem::widget
+128 (int (*)(...))QLayoutItem::layout
+136 (int (*)(...))QLayoutItem::spacerItem
+144 (int (*)(...))QWidgetItem::controlTypes
+
+Class QWidgetItem
+ size=24 align=8
+ base size=24 base align=8
+QWidgetItem (0x0x7f1d1a198a28) 0
+ vptr=((& QWidgetItem::_ZTV11QWidgetItem) + 16)
+ QLayoutItem (0x0x7f1d1a222d80) 0
+ primary-for QWidgetItem (0x0x7f1d1a198a28)
+
+Vtable for QWidgetItemV2
+QWidgetItemV2::_ZTV13QWidgetItemV2: 19 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QWidgetItemV2)
+16 (int (*)(...))QWidgetItemV2::~QWidgetItemV2
+24 (int (*)(...))QWidgetItemV2::~QWidgetItemV2
+32 (int (*)(...))QWidgetItemV2::sizeHint
+40 (int (*)(...))QWidgetItemV2::minimumSize
+48 (int (*)(...))QWidgetItemV2::maximumSize
+56 (int (*)(...))QWidgetItem::expandingDirections
+64 (int (*)(...))QWidgetItem::setGeometry
+72 (int (*)(...))QWidgetItem::geometry
+80 (int (*)(...))QWidgetItem::isEmpty
+88 (int (*)(...))QWidgetItem::hasHeightForWidth
+96 (int (*)(...))QWidgetItemV2::heightForWidth
+104 (int (*)(...))QLayoutItem::minimumHeightForWidth
+112 (int (*)(...))QLayoutItem::invalidate
+120 (int (*)(...))QWidgetItem::widget
+128 (int (*)(...))QLayoutItem::layout
+136 (int (*)(...))QLayoutItem::spacerItem
+144 (int (*)(...))QWidgetItem::controlTypes
+
+Class QWidgetItemV2
+ size=88 align=8
+ base size=88 base align=8
+QWidgetItemV2 (0x0x7f1d1a198a90) 0
+ vptr=((& QWidgetItemV2::_ZTV13QWidgetItemV2) + 16)
+ QWidgetItem (0x0x7f1d1a198af8) 0
+ primary-for QWidgetItemV2 (0x0x7f1d1a198a90)
+ QLayoutItem (0x0x7f1d1a222f60) 0
+ primary-for QWidgetItem (0x0x7f1d1a198af8)
+
+Class QLayout::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLayout::QPrivateSignal (0x0x7f1d1a25a120) 0 empty
+
+Vtable for QLayout
+QLayout::_ZTV7QLayout: 47 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QLayout)
+16 (int (*)(...))QLayout::metaObject
+24 (int (*)(...))QLayout::qt_metacast
+32 (int (*)(...))QLayout::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QLayout::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QLayout::invalidate
+120 (int (*)(...))QLayout::geometry
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))QLayout::expandingDirections
+144 (int (*)(...))QLayout::minimumSize
+152 (int (*)(...))QLayout::maximumSize
+160 (int (*)(...))QLayout::setGeometry
+168 (int (*)(...))__cxa_pure_virtual
+176 (int (*)(...))__cxa_pure_virtual
+184 (int (*)(...))QLayout::indexOf
+192 (int (*)(...))__cxa_pure_virtual
+200 (int (*)(...))QLayout::isEmpty
+208 (int (*)(...))QLayout::controlTypes
+216 (int (*)(...))QLayout::layout
+224 (int (*)(...))-16
+232 (int (*)(...))(& _ZTI7QLayout)
+240 0
+248 0
+256 (int (*)(...))__cxa_pure_virtual
+264 (int (*)(...))QLayout::_ZThn16_NK7QLayout11minimumSizeEv
+272 (int (*)(...))QLayout::_ZThn16_NK7QLayout11maximumSizeEv
+280 (int (*)(...))QLayout::_ZThn16_NK7QLayout19expandingDirectionsEv
+288 (int (*)(...))QLayout::_ZThn16_N7QLayout11setGeometryERK5QRect
+296 (int (*)(...))QLayout::_ZThn16_NK7QLayout8geometryEv
+304 (int (*)(...))QLayout::_ZThn16_NK7QLayout7isEmptyEv
+312 (int (*)(...))QLayoutItem::hasHeightForWidth
+320 (int (*)(...))QLayoutItem::heightForWidth
+328 (int (*)(...))QLayoutItem::minimumHeightForWidth
+336 (int (*)(...))QLayout::_ZThn16_N7QLayout10invalidateEv
+344 (int (*)(...))QLayoutItem::widget
+352 (int (*)(...))QLayout::_ZThn16_N7QLayout6layoutEv
+360 (int (*)(...))QLayoutItem::spacerItem
+368 (int (*)(...))QLayout::_ZThn16_NK7QLayout12controlTypesEv
+
+Class QLayout
+ size=32 align=8
+ base size=28 base align=8
+QLayout (0x0x7f1d1a2580e0) 0
+ vptr=((& QLayout::_ZTV7QLayout) + 16)
+ QObject (0x0x7f1d1a25a060) 0
+ primary-for QLayout (0x0x7f1d1a2580e0)
+ QLayoutItem (0x0x7f1d1a25a0c0) 16
+ vptr=((& QLayout::_ZTV7QLayout) + 240)
+
+Class QGridLayout::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGridLayout::QPrivateSignal (0x0x7f1d1a25a660) 0 empty
+
+Vtable for QGridLayout
+QGridLayout::_ZTV11QGridLayout: 51 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QGridLayout)
+16 (int (*)(...))QGridLayout::metaObject
+24 (int (*)(...))QGridLayout::qt_metacast
+32 (int (*)(...))QGridLayout::qt_metacall
+40 (int (*)(...))QGridLayout::~QGridLayout
+48 (int (*)(...))QGridLayout::~QGridLayout
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QLayout::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGridLayout::invalidate
+120 (int (*)(...))QLayout::geometry
+128 (int (*)(...))QGridLayout::addItem
+136 (int (*)(...))QGridLayout::expandingDirections
+144 (int (*)(...))QGridLayout::minimumSize
+152 (int (*)(...))QGridLayout::maximumSize
+160 (int (*)(...))QGridLayout::setGeometry
+168 (int (*)(...))QGridLayout::itemAt
+176 (int (*)(...))QGridLayout::takeAt
+184 (int (*)(...))QLayout::indexOf
+192 (int (*)(...))QGridLayout::count
+200 (int (*)(...))QLayout::isEmpty
+208 (int (*)(...))QLayout::controlTypes
+216 (int (*)(...))QLayout::layout
+224 (int (*)(...))QGridLayout::sizeHint
+232 (int (*)(...))QGridLayout::hasHeightForWidth
+240 (int (*)(...))QGridLayout::heightForWidth
+248 (int (*)(...))QGridLayout::minimumHeightForWidth
+256 (int (*)(...))-16
+264 (int (*)(...))(& _ZTI11QGridLayout)
+272 (int (*)(...))QGridLayout::_ZThn16_N11QGridLayoutD1Ev
+280 (int (*)(...))QGridLayout::_ZThn16_N11QGridLayoutD0Ev
+288 (int (*)(...))QGridLayout::_ZThn16_NK11QGridLayout8sizeHintEv
+296 (int (*)(...))QGridLayout::_ZThn16_NK11QGridLayout11minimumSizeEv
+304 (int (*)(...))QGridLayout::_ZThn16_NK11QGridLayout11maximumSizeEv
+312 (int (*)(...))QGridLayout::_ZThn16_NK11QGridLayout19expandingDirectionsEv
+320 (int (*)(...))QGridLayout::_ZThn16_N11QGridLayout11setGeometryERK5QRect
+328 (int (*)(...))QLayout::_ZThn16_NK7QLayout8geometryEv
+336 (int (*)(...))QLayout::_ZThn16_NK7QLayout7isEmptyEv
+344 (int (*)(...))QGridLayout::_ZThn16_NK11QGridLayout17hasHeightForWidthEv
+352 (int (*)(...))QGridLayout::_ZThn16_NK11QGridLayout14heightForWidthEi
+360 (int (*)(...))QGridLayout::_ZThn16_NK11QGridLayout21minimumHeightForWidthEi
+368 (int (*)(...))QGridLayout::_ZThn16_N11QGridLayout10invalidateEv
+376 (int (*)(...))QLayoutItem::widget
+384 (int (*)(...))QLayout::_ZThn16_N7QLayout6layoutEv
+392 (int (*)(...))QLayoutItem::spacerItem
+400 (int (*)(...))QLayout::_ZThn16_NK7QLayout12controlTypesEv
+
+Class QGridLayout
+ size=32 align=8
+ base size=28 base align=8
+QGridLayout (0x0x7f1d1a198b60) 0
+ vptr=((& QGridLayout::_ZTV11QGridLayout) + 16)
+ QLayout (0x0x7f1d1a2587e0) 0
+ primary-for QGridLayout (0x0x7f1d1a198b60)
+ QObject (0x0x7f1d1a25a5a0) 0
+ primary-for QLayout (0x0x7f1d1a2587e0)
+ QLayoutItem (0x0x7f1d1a25a600) 16
+ vptr=((& QGridLayout::_ZTV11QGridLayout) + 272)
+
+Class QBoxLayout::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QBoxLayout::QPrivateSignal (0x0x7f1d1a25a960) 0 empty
+
+Vtable for QBoxLayout
+QBoxLayout::_ZTV10QBoxLayout: 51 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QBoxLayout)
+16 (int (*)(...))QBoxLayout::metaObject
+24 (int (*)(...))QBoxLayout::qt_metacast
+32 (int (*)(...))QBoxLayout::qt_metacall
+40 (int (*)(...))QBoxLayout::~QBoxLayout
+48 (int (*)(...))QBoxLayout::~QBoxLayout
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QLayout::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QBoxLayout::invalidate
+120 (int (*)(...))QLayout::geometry
+128 (int (*)(...))QBoxLayout::addItem
+136 (int (*)(...))QBoxLayout::expandingDirections
+144 (int (*)(...))QBoxLayout::minimumSize
+152 (int (*)(...))QBoxLayout::maximumSize
+160 (int (*)(...))QBoxLayout::setGeometry
+168 (int (*)(...))QBoxLayout::itemAt
+176 (int (*)(...))QBoxLayout::takeAt
+184 (int (*)(...))QLayout::indexOf
+192 (int (*)(...))QBoxLayout::count
+200 (int (*)(...))QLayout::isEmpty
+208 (int (*)(...))QLayout::controlTypes
+216 (int (*)(...))QLayout::layout
+224 (int (*)(...))QBoxLayout::sizeHint
+232 (int (*)(...))QBoxLayout::hasHeightForWidth
+240 (int (*)(...))QBoxLayout::heightForWidth
+248 (int (*)(...))QBoxLayout::minimumHeightForWidth
+256 (int (*)(...))-16
+264 (int (*)(...))(& _ZTI10QBoxLayout)
+272 (int (*)(...))QBoxLayout::_ZThn16_N10QBoxLayoutD1Ev
+280 (int (*)(...))QBoxLayout::_ZThn16_N10QBoxLayoutD0Ev
+288 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout8sizeHintEv
+296 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout11minimumSizeEv
+304 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout11maximumSizeEv
+312 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout19expandingDirectionsEv
+320 (int (*)(...))QBoxLayout::_ZThn16_N10QBoxLayout11setGeometryERK5QRect
+328 (int (*)(...))QLayout::_ZThn16_NK7QLayout8geometryEv
+336 (int (*)(...))QLayout::_ZThn16_NK7QLayout7isEmptyEv
+344 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout17hasHeightForWidthEv
+352 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout14heightForWidthEi
+360 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout21minimumHeightForWidthEi
+368 (int (*)(...))QBoxLayout::_ZThn16_N10QBoxLayout10invalidateEv
+376 (int (*)(...))QLayoutItem::widget
+384 (int (*)(...))QLayout::_ZThn16_N7QLayout6layoutEv
+392 (int (*)(...))QLayoutItem::spacerItem
+400 (int (*)(...))QLayout::_ZThn16_NK7QLayout12controlTypesEv
+
+Class QBoxLayout
+ size=32 align=8
+ base size=28 base align=8
+QBoxLayout (0x0x7f1d1a198bc8) 0
+ vptr=((& QBoxLayout::_ZTV10QBoxLayout) + 16)
+ QLayout (0x0x7f1d1a258b60) 0
+ primary-for QBoxLayout (0x0x7f1d1a198bc8)
+ QObject (0x0x7f1d1a25a8a0) 0
+ primary-for QLayout (0x0x7f1d1a258b60)
+ QLayoutItem (0x0x7f1d1a25a900) 16
+ vptr=((& QBoxLayout::_ZTV10QBoxLayout) + 272)
+
+Class QHBoxLayout::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QHBoxLayout::QPrivateSignal (0x0x7f1d1a25ac00) 0 empty
+
+Vtable for QHBoxLayout
+QHBoxLayout::_ZTV11QHBoxLayout: 51 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QHBoxLayout)
+16 (int (*)(...))QHBoxLayout::metaObject
+24 (int (*)(...))QHBoxLayout::qt_metacast
+32 (int (*)(...))QHBoxLayout::qt_metacall
+40 (int (*)(...))QHBoxLayout::~QHBoxLayout
+48 (int (*)(...))QHBoxLayout::~QHBoxLayout
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QLayout::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QBoxLayout::invalidate
+120 (int (*)(...))QLayout::geometry
+128 (int (*)(...))QBoxLayout::addItem
+136 (int (*)(...))QBoxLayout::expandingDirections
+144 (int (*)(...))QBoxLayout::minimumSize
+152 (int (*)(...))QBoxLayout::maximumSize
+160 (int (*)(...))QBoxLayout::setGeometry
+168 (int (*)(...))QBoxLayout::itemAt
+176 (int (*)(...))QBoxLayout::takeAt
+184 (int (*)(...))QLayout::indexOf
+192 (int (*)(...))QBoxLayout::count
+200 (int (*)(...))QLayout::isEmpty
+208 (int (*)(...))QLayout::controlTypes
+216 (int (*)(...))QLayout::layout
+224 (int (*)(...))QBoxLayout::sizeHint
+232 (int (*)(...))QBoxLayout::hasHeightForWidth
+240 (int (*)(...))QBoxLayout::heightForWidth
+248 (int (*)(...))QBoxLayout::minimumHeightForWidth
+256 (int (*)(...))-16
+264 (int (*)(...))(& _ZTI11QHBoxLayout)
+272 (int (*)(...))QHBoxLayout::_ZThn16_N11QHBoxLayoutD1Ev
+280 (int (*)(...))QHBoxLayout::_ZThn16_N11QHBoxLayoutD0Ev
+288 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout8sizeHintEv
+296 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout11minimumSizeEv
+304 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout11maximumSizeEv
+312 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout19expandingDirectionsEv
+320 (int (*)(...))QBoxLayout::_ZThn16_N10QBoxLayout11setGeometryERK5QRect
+328 (int (*)(...))QLayout::_ZThn16_NK7QLayout8geometryEv
+336 (int (*)(...))QLayout::_ZThn16_NK7QLayout7isEmptyEv
+344 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout17hasHeightForWidthEv
+352 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout14heightForWidthEi
+360 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout21minimumHeightForWidthEi
+368 (int (*)(...))QBoxLayout::_ZThn16_N10QBoxLayout10invalidateEv
+376 (int (*)(...))QLayoutItem::widget
+384 (int (*)(...))QLayout::_ZThn16_N7QLayout6layoutEv
+392 (int (*)(...))QLayoutItem::spacerItem
+400 (int (*)(...))QLayout::_ZThn16_NK7QLayout12controlTypesEv
+
+Class QHBoxLayout
+ size=32 align=8
+ base size=28 base align=8
+QHBoxLayout (0x0x7f1d1a198c98) 0
+ vptr=((& QHBoxLayout::_ZTV11QHBoxLayout) + 16)
+ QBoxLayout (0x0x7f1d1a198d00) 0
+ primary-for QHBoxLayout (0x0x7f1d1a198c98)
+ QLayout (0x0x7f1d1a293070) 0
+ primary-for QBoxLayout (0x0x7f1d1a198d00)
+ QObject (0x0x7f1d1a25ab40) 0
+ primary-for QLayout (0x0x7f1d1a293070)
+ QLayoutItem (0x0x7f1d1a25aba0) 16
+ vptr=((& QHBoxLayout::_ZTV11QHBoxLayout) + 272)
+
+Class QVBoxLayout::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QVBoxLayout::QPrivateSignal (0x0x7f1d1a25ade0) 0 empty
+
+Vtable for QVBoxLayout
+QVBoxLayout::_ZTV11QVBoxLayout: 51 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QVBoxLayout)
+16 (int (*)(...))QVBoxLayout::metaObject
+24 (int (*)(...))QVBoxLayout::qt_metacast
+32 (int (*)(...))QVBoxLayout::qt_metacall
+40 (int (*)(...))QVBoxLayout::~QVBoxLayout
+48 (int (*)(...))QVBoxLayout::~QVBoxLayout
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QLayout::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QBoxLayout::invalidate
+120 (int (*)(...))QLayout::geometry
+128 (int (*)(...))QBoxLayout::addItem
+136 (int (*)(...))QBoxLayout::expandingDirections
+144 (int (*)(...))QBoxLayout::minimumSize
+152 (int (*)(...))QBoxLayout::maximumSize
+160 (int (*)(...))QBoxLayout::setGeometry
+168 (int (*)(...))QBoxLayout::itemAt
+176 (int (*)(...))QBoxLayout::takeAt
+184 (int (*)(...))QLayout::indexOf
+192 (int (*)(...))QBoxLayout::count
+200 (int (*)(...))QLayout::isEmpty
+208 (int (*)(...))QLayout::controlTypes
+216 (int (*)(...))QLayout::layout
+224 (int (*)(...))QBoxLayout::sizeHint
+232 (int (*)(...))QBoxLayout::hasHeightForWidth
+240 (int (*)(...))QBoxLayout::heightForWidth
+248 (int (*)(...))QBoxLayout::minimumHeightForWidth
+256 (int (*)(...))-16
+264 (int (*)(...))(& _ZTI11QVBoxLayout)
+272 (int (*)(...))QVBoxLayout::_ZThn16_N11QVBoxLayoutD1Ev
+280 (int (*)(...))QVBoxLayout::_ZThn16_N11QVBoxLayoutD0Ev
+288 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout8sizeHintEv
+296 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout11minimumSizeEv
+304 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout11maximumSizeEv
+312 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout19expandingDirectionsEv
+320 (int (*)(...))QBoxLayout::_ZThn16_N10QBoxLayout11setGeometryERK5QRect
+328 (int (*)(...))QLayout::_ZThn16_NK7QLayout8geometryEv
+336 (int (*)(...))QLayout::_ZThn16_NK7QLayout7isEmptyEv
+344 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout17hasHeightForWidthEv
+352 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout14heightForWidthEi
+360 (int (*)(...))QBoxLayout::_ZThn16_NK10QBoxLayout21minimumHeightForWidthEi
+368 (int (*)(...))QBoxLayout::_ZThn16_N10QBoxLayout10invalidateEv
+376 (int (*)(...))QLayoutItem::widget
+384 (int (*)(...))QLayout::_ZThn16_N7QLayout6layoutEv
+392 (int (*)(...))QLayoutItem::spacerItem
+400 (int (*)(...))QLayout::_ZThn16_NK7QLayout12controlTypesEv
+
+Class QVBoxLayout
+ size=32 align=8
+ base size=28 base align=8
+QVBoxLayout (0x0x7f1d1a198d68) 0
+ vptr=((& QVBoxLayout::_ZTV11QVBoxLayout) + 16)
+ QBoxLayout (0x0x7f1d1a198dd0) 0
+ primary-for QVBoxLayout (0x0x7f1d1a198d68)
+ QLayout (0x0x7f1d1a2931c0) 0
+ primary-for QBoxLayout (0x0x7f1d1a198dd0)
+ QObject (0x0x7f1d1a25ad20) 0
+ primary-for QLayout (0x0x7f1d1a2931c0)
+ QLayoutItem (0x0x7f1d1a25ad80) 16
+ vptr=((& QVBoxLayout::_ZTV11QVBoxLayout) + 272)
+
+Class QButtonGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QButtonGroup::QPrivateSignal (0x0x7f1d1a25af60) 0 empty
+
+Vtable for QButtonGroup
+QButtonGroup::_ZTV12QButtonGroup: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QButtonGroup)
+16 (int (*)(...))QButtonGroup::metaObject
+24 (int (*)(...))QButtonGroup::qt_metacast
+32 (int (*)(...))QButtonGroup::qt_metacall
+40 (int (*)(...))QButtonGroup::~QButtonGroup
+48 (int (*)(...))QButtonGroup::~QButtonGroup
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QButtonGroup
+ size=16 align=8
+ base size=16 base align=8
+QButtonGroup (0x0x7f1d1a198e38) 0
+ vptr=((& QButtonGroup::_ZTV12QButtonGroup) + 16)
+ QObject (0x0x7f1d1a25af00) 0
+ primary-for QButtonGroup (0x0x7f1d1a198e38)
+
+Class QCalendarWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QCalendarWidget::QPrivateSignal (0x0x7f1d19eae240) 0 empty
+
+Vtable for QCalendarWidget
+QCalendarWidget::_ZTV15QCalendarWidget: 65 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QCalendarWidget)
+16 (int (*)(...))QCalendarWidget::metaObject
+24 (int (*)(...))QCalendarWidget::qt_metacast
+32 (int (*)(...))QCalendarWidget::qt_metacall
+40 (int (*)(...))QCalendarWidget::~QCalendarWidget
+48 (int (*)(...))QCalendarWidget::~QCalendarWidget
+56 (int (*)(...))QCalendarWidget::event
+64 (int (*)(...))QCalendarWidget::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QCalendarWidget::sizeHint
+136 (int (*)(...))QCalendarWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QCalendarWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QCalendarWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QCalendarWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QCalendarWidget::paintCell
+440 (int (*)(...))-16
+448 (int (*)(...))(& _ZTI15QCalendarWidget)
+456 (int (*)(...))QCalendarWidget::_ZThn16_N15QCalendarWidgetD1Ev
+464 (int (*)(...))QCalendarWidget::_ZThn16_N15QCalendarWidgetD0Ev
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QCalendarWidget
+ size=48 align=8
+ base size=48 base align=8
+QCalendarWidget (0x0x7f1d1a198ea0) 0
+ vptr=((& QCalendarWidget::_ZTV15QCalendarWidget) + 16)
+ QWidget (0x0x7f1d1a2933f0) 0
+ primary-for QCalendarWidget (0x0x7f1d1a198ea0)
+ QObject (0x0x7f1d19eae180) 0
+ primary-for QWidget (0x0x7f1d1a2933f0)
+ QPaintDevice (0x0x7f1d19eae1e0) 16
+ vptr=((& QCalendarWidget::_ZTV15QCalendarWidget) + 456)
+
+Class QCheckBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QCheckBox::QPrivateSignal (0x0x7f1d19eae720) 0 empty
+
+Vtable for QCheckBox
+QCheckBox::_ZTV9QCheckBox: 67 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QCheckBox)
+16 (int (*)(...))QCheckBox::metaObject
+24 (int (*)(...))QCheckBox::qt_metacast
+32 (int (*)(...))QCheckBox::qt_metacall
+40 (int (*)(...))QCheckBox::~QCheckBox
+48 (int (*)(...))QCheckBox::~QCheckBox
+56 (int (*)(...))QCheckBox::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractButton::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QCheckBox::sizeHint
+136 (int (*)(...))QCheckBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractButton::mousePressEvent
+176 (int (*)(...))QAbstractButton::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QCheckBox::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QAbstractButton::keyPressEvent
+216 (int (*)(...))QAbstractButton::keyReleaseEvent
+224 (int (*)(...))QAbstractButton::focusInEvent
+232 (int (*)(...))QAbstractButton::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QCheckBox::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractButton::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QCheckBox::hitButton
+440 (int (*)(...))QCheckBox::checkStateSet
+448 (int (*)(...))QCheckBox::nextCheckState
+456 (int (*)(...))-16
+464 (int (*)(...))(& _ZTI9QCheckBox)
+472 (int (*)(...))QCheckBox::_ZThn16_N9QCheckBoxD1Ev
+480 (int (*)(...))QCheckBox::_ZThn16_N9QCheckBoxD0Ev
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QCheckBox
+ size=48 align=8
+ base size=48 base align=8
+QCheckBox (0x0x7f1d1a198f08) 0
+ vptr=((& QCheckBox::_ZTV9QCheckBox) + 16)
+ QAbstractButton (0x0x7f1d1a198f70) 0
+ primary-for QCheckBox (0x0x7f1d1a198f08)
+ QWidget (0x0x7f1d1a2938c0) 0
+ primary-for QAbstractButton (0x0x7f1d1a198f70)
+ QObject (0x0x7f1d19eae660) 0
+ primary-for QWidget (0x0x7f1d1a2938c0)
+ QPaintDevice (0x0x7f1d19eae6c0) 16
+ vptr=((& QCheckBox::_ZTV9QCheckBox) + 472)
+
+Class QDialog::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDialog::QPrivateSignal (0x0x7f1d19eae9c0) 0 empty
+
+Vtable for QDialog
+QDialog::_ZTV7QDialog: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QDialog)
+16 (int (*)(...))QDialog::metaObject
+24 (int (*)(...))QDialog::qt_metacast
+32 (int (*)(...))QDialog::qt_metacall
+40 (int (*)(...))QDialog::~QDialog
+48 (int (*)(...))QDialog::~QDialog
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QDialog::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QDialog::setVisible
+128 (int (*)(...))QDialog::sizeHint
+136 (int (*)(...))QDialog::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QDialog::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QDialog::resizeEvent
+280 (int (*)(...))QDialog::closeEvent
+288 (int (*)(...))QDialog::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QDialog::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDialog::open
+440 (int (*)(...))QDialog::exec
+448 (int (*)(...))QDialog::done
+456 (int (*)(...))QDialog::accept
+464 (int (*)(...))QDialog::reject
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI7QDialog)
+488 (int (*)(...))QDialog::_ZThn16_N7QDialogD1Ev
+496 (int (*)(...))QDialog::_ZThn16_N7QDialogD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QDialog
+ size=48 align=8
+ base size=48 base align=8
+QDialog (0x0x7f1d19ed0000) 0
+ vptr=((& QDialog::_ZTV7QDialog) + 16)
+ QWidget (0x0x7f1d1a293a10) 0
+ primary-for QDialog (0x0x7f1d19ed0000)
+ QObject (0x0x7f1d19eae900) 0
+ primary-for QWidget (0x0x7f1d1a293a10)
+ QPaintDevice (0x0x7f1d19eae960) 16
+ vptr=((& QDialog::_ZTV7QDialog) + 488)
+
+Class QColorDialog::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QColorDialog::QPrivateSignal (0x0x7f1d19eaec60) 0 empty
+
+Vtable for QColorDialog
+QColorDialog::_ZTV12QColorDialog: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QColorDialog)
+16 (int (*)(...))QColorDialog::metaObject
+24 (int (*)(...))QColorDialog::qt_metacast
+32 (int (*)(...))QColorDialog::qt_metacall
+40 (int (*)(...))QColorDialog::~QColorDialog
+48 (int (*)(...))QColorDialog::~QColorDialog
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QDialog::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QColorDialog::setVisible
+128 (int (*)(...))QDialog::sizeHint
+136 (int (*)(...))QDialog::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QDialog::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QDialog::resizeEvent
+280 (int (*)(...))QDialog::closeEvent
+288 (int (*)(...))QDialog::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QDialog::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QColorDialog::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDialog::open
+440 (int (*)(...))QDialog::exec
+448 (int (*)(...))QColorDialog::done
+456 (int (*)(...))QDialog::accept
+464 (int (*)(...))QDialog::reject
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI12QColorDialog)
+488 (int (*)(...))QColorDialog::_ZThn16_N12QColorDialogD1Ev
+496 (int (*)(...))QColorDialog::_ZThn16_N12QColorDialogD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QColorDialog
+ size=48 align=8
+ base size=48 base align=8
+QColorDialog (0x0x7f1d19ed0068) 0
+ vptr=((& QColorDialog::_ZTV12QColorDialog) + 16)
+ QDialog (0x0x7f1d19ed00d0) 0
+ primary-for QColorDialog (0x0x7f1d19ed0068)
+ QWidget (0x0x7f1d1a293d20) 0
+ primary-for QDialog (0x0x7f1d19ed00d0)
+ QObject (0x0x7f1d19eaeba0) 0
+ primary-for QWidget (0x0x7f1d1a293d20)
+ QPaintDevice (0x0x7f1d19eaec00) 16
+ vptr=((& QColorDialog::_ZTV12QColorDialog) + 488)
+
+Class QColormap
+ size=8 align=8
+ base size=8 base align=8
+QColormap (0x0x7f1d19eff840) 0
+
+Class QColumnView::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QColumnView::QPrivateSignal (0x0x7f1d19eff960) 0 empty
+
+Vtable for QColumnView
+QColumnView::_ZTV11QColumnView: 107 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QColumnView)
+16 (int (*)(...))QColumnView::metaObject
+24 (int (*)(...))QColumnView::qt_metacast
+32 (int (*)(...))QColumnView::qt_metacall
+40 (int (*)(...))QColumnView::~QColumnView
+48 (int (*)(...))QColumnView::~QColumnView
+56 (int (*)(...))QAbstractItemView::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QAbstractItemView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QColumnView::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractItemView::mousePressEvent
+176 (int (*)(...))QAbstractItemView::mouseReleaseEvent
+184 (int (*)(...))QAbstractItemView::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractItemView::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QAbstractItemView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QAbstractScrollArea::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QColumnView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QAbstractItemView::dragMoveEvent
+328 (int (*)(...))QAbstractItemView::dragLeaveEvent
+336 (int (*)(...))QAbstractItemView::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractItemView::viewportEvent
+448 (int (*)(...))QColumnView::scrollContentsBy
+456 (int (*)(...))QAbstractItemView::viewportSizeHint
+464 (int (*)(...))QColumnView::setModel
+472 (int (*)(...))QColumnView::setSelectionModel
+480 (int (*)(...))QAbstractItemView::keyboardSearch
+488 (int (*)(...))QColumnView::visualRect
+496 (int (*)(...))QColumnView::scrollTo
+504 (int (*)(...))QColumnView::indexAt
+512 (int (*)(...))QAbstractItemView::sizeHintForRow
+520 (int (*)(...))QAbstractItemView::sizeHintForColumn
+528 (int (*)(...))QAbstractItemView::reset
+536 (int (*)(...))QColumnView::setRootIndex
+544 (int (*)(...))QAbstractItemView::doItemsLayout
+552 (int (*)(...))QColumnView::selectAll
+560 (int (*)(...))QAbstractItemView::dataChanged
+568 (int (*)(...))QColumnView::rowsInserted
+576 (int (*)(...))QAbstractItemView::rowsAboutToBeRemoved
+584 (int (*)(...))QAbstractItemView::selectionChanged
+592 (int (*)(...))QColumnView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QAbstractItemView::updateGeometries
+624 (int (*)(...))QAbstractItemView::verticalScrollbarAction
+632 (int (*)(...))QAbstractItemView::horizontalScrollbarAction
+640 (int (*)(...))QAbstractItemView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))QColumnView::moveCursor
+688 (int (*)(...))QColumnView::horizontalOffset
+696 (int (*)(...))QColumnView::verticalOffset
+704 (int (*)(...))QColumnView::isIndexHidden
+712 (int (*)(...))QColumnView::setSelection
+720 (int (*)(...))QColumnView::visualRegionForSelection
+728 (int (*)(...))QAbstractItemView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QAbstractItemView::startDrag
+760 (int (*)(...))QAbstractItemView::viewOptions
+768 (int (*)(...))QColumnView::createColumn
+776 (int (*)(...))-16
+784 (int (*)(...))(& _ZTI11QColumnView)
+792 (int (*)(...))QColumnView::_ZThn16_N11QColumnViewD1Ev
+800 (int (*)(...))QColumnView::_ZThn16_N11QColumnViewD0Ev
+808 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+816 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+824 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+832 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+840 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+848 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QColumnView
+ size=48 align=8
+ base size=48 base align=8
+QColumnView (0x0x7f1d19ed0208) 0
+ vptr=((& QColumnView::_ZTV11QColumnView) + 16)
+ QAbstractItemView (0x0x7f1d19ed0270) 0
+ primary-for QColumnView (0x0x7f1d19ed0208)
+ QAbstractScrollArea (0x0x7f1d19ed02d8) 0
+ primary-for QAbstractItemView (0x0x7f1d19ed0270)
+ QFrame (0x0x7f1d19ed0340) 0
+ primary-for QAbstractScrollArea (0x0x7f1d19ed02d8)
+ QWidget (0x0x7f1d19eeebd0) 0
+ primary-for QFrame (0x0x7f1d19ed0340)
+ QObject (0x0x7f1d19eff8a0) 0
+ primary-for QWidget (0x0x7f1d19eeebd0)
+ QPaintDevice (0x0x7f1d19eff900) 16
+ vptr=((& QColumnView::_ZTV11QColumnView) + 792)
+
+Class QComboBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QComboBox::QPrivateSignal (0x0x7f1d19effc00) 0 empty
+
+Vtable for QComboBox
+QComboBox::_ZTV9QComboBox: 66 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QComboBox)
+16 (int (*)(...))QComboBox::metaObject
+24 (int (*)(...))QComboBox::qt_metacast
+32 (int (*)(...))QComboBox::qt_metacall
+40 (int (*)(...))QComboBox::~QComboBox
+48 (int (*)(...))QComboBox::~QComboBox
+56 (int (*)(...))QComboBox::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QComboBox::sizeHint
+136 (int (*)(...))QComboBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QComboBox::mousePressEvent
+176 (int (*)(...))QComboBox::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QComboBox::wheelEvent
+208 (int (*)(...))QComboBox::keyPressEvent
+216 (int (*)(...))QComboBox::keyReleaseEvent
+224 (int (*)(...))QComboBox::focusInEvent
+232 (int (*)(...))QComboBox::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QComboBox::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QComboBox::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QComboBox::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QComboBox::showEvent
+352 (int (*)(...))QComboBox::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QComboBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QComboBox::inputMethodEvent
+416 (int (*)(...))QComboBox::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QComboBox::showPopup
+440 (int (*)(...))QComboBox::hidePopup
+448 (int (*)(...))-16
+456 (int (*)(...))(& _ZTI9QComboBox)
+464 (int (*)(...))QComboBox::_ZThn16_N9QComboBoxD1Ev
+472 (int (*)(...))QComboBox::_ZThn16_N9QComboBoxD0Ev
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QComboBox
+ size=48 align=8
+ base size=48 base align=8
+QComboBox (0x0x7f1d19ed03a8) 0
+ vptr=((& QComboBox::_ZTV9QComboBox) + 16)
+ QWidget (0x0x7f1d19eeec40) 0
+ primary-for QComboBox (0x0x7f1d19ed03a8)
+ QObject (0x0x7f1d19effb40) 0
+ primary-for QWidget (0x0x7f1d19eeec40)
+ QPaintDevice (0x0x7f1d19effba0) 16
+ vptr=((& QComboBox::_ZTV9QComboBox) + 464)
+
+Class QPushButton::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPushButton::QPrivateSignal (0x0x7f1d19f37240) 0 empty
+
+Vtable for QPushButton
+QPushButton::_ZTV11QPushButton: 67 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QPushButton)
+16 (int (*)(...))QPushButton::metaObject
+24 (int (*)(...))QPushButton::qt_metacast
+32 (int (*)(...))QPushButton::qt_metacall
+40 (int (*)(...))QPushButton::~QPushButton
+48 (int (*)(...))QPushButton::~QPushButton
+56 (int (*)(...))QPushButton::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractButton::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QPushButton::sizeHint
+136 (int (*)(...))QPushButton::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractButton::mousePressEvent
+176 (int (*)(...))QAbstractButton::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractButton::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QPushButton::keyPressEvent
+216 (int (*)(...))QAbstractButton::keyReleaseEvent
+224 (int (*)(...))QPushButton::focusInEvent
+232 (int (*)(...))QPushButton::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QPushButton::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractButton::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QAbstractButton::hitButton
+440 (int (*)(...))QAbstractButton::checkStateSet
+448 (int (*)(...))QAbstractButton::nextCheckState
+456 (int (*)(...))-16
+464 (int (*)(...))(& _ZTI11QPushButton)
+472 (int (*)(...))QPushButton::_ZThn16_N11QPushButtonD1Ev
+480 (int (*)(...))QPushButton::_ZThn16_N11QPushButtonD0Ev
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QPushButton
+ size=48 align=8
+ base size=48 base align=8
+QPushButton (0x0x7f1d19ed0410) 0
+ vptr=((& QPushButton::_ZTV11QPushButton) + 16)
+ QAbstractButton (0x0x7f1d19ed0478) 0
+ primary-for QPushButton (0x0x7f1d19ed0410)
+ QWidget (0x0x7f1d19f1d2a0) 0
+ primary-for QAbstractButton (0x0x7f1d19ed0478)
+ QObject (0x0x7f1d19f37180) 0
+ primary-for QWidget (0x0x7f1d19f1d2a0)
+ QPaintDevice (0x0x7f1d19f371e0) 16
+ vptr=((& QPushButton::_ZTV11QPushButton) + 472)
+
+Class QCommandLinkButton::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QCommandLinkButton::QPrivateSignal (0x0x7f1d19f374e0) 0 empty
+
+Vtable for QCommandLinkButton
+QCommandLinkButton::_ZTV18QCommandLinkButton: 67 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QCommandLinkButton)
+16 (int (*)(...))QCommandLinkButton::metaObject
+24 (int (*)(...))QCommandLinkButton::qt_metacast
+32 (int (*)(...))QCommandLinkButton::qt_metacall
+40 (int (*)(...))QCommandLinkButton::~QCommandLinkButton
+48 (int (*)(...))QCommandLinkButton::~QCommandLinkButton
+56 (int (*)(...))QCommandLinkButton::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractButton::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QCommandLinkButton::sizeHint
+136 (int (*)(...))QCommandLinkButton::minimumSizeHint
+144 (int (*)(...))QCommandLinkButton::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractButton::mousePressEvent
+176 (int (*)(...))QAbstractButton::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractButton::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QPushButton::keyPressEvent
+216 (int (*)(...))QAbstractButton::keyReleaseEvent
+224 (int (*)(...))QPushButton::focusInEvent
+232 (int (*)(...))QPushButton::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QCommandLinkButton::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractButton::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QAbstractButton::hitButton
+440 (int (*)(...))QAbstractButton::checkStateSet
+448 (int (*)(...))QAbstractButton::nextCheckState
+456 (int (*)(...))-16
+464 (int (*)(...))(& _ZTI18QCommandLinkButton)
+472 (int (*)(...))QCommandLinkButton::_ZThn16_N18QCommandLinkButtonD1Ev
+480 (int (*)(...))QCommandLinkButton::_ZThn16_N18QCommandLinkButtonD0Ev
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QCommandLinkButton
+ size=48 align=8
+ base size=48 base align=8
+QCommandLinkButton (0x0x7f1d19ed04e0) 0
+ vptr=((& QCommandLinkButton::_ZTV18QCommandLinkButton) + 16)
+ QPushButton (0x0x7f1d19ed0548) 0
+ primary-for QCommandLinkButton (0x0x7f1d19ed04e0)
+ QAbstractButton (0x0x7f1d19ed05b0) 0
+ primary-for QPushButton (0x0x7f1d19ed0548)
+ QWidget (0x0x7f1d19f1d3f0) 0
+ primary-for QAbstractButton (0x0x7f1d19ed05b0)
+ QObject (0x0x7f1d19f37420) 0
+ primary-for QWidget (0x0x7f1d19f1d3f0)
+ QPaintDevice (0x0x7f1d19f37480) 16
+ vptr=((& QCommandLinkButton::_ZTV18QCommandLinkButton) + 472)
+
+Class QCommonStyle::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QCommonStyle::QPrivateSignal (0x0x7f1d19f37720) 0 empty
+
+Vtable for QCommonStyle
+QCommonStyle::_ZTV12QCommonStyle: 37 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QCommonStyle)
+16 (int (*)(...))QCommonStyle::metaObject
+24 (int (*)(...))QCommonStyle::qt_metacast
+32 (int (*)(...))QCommonStyle::qt_metacall
+40 (int (*)(...))QCommonStyle::~QCommonStyle
+48 (int (*)(...))QCommonStyle::~QCommonStyle
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QCommonStyle::polish
+120 (int (*)(...))QCommonStyle::unpolish
+128 (int (*)(...))QCommonStyle::polish
+136 (int (*)(...))QCommonStyle::unpolish
+144 (int (*)(...))QCommonStyle::polish
+152 (int (*)(...))QStyle::itemTextRect
+160 (int (*)(...))QStyle::itemPixmapRect
+168 (int (*)(...))QStyle::drawItemText
+176 (int (*)(...))QStyle::drawItemPixmap
+184 (int (*)(...))QStyle::standardPalette
+192 (int (*)(...))QCommonStyle::drawPrimitive
+200 (int (*)(...))QCommonStyle::drawControl
+208 (int (*)(...))QCommonStyle::subElementRect
+216 (int (*)(...))QCommonStyle::drawComplexControl
+224 (int (*)(...))QCommonStyle::hitTestComplexControl
+232 (int (*)(...))QCommonStyle::subControlRect
+240 (int (*)(...))QCommonStyle::pixelMetric
+248 (int (*)(...))QCommonStyle::sizeFromContents
+256 (int (*)(...))QCommonStyle::styleHint
+264 (int (*)(...))QCommonStyle::standardPixmap
+272 (int (*)(...))QCommonStyle::standardIcon
+280 (int (*)(...))QCommonStyle::generatedIconPixmap
+288 (int (*)(...))QCommonStyle::layoutSpacing
+
+Class QCommonStyle
+ size=16 align=8
+ base size=16 base align=8
+QCommonStyle (0x0x7f1d19ed0618) 0
+ vptr=((& QCommonStyle::_ZTV12QCommonStyle) + 16)
+ QStyle (0x0x7f1d19ed0680) 0
+ primary-for QCommonStyle (0x0x7f1d19ed0618)
+ QObject (0x0x7f1d19f376c0) 0
+ primary-for QStyle (0x0x7f1d19ed0680)
+
+Class QCompleter::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QCompleter::QPrivateSignal (0x0x7f1d19f37960) 0 empty
+
+Vtable for QCompleter
+QCompleter::_ZTV10QCompleter: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QCompleter)
+16 (int (*)(...))QCompleter::metaObject
+24 (int (*)(...))QCompleter::qt_metacast
+32 (int (*)(...))QCompleter::qt_metacall
+40 (int (*)(...))QCompleter::~QCompleter
+48 (int (*)(...))QCompleter::~QCompleter
+56 (int (*)(...))QCompleter::event
+64 (int (*)(...))QCompleter::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QCompleter::pathFromIndex
+120 (int (*)(...))QCompleter::splitPath
+
+Class QCompleter
+ size=16 align=8
+ base size=16 base align=8
+QCompleter (0x0x7f1d19ed06e8) 0
+ vptr=((& QCompleter::_ZTV10QCompleter) + 16)
+ QObject (0x0x7f1d19f37900) 0
+ primary-for QCompleter (0x0x7f1d19ed06e8)
+
+Class QDataWidgetMapper::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDataWidgetMapper::QPrivateSignal (0x0x7f1d19f37d20) 0 empty
+
+Vtable for QDataWidgetMapper
+QDataWidgetMapper::_ZTV17QDataWidgetMapper: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QDataWidgetMapper)
+16 (int (*)(...))QDataWidgetMapper::metaObject
+24 (int (*)(...))QDataWidgetMapper::qt_metacast
+32 (int (*)(...))QDataWidgetMapper::qt_metacall
+40 (int (*)(...))QDataWidgetMapper::~QDataWidgetMapper
+48 (int (*)(...))QDataWidgetMapper::~QDataWidgetMapper
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QDataWidgetMapper::setCurrentIndex
+
+Class QDataWidgetMapper
+ size=16 align=8
+ base size=16 base align=8
+QDataWidgetMapper (0x0x7f1d19ed0750) 0
+ vptr=((& QDataWidgetMapper::_ZTV17QDataWidgetMapper) + 16)
+ QObject (0x0x7f1d19f37cc0) 0
+ primary-for QDataWidgetMapper (0x0x7f1d19ed0750)
+
+Class QDateTimeEdit::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDateTimeEdit::QPrivateSignal (0x0x7f1d19f7d0c0) 0 empty
+
+Vtable for QDateTimeEdit
+QDateTimeEdit::_ZTV13QDateTimeEdit: 71 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QDateTimeEdit)
+16 (int (*)(...))QDateTimeEdit::metaObject
+24 (int (*)(...))QDateTimeEdit::qt_metacast
+32 (int (*)(...))QDateTimeEdit::qt_metacall
+40 (int (*)(...))QDateTimeEdit::~QDateTimeEdit
+48 (int (*)(...))QDateTimeEdit::~QDateTimeEdit
+56 (int (*)(...))QDateTimeEdit::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSpinBox::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QDateTimeEdit::sizeHint
+136 (int (*)(...))QAbstractSpinBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QDateTimeEdit::mousePressEvent
+176 (int (*)(...))QAbstractSpinBox::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractSpinBox::mouseMoveEvent
+200 (int (*)(...))QDateTimeEdit::wheelEvent
+208 (int (*)(...))QDateTimeEdit::keyPressEvent
+216 (int (*)(...))QAbstractSpinBox::keyReleaseEvent
+224 (int (*)(...))QDateTimeEdit::focusInEvent
+232 (int (*)(...))QAbstractSpinBox::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QDateTimeEdit::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractSpinBox::resizeEvent
+280 (int (*)(...))QAbstractSpinBox::closeEvent
+288 (int (*)(...))QAbstractSpinBox::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QAbstractSpinBox::showEvent
+352 (int (*)(...))QAbstractSpinBox::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSpinBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QAbstractSpinBox::inputMethodQuery
+424 (int (*)(...))QDateTimeEdit::focusNextPrevChild
+432 (int (*)(...))QDateTimeEdit::validate
+440 (int (*)(...))QDateTimeEdit::fixup
+448 (int (*)(...))QDateTimeEdit::stepBy
+456 (int (*)(...))QDateTimeEdit::clear
+464 (int (*)(...))QDateTimeEdit::stepEnabled
+472 (int (*)(...))QDateTimeEdit::dateTimeFromText
+480 (int (*)(...))QDateTimeEdit::textFromDateTime
+488 (int (*)(...))-16
+496 (int (*)(...))(& _ZTI13QDateTimeEdit)
+504 (int (*)(...))QDateTimeEdit::_ZThn16_N13QDateTimeEditD1Ev
+512 (int (*)(...))QDateTimeEdit::_ZThn16_N13QDateTimeEditD0Ev
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+552 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+560 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QDateTimeEdit
+ size=48 align=8
+ base size=48 base align=8
+QDateTimeEdit (0x0x7f1d19ed07b8) 0
+ vptr=((& QDateTimeEdit::_ZTV13QDateTimeEdit) + 16)
+ QAbstractSpinBox (0x0x7f1d19ed0820) 0
+ primary-for QDateTimeEdit (0x0x7f1d19ed07b8)
+ QWidget (0x0x7f1d19f1dbd0) 0
+ primary-for QAbstractSpinBox (0x0x7f1d19ed0820)
+ QObject (0x0x7f1d19f7d000) 0
+ primary-for QWidget (0x0x7f1d19f1dbd0)
+ QPaintDevice (0x0x7f1d19f7d060) 16
+ vptr=((& QDateTimeEdit::_ZTV13QDateTimeEdit) + 504)
+
+Class QTimeEdit::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTimeEdit::QPrivateSignal (0x0x7f1d19f7d660) 0 empty
+
+Vtable for QTimeEdit
+QTimeEdit::_ZTV9QTimeEdit: 71 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QTimeEdit)
+16 (int (*)(...))QTimeEdit::metaObject
+24 (int (*)(...))QTimeEdit::qt_metacast
+32 (int (*)(...))QTimeEdit::qt_metacall
+40 (int (*)(...))QTimeEdit::~QTimeEdit
+48 (int (*)(...))QTimeEdit::~QTimeEdit
+56 (int (*)(...))QDateTimeEdit::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSpinBox::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QDateTimeEdit::sizeHint
+136 (int (*)(...))QAbstractSpinBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QDateTimeEdit::mousePressEvent
+176 (int (*)(...))QAbstractSpinBox::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractSpinBox::mouseMoveEvent
+200 (int (*)(...))QDateTimeEdit::wheelEvent
+208 (int (*)(...))QDateTimeEdit::keyPressEvent
+216 (int (*)(...))QAbstractSpinBox::keyReleaseEvent
+224 (int (*)(...))QDateTimeEdit::focusInEvent
+232 (int (*)(...))QAbstractSpinBox::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QDateTimeEdit::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractSpinBox::resizeEvent
+280 (int (*)(...))QAbstractSpinBox::closeEvent
+288 (int (*)(...))QAbstractSpinBox::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QAbstractSpinBox::showEvent
+352 (int (*)(...))QAbstractSpinBox::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSpinBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QAbstractSpinBox::inputMethodQuery
+424 (int (*)(...))QDateTimeEdit::focusNextPrevChild
+432 (int (*)(...))QDateTimeEdit::validate
+440 (int (*)(...))QDateTimeEdit::fixup
+448 (int (*)(...))QDateTimeEdit::stepBy
+456 (int (*)(...))QDateTimeEdit::clear
+464 (int (*)(...))QDateTimeEdit::stepEnabled
+472 (int (*)(...))QDateTimeEdit::dateTimeFromText
+480 (int (*)(...))QDateTimeEdit::textFromDateTime
+488 (int (*)(...))-16
+496 (int (*)(...))(& _ZTI9QTimeEdit)
+504 (int (*)(...))QTimeEdit::_ZThn16_N9QTimeEditD1Ev
+512 (int (*)(...))QTimeEdit::_ZThn16_N9QTimeEditD0Ev
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+552 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+560 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QTimeEdit
+ size=48 align=8
+ base size=48 base align=8
+QTimeEdit (0x0x7f1d19ed0958) 0
+ vptr=((& QTimeEdit::_ZTV9QTimeEdit) + 16)
+ QDateTimeEdit (0x0x7f1d19ed09c0) 0
+ primary-for QTimeEdit (0x0x7f1d19ed0958)
+ QAbstractSpinBox (0x0x7f1d19ed0a28) 0
+ primary-for QDateTimeEdit (0x0x7f1d19ed09c0)
+ QWidget (0x0x7f1d19f823f0) 0
+ primary-for QAbstractSpinBox (0x0x7f1d19ed0a28)
+ QObject (0x0x7f1d19f7d5a0) 0
+ primary-for QWidget (0x0x7f1d19f823f0)
+ QPaintDevice (0x0x7f1d19f7d600) 16
+ vptr=((& QTimeEdit::_ZTV9QTimeEdit) + 504)
+
+Class QDateEdit::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDateEdit::QPrivateSignal (0x0x7f1d19f7d840) 0 empty
+
+Vtable for QDateEdit
+QDateEdit::_ZTV9QDateEdit: 71 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QDateEdit)
+16 (int (*)(...))QDateEdit::metaObject
+24 (int (*)(...))QDateEdit::qt_metacast
+32 (int (*)(...))QDateEdit::qt_metacall
+40 (int (*)(...))QDateEdit::~QDateEdit
+48 (int (*)(...))QDateEdit::~QDateEdit
+56 (int (*)(...))QDateTimeEdit::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSpinBox::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QDateTimeEdit::sizeHint
+136 (int (*)(...))QAbstractSpinBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QDateTimeEdit::mousePressEvent
+176 (int (*)(...))QAbstractSpinBox::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractSpinBox::mouseMoveEvent
+200 (int (*)(...))QDateTimeEdit::wheelEvent
+208 (int (*)(...))QDateTimeEdit::keyPressEvent
+216 (int (*)(...))QAbstractSpinBox::keyReleaseEvent
+224 (int (*)(...))QDateTimeEdit::focusInEvent
+232 (int (*)(...))QAbstractSpinBox::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QDateTimeEdit::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractSpinBox::resizeEvent
+280 (int (*)(...))QAbstractSpinBox::closeEvent
+288 (int (*)(...))QAbstractSpinBox::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QAbstractSpinBox::showEvent
+352 (int (*)(...))QAbstractSpinBox::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSpinBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QAbstractSpinBox::inputMethodQuery
+424 (int (*)(...))QDateTimeEdit::focusNextPrevChild
+432 (int (*)(...))QDateTimeEdit::validate
+440 (int (*)(...))QDateTimeEdit::fixup
+448 (int (*)(...))QDateTimeEdit::stepBy
+456 (int (*)(...))QDateTimeEdit::clear
+464 (int (*)(...))QDateTimeEdit::stepEnabled
+472 (int (*)(...))QDateTimeEdit::dateTimeFromText
+480 (int (*)(...))QDateTimeEdit::textFromDateTime
+488 (int (*)(...))-16
+496 (int (*)(...))(& _ZTI9QDateEdit)
+504 (int (*)(...))QDateEdit::_ZThn16_N9QDateEditD1Ev
+512 (int (*)(...))QDateEdit::_ZThn16_N9QDateEditD0Ev
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+552 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+560 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QDateEdit
+ size=48 align=8
+ base size=48 base align=8
+QDateEdit (0x0x7f1d19ed0a90) 0
+ vptr=((& QDateEdit::_ZTV9QDateEdit) + 16)
+ QDateTimeEdit (0x0x7f1d19ed0af8) 0
+ primary-for QDateEdit (0x0x7f1d19ed0a90)
+ QAbstractSpinBox (0x0x7f1d19ed0b60) 0
+ primary-for QDateTimeEdit (0x0x7f1d19ed0af8)
+ QWidget (0x0x7f1d19f82540) 0
+ primary-for QAbstractSpinBox (0x0x7f1d19ed0b60)
+ QObject (0x0x7f1d19f7d780) 0
+ primary-for QWidget (0x0x7f1d19f82540)
+ QPaintDevice (0x0x7f1d19f7d7e0) 16
+ vptr=((& QDateEdit::_ZTV9QDateEdit) + 504)
+
+Class QDesktopWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDesktopWidget::QPrivateSignal (0x0x7f1d19f7df60) 0 empty
+
+Vtable for QDesktopWidget
+QDesktopWidget::_ZTV14QDesktopWidget: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QDesktopWidget)
+16 (int (*)(...))QDesktopWidget::metaObject
+24 (int (*)(...))QDesktopWidget::qt_metacast
+32 (int (*)(...))QDesktopWidget::qt_metacall
+40 (int (*)(...))QDesktopWidget::~QDesktopWidget
+48 (int (*)(...))QDesktopWidget::~QDesktopWidget
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QDesktopWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI14QDesktopWidget)
+448 (int (*)(...))QDesktopWidget::_ZThn16_N14QDesktopWidgetD1Ev
+456 (int (*)(...))QDesktopWidget::_ZThn16_N14QDesktopWidgetD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QDesktopWidget
+ size=48 align=8
+ base size=48 base align=8
+QDesktopWidget (0x0x7f1d19ed0bc8) 0
+ vptr=((& QDesktopWidget::_ZTV14QDesktopWidget) + 16)
+ QWidget (0x0x7f1d19f82c40) 0
+ primary-for QDesktopWidget (0x0x7f1d19ed0bc8)
+ QObject (0x0x7f1d19f7dea0) 0
+ primary-for QWidget (0x0x7f1d19f82c40)
+ QPaintDevice (0x0x7f1d19f7df00) 16
+ vptr=((& QDesktopWidget::_ZTV14QDesktopWidget) + 448)
+
+Class QDial::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDial::QPrivateSignal (0x0x7f1d19fc4360) 0 empty
+
+Vtable for QDial
+QDial::_ZTV5QDial: 65 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI5QDial)
+16 (int (*)(...))QDial::metaObject
+24 (int (*)(...))QDial::qt_metacast
+32 (int (*)(...))QDial::qt_metacall
+40 (int (*)(...))QDial::~QDial
+48 (int (*)(...))QDial::~QDial
+56 (int (*)(...))QDial::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSlider::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QDial::sizeHint
+136 (int (*)(...))QDial::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QDial::mousePressEvent
+176 (int (*)(...))QDial::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QDial::mouseMoveEvent
+200 (int (*)(...))QAbstractSlider::wheelEvent
+208 (int (*)(...))QAbstractSlider::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QDial::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QDial::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSlider::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDial::sliderChange
+440 (int (*)(...))-16
+448 (int (*)(...))(& _ZTI5QDial)
+456 (int (*)(...))QDial::_ZThn16_N5QDialD1Ev
+464 (int (*)(...))QDial::_ZThn16_N5QDialD0Ev
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QDial
+ size=48 align=8
+ base size=48 base align=8
+QDial (0x0x7f1d19ed0c30) 0
+ vptr=((& QDial::_ZTV5QDial) + 16)
+ QAbstractSlider (0x0x7f1d19ed0c98) 0
+ primary-for QDial (0x0x7f1d19ed0c30)
+ QWidget (0x0x7f1d19f82cb0) 0
+ primary-for QAbstractSlider (0x0x7f1d19ed0c98)
+ QObject (0x0x7f1d19fc42a0) 0
+ primary-for QWidget (0x0x7f1d19f82cb0)
+ QPaintDevice (0x0x7f1d19fc4300) 16
+ vptr=((& QDial::_ZTV5QDial) + 456)
+
+Class QDialogButtonBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDialogButtonBox::QPrivateSignal (0x0x7f1d19fc4600) 0 empty
+
+Vtable for QDialogButtonBox
+QDialogButtonBox::_ZTV16QDialogButtonBox: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QDialogButtonBox)
+16 (int (*)(...))QDialogButtonBox::metaObject
+24 (int (*)(...))QDialogButtonBox::qt_metacast
+32 (int (*)(...))QDialogButtonBox::qt_metacall
+40 (int (*)(...))QDialogButtonBox::~QDialogButtonBox
+48 (int (*)(...))QDialogButtonBox::~QDialogButtonBox
+56 (int (*)(...))QDialogButtonBox::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QDialogButtonBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI16QDialogButtonBox)
+448 (int (*)(...))QDialogButtonBox::_ZThn16_N16QDialogButtonBoxD1Ev
+456 (int (*)(...))QDialogButtonBox::_ZThn16_N16QDialogButtonBoxD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QDialogButtonBox
+ size=48 align=8
+ base size=48 base align=8
+QDialogButtonBox (0x0x7f1d19ed0d00) 0
+ vptr=((& QDialogButtonBox::_ZTV16QDialogButtonBox) + 16)
+ QWidget (0x0x7f1d19f82d90) 0
+ primary-for QDialogButtonBox (0x0x7f1d19ed0d00)
+ QObject (0x0x7f1d19fc4540) 0
+ primary-for QWidget (0x0x7f1d19f82d90)
+ QPaintDevice (0x0x7f1d19fc45a0) 16
+ vptr=((& QDialogButtonBox::_ZTV16QDialogButtonBox) + 448)
+
+Vtable for QFileIconProvider
+QFileIconProvider::_ZTV17QFileIconProvider: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QFileIconProvider)
+16 (int (*)(...))QFileIconProvider::~QFileIconProvider
+24 (int (*)(...))QFileIconProvider::~QFileIconProvider
+32 (int (*)(...))QFileIconProvider::icon
+40 (int (*)(...))QFileIconProvider::icon
+48 (int (*)(...))QFileIconProvider::type
+
+Class QFileIconProvider
+ size=16 align=8
+ base size=16 base align=8
+QFileIconProvider (0x0x7f1d19fc4f60) 0
+ vptr=((& QFileIconProvider::_ZTV17QFileIconProvider) + 16)
+
+Class QDirModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDirModel::QPrivateSignal (0x0x7f1d19ffd8a0) 0 empty
+
+Vtable for QDirModel
+QDirModel::_ZTV9QDirModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QDirModel)
+16 (int (*)(...))QDirModel::metaObject
+24 (int (*)(...))QDirModel::qt_metacast
+32 (int (*)(...))QDirModel::qt_metacall
+40 (int (*)(...))QDirModel::~QDirModel
+48 (int (*)(...))QDirModel::~QDirModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QDirModel::index
+120 (int (*)(...))QDirModel::parent
+128 (int (*)(...))QAbstractItemModel::sibling
+136 (int (*)(...))QDirModel::rowCount
+144 (int (*)(...))QDirModel::columnCount
+152 (int (*)(...))QDirModel::hasChildren
+160 (int (*)(...))QDirModel::data
+168 (int (*)(...))QDirModel::setData
+176 (int (*)(...))QDirModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QDirModel::mimeTypes
+216 (int (*)(...))QDirModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QDirModel::dropMimeData
+240 (int (*)(...))QDirModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QDirModel::flags
+328 (int (*)(...))QDirModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QDirModel
+ size=16 align=8
+ base size=16 base align=8
+QDirModel (0x0x7f1d19ed0f08) 0
+ vptr=((& QDirModel::_ZTV9QDirModel) + 16)
+ QAbstractItemModel (0x0x7f1d19ed0f70) 0
+ primary-for QDirModel (0x0x7f1d19ed0f08)
+ QObject (0x0x7f1d19ffd840) 0
+ primary-for QAbstractItemModel (0x0x7f1d19ed0f70)
+
+Class QDockWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDockWidget::QPrivateSignal (0x0x7f1d19ffdb40) 0 empty
+
+Vtable for QDockWidget
+QDockWidget::_ZTV11QDockWidget: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QDockWidget)
+16 (int (*)(...))QDockWidget::metaObject
+24 (int (*)(...))QDockWidget::qt_metacast
+32 (int (*)(...))QDockWidget::qt_metacall
+40 (int (*)(...))QDockWidget::~QDockWidget
+48 (int (*)(...))QDockWidget::~QDockWidget
+56 (int (*)(...))QDockWidget::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QDockWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QDockWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QDockWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI11QDockWidget)
+448 (int (*)(...))QDockWidget::_ZThn16_N11QDockWidgetD1Ev
+456 (int (*)(...))QDockWidget::_ZThn16_N11QDockWidgetD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QDockWidget
+ size=48 align=8
+ base size=48 base align=8
+QDockWidget (0x0x7f1d1a02f000) 0
+ vptr=((& QDockWidget::_ZTV11QDockWidget) + 16)
+ QWidget (0x0x7f1d1a019380) 0
+ primary-for QDockWidget (0x0x7f1d1a02f000)
+ QObject (0x0x7f1d19ffda80) 0
+ primary-for QWidget (0x0x7f1d1a019380)
+ QPaintDevice (0x0x7f1d19ffdae0) 16
+ vptr=((& QDockWidget::_ZTV11QDockWidget) + 448)
+
+Class QTileRules
+ size=8 align=4
+ base size=8 base align=4
+QTileRules (0x0x7f1d1a04da20) 0
+
+Class QErrorMessage::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QErrorMessage::QPrivateSignal (0x0x7f1d1a076240) 0 empty
+
+Vtable for QErrorMessage
+QErrorMessage::_ZTV13QErrorMessage: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QErrorMessage)
+16 (int (*)(...))QErrorMessage::metaObject
+24 (int (*)(...))QErrorMessage::qt_metacast
+32 (int (*)(...))QErrorMessage::qt_metacall
+40 (int (*)(...))QErrorMessage::~QErrorMessage
+48 (int (*)(...))QErrorMessage::~QErrorMessage
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QDialog::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QDialog::setVisible
+128 (int (*)(...))QDialog::sizeHint
+136 (int (*)(...))QDialog::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QDialog::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QDialog::resizeEvent
+280 (int (*)(...))QDialog::closeEvent
+288 (int (*)(...))QDialog::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QDialog::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QErrorMessage::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDialog::open
+440 (int (*)(...))QDialog::exec
+448 (int (*)(...))QErrorMessage::done
+456 (int (*)(...))QDialog::accept
+464 (int (*)(...))QDialog::reject
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI13QErrorMessage)
+488 (int (*)(...))QErrorMessage::_ZThn16_N13QErrorMessageD1Ev
+496 (int (*)(...))QErrorMessage::_ZThn16_N13QErrorMessageD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QErrorMessage
+ size=48 align=8
+ base size=48 base align=8
+QErrorMessage (0x0x7f1d1a02f6e8) 0
+ vptr=((& QErrorMessage::_ZTV13QErrorMessage) + 16)
+ QDialog (0x0x7f1d1a02f750) 0
+ primary-for QErrorMessage (0x0x7f1d1a02f6e8)
+ QWidget (0x0x7f1d1a079070) 0
+ primary-for QDialog (0x0x7f1d1a02f750)
+ QObject (0x0x7f1d1a076180) 0
+ primary-for QWidget (0x0x7f1d1a079070)
+ QPaintDevice (0x0x7f1d1a0761e0) 16
+ vptr=((& QErrorMessage::_ZTV13QErrorMessage) + 488)
+
+Class QFileDialog::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFileDialog::QPrivateSignal (0x0x7f1d1a0764e0) 0 empty
+
+Vtable for QFileDialog
+QFileDialog::_ZTV11QFileDialog: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFileDialog)
+16 (int (*)(...))QFileDialog::metaObject
+24 (int (*)(...))QFileDialog::qt_metacast
+32 (int (*)(...))QFileDialog::qt_metacall
+40 (int (*)(...))QFileDialog::~QFileDialog
+48 (int (*)(...))QFileDialog::~QFileDialog
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QDialog::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QFileDialog::setVisible
+128 (int (*)(...))QDialog::sizeHint
+136 (int (*)(...))QDialog::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QDialog::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QDialog::resizeEvent
+280 (int (*)(...))QDialog::closeEvent
+288 (int (*)(...))QDialog::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QDialog::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFileDialog::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDialog::open
+440 (int (*)(...))QDialog::exec
+448 (int (*)(...))QFileDialog::done
+456 (int (*)(...))QFileDialog::accept
+464 (int (*)(...))QDialog::reject
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI11QFileDialog)
+488 (int (*)(...))QFileDialog::_ZThn16_N11QFileDialogD1Ev
+496 (int (*)(...))QFileDialog::_ZThn16_N11QFileDialogD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QFileDialog
+ size=48 align=8
+ base size=48 base align=8
+QFileDialog (0x0x7f1d1a02f7b8) 0
+ vptr=((& QFileDialog::_ZTV11QFileDialog) + 16)
+ QDialog (0x0x7f1d1a02f820) 0
+ primary-for QFileDialog (0x0x7f1d1a02f7b8)
+ QWidget (0x0x7f1d1a0791c0) 0
+ primary-for QDialog (0x0x7f1d1a02f820)
+ QObject (0x0x7f1d1a076420) 0
+ primary-for QWidget (0x0x7f1d1a0791c0)
+ QPaintDevice (0x0x7f1d1a076480) 16
+ vptr=((& QFileDialog::_ZTV11QFileDialog) + 488)
+
+Class QFileSystemModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFileSystemModel::QPrivateSignal (0x0x7f1d19cba420) 0 empty
+
+Vtable for QFileSystemModel
+QFileSystemModel::_ZTV16QFileSystemModel: 48 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QFileSystemModel)
+16 (int (*)(...))QFileSystemModel::metaObject
+24 (int (*)(...))QFileSystemModel::qt_metacast
+32 (int (*)(...))QFileSystemModel::qt_metacall
+40 (int (*)(...))QFileSystemModel::~QFileSystemModel
+48 (int (*)(...))QFileSystemModel::~QFileSystemModel
+56 (int (*)(...))QFileSystemModel::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QFileSystemModel::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileSystemModel::index
+120 (int (*)(...))QFileSystemModel::parent
+128 (int (*)(...))QFileSystemModel::sibling
+136 (int (*)(...))QFileSystemModel::rowCount
+144 (int (*)(...))QFileSystemModel::columnCount
+152 (int (*)(...))QFileSystemModel::hasChildren
+160 (int (*)(...))QFileSystemModel::data
+168 (int (*)(...))QFileSystemModel::setData
+176 (int (*)(...))QFileSystemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QFileSystemModel::mimeTypes
+216 (int (*)(...))QFileSystemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QFileSystemModel::dropMimeData
+240 (int (*)(...))QFileSystemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QFileSystemModel::fetchMore
+312 (int (*)(...))QFileSystemModel::canFetchMore
+320 (int (*)(...))QFileSystemModel::flags
+328 (int (*)(...))QFileSystemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QFileSystemModel
+ size=16 align=8
+ base size=16 base align=8
+QFileSystemModel (0x0x7f1d1a02f958) 0
+ vptr=((& QFileSystemModel::_ZTV16QFileSystemModel) + 16)
+ QAbstractItemModel (0x0x7f1d1a02f9c0) 0
+ primary-for QFileSystemModel (0x0x7f1d1a02f958)
+ QObject (0x0x7f1d19cba3c0) 0
+ primary-for QAbstractItemModel (0x0x7f1d1a02f9c0)
+
+Class QFocusFrame::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFocusFrame::QPrivateSignal (0x0x7f1d19cbaf00) 0 empty
+
+Vtable for QFocusFrame
+QFocusFrame::_ZTV11QFocusFrame: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFocusFrame)
+16 (int (*)(...))QFocusFrame::metaObject
+24 (int (*)(...))QFocusFrame::qt_metacast
+32 (int (*)(...))QFocusFrame::qt_metacall
+40 (int (*)(...))QFocusFrame::~QFocusFrame
+48 (int (*)(...))QFocusFrame::~QFocusFrame
+56 (int (*)(...))QFocusFrame::event
+64 (int (*)(...))QFocusFrame::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QFocusFrame::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI11QFocusFrame)
+448 (int (*)(...))QFocusFrame::_ZThn16_N11QFocusFrameD1Ev
+456 (int (*)(...))QFocusFrame::_ZThn16_N11QFocusFrameD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QFocusFrame
+ size=48 align=8
+ base size=48 base align=8
+QFocusFrame (0x0x7f1d1a02faf8) 0
+ vptr=((& QFocusFrame::_ZTV11QFocusFrame) + 16)
+ QWidget (0x0x7f1d19ce64d0) 0
+ primary-for QFocusFrame (0x0x7f1d1a02faf8)
+ QObject (0x0x7f1d19cbae40) 0
+ primary-for QWidget (0x0x7f1d19ce64d0)
+ QPaintDevice (0x0x7f1d19cbaea0) 16
+ vptr=((& QFocusFrame::_ZTV11QFocusFrame) + 448)
+
+Class QFontComboBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFontComboBox::QPrivateSignal (0x0x7f1d19cf21e0) 0 empty
+
+Vtable for QFontComboBox
+QFontComboBox::_ZTV13QFontComboBox: 66 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QFontComboBox)
+16 (int (*)(...))QFontComboBox::metaObject
+24 (int (*)(...))QFontComboBox::qt_metacast
+32 (int (*)(...))QFontComboBox::qt_metacall
+40 (int (*)(...))QFontComboBox::~QFontComboBox
+48 (int (*)(...))QFontComboBox::~QFontComboBox
+56 (int (*)(...))QFontComboBox::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QFontComboBox::sizeHint
+136 (int (*)(...))QComboBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QComboBox::mousePressEvent
+176 (int (*)(...))QComboBox::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QComboBox::wheelEvent
+208 (int (*)(...))QComboBox::keyPressEvent
+216 (int (*)(...))QComboBox::keyReleaseEvent
+224 (int (*)(...))QComboBox::focusInEvent
+232 (int (*)(...))QComboBox::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QComboBox::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QComboBox::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QComboBox::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QComboBox::showEvent
+352 (int (*)(...))QComboBox::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QComboBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QComboBox::inputMethodEvent
+416 (int (*)(...))QComboBox::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QComboBox::showPopup
+440 (int (*)(...))QComboBox::hidePopup
+448 (int (*)(...))-16
+456 (int (*)(...))(& _ZTI13QFontComboBox)
+464 (int (*)(...))QFontComboBox::_ZThn16_N13QFontComboBoxD1Ev
+472 (int (*)(...))QFontComboBox::_ZThn16_N13QFontComboBoxD0Ev
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QFontComboBox
+ size=48 align=8
+ base size=48 base align=8
+QFontComboBox (0x0x7f1d1a02fb60) 0
+ vptr=((& QFontComboBox::_ZTV13QFontComboBox) + 16)
+ QComboBox (0x0x7f1d1a02fbc8) 0
+ primary-for QFontComboBox (0x0x7f1d1a02fb60)
+ QWidget (0x0x7f1d19ce6540) 0
+ primary-for QComboBox (0x0x7f1d1a02fbc8)
+ QObject (0x0x7f1d19cf2120) 0
+ primary-for QWidget (0x0x7f1d19ce6540)
+ QPaintDevice (0x0x7f1d19cf2180) 16
+ vptr=((& QFontComboBox::_ZTV13QFontComboBox) + 464)
+
+Class QFontDialog::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFontDialog::QPrivateSignal (0x0x7f1d19cf2c00) 0 empty
+
+Vtable for QFontDialog
+QFontDialog::_ZTV11QFontDialog: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFontDialog)
+16 (int (*)(...))QFontDialog::metaObject
+24 (int (*)(...))QFontDialog::qt_metacast
+32 (int (*)(...))QFontDialog::qt_metacall
+40 (int (*)(...))QFontDialog::~QFontDialog
+48 (int (*)(...))QFontDialog::~QFontDialog
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QFontDialog::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QFontDialog::setVisible
+128 (int (*)(...))QDialog::sizeHint
+136 (int (*)(...))QDialog::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QDialog::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QDialog::resizeEvent
+280 (int (*)(...))QDialog::closeEvent
+288 (int (*)(...))QDialog::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QDialog::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFontDialog::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDialog::open
+440 (int (*)(...))QDialog::exec
+448 (int (*)(...))QFontDialog::done
+456 (int (*)(...))QDialog::accept
+464 (int (*)(...))QDialog::reject
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI11QFontDialog)
+488 (int (*)(...))QFontDialog::_ZThn16_N11QFontDialogD1Ev
+496 (int (*)(...))QFontDialog::_ZThn16_N11QFontDialogD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QFontDialog
+ size=48 align=8
+ base size=48 base align=8
+QFontDialog (0x0x7f1d1a02fd68) 0
+ vptr=((& QFontDialog::_ZTV11QFontDialog) + 16)
+ QDialog (0x0x7f1d1a02fdd0) 0
+ primary-for QFontDialog (0x0x7f1d1a02fd68)
+ QWidget (0x0x7f1d19d13000) 0
+ primary-for QDialog (0x0x7f1d1a02fdd0)
+ QObject (0x0x7f1d19cf2b40) 0
+ primary-for QWidget (0x0x7f1d19d13000)
+ QPaintDevice (0x0x7f1d19cf2ba0) 16
+ vptr=((& QFontDialog::_ZTV11QFontDialog) + 488)
+
+Class QFormLayout::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFormLayout::QPrivateSignal (0x0x7f1d19d32840) 0 empty
+
+Class QFormLayout::TakeRowResult
+ size=16 align=8
+ base size=16 base align=8
+QFormLayout::TakeRowResult (0x0x7f1d19d328a0) 0
+
+Vtable for QFormLayout
+QFormLayout::_ZTV11QFormLayout: 50 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFormLayout)
+16 (int (*)(...))QFormLayout::metaObject
+24 (int (*)(...))QFormLayout::qt_metacast
+32 (int (*)(...))QFormLayout::qt_metacall
+40 (int (*)(...))QFormLayout::~QFormLayout
+48 (int (*)(...))QFormLayout::~QFormLayout
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QLayout::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFormLayout::invalidate
+120 (int (*)(...))QLayout::geometry
+128 (int (*)(...))QFormLayout::addItem
+136 (int (*)(...))QFormLayout::expandingDirections
+144 (int (*)(...))QFormLayout::minimumSize
+152 (int (*)(...))QLayout::maximumSize
+160 (int (*)(...))QFormLayout::setGeometry
+168 (int (*)(...))QFormLayout::itemAt
+176 (int (*)(...))QFormLayout::takeAt
+184 (int (*)(...))QLayout::indexOf
+192 (int (*)(...))QFormLayout::count
+200 (int (*)(...))QLayout::isEmpty
+208 (int (*)(...))QLayout::controlTypes
+216 (int (*)(...))QLayout::layout
+224 (int (*)(...))QFormLayout::sizeHint
+232 (int (*)(...))QFormLayout::hasHeightForWidth
+240 (int (*)(...))QFormLayout::heightForWidth
+248 (int (*)(...))-16
+256 (int (*)(...))(& _ZTI11QFormLayout)
+264 (int (*)(...))QFormLayout::_ZThn16_N11QFormLayoutD1Ev
+272 (int (*)(...))QFormLayout::_ZThn16_N11QFormLayoutD0Ev
+280 (int (*)(...))QFormLayout::_ZThn16_NK11QFormLayout8sizeHintEv
+288 (int (*)(...))QFormLayout::_ZThn16_NK11QFormLayout11minimumSizeEv
+296 (int (*)(...))QLayout::_ZThn16_NK7QLayout11maximumSizeEv
+304 (int (*)(...))QFormLayout::_ZThn16_NK11QFormLayout19expandingDirectionsEv
+312 (int (*)(...))QFormLayout::_ZThn16_N11QFormLayout11setGeometryERK5QRect
+320 (int (*)(...))QLayout::_ZThn16_NK7QLayout8geometryEv
+328 (int (*)(...))QLayout::_ZThn16_NK7QLayout7isEmptyEv
+336 (int (*)(...))QFormLayout::_ZThn16_NK11QFormLayout17hasHeightForWidthEv
+344 (int (*)(...))QFormLayout::_ZThn16_NK11QFormLayout14heightForWidthEi
+352 (int (*)(...))QLayoutItem::minimumHeightForWidth
+360 (int (*)(...))QFormLayout::_ZThn16_N11QFormLayout10invalidateEv
+368 (int (*)(...))QLayoutItem::widget
+376 (int (*)(...))QLayout::_ZThn16_N7QLayout6layoutEv
+384 (int (*)(...))QLayoutItem::spacerItem
+392 (int (*)(...))QLayout::_ZThn16_NK7QLayout12controlTypesEv
+
+Class QFormLayout
+ size=32 align=8
+ base size=28 base align=8
+QFormLayout (0x0x7f1d1a02ff08) 0
+ vptr=((& QFormLayout::_ZTV11QFormLayout) + 16)
+ QLayout (0x0x7f1d19d13d20) 0
+ primary-for QFormLayout (0x0x7f1d1a02ff08)
+ QObject (0x0x7f1d19d32780) 0
+ primary-for QLayout (0x0x7f1d19d13d20)
+ QLayoutItem (0x0x7f1d19d327e0) 16
+ vptr=((& QFormLayout::_ZTV11QFormLayout) + 264)
+
+Class QGesture::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGesture::QPrivateSignal (0x0x7f1d19d74cc0) 0 empty
+
+Vtable for QGesture
+QGesture::_ZTV8QGesture: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QGesture)
+16 (int (*)(...))QGesture::metaObject
+24 (int (*)(...))QGesture::qt_metacast
+32 (int (*)(...))QGesture::qt_metacall
+40 (int (*)(...))QGesture::~QGesture
+48 (int (*)(...))QGesture::~QGesture
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QGesture
+ size=16 align=8
+ base size=16 base align=8
+QGesture (0x0x7f1d19d7c270) 0
+ vptr=((& QGesture::_ZTV8QGesture) + 16)
+ QObject (0x0x7f1d19d74c60) 0
+ primary-for QGesture (0x0x7f1d19d7c270)
+
+Class QPanGesture::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPanGesture::QPrivateSignal (0x0x7f1d19d74f00) 0 empty
+
+Vtable for QPanGesture
+QPanGesture::_ZTV11QPanGesture: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QPanGesture)
+16 (int (*)(...))QPanGesture::metaObject
+24 (int (*)(...))QPanGesture::qt_metacast
+32 (int (*)(...))QPanGesture::qt_metacall
+40 (int (*)(...))QPanGesture::~QPanGesture
+48 (int (*)(...))QPanGesture::~QPanGesture
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QPanGesture
+ size=16 align=8
+ base size=16 base align=8
+QPanGesture (0x0x7f1d19d7c2d8) 0
+ vptr=((& QPanGesture::_ZTV11QPanGesture) + 16)
+ QGesture (0x0x7f1d19d7c340) 0
+ primary-for QPanGesture (0x0x7f1d19d7c2d8)
+ QObject (0x0x7f1d19d74ea0) 0
+ primary-for QGesture (0x0x7f1d19d7c340)
+
+Class QPinchGesture::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPinchGesture::QPrivateSignal (0x0x7f1d19d96180) 0 empty
+
+Vtable for QPinchGesture
+QPinchGesture::_ZTV13QPinchGesture: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QPinchGesture)
+16 (int (*)(...))QPinchGesture::metaObject
+24 (int (*)(...))QPinchGesture::qt_metacast
+32 (int (*)(...))QPinchGesture::qt_metacall
+40 (int (*)(...))QPinchGesture::~QPinchGesture
+48 (int (*)(...))QPinchGesture::~QPinchGesture
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QPinchGesture
+ size=16 align=8
+ base size=16 base align=8
+QPinchGesture (0x0x7f1d19d7c3a8) 0
+ vptr=((& QPinchGesture::_ZTV13QPinchGesture) + 16)
+ QGesture (0x0x7f1d19d7c410) 0
+ primary-for QPinchGesture (0x0x7f1d19d7c3a8)
+ QObject (0x0x7f1d19d96120) 0
+ primary-for QGesture (0x0x7f1d19d7c410)
+
+Class QSwipeGesture::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSwipeGesture::QPrivateSignal (0x0x7f1d19d96de0) 0 empty
+
+Vtable for QSwipeGesture
+QSwipeGesture::_ZTV13QSwipeGesture: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSwipeGesture)
+16 (int (*)(...))QSwipeGesture::metaObject
+24 (int (*)(...))QSwipeGesture::qt_metacast
+32 (int (*)(...))QSwipeGesture::qt_metacall
+40 (int (*)(...))QSwipeGesture::~QSwipeGesture
+48 (int (*)(...))QSwipeGesture::~QSwipeGesture
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSwipeGesture
+ size=16 align=8
+ base size=16 base align=8
+QSwipeGesture (0x0x7f1d19d7c548) 0
+ vptr=((& QSwipeGesture::_ZTV13QSwipeGesture) + 16)
+ QGesture (0x0x7f1d19d7c5b0) 0
+ primary-for QSwipeGesture (0x0x7f1d19d7c548)
+ QObject (0x0x7f1d19d96d80) 0
+ primary-for QGesture (0x0x7f1d19d7c5b0)
+
+Class QTapGesture::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTapGesture::QPrivateSignal (0x0x7f1d19dc4180) 0 empty
+
+Vtable for QTapGesture
+QTapGesture::_ZTV11QTapGesture: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTapGesture)
+16 (int (*)(...))QTapGesture::metaObject
+24 (int (*)(...))QTapGesture::qt_metacast
+32 (int (*)(...))QTapGesture::qt_metacall
+40 (int (*)(...))QTapGesture::~QTapGesture
+48 (int (*)(...))QTapGesture::~QTapGesture
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTapGesture
+ size=16 align=8
+ base size=16 base align=8
+QTapGesture (0x0x7f1d19d7c618) 0
+ vptr=((& QTapGesture::_ZTV11QTapGesture) + 16)
+ QGesture (0x0x7f1d19d7c680) 0
+ primary-for QTapGesture (0x0x7f1d19d7c618)
+ QObject (0x0x7f1d19dc4120) 0
+ primary-for QGesture (0x0x7f1d19d7c680)
+
+Class QTapAndHoldGesture::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTapAndHoldGesture::QPrivateSignal (0x0x7f1d19dc43c0) 0 empty
+
+Vtable for QTapAndHoldGesture
+QTapAndHoldGesture::_ZTV18QTapAndHoldGesture: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QTapAndHoldGesture)
+16 (int (*)(...))QTapAndHoldGesture::metaObject
+24 (int (*)(...))QTapAndHoldGesture::qt_metacast
+32 (int (*)(...))QTapAndHoldGesture::qt_metacall
+40 (int (*)(...))QTapAndHoldGesture::~QTapAndHoldGesture
+48 (int (*)(...))QTapAndHoldGesture::~QTapAndHoldGesture
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTapAndHoldGesture
+ size=16 align=8
+ base size=16 base align=8
+QTapAndHoldGesture (0x0x7f1d19d7c6e8) 0
+ vptr=((& QTapAndHoldGesture::_ZTV18QTapAndHoldGesture) + 16)
+ QGesture (0x0x7f1d19d7c750) 0
+ primary-for QTapAndHoldGesture (0x0x7f1d19d7c6e8)
+ QObject (0x0x7f1d19dc4360) 0
+ primary-for QGesture (0x0x7f1d19d7c750)
+
+Vtable for QGestureEvent
+QGestureEvent::_ZTV13QGestureEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QGestureEvent)
+16 (int (*)(...))QGestureEvent::~QGestureEvent
+24 (int (*)(...))QGestureEvent::~QGestureEvent
+
+Class QGestureEvent
+ size=56 align=8
+ base size=56 base align=8
+QGestureEvent (0x0x7f1d19d7c7b8) 0
+ vptr=((& QGestureEvent::_ZTV13QGestureEvent) + 16)
+ QEvent (0x0x7f1d19dc45a0) 0
+ primary-for QGestureEvent (0x0x7f1d19d7c7b8)
+
+Vtable for QGestureRecognizer
+QGestureRecognizer::_ZTV18QGestureRecognizer: 7 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QGestureRecognizer)
+16 0
+24 0
+32 (int (*)(...))QGestureRecognizer::create
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))QGestureRecognizer::reset
+
+Class QGestureRecognizer
+ size=8 align=8
+ base size=8 base align=8
+QGestureRecognizer (0x0x7f1d19dc4a20) 0 nearly-empty
+ vptr=((& QGestureRecognizer::_ZTV18QGestureRecognizer) + 16)
+
+Vtable for QGraphicsItem
+QGraphicsItem::_ZTV13QGraphicsItem: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QGraphicsItem)
+16 0
+24 0
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))QGraphicsItem::shape
+56 (int (*)(...))QGraphicsItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QGraphicsItem::isObscuredBy
+88 (int (*)(...))QGraphicsItem::opaqueArea
+96 (int (*)(...))__cxa_pure_virtual
+104 (int (*)(...))QGraphicsItem::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsItem::supportsExtension
+296 (int (*)(...))QGraphicsItem::setExtension
+304 (int (*)(...))QGraphicsItem::extension
+
+Class QGraphicsItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsItem (0x0x7f1d19e34180) 0
+ vptr=((& QGraphicsItem::_ZTV13QGraphicsItem) + 16)
+
+Class QGraphicsObject::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsObject::QPrivateSignal (0x0x7f1d19e92720) 0 empty
+
+Vtable for QGraphicsObject
+QGraphicsObject::_ZTV15QGraphicsObject: 53 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QGraphicsObject)
+16 (int (*)(...))QGraphicsObject::metaObject
+24 (int (*)(...))QGraphicsObject::qt_metacast
+32 (int (*)(...))QGraphicsObject::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QGraphicsObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))-16
+120 (int (*)(...))(& _ZTI15QGraphicsObject)
+128 0
+136 0
+144 (int (*)(...))QGraphicsItem::advance
+152 (int (*)(...))__cxa_pure_virtual
+160 (int (*)(...))QGraphicsItem::shape
+168 (int (*)(...))QGraphicsItem::contains
+176 (int (*)(...))QGraphicsItem::collidesWithItem
+184 (int (*)(...))QGraphicsItem::collidesWithPath
+192 (int (*)(...))QGraphicsItem::isObscuredBy
+200 (int (*)(...))QGraphicsItem::opaqueArea
+208 (int (*)(...))__cxa_pure_virtual
+216 (int (*)(...))QGraphicsItem::type
+224 (int (*)(...))QGraphicsItem::sceneEventFilter
+232 (int (*)(...))QGraphicsItem::sceneEvent
+240 (int (*)(...))QGraphicsItem::contextMenuEvent
+248 (int (*)(...))QGraphicsItem::dragEnterEvent
+256 (int (*)(...))QGraphicsItem::dragLeaveEvent
+264 (int (*)(...))QGraphicsItem::dragMoveEvent
+272 (int (*)(...))QGraphicsItem::dropEvent
+280 (int (*)(...))QGraphicsItem::focusInEvent
+288 (int (*)(...))QGraphicsItem::focusOutEvent
+296 (int (*)(...))QGraphicsItem::hoverEnterEvent
+304 (int (*)(...))QGraphicsItem::hoverMoveEvent
+312 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+320 (int (*)(...))QGraphicsItem::keyPressEvent
+328 (int (*)(...))QGraphicsItem::keyReleaseEvent
+336 (int (*)(...))QGraphicsItem::mousePressEvent
+344 (int (*)(...))QGraphicsItem::mouseMoveEvent
+352 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+360 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+368 (int (*)(...))QGraphicsItem::wheelEvent
+376 (int (*)(...))QGraphicsItem::inputMethodEvent
+384 (int (*)(...))QGraphicsItem::inputMethodQuery
+392 (int (*)(...))QGraphicsItem::itemChange
+400 (int (*)(...))QGraphicsItem::supportsExtension
+408 (int (*)(...))QGraphicsItem::setExtension
+416 (int (*)(...))QGraphicsItem::extension
+
+Class QGraphicsObject
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsObject (0x0x7f1d19e38bd0) 0
+ vptr=((& QGraphicsObject::_ZTV15QGraphicsObject) + 16)
+ QObject (0x0x7f1d19e92660) 0
+ primary-for QGraphicsObject (0x0x7f1d19e38bd0)
+ QGraphicsItem (0x0x7f1d19e926c0) 16
+ vptr=((& QGraphicsObject::_ZTV15QGraphicsObject) + 128)
+
+Vtable for QAbstractGraphicsShapeItem
+QAbstractGraphicsShapeItem::_ZTV26QAbstractGraphicsShapeItem: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAbstractGraphicsShapeItem)
+16 0
+24 0
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))QGraphicsItem::shape
+56 (int (*)(...))QGraphicsItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QAbstractGraphicsShapeItem::isObscuredBy
+88 (int (*)(...))QAbstractGraphicsShapeItem::opaqueArea
+96 (int (*)(...))__cxa_pure_virtual
+104 (int (*)(...))QGraphicsItem::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsItem::supportsExtension
+296 (int (*)(...))QGraphicsItem::setExtension
+304 (int (*)(...))QGraphicsItem::extension
+
+Class QAbstractGraphicsShapeItem
+ size=16 align=8
+ base size=16 base align=8
+QAbstractGraphicsShapeItem (0x0x7f1d19d7ca28) 0
+ vptr=((& QAbstractGraphicsShapeItem::_ZTV26QAbstractGraphicsShapeItem) + 16)
+ QGraphicsItem (0x0x7f1d19e92840) 0
+ primary-for QAbstractGraphicsShapeItem (0x0x7f1d19d7ca28)
+
+Vtable for QGraphicsPathItem
+QGraphicsPathItem::_ZTV17QGraphicsPathItem: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QGraphicsPathItem)
+16 (int (*)(...))QGraphicsPathItem::~QGraphicsPathItem
+24 (int (*)(...))QGraphicsPathItem::~QGraphicsPathItem
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))QGraphicsPathItem::boundingRect
+48 (int (*)(...))QGraphicsPathItem::shape
+56 (int (*)(...))QGraphicsPathItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QGraphicsPathItem::isObscuredBy
+88 (int (*)(...))QGraphicsPathItem::opaqueArea
+96 (int (*)(...))QGraphicsPathItem::paint
+104 (int (*)(...))QGraphicsPathItem::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsPathItem::supportsExtension
+296 (int (*)(...))QGraphicsPathItem::setExtension
+304 (int (*)(...))QGraphicsPathItem::extension
+
+Class QGraphicsPathItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsPathItem (0x0x7f1d19d7ca90) 0
+ vptr=((& QGraphicsPathItem::_ZTV17QGraphicsPathItem) + 16)
+ QAbstractGraphicsShapeItem (0x0x7f1d19d7caf8) 0
+ primary-for QGraphicsPathItem (0x0x7f1d19d7ca90)
+ QGraphicsItem (0x0x7f1d19e92960) 0
+ primary-for QAbstractGraphicsShapeItem (0x0x7f1d19d7caf8)
+
+Vtable for QGraphicsRectItem
+QGraphicsRectItem::_ZTV17QGraphicsRectItem: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QGraphicsRectItem)
+16 (int (*)(...))QGraphicsRectItem::~QGraphicsRectItem
+24 (int (*)(...))QGraphicsRectItem::~QGraphicsRectItem
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))QGraphicsRectItem::boundingRect
+48 (int (*)(...))QGraphicsRectItem::shape
+56 (int (*)(...))QGraphicsRectItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QGraphicsRectItem::isObscuredBy
+88 (int (*)(...))QGraphicsRectItem::opaqueArea
+96 (int (*)(...))QGraphicsRectItem::paint
+104 (int (*)(...))QGraphicsRectItem::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsRectItem::supportsExtension
+296 (int (*)(...))QGraphicsRectItem::setExtension
+304 (int (*)(...))QGraphicsRectItem::extension
+
+Class QGraphicsRectItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsRectItem (0x0x7f1d19d7cb60) 0
+ vptr=((& QGraphicsRectItem::_ZTV17QGraphicsRectItem) + 16)
+ QAbstractGraphicsShapeItem (0x0x7f1d19d7cbc8) 0
+ primary-for QGraphicsRectItem (0x0x7f1d19d7cb60)
+ QGraphicsItem (0x0x7f1d19e92a80) 0
+ primary-for QAbstractGraphicsShapeItem (0x0x7f1d19d7cbc8)
+
+Vtable for QGraphicsEllipseItem
+QGraphicsEllipseItem::_ZTV20QGraphicsEllipseItem: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QGraphicsEllipseItem)
+16 (int (*)(...))QGraphicsEllipseItem::~QGraphicsEllipseItem
+24 (int (*)(...))QGraphicsEllipseItem::~QGraphicsEllipseItem
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))QGraphicsEllipseItem::boundingRect
+48 (int (*)(...))QGraphicsEllipseItem::shape
+56 (int (*)(...))QGraphicsEllipseItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QGraphicsEllipseItem::isObscuredBy
+88 (int (*)(...))QGraphicsEllipseItem::opaqueArea
+96 (int (*)(...))QGraphicsEllipseItem::paint
+104 (int (*)(...))QGraphicsEllipseItem::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsEllipseItem::supportsExtension
+296 (int (*)(...))QGraphicsEllipseItem::setExtension
+304 (int (*)(...))QGraphicsEllipseItem::extension
+
+Class QGraphicsEllipseItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsEllipseItem (0x0x7f1d19d7cc30) 0
+ vptr=((& QGraphicsEllipseItem::_ZTV20QGraphicsEllipseItem) + 16)
+ QAbstractGraphicsShapeItem (0x0x7f1d19d7cc98) 0
+ primary-for QGraphicsEllipseItem (0x0x7f1d19d7cc30)
+ QGraphicsItem (0x0x7f1d19e92c00) 0
+ primary-for QAbstractGraphicsShapeItem (0x0x7f1d19d7cc98)
+
+Vtable for QGraphicsPolygonItem
+QGraphicsPolygonItem::_ZTV20QGraphicsPolygonItem: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QGraphicsPolygonItem)
+16 (int (*)(...))QGraphicsPolygonItem::~QGraphicsPolygonItem
+24 (int (*)(...))QGraphicsPolygonItem::~QGraphicsPolygonItem
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))QGraphicsPolygonItem::boundingRect
+48 (int (*)(...))QGraphicsPolygonItem::shape
+56 (int (*)(...))QGraphicsPolygonItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QGraphicsPolygonItem::isObscuredBy
+88 (int (*)(...))QGraphicsPolygonItem::opaqueArea
+96 (int (*)(...))QGraphicsPolygonItem::paint
+104 (int (*)(...))QGraphicsPolygonItem::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsPolygonItem::supportsExtension
+296 (int (*)(...))QGraphicsPolygonItem::setExtension
+304 (int (*)(...))QGraphicsPolygonItem::extension
+
+Class QGraphicsPolygonItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsPolygonItem (0x0x7f1d19d7cd00) 0
+ vptr=((& QGraphicsPolygonItem::_ZTV20QGraphicsPolygonItem) + 16)
+ QAbstractGraphicsShapeItem (0x0x7f1d19d7cd68) 0
+ primary-for QGraphicsPolygonItem (0x0x7f1d19d7cd00)
+ QGraphicsItem (0x0x7f1d19e92d80) 0
+ primary-for QAbstractGraphicsShapeItem (0x0x7f1d19d7cd68)
+
+Vtable for QGraphicsLineItem
+QGraphicsLineItem::_ZTV17QGraphicsLineItem: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QGraphicsLineItem)
+16 (int (*)(...))QGraphicsLineItem::~QGraphicsLineItem
+24 (int (*)(...))QGraphicsLineItem::~QGraphicsLineItem
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))QGraphicsLineItem::boundingRect
+48 (int (*)(...))QGraphicsLineItem::shape
+56 (int (*)(...))QGraphicsLineItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QGraphicsLineItem::isObscuredBy
+88 (int (*)(...))QGraphicsLineItem::opaqueArea
+96 (int (*)(...))QGraphicsLineItem::paint
+104 (int (*)(...))QGraphicsLineItem::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsLineItem::supportsExtension
+296 (int (*)(...))QGraphicsLineItem::setExtension
+304 (int (*)(...))QGraphicsLineItem::extension
+
+Class QGraphicsLineItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsLineItem (0x0x7f1d19d7cdd0) 0
+ vptr=((& QGraphicsLineItem::_ZTV17QGraphicsLineItem) + 16)
+ QGraphicsItem (0x0x7f1d19e92ea0) 0
+ primary-for QGraphicsLineItem (0x0x7f1d19d7cdd0)
+
+Vtable for QGraphicsPixmapItem
+QGraphicsPixmapItem::_ZTV19QGraphicsPixmapItem: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QGraphicsPixmapItem)
+16 (int (*)(...))QGraphicsPixmapItem::~QGraphicsPixmapItem
+24 (int (*)(...))QGraphicsPixmapItem::~QGraphicsPixmapItem
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))QGraphicsPixmapItem::boundingRect
+48 (int (*)(...))QGraphicsPixmapItem::shape
+56 (int (*)(...))QGraphicsPixmapItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QGraphicsPixmapItem::isObscuredBy
+88 (int (*)(...))QGraphicsPixmapItem::opaqueArea
+96 (int (*)(...))QGraphicsPixmapItem::paint
+104 (int (*)(...))QGraphicsPixmapItem::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsPixmapItem::supportsExtension
+296 (int (*)(...))QGraphicsPixmapItem::setExtension
+304 (int (*)(...))QGraphicsPixmapItem::extension
+
+Class QGraphicsPixmapItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsPixmapItem (0x0x7f1d19d7ce38) 0
+ vptr=((& QGraphicsPixmapItem::_ZTV19QGraphicsPixmapItem) + 16)
+ QGraphicsItem (0x0x7f1d19adf060) 0
+ primary-for QGraphicsPixmapItem (0x0x7f1d19d7ce38)
+
+Class QGraphicsTextItem::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsTextItem::QPrivateSignal (0x0x7f1d19adf2a0) 0 empty
+
+Vtable for QGraphicsTextItem
+QGraphicsTextItem::_ZTV17QGraphicsTextItem: 82 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QGraphicsTextItem)
+16 (int (*)(...))QGraphicsTextItem::metaObject
+24 (int (*)(...))QGraphicsTextItem::qt_metacast
+32 (int (*)(...))QGraphicsTextItem::qt_metacall
+40 (int (*)(...))QGraphicsTextItem::~QGraphicsTextItem
+48 (int (*)(...))QGraphicsTextItem::~QGraphicsTextItem
+56 (int (*)(...))QGraphicsObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsTextItem::boundingRect
+120 (int (*)(...))QGraphicsTextItem::shape
+128 (int (*)(...))QGraphicsTextItem::contains
+136 (int (*)(...))QGraphicsTextItem::paint
+144 (int (*)(...))QGraphicsTextItem::isObscuredBy
+152 (int (*)(...))QGraphicsTextItem::opaqueArea
+160 (int (*)(...))QGraphicsTextItem::type
+168 (int (*)(...))QGraphicsTextItem::sceneEvent
+176 (int (*)(...))QGraphicsTextItem::mousePressEvent
+184 (int (*)(...))QGraphicsTextItem::mouseMoveEvent
+192 (int (*)(...))QGraphicsTextItem::mouseReleaseEvent
+200 (int (*)(...))QGraphicsTextItem::mouseDoubleClickEvent
+208 (int (*)(...))QGraphicsTextItem::contextMenuEvent
+216 (int (*)(...))QGraphicsTextItem::keyPressEvent
+224 (int (*)(...))QGraphicsTextItem::keyReleaseEvent
+232 (int (*)(...))QGraphicsTextItem::focusInEvent
+240 (int (*)(...))QGraphicsTextItem::focusOutEvent
+248 (int (*)(...))QGraphicsTextItem::dragEnterEvent
+256 (int (*)(...))QGraphicsTextItem::dragLeaveEvent
+264 (int (*)(...))QGraphicsTextItem::dragMoveEvent
+272 (int (*)(...))QGraphicsTextItem::dropEvent
+280 (int (*)(...))QGraphicsTextItem::inputMethodEvent
+288 (int (*)(...))QGraphicsTextItem::hoverEnterEvent
+296 (int (*)(...))QGraphicsTextItem::hoverMoveEvent
+304 (int (*)(...))QGraphicsTextItem::hoverLeaveEvent
+312 (int (*)(...))QGraphicsTextItem::inputMethodQuery
+320 (int (*)(...))QGraphicsTextItem::supportsExtension
+328 (int (*)(...))QGraphicsTextItem::setExtension
+336 (int (*)(...))QGraphicsTextItem::extension
+344 (int (*)(...))-16
+352 (int (*)(...))(& _ZTI17QGraphicsTextItem)
+360 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItemD1Ev
+368 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItemD0Ev
+376 (int (*)(...))QGraphicsItem::advance
+384 (int (*)(...))QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem12boundingRectEv
+392 (int (*)(...))QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem5shapeEv
+400 (int (*)(...))QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem8containsERK7QPointF
+408 (int (*)(...))QGraphicsItem::collidesWithItem
+416 (int (*)(...))QGraphicsItem::collidesWithPath
+424 (int (*)(...))QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem12isObscuredByEPK13QGraphicsItem
+432 (int (*)(...))QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem10opaqueAreaEv
+440 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget
+448 (int (*)(...))QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem4typeEv
+456 (int (*)(...))QGraphicsItem::sceneEventFilter
+464 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem10sceneEventEP6QEvent
+472 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem16contextMenuEventEP30QGraphicsSceneContextMenuEvent
+480 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem14dragEnterEventEP27QGraphicsSceneDragDropEvent
+488 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem14dragLeaveEventEP27QGraphicsSceneDragDropEvent
+496 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem13dragMoveEventEP27QGraphicsSceneDragDropEvent
+504 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem9dropEventEP27QGraphicsSceneDragDropEvent
+512 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem12focusInEventEP11QFocusEvent
+520 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem13focusOutEventEP11QFocusEvent
+528 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem15hoverEnterEventEP24QGraphicsSceneHoverEvent
+536 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem14hoverMoveEventEP24QGraphicsSceneHoverEvent
+544 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem15hoverLeaveEventEP24QGraphicsSceneHoverEvent
+552 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem13keyPressEventEP9QKeyEvent
+560 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem15keyReleaseEventEP9QKeyEvent
+568 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem15mousePressEventEP24QGraphicsSceneMouseEvent
+576 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem14mouseMoveEventEP24QGraphicsSceneMouseEvent
+584 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem17mouseReleaseEventEP24QGraphicsSceneMouseEvent
+592 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent
+600 (int (*)(...))QGraphicsItem::wheelEvent
+608 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem16inputMethodEventEP17QInputMethodEvent
+616 (int (*)(...))QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem16inputMethodQueryEN2Qt16InputMethodQueryE
+624 (int (*)(...))QGraphicsItem::itemChange
+632 (int (*)(...))QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem17supportsExtensionEN13QGraphicsItem9ExtensionE
+640 (int (*)(...))QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem12setExtensionEN13QGraphicsItem9ExtensionERK8QVariant
+648 (int (*)(...))QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem9extensionERK8QVariant
+
+Class QGraphicsTextItem
+ size=40 align=8
+ base size=40 base align=8
+QGraphicsTextItem (0x0x7f1d19d7cea0) 0
+ vptr=((& QGraphicsTextItem::_ZTV17QGraphicsTextItem) + 16)
+ QGraphicsObject (0x0x7f1d19abc540) 0
+ primary-for QGraphicsTextItem (0x0x7f1d19d7cea0)
+ QObject (0x0x7f1d19adf1e0) 0
+ primary-for QGraphicsObject (0x0x7f1d19abc540)
+ QGraphicsItem (0x0x7f1d19adf240) 16
+ vptr=((& QGraphicsTextItem::_ZTV17QGraphicsTextItem) + 360)
+
+Vtable for QGraphicsSimpleTextItem
+QGraphicsSimpleTextItem::_ZTV23QGraphicsSimpleTextItem: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QGraphicsSimpleTextItem)
+16 (int (*)(...))QGraphicsSimpleTextItem::~QGraphicsSimpleTextItem
+24 (int (*)(...))QGraphicsSimpleTextItem::~QGraphicsSimpleTextItem
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))QGraphicsSimpleTextItem::boundingRect
+48 (int (*)(...))QGraphicsSimpleTextItem::shape
+56 (int (*)(...))QGraphicsSimpleTextItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QGraphicsSimpleTextItem::isObscuredBy
+88 (int (*)(...))QGraphicsSimpleTextItem::opaqueArea
+96 (int (*)(...))QGraphicsSimpleTextItem::paint
+104 (int (*)(...))QGraphicsSimpleTextItem::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsSimpleTextItem::supportsExtension
+296 (int (*)(...))QGraphicsSimpleTextItem::setExtension
+304 (int (*)(...))QGraphicsSimpleTextItem::extension
+
+Class QGraphicsSimpleTextItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsSimpleTextItem (0x0x7f1d19b02000) 0
+ vptr=((& QGraphicsSimpleTextItem::_ZTV23QGraphicsSimpleTextItem) + 16)
+ QAbstractGraphicsShapeItem (0x0x7f1d19b02068) 0
+ primary-for QGraphicsSimpleTextItem (0x0x7f1d19b02000)
+ QGraphicsItem (0x0x7f1d19adf5a0) 0
+ primary-for QAbstractGraphicsShapeItem (0x0x7f1d19b02068)
+
+Vtable for QGraphicsItemGroup
+QGraphicsItemGroup::_ZTV18QGraphicsItemGroup: 39 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QGraphicsItemGroup)
+16 (int (*)(...))QGraphicsItemGroup::~QGraphicsItemGroup
+24 (int (*)(...))QGraphicsItemGroup::~QGraphicsItemGroup
+32 (int (*)(...))QGraphicsItem::advance
+40 (int (*)(...))QGraphicsItemGroup::boundingRect
+48 (int (*)(...))QGraphicsItem::shape
+56 (int (*)(...))QGraphicsItem::contains
+64 (int (*)(...))QGraphicsItem::collidesWithItem
+72 (int (*)(...))QGraphicsItem::collidesWithPath
+80 (int (*)(...))QGraphicsItemGroup::isObscuredBy
+88 (int (*)(...))QGraphicsItemGroup::opaqueArea
+96 (int (*)(...))QGraphicsItemGroup::paint
+104 (int (*)(...))QGraphicsItemGroup::type
+112 (int (*)(...))QGraphicsItem::sceneEventFilter
+120 (int (*)(...))QGraphicsItem::sceneEvent
+128 (int (*)(...))QGraphicsItem::contextMenuEvent
+136 (int (*)(...))QGraphicsItem::dragEnterEvent
+144 (int (*)(...))QGraphicsItem::dragLeaveEvent
+152 (int (*)(...))QGraphicsItem::dragMoveEvent
+160 (int (*)(...))QGraphicsItem::dropEvent
+168 (int (*)(...))QGraphicsItem::focusInEvent
+176 (int (*)(...))QGraphicsItem::focusOutEvent
+184 (int (*)(...))QGraphicsItem::hoverEnterEvent
+192 (int (*)(...))QGraphicsItem::hoverMoveEvent
+200 (int (*)(...))QGraphicsItem::hoverLeaveEvent
+208 (int (*)(...))QGraphicsItem::keyPressEvent
+216 (int (*)(...))QGraphicsItem::keyReleaseEvent
+224 (int (*)(...))QGraphicsItem::mousePressEvent
+232 (int (*)(...))QGraphicsItem::mouseMoveEvent
+240 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+248 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+256 (int (*)(...))QGraphicsItem::wheelEvent
+264 (int (*)(...))QGraphicsItem::inputMethodEvent
+272 (int (*)(...))QGraphicsItem::inputMethodQuery
+280 (int (*)(...))QGraphicsItem::itemChange
+288 (int (*)(...))QGraphicsItem::supportsExtension
+296 (int (*)(...))QGraphicsItem::setExtension
+304 (int (*)(...))QGraphicsItem::extension
+
+Class QGraphicsItemGroup
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsItemGroup (0x0x7f1d19b020d0) 0
+ vptr=((& QGraphicsItemGroup::_ZTV18QGraphicsItemGroup) + 16)
+ QGraphicsItem (0x0x7f1d19adf6c0) 0
+ primary-for QGraphicsItemGroup (0x0x7f1d19b020d0)
+
+Vtable for QGraphicsLayoutItem
+QGraphicsLayoutItem::_ZTV19QGraphicsLayoutItem: 8 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QGraphicsLayoutItem)
+16 0
+24 0
+32 (int (*)(...))QGraphicsLayoutItem::setGeometry
+40 (int (*)(...))QGraphicsLayoutItem::getContentsMargins
+48 (int (*)(...))QGraphicsLayoutItem::updateGeometry
+56 (int (*)(...))__cxa_pure_virtual
+
+Class QGraphicsLayoutItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsLayoutItem (0x0x7f1d19adfa80) 0
+ vptr=((& QGraphicsLayoutItem::_ZTV19QGraphicsLayoutItem) + 16)
+
+Vtable for QGraphicsLayout
+QGraphicsLayout::_ZTV15QGraphicsLayout: 13 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QGraphicsLayout)
+16 0
+24 0
+32 (int (*)(...))QGraphicsLayoutItem::setGeometry
+40 (int (*)(...))QGraphicsLayout::getContentsMargins
+48 (int (*)(...))QGraphicsLayout::updateGeometry
+56 (int (*)(...))__cxa_pure_virtual
+64 (int (*)(...))QGraphicsLayout::invalidate
+72 (int (*)(...))QGraphicsLayout::widgetEvent
+80 (int (*)(...))__cxa_pure_virtual
+88 (int (*)(...))__cxa_pure_virtual
+96 (int (*)(...))__cxa_pure_virtual
+
+Class QGraphicsLayout
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsLayout (0x0x7f1d19b02138) 0
+ vptr=((& QGraphicsLayout::_ZTV15QGraphicsLayout) + 16)
+ QGraphicsLayoutItem (0x0x7f1d19b30180) 0
+ primary-for QGraphicsLayout (0x0x7f1d19b02138)
+
+Class QGraphicsAnchor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsAnchor::QPrivateSignal (0x0x7f1d19b30480) 0 empty
+
+Vtable for QGraphicsAnchor
+QGraphicsAnchor::_ZTV15QGraphicsAnchor: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QGraphicsAnchor)
+16 (int (*)(...))QGraphicsAnchor::metaObject
+24 (int (*)(...))QGraphicsAnchor::qt_metacast
+32 (int (*)(...))QGraphicsAnchor::qt_metacall
+40 (int (*)(...))QGraphicsAnchor::~QGraphicsAnchor
+48 (int (*)(...))QGraphicsAnchor::~QGraphicsAnchor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QGraphicsAnchor
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsAnchor (0x0x7f1d19b021a0) 0
+ vptr=((& QGraphicsAnchor::_ZTV15QGraphicsAnchor) + 16)
+ QObject (0x0x7f1d19b30420) 0
+ primary-for QGraphicsAnchor (0x0x7f1d19b021a0)
+
+Vtable for QGraphicsAnchorLayout
+QGraphicsAnchorLayout::_ZTV21QGraphicsAnchorLayout: 13 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QGraphicsAnchorLayout)
+16 (int (*)(...))QGraphicsAnchorLayout::~QGraphicsAnchorLayout
+24 (int (*)(...))QGraphicsAnchorLayout::~QGraphicsAnchorLayout
+32 (int (*)(...))QGraphicsAnchorLayout::setGeometry
+40 (int (*)(...))QGraphicsLayout::getContentsMargins
+48 (int (*)(...))QGraphicsLayout::updateGeometry
+56 (int (*)(...))QGraphicsAnchorLayout::sizeHint
+64 (int (*)(...))QGraphicsAnchorLayout::invalidate
+72 (int (*)(...))QGraphicsLayout::widgetEvent
+80 (int (*)(...))QGraphicsAnchorLayout::count
+88 (int (*)(...))QGraphicsAnchorLayout::itemAt
+96 (int (*)(...))QGraphicsAnchorLayout::removeAt
+
+Class QGraphicsAnchorLayout
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsAnchorLayout (0x0x7f1d19b02208) 0
+ vptr=((& QGraphicsAnchorLayout::_ZTV21QGraphicsAnchorLayout) + 16)
+ QGraphicsLayout (0x0x7f1d19b02270) 0
+ primary-for QGraphicsAnchorLayout (0x0x7f1d19b02208)
+ QGraphicsLayoutItem (0x0x7f1d19b30660) 0
+ primary-for QGraphicsLayout (0x0x7f1d19b02270)
+
+Class QGraphicsEffect::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsEffect::QPrivateSignal (0x0x7f1d19b307e0) 0 empty
+
+Vtable for QGraphicsEffect
+QGraphicsEffect::_ZTV15QGraphicsEffect: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QGraphicsEffect)
+16 (int (*)(...))QGraphicsEffect::metaObject
+24 (int (*)(...))QGraphicsEffect::qt_metacast
+32 (int (*)(...))QGraphicsEffect::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsEffect::boundingRectFor
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QGraphicsEffect::sourceChanged
+
+Class QGraphicsEffect
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsEffect (0x0x7f1d19b022d8) 0
+ vptr=((& QGraphicsEffect::_ZTV15QGraphicsEffect) + 16)
+ QObject (0x0x7f1d19b30780) 0
+ primary-for QGraphicsEffect (0x0x7f1d19b022d8)
+
+Class QGraphicsColorizeEffect::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsColorizeEffect::QPrivateSignal (0x0x7f1d19b6a1e0) 0 empty
+
+Vtable for QGraphicsColorizeEffect
+QGraphicsColorizeEffect::_ZTV23QGraphicsColorizeEffect: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QGraphicsColorizeEffect)
+16 (int (*)(...))QGraphicsColorizeEffect::metaObject
+24 (int (*)(...))QGraphicsColorizeEffect::qt_metacast
+32 (int (*)(...))QGraphicsColorizeEffect::qt_metacall
+40 (int (*)(...))QGraphicsColorizeEffect::~QGraphicsColorizeEffect
+48 (int (*)(...))QGraphicsColorizeEffect::~QGraphicsColorizeEffect
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsEffect::boundingRectFor
+120 (int (*)(...))QGraphicsColorizeEffect::draw
+128 (int (*)(...))QGraphicsEffect::sourceChanged
+
+Class QGraphicsColorizeEffect
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsColorizeEffect (0x0x7f1d19b02410) 0
+ vptr=((& QGraphicsColorizeEffect::_ZTV23QGraphicsColorizeEffect) + 16)
+ QGraphicsEffect (0x0x7f1d19b02478) 0
+ primary-for QGraphicsColorizeEffect (0x0x7f1d19b02410)
+ QObject (0x0x7f1d19b6a180) 0
+ primary-for QGraphicsEffect (0x0x7f1d19b02478)
+
+Class QGraphicsBlurEffect::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsBlurEffect::QPrivateSignal (0x0x7f1d19b6a420) 0 empty
+
+Vtable for QGraphicsBlurEffect
+QGraphicsBlurEffect::_ZTV19QGraphicsBlurEffect: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QGraphicsBlurEffect)
+16 (int (*)(...))QGraphicsBlurEffect::metaObject
+24 (int (*)(...))QGraphicsBlurEffect::qt_metacast
+32 (int (*)(...))QGraphicsBlurEffect::qt_metacall
+40 (int (*)(...))QGraphicsBlurEffect::~QGraphicsBlurEffect
+48 (int (*)(...))QGraphicsBlurEffect::~QGraphicsBlurEffect
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsBlurEffect::boundingRectFor
+120 (int (*)(...))QGraphicsBlurEffect::draw
+128 (int (*)(...))QGraphicsEffect::sourceChanged
+
+Class QGraphicsBlurEffect
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsBlurEffect (0x0x7f1d19b024e0) 0
+ vptr=((& QGraphicsBlurEffect::_ZTV19QGraphicsBlurEffect) + 16)
+ QGraphicsEffect (0x0x7f1d19b02548) 0
+ primary-for QGraphicsBlurEffect (0x0x7f1d19b024e0)
+ QObject (0x0x7f1d19b6a3c0) 0
+ primary-for QGraphicsEffect (0x0x7f1d19b02548)
+
+Class QGraphicsDropShadowEffect::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsDropShadowEffect::QPrivateSignal (0x0x7f1d19b6aea0) 0 empty
+
+Vtable for QGraphicsDropShadowEffect
+QGraphicsDropShadowEffect::_ZTV25QGraphicsDropShadowEffect: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QGraphicsDropShadowEffect)
+16 (int (*)(...))QGraphicsDropShadowEffect::metaObject
+24 (int (*)(...))QGraphicsDropShadowEffect::qt_metacast
+32 (int (*)(...))QGraphicsDropShadowEffect::qt_metacall
+40 (int (*)(...))QGraphicsDropShadowEffect::~QGraphicsDropShadowEffect
+48 (int (*)(...))QGraphicsDropShadowEffect::~QGraphicsDropShadowEffect
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsDropShadowEffect::boundingRectFor
+120 (int (*)(...))QGraphicsDropShadowEffect::draw
+128 (int (*)(...))QGraphicsEffect::sourceChanged
+
+Class QGraphicsDropShadowEffect
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsDropShadowEffect (0x0x7f1d19b02680) 0
+ vptr=((& QGraphicsDropShadowEffect::_ZTV25QGraphicsDropShadowEffect) + 16)
+ QGraphicsEffect (0x0x7f1d19b026e8) 0
+ primary-for QGraphicsDropShadowEffect (0x0x7f1d19b02680)
+ QObject (0x0x7f1d19b6ae40) 0
+ primary-for QGraphicsEffect (0x0x7f1d19b026e8)
+
+Class QGraphicsOpacityEffect::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsOpacityEffect::QPrivateSignal (0x0x7f1d19b9b360) 0 empty
+
+Vtable for QGraphicsOpacityEffect
+QGraphicsOpacityEffect::_ZTV22QGraphicsOpacityEffect: 17 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QGraphicsOpacityEffect)
+16 (int (*)(...))QGraphicsOpacityEffect::metaObject
+24 (int (*)(...))QGraphicsOpacityEffect::qt_metacast
+32 (int (*)(...))QGraphicsOpacityEffect::qt_metacall
+40 (int (*)(...))QGraphicsOpacityEffect::~QGraphicsOpacityEffect
+48 (int (*)(...))QGraphicsOpacityEffect::~QGraphicsOpacityEffect
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsEffect::boundingRectFor
+120 (int (*)(...))QGraphicsOpacityEffect::draw
+128 (int (*)(...))QGraphicsEffect::sourceChanged
+
+Class QGraphicsOpacityEffect
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsOpacityEffect (0x0x7f1d19b02750) 0
+ vptr=((& QGraphicsOpacityEffect::_ZTV22QGraphicsOpacityEffect) + 16)
+ QGraphicsEffect (0x0x7f1d19b027b8) 0
+ primary-for QGraphicsOpacityEffect (0x0x7f1d19b02750)
+ QObject (0x0x7f1d19b9b300) 0
+ primary-for QGraphicsEffect (0x0x7f1d19b027b8)
+
+Vtable for QGraphicsGridLayout
+QGraphicsGridLayout::_ZTV19QGraphicsGridLayout: 13 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QGraphicsGridLayout)
+16 (int (*)(...))QGraphicsGridLayout::~QGraphicsGridLayout
+24 (int (*)(...))QGraphicsGridLayout::~QGraphicsGridLayout
+32 (int (*)(...))QGraphicsGridLayout::setGeometry
+40 (int (*)(...))QGraphicsLayout::getContentsMargins
+48 (int (*)(...))QGraphicsLayout::updateGeometry
+56 (int (*)(...))QGraphicsGridLayout::sizeHint
+64 (int (*)(...))QGraphicsGridLayout::invalidate
+72 (int (*)(...))QGraphicsLayout::widgetEvent
+80 (int (*)(...))QGraphicsGridLayout::count
+88 (int (*)(...))QGraphicsGridLayout::itemAt
+96 (int (*)(...))QGraphicsGridLayout::removeAt
+
+Class QGraphicsGridLayout
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsGridLayout (0x0x7f1d19b02820) 0
+ vptr=((& QGraphicsGridLayout::_ZTV19QGraphicsGridLayout) + 16)
+ QGraphicsLayout (0x0x7f1d19b02888) 0
+ primary-for QGraphicsGridLayout (0x0x7f1d19b02820)
+ QGraphicsLayoutItem (0x0x7f1d19b9b540) 0
+ primary-for QGraphicsLayout (0x0x7f1d19b02888)
+
+Class QGraphicsItemAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsItemAnimation::QPrivateSignal (0x0x7f1d19b9b720) 0 empty
+
+Vtable for QGraphicsItemAnimation
+QGraphicsItemAnimation::_ZTV22QGraphicsItemAnimation: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QGraphicsItemAnimation)
+16 (int (*)(...))QGraphicsItemAnimation::metaObject
+24 (int (*)(...))QGraphicsItemAnimation::qt_metacast
+32 (int (*)(...))QGraphicsItemAnimation::qt_metacall
+40 (int (*)(...))QGraphicsItemAnimation::~QGraphicsItemAnimation
+48 (int (*)(...))QGraphicsItemAnimation::~QGraphicsItemAnimation
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsItemAnimation::beforeAnimationStep
+120 (int (*)(...))QGraphicsItemAnimation::afterAnimationStep
+
+Class QGraphicsItemAnimation
+ size=24 align=8
+ base size=24 base align=8
+QGraphicsItemAnimation (0x0x7f1d19b029c0) 0
+ vptr=((& QGraphicsItemAnimation::_ZTV22QGraphicsItemAnimation) + 16)
+ QObject (0x0x7f1d19b9b6c0) 0
+ primary-for QGraphicsItemAnimation (0x0x7f1d19b029c0)
+
+Vtable for QGraphicsLinearLayout
+QGraphicsLinearLayout::_ZTV21QGraphicsLinearLayout: 13 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QGraphicsLinearLayout)
+16 (int (*)(...))QGraphicsLinearLayout::~QGraphicsLinearLayout
+24 (int (*)(...))QGraphicsLinearLayout::~QGraphicsLinearLayout
+32 (int (*)(...))QGraphicsLinearLayout::setGeometry
+40 (int (*)(...))QGraphicsLayout::getContentsMargins
+48 (int (*)(...))QGraphicsLayout::updateGeometry
+56 (int (*)(...))QGraphicsLinearLayout::sizeHint
+64 (int (*)(...))QGraphicsLinearLayout::invalidate
+72 (int (*)(...))QGraphicsLayout::widgetEvent
+80 (int (*)(...))QGraphicsLinearLayout::count
+88 (int (*)(...))QGraphicsLinearLayout::itemAt
+96 (int (*)(...))QGraphicsLinearLayout::removeAt
+
+Class QGraphicsLinearLayout
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsLinearLayout (0x0x7f1d19b02a28) 0
+ vptr=((& QGraphicsLinearLayout::_ZTV21QGraphicsLinearLayout) + 16)
+ QGraphicsLayout (0x0x7f1d19b02a90) 0
+ primary-for QGraphicsLinearLayout (0x0x7f1d19b02a28)
+ QGraphicsLayoutItem (0x0x7f1d19b9b840) 0
+ primary-for QGraphicsLayout (0x0x7f1d19b02a90)
+
+Class QGraphicsWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsWidget::QPrivateSignal (0x0x7f1d19b9bb40) 0 empty
+
+Vtable for QGraphicsWidget
+QGraphicsWidget::_ZTV15QGraphicsWidget: 92 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QGraphicsWidget)
+16 (int (*)(...))QGraphicsWidget::metaObject
+24 (int (*)(...))QGraphicsWidget::qt_metacast
+32 (int (*)(...))QGraphicsWidget::qt_metacall
+40 (int (*)(...))QGraphicsWidget::~QGraphicsWidget
+48 (int (*)(...))QGraphicsWidget::~QGraphicsWidget
+56 (int (*)(...))QGraphicsWidget::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsWidget::setGeometry
+120 (int (*)(...))QGraphicsWidget::getContentsMargins
+128 (int (*)(...))QGraphicsWidget::type
+136 (int (*)(...))QGraphicsWidget::paint
+144 (int (*)(...))QGraphicsWidget::paintWindowFrame
+152 (int (*)(...))QGraphicsWidget::boundingRect
+160 (int (*)(...))QGraphicsWidget::shape
+168 (int (*)(...))QGraphicsWidget::initStyleOption
+176 (int (*)(...))QGraphicsWidget::sizeHint
+184 (int (*)(...))QGraphicsWidget::updateGeometry
+192 (int (*)(...))QGraphicsWidget::itemChange
+200 (int (*)(...))QGraphicsWidget::propertyChange
+208 (int (*)(...))QGraphicsWidget::sceneEvent
+216 (int (*)(...))QGraphicsWidget::windowFrameEvent
+224 (int (*)(...))QGraphicsWidget::windowFrameSectionAt
+232 (int (*)(...))QGraphicsWidget::changeEvent
+240 (int (*)(...))QGraphicsWidget::closeEvent
+248 (int (*)(...))QGraphicsWidget::focusInEvent
+256 (int (*)(...))QGraphicsWidget::focusNextPrevChild
+264 (int (*)(...))QGraphicsWidget::focusOutEvent
+272 (int (*)(...))QGraphicsWidget::hideEvent
+280 (int (*)(...))QGraphicsWidget::moveEvent
+288 (int (*)(...))QGraphicsWidget::polishEvent
+296 (int (*)(...))QGraphicsWidget::resizeEvent
+304 (int (*)(...))QGraphicsWidget::showEvent
+312 (int (*)(...))QGraphicsWidget::hoverMoveEvent
+320 (int (*)(...))QGraphicsWidget::hoverLeaveEvent
+328 (int (*)(...))QGraphicsWidget::grabMouseEvent
+336 (int (*)(...))QGraphicsWidget::ungrabMouseEvent
+344 (int (*)(...))QGraphicsWidget::grabKeyboardEvent
+352 (int (*)(...))QGraphicsWidget::ungrabKeyboardEvent
+360 (int (*)(...))-16
+368 (int (*)(...))(& _ZTI15QGraphicsWidget)
+376 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidgetD1Ev
+384 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidgetD0Ev
+392 (int (*)(...))QGraphicsItem::advance
+400 (int (*)(...))QGraphicsWidget::_ZThn16_NK15QGraphicsWidget12boundingRectEv
+408 (int (*)(...))QGraphicsWidget::_ZThn16_NK15QGraphicsWidget5shapeEv
+416 (int (*)(...))QGraphicsItem::contains
+424 (int (*)(...))QGraphicsItem::collidesWithItem
+432 (int (*)(...))QGraphicsItem::collidesWithPath
+440 (int (*)(...))QGraphicsItem::isObscuredBy
+448 (int (*)(...))QGraphicsItem::opaqueArea
+456 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidget5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget
+464 (int (*)(...))QGraphicsWidget::_ZThn16_NK15QGraphicsWidget4typeEv
+472 (int (*)(...))QGraphicsItem::sceneEventFilter
+480 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidget10sceneEventEP6QEvent
+488 (int (*)(...))QGraphicsItem::contextMenuEvent
+496 (int (*)(...))QGraphicsItem::dragEnterEvent
+504 (int (*)(...))QGraphicsItem::dragLeaveEvent
+512 (int (*)(...))QGraphicsItem::dragMoveEvent
+520 (int (*)(...))QGraphicsItem::dropEvent
+528 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidget12focusInEventEP11QFocusEvent
+536 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidget13focusOutEventEP11QFocusEvent
+544 (int (*)(...))QGraphicsItem::hoverEnterEvent
+552 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidget14hoverMoveEventEP24QGraphicsSceneHoverEvent
+560 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidget15hoverLeaveEventEP24QGraphicsSceneHoverEvent
+568 (int (*)(...))QGraphicsItem::keyPressEvent
+576 (int (*)(...))QGraphicsItem::keyReleaseEvent
+584 (int (*)(...))QGraphicsItem::mousePressEvent
+592 (int (*)(...))QGraphicsItem::mouseMoveEvent
+600 (int (*)(...))QGraphicsItem::mouseReleaseEvent
+608 (int (*)(...))QGraphicsItem::mouseDoubleClickEvent
+616 (int (*)(...))QGraphicsItem::wheelEvent
+624 (int (*)(...))QGraphicsItem::inputMethodEvent
+632 (int (*)(...))QGraphicsItem::inputMethodQuery
+640 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidget10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant
+648 (int (*)(...))QGraphicsItem::supportsExtension
+656 (int (*)(...))QGraphicsItem::setExtension
+664 (int (*)(...))QGraphicsItem::extension
+672 (int (*)(...))-32
+680 (int (*)(...))(& _ZTI15QGraphicsWidget)
+688 (int (*)(...))QGraphicsWidget::_ZThn32_N15QGraphicsWidgetD1Ev
+696 (int (*)(...))QGraphicsWidget::_ZThn32_N15QGraphicsWidgetD0Ev
+704 (int (*)(...))QGraphicsWidget::_ZThn32_N15QGraphicsWidget11setGeometryERK6QRectF
+712 (int (*)(...))QGraphicsWidget::_ZThn32_NK15QGraphicsWidget18getContentsMarginsEPdS0_S0_S0_
+720 (int (*)(...))QGraphicsWidget::_ZThn32_N15QGraphicsWidget14updateGeometryEv
+728 (int (*)(...))QGraphicsWidget::_ZThn32_NK15QGraphicsWidget8sizeHintEN2Qt8SizeHintERK6QSizeF
+
+Class QGraphicsWidget
+ size=48 align=8
+ base size=48 base align=8
+QGraphicsWidget (0x0x7f1d19b69e70) 0
+ vptr=((& QGraphicsWidget::_ZTV15QGraphicsWidget) + 16)
+ QGraphicsObject (0x0x7f1d19b69ee0) 0
+ primary-for QGraphicsWidget (0x0x7f1d19b69e70)
+ QObject (0x0x7f1d19b9ba20) 0
+ primary-for QGraphicsObject (0x0x7f1d19b69ee0)
+ QGraphicsItem (0x0x7f1d19b9ba80) 16
+ vptr=((& QGraphicsWidget::_ZTV15QGraphicsWidget) + 376)
+ QGraphicsLayoutItem (0x0x7f1d19b9bae0) 32
+ vptr=((& QGraphicsWidget::_ZTV15QGraphicsWidget) + 688)
+
+Class QGraphicsProxyWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsProxyWidget::QPrivateSignal (0x0x7f1d19bed060) 0 empty
+
+Vtable for QGraphicsProxyWidget
+QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget: 107 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QGraphicsProxyWidget)
+16 (int (*)(...))QGraphicsProxyWidget::metaObject
+24 (int (*)(...))QGraphicsProxyWidget::qt_metacast
+32 (int (*)(...))QGraphicsProxyWidget::qt_metacall
+40 (int (*)(...))QGraphicsProxyWidget::~QGraphicsProxyWidget
+48 (int (*)(...))QGraphicsProxyWidget::~QGraphicsProxyWidget
+56 (int (*)(...))QGraphicsProxyWidget::event
+64 (int (*)(...))QGraphicsProxyWidget::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsProxyWidget::setGeometry
+120 (int (*)(...))QGraphicsWidget::getContentsMargins
+128 (int (*)(...))QGraphicsProxyWidget::type
+136 (int (*)(...))QGraphicsProxyWidget::paint
+144 (int (*)(...))QGraphicsWidget::paintWindowFrame
+152 (int (*)(...))QGraphicsWidget::boundingRect
+160 (int (*)(...))QGraphicsWidget::shape
+168 (int (*)(...))QGraphicsWidget::initStyleOption
+176 (int (*)(...))QGraphicsProxyWidget::sizeHint
+184 (int (*)(...))QGraphicsWidget::updateGeometry
+192 (int (*)(...))QGraphicsProxyWidget::itemChange
+200 (int (*)(...))QGraphicsWidget::propertyChange
+208 (int (*)(...))QGraphicsWidget::sceneEvent
+216 (int (*)(...))QGraphicsWidget::windowFrameEvent
+224 (int (*)(...))QGraphicsWidget::windowFrameSectionAt
+232 (int (*)(...))QGraphicsWidget::changeEvent
+240 (int (*)(...))QGraphicsWidget::closeEvent
+248 (int (*)(...))QGraphicsProxyWidget::focusInEvent
+256 (int (*)(...))QGraphicsProxyWidget::focusNextPrevChild
+264 (int (*)(...))QGraphicsProxyWidget::focusOutEvent
+272 (int (*)(...))QGraphicsProxyWidget::hideEvent
+280 (int (*)(...))QGraphicsWidget::moveEvent
+288 (int (*)(...))QGraphicsWidget::polishEvent
+296 (int (*)(...))QGraphicsProxyWidget::resizeEvent
+304 (int (*)(...))QGraphicsProxyWidget::showEvent
+312 (int (*)(...))QGraphicsProxyWidget::hoverMoveEvent
+320 (int (*)(...))QGraphicsProxyWidget::hoverLeaveEvent
+328 (int (*)(...))QGraphicsProxyWidget::grabMouseEvent
+336 (int (*)(...))QGraphicsProxyWidget::ungrabMouseEvent
+344 (int (*)(...))QGraphicsWidget::grabKeyboardEvent
+352 (int (*)(...))QGraphicsWidget::ungrabKeyboardEvent
+360 (int (*)(...))QGraphicsProxyWidget::contextMenuEvent
+368 (int (*)(...))QGraphicsProxyWidget::dragEnterEvent
+376 (int (*)(...))QGraphicsProxyWidget::dragLeaveEvent
+384 (int (*)(...))QGraphicsProxyWidget::dragMoveEvent
+392 (int (*)(...))QGraphicsProxyWidget::dropEvent
+400 (int (*)(...))QGraphicsProxyWidget::hoverEnterEvent
+408 (int (*)(...))QGraphicsProxyWidget::mouseMoveEvent
+416 (int (*)(...))QGraphicsProxyWidget::mousePressEvent
+424 (int (*)(...))QGraphicsProxyWidget::mouseReleaseEvent
+432 (int (*)(...))QGraphicsProxyWidget::mouseDoubleClickEvent
+440 (int (*)(...))QGraphicsProxyWidget::wheelEvent
+448 (int (*)(...))QGraphicsProxyWidget::keyPressEvent
+456 (int (*)(...))QGraphicsProxyWidget::keyReleaseEvent
+464 (int (*)(...))QGraphicsProxyWidget::inputMethodQuery
+472 (int (*)(...))QGraphicsProxyWidget::inputMethodEvent
+480 (int (*)(...))-16
+488 (int (*)(...))(& _ZTI20QGraphicsProxyWidget)
+496 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidgetD1Ev
+504 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidgetD0Ev
+512 (int (*)(...))QGraphicsItem::advance
+520 (int (*)(...))QGraphicsWidget::_ZThn16_NK15QGraphicsWidget12boundingRectEv
+528 (int (*)(...))QGraphicsWidget::_ZThn16_NK15QGraphicsWidget5shapeEv
+536 (int (*)(...))QGraphicsItem::contains
+544 (int (*)(...))QGraphicsItem::collidesWithItem
+552 (int (*)(...))QGraphicsItem::collidesWithPath
+560 (int (*)(...))QGraphicsItem::isObscuredBy
+568 (int (*)(...))QGraphicsItem::opaqueArea
+576 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget
+584 (int (*)(...))QGraphicsProxyWidget::_ZThn16_NK20QGraphicsProxyWidget4typeEv
+592 (int (*)(...))QGraphicsItem::sceneEventFilter
+600 (int (*)(...))QGraphicsWidget::_ZThn16_N15QGraphicsWidget10sceneEventEP6QEvent
+608 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget16contextMenuEventEP30QGraphicsSceneContextMenuEvent
+616 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget14dragEnterEventEP27QGraphicsSceneDragDropEvent
+624 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget14dragLeaveEventEP27QGraphicsSceneDragDropEvent
+632 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget13dragMoveEventEP27QGraphicsSceneDragDropEvent
+640 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget9dropEventEP27QGraphicsSceneDragDropEvent
+648 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget12focusInEventEP11QFocusEvent
+656 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget13focusOutEventEP11QFocusEvent
+664 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget15hoverEnterEventEP24QGraphicsSceneHoverEvent
+672 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget14hoverMoveEventEP24QGraphicsSceneHoverEvent
+680 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget15hoverLeaveEventEP24QGraphicsSceneHoverEvent
+688 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget13keyPressEventEP9QKeyEvent
+696 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget15keyReleaseEventEP9QKeyEvent
+704 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget15mousePressEventEP24QGraphicsSceneMouseEvent
+712 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget14mouseMoveEventEP24QGraphicsSceneMouseEvent
+720 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget17mouseReleaseEventEP24QGraphicsSceneMouseEvent
+728 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent
+736 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget10wheelEventEP24QGraphicsSceneWheelEvent
+744 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget16inputMethodEventEP17QInputMethodEvent
+752 (int (*)(...))QGraphicsProxyWidget::_ZThn16_NK20QGraphicsProxyWidget16inputMethodQueryEN2Qt16InputMethodQueryE
+760 (int (*)(...))QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant
+768 (int (*)(...))QGraphicsItem::supportsExtension
+776 (int (*)(...))QGraphicsItem::setExtension
+784 (int (*)(...))QGraphicsItem::extension
+792 (int (*)(...))-32
+800 (int (*)(...))(& _ZTI20QGraphicsProxyWidget)
+808 (int (*)(...))QGraphicsProxyWidget::_ZThn32_N20QGraphicsProxyWidgetD1Ev
+816 (int (*)(...))QGraphicsProxyWidget::_ZThn32_N20QGraphicsProxyWidgetD0Ev
+824 (int (*)(...))QGraphicsProxyWidget::_ZThn32_N20QGraphicsProxyWidget11setGeometryERK6QRectF
+832 (int (*)(...))QGraphicsWidget::_ZThn32_NK15QGraphicsWidget18getContentsMarginsEPdS0_S0_S0_
+840 (int (*)(...))QGraphicsWidget::_ZThn32_N15QGraphicsWidget14updateGeometryEv
+848 (int (*)(...))QGraphicsProxyWidget::_ZThn32_NK20QGraphicsProxyWidget8sizeHintEN2Qt8SizeHintERK6QSizeF
+
+Class QGraphicsProxyWidget
+ size=48 align=8
+ base size=48 base align=8
+QGraphicsProxyWidget (0x0x7f1d19b02bc8) 0
+ vptr=((& QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget) + 16)
+ QGraphicsWidget (0x0x7f1d19bdb230) 0
+ primary-for QGraphicsProxyWidget (0x0x7f1d19b02bc8)
+ QGraphicsObject (0x0x7f1d19bdb2a0) 0
+ primary-for QGraphicsWidget (0x0x7f1d19bdb230)
+ QObject (0x0x7f1d19b9bf00) 0
+ primary-for QGraphicsObject (0x0x7f1d19bdb2a0)
+ QGraphicsItem (0x0x7f1d19b9bf60) 16
+ vptr=((& QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget) + 496)
+ QGraphicsLayoutItem (0x0x7f1d19bed000) 32
+ vptr=((& QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget) + 808)
+
+Class QGraphicsScene::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsScene::QPrivateSignal (0x0x7f1d19bed420) 0 empty
+
+Vtable for QGraphicsScene
+QGraphicsScene::_ZTV14QGraphicsScene: 34 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QGraphicsScene)
+16 (int (*)(...))QGraphicsScene::metaObject
+24 (int (*)(...))QGraphicsScene::qt_metacast
+32 (int (*)(...))QGraphicsScene::qt_metacall
+40 (int (*)(...))QGraphicsScene::~QGraphicsScene
+48 (int (*)(...))QGraphicsScene::~QGraphicsScene
+56 (int (*)(...))QGraphicsScene::event
+64 (int (*)(...))QGraphicsScene::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsScene::inputMethodQuery
+120 (int (*)(...))QGraphicsScene::contextMenuEvent
+128 (int (*)(...))QGraphicsScene::dragEnterEvent
+136 (int (*)(...))QGraphicsScene::dragMoveEvent
+144 (int (*)(...))QGraphicsScene::dragLeaveEvent
+152 (int (*)(...))QGraphicsScene::dropEvent
+160 (int (*)(...))QGraphicsScene::focusInEvent
+168 (int (*)(...))QGraphicsScene::focusOutEvent
+176 (int (*)(...))QGraphicsScene::helpEvent
+184 (int (*)(...))QGraphicsScene::keyPressEvent
+192 (int (*)(...))QGraphicsScene::keyReleaseEvent
+200 (int (*)(...))QGraphicsScene::mousePressEvent
+208 (int (*)(...))QGraphicsScene::mouseMoveEvent
+216 (int (*)(...))QGraphicsScene::mouseReleaseEvent
+224 (int (*)(...))QGraphicsScene::mouseDoubleClickEvent
+232 (int (*)(...))QGraphicsScene::wheelEvent
+240 (int (*)(...))QGraphicsScene::inputMethodEvent
+248 (int (*)(...))QGraphicsScene::drawBackground
+256 (int (*)(...))QGraphicsScene::drawForeground
+264 (int (*)(...))QGraphicsScene::drawItems
+
+Class QGraphicsScene
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsScene (0x0x7f1d19b02dd0) 0
+ vptr=((& QGraphicsScene::_ZTV14QGraphicsScene) + 16)
+ QObject (0x0x7f1d19bed3c0) 0
+ primary-for QGraphicsScene (0x0x7f1d19b02dd0)
+
+Vtable for QGraphicsSceneEvent
+QGraphicsSceneEvent::_ZTV19QGraphicsSceneEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QGraphicsSceneEvent)
+16 (int (*)(...))QGraphicsSceneEvent::~QGraphicsSceneEvent
+24 (int (*)(...))QGraphicsSceneEvent::~QGraphicsSceneEvent
+
+Class QGraphicsSceneEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneEvent (0x0x7f1d19b02f70) 0
+ vptr=((& QGraphicsSceneEvent::_ZTV19QGraphicsSceneEvent) + 16)
+ QEvent (0x0x7f1d19c60300) 0
+ primary-for QGraphicsSceneEvent (0x0x7f1d19b02f70)
+
+Vtable for QGraphicsSceneMouseEvent
+QGraphicsSceneMouseEvent::_ZTV24QGraphicsSceneMouseEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QGraphicsSceneMouseEvent)
+16 (int (*)(...))QGraphicsSceneMouseEvent::~QGraphicsSceneMouseEvent
+24 (int (*)(...))QGraphicsSceneMouseEvent::~QGraphicsSceneMouseEvent
+
+Class QGraphicsSceneMouseEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneMouseEvent (0x0x7f1d19c6d000) 0
+ vptr=((& QGraphicsSceneMouseEvent::_ZTV24QGraphicsSceneMouseEvent) + 16)
+ QGraphicsSceneEvent (0x0x7f1d19c6d068) 0
+ primary-for QGraphicsSceneMouseEvent (0x0x7f1d19c6d000)
+ QEvent (0x0x7f1d19c604e0) 0
+ primary-for QGraphicsSceneEvent (0x0x7f1d19c6d068)
+
+Vtable for QGraphicsSceneWheelEvent
+QGraphicsSceneWheelEvent::_ZTV24QGraphicsSceneWheelEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QGraphicsSceneWheelEvent)
+16 (int (*)(...))QGraphicsSceneWheelEvent::~QGraphicsSceneWheelEvent
+24 (int (*)(...))QGraphicsSceneWheelEvent::~QGraphicsSceneWheelEvent
+
+Class QGraphicsSceneWheelEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneWheelEvent (0x0x7f1d19c6d0d0) 0
+ vptr=((& QGraphicsSceneWheelEvent::_ZTV24QGraphicsSceneWheelEvent) + 16)
+ QGraphicsSceneEvent (0x0x7f1d19c6d138) 0
+ primary-for QGraphicsSceneWheelEvent (0x0x7f1d19c6d0d0)
+ QEvent (0x0x7f1d19c60600) 0
+ primary-for QGraphicsSceneEvent (0x0x7f1d19c6d138)
+
+Vtable for QGraphicsSceneContextMenuEvent
+QGraphicsSceneContextMenuEvent::_ZTV30QGraphicsSceneContextMenuEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI30QGraphicsSceneContextMenuEvent)
+16 (int (*)(...))QGraphicsSceneContextMenuEvent::~QGraphicsSceneContextMenuEvent
+24 (int (*)(...))QGraphicsSceneContextMenuEvent::~QGraphicsSceneContextMenuEvent
+
+Class QGraphicsSceneContextMenuEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneContextMenuEvent (0x0x7f1d19c6d1a0) 0
+ vptr=((& QGraphicsSceneContextMenuEvent::_ZTV30QGraphicsSceneContextMenuEvent) + 16)
+ QGraphicsSceneEvent (0x0x7f1d19c6d208) 0
+ primary-for QGraphicsSceneContextMenuEvent (0x0x7f1d19c6d1a0)
+ QEvent (0x0x7f1d19c60720) 0
+ primary-for QGraphicsSceneEvent (0x0x7f1d19c6d208)
+
+Vtable for QGraphicsSceneHoverEvent
+QGraphicsSceneHoverEvent::_ZTV24QGraphicsSceneHoverEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QGraphicsSceneHoverEvent)
+16 (int (*)(...))QGraphicsSceneHoverEvent::~QGraphicsSceneHoverEvent
+24 (int (*)(...))QGraphicsSceneHoverEvent::~QGraphicsSceneHoverEvent
+
+Class QGraphicsSceneHoverEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneHoverEvent (0x0x7f1d19c6d270) 0
+ vptr=((& QGraphicsSceneHoverEvent::_ZTV24QGraphicsSceneHoverEvent) + 16)
+ QGraphicsSceneEvent (0x0x7f1d19c6d2d8) 0
+ primary-for QGraphicsSceneHoverEvent (0x0x7f1d19c6d270)
+ QEvent (0x0x7f1d19c60840) 0
+ primary-for QGraphicsSceneEvent (0x0x7f1d19c6d2d8)
+
+Vtable for QGraphicsSceneHelpEvent
+QGraphicsSceneHelpEvent::_ZTV23QGraphicsSceneHelpEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QGraphicsSceneHelpEvent)
+16 (int (*)(...))QGraphicsSceneHelpEvent::~QGraphicsSceneHelpEvent
+24 (int (*)(...))QGraphicsSceneHelpEvent::~QGraphicsSceneHelpEvent
+
+Class QGraphicsSceneHelpEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneHelpEvent (0x0x7f1d19c6d340) 0
+ vptr=((& QGraphicsSceneHelpEvent::_ZTV23QGraphicsSceneHelpEvent) + 16)
+ QGraphicsSceneEvent (0x0x7f1d19c6d3a8) 0
+ primary-for QGraphicsSceneHelpEvent (0x0x7f1d19c6d340)
+ QEvent (0x0x7f1d19c60960) 0
+ primary-for QGraphicsSceneEvent (0x0x7f1d19c6d3a8)
+
+Vtable for QGraphicsSceneDragDropEvent
+QGraphicsSceneDragDropEvent::_ZTV27QGraphicsSceneDragDropEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QGraphicsSceneDragDropEvent)
+16 (int (*)(...))QGraphicsSceneDragDropEvent::~QGraphicsSceneDragDropEvent
+24 (int (*)(...))QGraphicsSceneDragDropEvent::~QGraphicsSceneDragDropEvent
+
+Class QGraphicsSceneDragDropEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneDragDropEvent (0x0x7f1d19c6d410) 0
+ vptr=((& QGraphicsSceneDragDropEvent::_ZTV27QGraphicsSceneDragDropEvent) + 16)
+ QGraphicsSceneEvent (0x0x7f1d19c6d478) 0
+ primary-for QGraphicsSceneDragDropEvent (0x0x7f1d19c6d410)
+ QEvent (0x0x7f1d19c60a80) 0
+ primary-for QGraphicsSceneEvent (0x0x7f1d19c6d478)
+
+Vtable for QGraphicsSceneResizeEvent
+QGraphicsSceneResizeEvent::_ZTV25QGraphicsSceneResizeEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QGraphicsSceneResizeEvent)
+16 (int (*)(...))QGraphicsSceneResizeEvent::~QGraphicsSceneResizeEvent
+24 (int (*)(...))QGraphicsSceneResizeEvent::~QGraphicsSceneResizeEvent
+
+Class QGraphicsSceneResizeEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneResizeEvent (0x0x7f1d19c6d4e0) 0
+ vptr=((& QGraphicsSceneResizeEvent::_ZTV25QGraphicsSceneResizeEvent) + 16)
+ QGraphicsSceneEvent (0x0x7f1d19c6d548) 0
+ primary-for QGraphicsSceneResizeEvent (0x0x7f1d19c6d4e0)
+ QEvent (0x0x7f1d19c60ba0) 0
+ primary-for QGraphicsSceneEvent (0x0x7f1d19c6d548)
+
+Vtable for QGraphicsSceneMoveEvent
+QGraphicsSceneMoveEvent::_ZTV23QGraphicsSceneMoveEvent: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QGraphicsSceneMoveEvent)
+16 (int (*)(...))QGraphicsSceneMoveEvent::~QGraphicsSceneMoveEvent
+24 (int (*)(...))QGraphicsSceneMoveEvent::~QGraphicsSceneMoveEvent
+
+Class QGraphicsSceneMoveEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneMoveEvent (0x0x7f1d19c6d5b0) 0
+ vptr=((& QGraphicsSceneMoveEvent::_ZTV23QGraphicsSceneMoveEvent) + 16)
+ QGraphicsSceneEvent (0x0x7f1d19c6d618) 0
+ primary-for QGraphicsSceneMoveEvent (0x0x7f1d19c6d5b0)
+ QEvent (0x0x7f1d19c60cc0) 0
+ primary-for QGraphicsSceneEvent (0x0x7f1d19c6d618)
+
+Class QGraphicsTransform::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsTransform::QPrivateSignal (0x0x7f1d19c60e40) 0 empty
+
+Vtable for QGraphicsTransform
+QGraphicsTransform::_ZTV18QGraphicsTransform: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QGraphicsTransform)
+16 (int (*)(...))QGraphicsTransform::metaObject
+24 (int (*)(...))QGraphicsTransform::qt_metacast
+32 (int (*)(...))QGraphicsTransform::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QGraphicsTransform
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsTransform (0x0x7f1d19c6d680) 0
+ vptr=((& QGraphicsTransform::_ZTV18QGraphicsTransform) + 16)
+ QObject (0x0x7f1d19c60de0) 0
+ primary-for QGraphicsTransform (0x0x7f1d19c6d680)
+
+Class QGraphicsScale::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsScale::QPrivateSignal (0x0x7f1d19ca90c0) 0 empty
+
+Vtable for QGraphicsScale
+QGraphicsScale::_ZTV14QGraphicsScale: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QGraphicsScale)
+16 (int (*)(...))QGraphicsScale::metaObject
+24 (int (*)(...))QGraphicsScale::qt_metacast
+32 (int (*)(...))QGraphicsScale::qt_metacall
+40 (int (*)(...))QGraphicsScale::~QGraphicsScale
+48 (int (*)(...))QGraphicsScale::~QGraphicsScale
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsScale::applyTo
+
+Class QGraphicsScale
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsScale (0x0x7f1d19c6d6e8) 0
+ vptr=((& QGraphicsScale::_ZTV14QGraphicsScale) + 16)
+ QGraphicsTransform (0x0x7f1d19c6d750) 0
+ primary-for QGraphicsScale (0x0x7f1d19c6d6e8)
+ QObject (0x0x7f1d19ca9060) 0
+ primary-for QGraphicsTransform (0x0x7f1d19c6d750)
+
+Class QGraphicsRotation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsRotation::QPrivateSignal (0x0x7f1d19ca9300) 0 empty
+
+Vtable for QGraphicsRotation
+QGraphicsRotation::_ZTV17QGraphicsRotation: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QGraphicsRotation)
+16 (int (*)(...))QGraphicsRotation::metaObject
+24 (int (*)(...))QGraphicsRotation::qt_metacast
+32 (int (*)(...))QGraphicsRotation::qt_metacall
+40 (int (*)(...))QGraphicsRotation::~QGraphicsRotation
+48 (int (*)(...))QGraphicsRotation::~QGraphicsRotation
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGraphicsRotation::applyTo
+
+Class QGraphicsRotation
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsRotation (0x0x7f1d19c6d7b8) 0
+ vptr=((& QGraphicsRotation::_ZTV17QGraphicsRotation) + 16)
+ QGraphicsTransform (0x0x7f1d19c6d820) 0
+ primary-for QGraphicsRotation (0x0x7f1d19c6d7b8)
+ QObject (0x0x7f1d19ca92a0) 0
+ primary-for QGraphicsTransform (0x0x7f1d19c6d820)
+
+Class QScrollArea::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QScrollArea::QPrivateSignal (0x0x7f1d19ca95a0) 0 empty
+
+Vtable for QScrollArea
+QScrollArea::_ZTV11QScrollArea: 68 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QScrollArea)
+16 (int (*)(...))QScrollArea::metaObject
+24 (int (*)(...))QScrollArea::qt_metacast
+32 (int (*)(...))QScrollArea::qt_metacall
+40 (int (*)(...))QScrollArea::~QScrollArea
+48 (int (*)(...))QScrollArea::~QScrollArea
+56 (int (*)(...))QScrollArea::event
+64 (int (*)(...))QScrollArea::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractScrollArea::mousePressEvent
+176 (int (*)(...))QAbstractScrollArea::mouseReleaseEvent
+184 (int (*)(...))QAbstractScrollArea::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractScrollArea::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QAbstractScrollArea::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QAbstractScrollArea::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QScrollArea::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractScrollArea::dragEnterEvent
+320 (int (*)(...))QAbstractScrollArea::dragMoveEvent
+328 (int (*)(...))QAbstractScrollArea::dragLeaveEvent
+336 (int (*)(...))QAbstractScrollArea::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QScrollArea::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractScrollArea::viewportEvent
+448 (int (*)(...))QScrollArea::scrollContentsBy
+456 (int (*)(...))QScrollArea::viewportSizeHint
+464 (int (*)(...))-16
+472 (int (*)(...))(& _ZTI11QScrollArea)
+480 (int (*)(...))QScrollArea::_ZThn16_N11QScrollAreaD1Ev
+488 (int (*)(...))QScrollArea::_ZThn16_N11QScrollAreaD0Ev
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QScrollArea
+ size=48 align=8
+ base size=48 base align=8
+QScrollArea (0x0x7f1d19c6d888) 0
+ vptr=((& QScrollArea::_ZTV11QScrollArea) + 16)
+ QAbstractScrollArea (0x0x7f1d19c6d8f0) 0
+ primary-for QScrollArea (0x0x7f1d19c6d888)
+ QFrame (0x0x7f1d19c6d958) 0
+ primary-for QAbstractScrollArea (0x0x7f1d19c6d8f0)
+ QWidget (0x0x7f1d198b20e0) 0
+ primary-for QFrame (0x0x7f1d19c6d958)
+ QObject (0x0x7f1d19ca94e0) 0
+ primary-for QWidget (0x0x7f1d198b20e0)
+ QPaintDevice (0x0x7f1d19ca9540) 16
+ vptr=((& QScrollArea::_ZTV11QScrollArea) + 480)
+
+Class QGraphicsView::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGraphicsView::QPrivateSignal (0x0x7f1d19ca9840) 0 empty
+
+Vtable for QGraphicsView
+QGraphicsView::_ZTV13QGraphicsView: 71 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QGraphicsView)
+16 (int (*)(...))QGraphicsView::metaObject
+24 (int (*)(...))QGraphicsView::qt_metacast
+32 (int (*)(...))QGraphicsView::qt_metacall
+40 (int (*)(...))QGraphicsView::~QGraphicsView
+48 (int (*)(...))QGraphicsView::~QGraphicsView
+56 (int (*)(...))QGraphicsView::event
+64 (int (*)(...))QAbstractScrollArea::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QGraphicsView::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QGraphicsView::mousePressEvent
+176 (int (*)(...))QGraphicsView::mouseReleaseEvent
+184 (int (*)(...))QGraphicsView::mouseDoubleClickEvent
+192 (int (*)(...))QGraphicsView::mouseMoveEvent
+200 (int (*)(...))QGraphicsView::wheelEvent
+208 (int (*)(...))QGraphicsView::keyPressEvent
+216 (int (*)(...))QGraphicsView::keyReleaseEvent
+224 (int (*)(...))QGraphicsView::focusInEvent
+232 (int (*)(...))QGraphicsView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QGraphicsView::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QGraphicsView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QGraphicsView::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QGraphicsView::dragEnterEvent
+320 (int (*)(...))QGraphicsView::dragMoveEvent
+328 (int (*)(...))QGraphicsView::dragLeaveEvent
+336 (int (*)(...))QGraphicsView::dropEvent
+344 (int (*)(...))QGraphicsView::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QGraphicsView::inputMethodEvent
+416 (int (*)(...))QGraphicsView::inputMethodQuery
+424 (int (*)(...))QGraphicsView::focusNextPrevChild
+432 (int (*)(...))QGraphicsView::setupViewport
+440 (int (*)(...))QGraphicsView::viewportEvent
+448 (int (*)(...))QGraphicsView::scrollContentsBy
+456 (int (*)(...))QAbstractScrollArea::viewportSizeHint
+464 (int (*)(...))QGraphicsView::drawBackground
+472 (int (*)(...))QGraphicsView::drawForeground
+480 (int (*)(...))QGraphicsView::drawItems
+488 (int (*)(...))-16
+496 (int (*)(...))(& _ZTI13QGraphicsView)
+504 (int (*)(...))QGraphicsView::_ZThn16_N13QGraphicsViewD1Ev
+512 (int (*)(...))QGraphicsView::_ZThn16_N13QGraphicsViewD0Ev
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+552 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+560 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QGraphicsView
+ size=48 align=8
+ base size=48 base align=8
+QGraphicsView (0x0x7f1d19c6d9c0) 0
+ vptr=((& QGraphicsView::_ZTV13QGraphicsView) + 16)
+ QAbstractScrollArea (0x0x7f1d19c6da28) 0
+ primary-for QGraphicsView (0x0x7f1d19c6d9c0)
+ QFrame (0x0x7f1d19c6da90) 0
+ primary-for QAbstractScrollArea (0x0x7f1d19c6da28)
+ QWidget (0x0x7f1d198b2230) 0
+ primary-for QFrame (0x0x7f1d19c6da90)
+ QObject (0x0x7f1d19ca9780) 0
+ primary-for QWidget (0x0x7f1d198b2230)
+ QPaintDevice (0x0x7f1d19ca97e0) 16
+ vptr=((& QGraphicsView::_ZTV13QGraphicsView) + 504)
+
+Class QGroupBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGroupBox::QPrivateSignal (0x0x7f1d19903f00) 0 empty
+
+Vtable for QGroupBox
+QGroupBox::_ZTV9QGroupBox: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QGroupBox)
+16 (int (*)(...))QGroupBox::metaObject
+24 (int (*)(...))QGroupBox::qt_metacast
+32 (int (*)(...))QGroupBox::qt_metacall
+40 (int (*)(...))QGroupBox::~QGroupBox
+48 (int (*)(...))QGroupBox::~QGroupBox
+56 (int (*)(...))QGroupBox::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QGroupBox::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QGroupBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QGroupBox::mousePressEvent
+176 (int (*)(...))QGroupBox::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QGroupBox::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QGroupBox::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QGroupBox::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QGroupBox::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QGroupBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI9QGroupBox)
+448 (int (*)(...))QGroupBox::_ZThn16_N9QGroupBoxD1Ev
+456 (int (*)(...))QGroupBox::_ZThn16_N9QGroupBoxD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QGroupBox
+ size=48 align=8
+ base size=48 base align=8
+QGroupBox (0x0x7f1d19c6dc98) 0
+ vptr=((& QGroupBox::_ZTV9QGroupBox) + 16)
+ QWidget (0x0x7f1d199028c0) 0
+ primary-for QGroupBox (0x0x7f1d19c6dc98)
+ QObject (0x0x7f1d19903e40) 0
+ primary-for QWidget (0x0x7f1d199028c0)
+ QPaintDevice (0x0x7f1d19903ea0) 16
+ vptr=((& QGroupBox::_ZTV9QGroupBox) + 448)
+
+Class QHeaderView::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QHeaderView::QPrivateSignal (0x0x7f1d1992d1e0) 0 empty
+
+Vtable for QHeaderView
+QHeaderView::_ZTV11QHeaderView: 108 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QHeaderView)
+16 (int (*)(...))QHeaderView::metaObject
+24 (int (*)(...))QHeaderView::qt_metacast
+32 (int (*)(...))QHeaderView::qt_metacall
+40 (int (*)(...))QHeaderView::~QHeaderView
+48 (int (*)(...))QHeaderView::~QHeaderView
+56 (int (*)(...))QHeaderView::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QAbstractItemView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QHeaderView::setVisible
+128 (int (*)(...))QHeaderView::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QHeaderView::mousePressEvent
+176 (int (*)(...))QHeaderView::mouseReleaseEvent
+184 (int (*)(...))QHeaderView::mouseDoubleClickEvent
+192 (int (*)(...))QHeaderView::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QAbstractItemView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QHeaderView::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractItemView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QAbstractItemView::dragMoveEvent
+328 (int (*)(...))QAbstractItemView::dragLeaveEvent
+336 (int (*)(...))QAbstractItemView::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QHeaderView::viewportEvent
+448 (int (*)(...))QHeaderView::scrollContentsBy
+456 (int (*)(...))QAbstractItemView::viewportSizeHint
+464 (int (*)(...))QHeaderView::setModel
+472 (int (*)(...))QAbstractItemView::setSelectionModel
+480 (int (*)(...))QAbstractItemView::keyboardSearch
+488 (int (*)(...))QHeaderView::visualRect
+496 (int (*)(...))QHeaderView::scrollTo
+504 (int (*)(...))QHeaderView::indexAt
+512 (int (*)(...))QAbstractItemView::sizeHintForRow
+520 (int (*)(...))QAbstractItemView::sizeHintForColumn
+528 (int (*)(...))QHeaderView::reset
+536 (int (*)(...))QAbstractItemView::setRootIndex
+544 (int (*)(...))QHeaderView::doItemsLayout
+552 (int (*)(...))QAbstractItemView::selectAll
+560 (int (*)(...))QHeaderView::dataChanged
+568 (int (*)(...))QHeaderView::rowsInserted
+576 (int (*)(...))QAbstractItemView::rowsAboutToBeRemoved
+584 (int (*)(...))QAbstractItemView::selectionChanged
+592 (int (*)(...))QHeaderView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QHeaderView::updateGeometries
+624 (int (*)(...))QAbstractItemView::verticalScrollbarAction
+632 (int (*)(...))QAbstractItemView::horizontalScrollbarAction
+640 (int (*)(...))QAbstractItemView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))QHeaderView::moveCursor
+688 (int (*)(...))QHeaderView::horizontalOffset
+696 (int (*)(...))QHeaderView::verticalOffset
+704 (int (*)(...))QHeaderView::isIndexHidden
+712 (int (*)(...))QHeaderView::setSelection
+720 (int (*)(...))QHeaderView::visualRegionForSelection
+728 (int (*)(...))QAbstractItemView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QAbstractItemView::startDrag
+760 (int (*)(...))QAbstractItemView::viewOptions
+768 (int (*)(...))QHeaderView::paintSection
+776 (int (*)(...))QHeaderView::sectionSizeFromContents
+784 (int (*)(...))-16
+792 (int (*)(...))(& _ZTI11QHeaderView)
+800 (int (*)(...))QHeaderView::_ZThn16_N11QHeaderViewD1Ev
+808 (int (*)(...))QHeaderView::_ZThn16_N11QHeaderViewD0Ev
+816 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+824 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+832 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+840 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+848 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+856 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QHeaderView
+ size=48 align=8
+ base size=48 base align=8
+QHeaderView (0x0x7f1d19c6dd00) 0
+ vptr=((& QHeaderView::_ZTV11QHeaderView) + 16)
+ QAbstractItemView (0x0x7f1d19c6dd68) 0
+ primary-for QHeaderView (0x0x7f1d19c6dd00)
+ QAbstractScrollArea (0x0x7f1d19c6ddd0) 0
+ primary-for QAbstractItemView (0x0x7f1d19c6dd68)
+ QFrame (0x0x7f1d19c6de38) 0
+ primary-for QAbstractScrollArea (0x0x7f1d19c6ddd0)
+ QWidget (0x0x7f1d19902930) 0
+ primary-for QFrame (0x0x7f1d19c6de38)
+ QObject (0x0x7f1d1992d120) 0
+ primary-for QWidget (0x0x7f1d19902930)
+ QPaintDevice (0x0x7f1d1992d180) 16
+ vptr=((& QHeaderView::_ZTV11QHeaderView) + 800)
+
+Class QLineEdit::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLineEdit::QPrivateSignal (0x0x7f1d1992dba0) 0 empty
+
+Vtable for QLineEdit
+QLineEdit::_ZTV9QLineEdit: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QLineEdit)
+16 (int (*)(...))QLineEdit::metaObject
+24 (int (*)(...))QLineEdit::qt_metacast
+32 (int (*)(...))QLineEdit::qt_metacall
+40 (int (*)(...))QLineEdit::~QLineEdit
+48 (int (*)(...))QLineEdit::~QLineEdit
+56 (int (*)(...))QLineEdit::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QLineEdit::sizeHint
+136 (int (*)(...))QLineEdit::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QLineEdit::mousePressEvent
+176 (int (*)(...))QLineEdit::mouseReleaseEvent
+184 (int (*)(...))QLineEdit::mouseDoubleClickEvent
+192 (int (*)(...))QLineEdit::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QLineEdit::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QLineEdit::focusInEvent
+232 (int (*)(...))QLineEdit::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QLineEdit::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QLineEdit::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QLineEdit::dragEnterEvent
+320 (int (*)(...))QLineEdit::dragMoveEvent
+328 (int (*)(...))QLineEdit::dragLeaveEvent
+336 (int (*)(...))QLineEdit::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QLineEdit::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QLineEdit::inputMethodEvent
+416 (int (*)(...))QLineEdit::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI9QLineEdit)
+448 (int (*)(...))QLineEdit::_ZThn16_N9QLineEditD1Ev
+456 (int (*)(...))QLineEdit::_ZThn16_N9QLineEditD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QLineEdit
+ size=48 align=8
+ base size=48 base align=8
+QLineEdit (0x0x7f1d1994c3a8) 0
+ vptr=((& QLineEdit::_ZTV9QLineEdit) + 16)
+ QWidget (0x0x7f1d1994e230) 0
+ primary-for QLineEdit (0x0x7f1d1994c3a8)
+ QObject (0x0x7f1d1992dae0) 0
+ primary-for QWidget (0x0x7f1d1994e230)
+ QPaintDevice (0x0x7f1d1992db40) 16
+ vptr=((& QLineEdit::_ZTV9QLineEdit) + 448)
+
+Class QInputDialog::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QInputDialog::QPrivateSignal (0x0x7f1d19971000) 0 empty
+
+Vtable for QInputDialog
+QInputDialog::_ZTV12QInputDialog: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QInputDialog)
+16 (int (*)(...))QInputDialog::metaObject
+24 (int (*)(...))QInputDialog::qt_metacast
+32 (int (*)(...))QInputDialog::qt_metacall
+40 (int (*)(...))QInputDialog::~QInputDialog
+48 (int (*)(...))QInputDialog::~QInputDialog
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QDialog::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QInputDialog::setVisible
+128 (int (*)(...))QInputDialog::sizeHint
+136 (int (*)(...))QInputDialog::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QDialog::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QDialog::resizeEvent
+280 (int (*)(...))QDialog::closeEvent
+288 (int (*)(...))QDialog::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QDialog::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDialog::open
+440 (int (*)(...))QDialog::exec
+448 (int (*)(...))QInputDialog::done
+456 (int (*)(...))QDialog::accept
+464 (int (*)(...))QDialog::reject
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI12QInputDialog)
+488 (int (*)(...))QInputDialog::_ZThn16_N12QInputDialogD1Ev
+496 (int (*)(...))QInputDialog::_ZThn16_N12QInputDialogD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QInputDialog
+ size=48 align=8
+ base size=48 base align=8
+QInputDialog (0x0x7f1d1994c410) 0
+ vptr=((& QInputDialog::_ZTV12QInputDialog) + 16)
+ QDialog (0x0x7f1d1994c478) 0
+ primary-for QInputDialog (0x0x7f1d1994c410)
+ QWidget (0x0x7f1d1994e620) 0
+ primary-for QDialog (0x0x7f1d1994c478)
+ QObject (0x0x7f1d1992df00) 0
+ primary-for QWidget (0x0x7f1d1994e620)
+ QPaintDevice (0x0x7f1d1992df60) 16
+ vptr=((& QInputDialog::_ZTV12QInputDialog) + 488)
+
+Class QItemDelegate::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QItemDelegate::QPrivateSignal (0x0x7f1d19971900) 0 empty
+
+Vtable for QItemDelegate
+QItemDelegate::_ZTV13QItemDelegate: 28 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QItemDelegate)
+16 (int (*)(...))QItemDelegate::metaObject
+24 (int (*)(...))QItemDelegate::qt_metacast
+32 (int (*)(...))QItemDelegate::qt_metacall
+40 (int (*)(...))QItemDelegate::~QItemDelegate
+48 (int (*)(...))QItemDelegate::~QItemDelegate
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QItemDelegate::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QItemDelegate::paint
+120 (int (*)(...))QItemDelegate::sizeHint
+128 (int (*)(...))QItemDelegate::createEditor
+136 (int (*)(...))QAbstractItemDelegate::destroyEditor
+144 (int (*)(...))QItemDelegate::setEditorData
+152 (int (*)(...))QItemDelegate::setModelData
+160 (int (*)(...))QItemDelegate::updateEditorGeometry
+168 (int (*)(...))QItemDelegate::editorEvent
+176 (int (*)(...))QAbstractItemDelegate::helpEvent
+184 (int (*)(...))QAbstractItemDelegate::paintingRoles
+192 (int (*)(...))QItemDelegate::drawDisplay
+200 (int (*)(...))QItemDelegate::drawDecoration
+208 (int (*)(...))QItemDelegate::drawFocus
+216 (int (*)(...))QItemDelegate::drawCheck
+
+Class QItemDelegate
+ size=16 align=8
+ base size=16 base align=8
+QItemDelegate (0x0x7f1d1994c5b0) 0
+ vptr=((& QItemDelegate::_ZTV13QItemDelegate) + 16)
+ QAbstractItemDelegate (0x0x7f1d1994c618) 0
+ primary-for QItemDelegate (0x0x7f1d1994c5b0)
+ QObject (0x0x7f1d199718a0) 0
+ primary-for QAbstractItemDelegate (0x0x7f1d1994c618)
+
+Vtable for QItemEditorCreatorBase
+QItemEditorCreatorBase::_ZTV22QItemEditorCreatorBase: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QItemEditorCreatorBase)
+16 0
+24 0
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+
+Class QItemEditorCreatorBase
+ size=8 align=8
+ base size=8 base align=8
+QItemEditorCreatorBase (0x0x7f1d19971ae0) 0 nearly-empty
+ vptr=((& QItemEditorCreatorBase::_ZTV22QItemEditorCreatorBase) + 16)
+
+Vtable for QItemEditorFactory
+QItemEditorFactory::_ZTV18QItemEditorFactory: 6 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QItemEditorFactory)
+16 (int (*)(...))QItemEditorFactory::~QItemEditorFactory
+24 (int (*)(...))QItemEditorFactory::~QItemEditorFactory
+32 (int (*)(...))QItemEditorFactory::createEditor
+40 (int (*)(...))QItemEditorFactory::valuePropertyName
+
+Class QItemEditorFactory
+ size=16 align=8
+ base size=16 base align=8
+QItemEditorFactory (0x0x7f1d19971e40) 0
+ vptr=((& QItemEditorFactory::_ZTV18QItemEditorFactory) + 16)
+
+Class QKeyEventTransition::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QKeyEventTransition::QPrivateSignal (0x0x7f1d199ce180) 0 empty
+
+Vtable for QKeyEventTransition
+QKeyEventTransition::_ZTV19QKeyEventTransition: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QKeyEventTransition)
+16 (int (*)(...))QKeyEventTransition::metaObject
+24 (int (*)(...))QKeyEventTransition::qt_metacast
+32 (int (*)(...))QKeyEventTransition::qt_metacall
+40 (int (*)(...))QKeyEventTransition::~QKeyEventTransition
+48 (int (*)(...))QKeyEventTransition::~QKeyEventTransition
+56 (int (*)(...))QEventTransition::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QKeyEventTransition::eventTest
+120 (int (*)(...))QKeyEventTransition::onTransition
+
+Class QKeyEventTransition
+ size=16 align=8
+ base size=16 base align=8
+QKeyEventTransition (0x0x7f1d1994c750) 0
+ vptr=((& QKeyEventTransition::_ZTV19QKeyEventTransition) + 16)
+ QEventTransition (0x0x7f1d1994c7b8) 0
+ primary-for QKeyEventTransition (0x0x7f1d1994c750)
+ QAbstractTransition (0x0x7f1d1994c820) 0
+ primary-for QEventTransition (0x0x7f1d1994c7b8)
+ QObject (0x0x7f1d199ce120) 0
+ primary-for QAbstractTransition (0x0x7f1d1994c820)
+
+Class QKeySequenceEdit::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QKeySequenceEdit::QPrivateSignal (0x0x7f1d199ce420) 0 empty
+
+Vtable for QKeySequenceEdit
+QKeySequenceEdit::_ZTV16QKeySequenceEdit: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QKeySequenceEdit)
+16 (int (*)(...))QKeySequenceEdit::metaObject
+24 (int (*)(...))QKeySequenceEdit::qt_metacast
+32 (int (*)(...))QKeySequenceEdit::qt_metacall
+40 (int (*)(...))QKeySequenceEdit::~QKeySequenceEdit
+48 (int (*)(...))QKeySequenceEdit::~QKeySequenceEdit
+56 (int (*)(...))QKeySequenceEdit::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QKeySequenceEdit::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QKeySequenceEdit::keyPressEvent
+216 (int (*)(...))QKeySequenceEdit::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI16QKeySequenceEdit)
+448 (int (*)(...))QKeySequenceEdit::_ZThn16_N16QKeySequenceEditD1Ev
+456 (int (*)(...))QKeySequenceEdit::_ZThn16_N16QKeySequenceEditD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QKeySequenceEdit
+ size=48 align=8
+ base size=48 base align=8
+QKeySequenceEdit (0x0x7f1d1994c888) 0
+ vptr=((& QKeySequenceEdit::_ZTV16QKeySequenceEdit) + 16)
+ QWidget (0x0x7f1d19996930) 0
+ primary-for QKeySequenceEdit (0x0x7f1d1994c888)
+ QObject (0x0x7f1d199ce360) 0
+ primary-for QWidget (0x0x7f1d19996930)
+ QPaintDevice (0x0x7f1d199ce3c0) 16
+ vptr=((& QKeySequenceEdit::_ZTV16QKeySequenceEdit) + 448)
+
+Class QLabel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLabel::QPrivateSignal (0x0x7f1d199ce6c0) 0 empty
+
+Vtable for QLabel
+QLabel::_ZTV6QLabel: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QLabel)
+16 (int (*)(...))QLabel::metaObject
+24 (int (*)(...))QLabel::qt_metacast
+32 (int (*)(...))QLabel::qt_metacall
+40 (int (*)(...))QLabel::~QLabel
+48 (int (*)(...))QLabel::~QLabel
+56 (int (*)(...))QLabel::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QLabel::sizeHint
+136 (int (*)(...))QLabel::minimumSizeHint
+144 (int (*)(...))QLabel::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QLabel::mousePressEvent
+176 (int (*)(...))QLabel::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QLabel::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QLabel::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QLabel::focusInEvent
+232 (int (*)(...))QLabel::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QLabel::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QLabel::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QLabel::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QLabel::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI6QLabel)
+448 (int (*)(...))QLabel::_ZThn16_N6QLabelD1Ev
+456 (int (*)(...))QLabel::_ZThn16_N6QLabelD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QLabel
+ size=48 align=8
+ base size=48 base align=8
+QLabel (0x0x7f1d1994c8f0) 0
+ vptr=((& QLabel::_ZTV6QLabel) + 16)
+ QFrame (0x0x7f1d1994c958) 0
+ primary-for QLabel (0x0x7f1d1994c8f0)
+ QWidget (0x0x7f1d19996a80) 0
+ primary-for QFrame (0x0x7f1d1994c958)
+ QObject (0x0x7f1d199ce600) 0
+ primary-for QWidget (0x0x7f1d19996a80)
+ QPaintDevice (0x0x7f1d199ce660) 16
+ vptr=((& QLabel::_ZTV6QLabel) + 448)
+
+Class QLCDNumber::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLCDNumber::QPrivateSignal (0x0x7f1d199ce960) 0 empty
+
+Vtable for QLCDNumber
+QLCDNumber::_ZTV10QLCDNumber: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QLCDNumber)
+16 (int (*)(...))QLCDNumber::metaObject
+24 (int (*)(...))QLCDNumber::qt_metacast
+32 (int (*)(...))QLCDNumber::qt_metacall
+40 (int (*)(...))QLCDNumber::~QLCDNumber
+48 (int (*)(...))QLCDNumber::~QLCDNumber
+56 (int (*)(...))QLCDNumber::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QLCDNumber::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QLCDNumber::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI10QLCDNumber)
+448 (int (*)(...))QLCDNumber::_ZThn16_N10QLCDNumberD1Ev
+456 (int (*)(...))QLCDNumber::_ZThn16_N10QLCDNumberD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QLCDNumber
+ size=48 align=8
+ base size=48 base align=8
+QLCDNumber (0x0x7f1d1994c9c0) 0
+ vptr=((& QLCDNumber::_ZTV10QLCDNumber) + 16)
+ QFrame (0x0x7f1d1994ca28) 0
+ primary-for QLCDNumber (0x0x7f1d1994c9c0)
+ QWidget (0x0x7f1d19996cb0) 0
+ primary-for QFrame (0x0x7f1d1994ca28)
+ QObject (0x0x7f1d199ce8a0) 0
+ primary-for QWidget (0x0x7f1d19996cb0)
+ QPaintDevice (0x0x7f1d199ce900) 16
+ vptr=((& QLCDNumber::_ZTV10QLCDNumber) + 448)
+
+Class QListView::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QListView::QPrivateSignal (0x0x7f1d199ced80) 0 empty
+
+Vtable for QListView
+QListView::_ZTV9QListView: 106 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QListView)
+16 (int (*)(...))QListView::metaObject
+24 (int (*)(...))QListView::qt_metacast
+32 (int (*)(...))QListView::qt_metacall
+40 (int (*)(...))QListView::~QListView
+48 (int (*)(...))QListView::~QListView
+56 (int (*)(...))QListView::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QListView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractItemView::mousePressEvent
+176 (int (*)(...))QListView::mouseReleaseEvent
+184 (int (*)(...))QAbstractItemView::mouseDoubleClickEvent
+192 (int (*)(...))QListView::mouseMoveEvent
+200 (int (*)(...))QListView::wheelEvent
+208 (int (*)(...))QAbstractItemView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QListView::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QListView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QListView::dragMoveEvent
+328 (int (*)(...))QListView::dragLeaveEvent
+336 (int (*)(...))QListView::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractItemView::viewportEvent
+448 (int (*)(...))QListView::scrollContentsBy
+456 (int (*)(...))QListView::viewportSizeHint
+464 (int (*)(...))QAbstractItemView::setModel
+472 (int (*)(...))QAbstractItemView::setSelectionModel
+480 (int (*)(...))QAbstractItemView::keyboardSearch
+488 (int (*)(...))QListView::visualRect
+496 (int (*)(...))QListView::scrollTo
+504 (int (*)(...))QListView::indexAt
+512 (int (*)(...))QAbstractItemView::sizeHintForRow
+520 (int (*)(...))QAbstractItemView::sizeHintForColumn
+528 (int (*)(...))QListView::reset
+536 (int (*)(...))QListView::setRootIndex
+544 (int (*)(...))QListView::doItemsLayout
+552 (int (*)(...))QAbstractItemView::selectAll
+560 (int (*)(...))QListView::dataChanged
+568 (int (*)(...))QListView::rowsInserted
+576 (int (*)(...))QListView::rowsAboutToBeRemoved
+584 (int (*)(...))QListView::selectionChanged
+592 (int (*)(...))QListView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QListView::updateGeometries
+624 (int (*)(...))QAbstractItemView::verticalScrollbarAction
+632 (int (*)(...))QAbstractItemView::horizontalScrollbarAction
+640 (int (*)(...))QAbstractItemView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))QListView::moveCursor
+688 (int (*)(...))QListView::horizontalOffset
+696 (int (*)(...))QListView::verticalOffset
+704 (int (*)(...))QListView::isIndexHidden
+712 (int (*)(...))QListView::setSelection
+720 (int (*)(...))QListView::visualRegionForSelection
+728 (int (*)(...))QListView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QListView::startDrag
+760 (int (*)(...))QListView::viewOptions
+768 (int (*)(...))-16
+776 (int (*)(...))(& _ZTI9QListView)
+784 (int (*)(...))QListView::_ZThn16_N9QListViewD1Ev
+792 (int (*)(...))QListView::_ZThn16_N9QListViewD0Ev
+800 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+808 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+816 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+824 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+832 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+840 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QListView
+ size=48 align=8
+ base size=48 base align=8
+QListView (0x0x7f1d1994ca90) 0
+ vptr=((& QListView::_ZTV9QListView) + 16)
+ QAbstractItemView (0x0x7f1d1994caf8) 0
+ primary-for QListView (0x0x7f1d1994ca90)
+ QAbstractScrollArea (0x0x7f1d1994cb60) 0
+ primary-for QAbstractItemView (0x0x7f1d1994caf8)
+ QFrame (0x0x7f1d1994cbc8) 0
+ primary-for QAbstractScrollArea (0x0x7f1d1994cb60)
+ QWidget (0x0x7f1d199fe150) 0
+ primary-for QFrame (0x0x7f1d1994cbc8)
+ QObject (0x0x7f1d199cecc0) 0
+ primary-for QWidget (0x0x7f1d199fe150)
+ QPaintDevice (0x0x7f1d199ced20) 16
+ vptr=((& QListView::_ZTV9QListView) + 784)
+
+Vtable for QListWidgetItem
+QListWidgetItem::_ZTV15QListWidgetItem: 11 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QListWidgetItem)
+16 (int (*)(...))QListWidgetItem::~QListWidgetItem
+24 (int (*)(...))QListWidgetItem::~QListWidgetItem
+32 (int (*)(...))QListWidgetItem::clone
+40 (int (*)(...))QListWidgetItem::setBackgroundColor
+48 (int (*)(...))QListWidgetItem::data
+56 (int (*)(...))QListWidgetItem::setData
+64 (int (*)(...))QListWidgetItem::operator<
+72 (int (*)(...))QListWidgetItem::read
+80 (int (*)(...))QListWidgetItem::write
+
+Class QListWidgetItem
+ size=48 align=8
+ base size=44 base align=8
+QListWidgetItem (0x0x7f1d19a2e360) 0
+ vptr=((& QListWidgetItem::_ZTV15QListWidgetItem) + 16)
+
+Class QListWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QListWidget::QPrivateSignal (0x0x7f1d19a700c0) 0 empty
+
+Vtable for QListWidget
+QListWidget::_ZTV11QListWidget: 110 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QListWidget)
+16 (int (*)(...))QListWidget::metaObject
+24 (int (*)(...))QListWidget::qt_metacast
+32 (int (*)(...))QListWidget::qt_metacall
+40 (int (*)(...))QListWidget::~QListWidget
+48 (int (*)(...))QListWidget::~QListWidget
+56 (int (*)(...))QListWidget::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QListView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractItemView::mousePressEvent
+176 (int (*)(...))QListView::mouseReleaseEvent
+184 (int (*)(...))QAbstractItemView::mouseDoubleClickEvent
+192 (int (*)(...))QListView::mouseMoveEvent
+200 (int (*)(...))QListView::wheelEvent
+208 (int (*)(...))QAbstractItemView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QListView::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QListView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QListView::dragMoveEvent
+328 (int (*)(...))QListView::dragLeaveEvent
+336 (int (*)(...))QListWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractItemView::viewportEvent
+448 (int (*)(...))QListView::scrollContentsBy
+456 (int (*)(...))QListView::viewportSizeHint
+464 (int (*)(...))QListWidget::setModel
+472 (int (*)(...))QListWidget::setSelectionModel
+480 (int (*)(...))QAbstractItemView::keyboardSearch
+488 (int (*)(...))QListView::visualRect
+496 (int (*)(...))QListView::scrollTo
+504 (int (*)(...))QListView::indexAt
+512 (int (*)(...))QAbstractItemView::sizeHintForRow
+520 (int (*)(...))QAbstractItemView::sizeHintForColumn
+528 (int (*)(...))QListView::reset
+536 (int (*)(...))QListView::setRootIndex
+544 (int (*)(...))QListView::doItemsLayout
+552 (int (*)(...))QAbstractItemView::selectAll
+560 (int (*)(...))QListView::dataChanged
+568 (int (*)(...))QListView::rowsInserted
+576 (int (*)(...))QListView::rowsAboutToBeRemoved
+584 (int (*)(...))QListView::selectionChanged
+592 (int (*)(...))QListView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QListView::updateGeometries
+624 (int (*)(...))QAbstractItemView::verticalScrollbarAction
+632 (int (*)(...))QAbstractItemView::horizontalScrollbarAction
+640 (int (*)(...))QAbstractItemView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))QListView::moveCursor
+688 (int (*)(...))QListView::horizontalOffset
+696 (int (*)(...))QListView::verticalOffset
+704 (int (*)(...))QListView::isIndexHidden
+712 (int (*)(...))QListView::setSelection
+720 (int (*)(...))QListView::visualRegionForSelection
+728 (int (*)(...))QListView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QListView::startDrag
+760 (int (*)(...))QListView::viewOptions
+768 (int (*)(...))QListWidget::mimeTypes
+776 (int (*)(...))QListWidget::mimeData
+784 (int (*)(...))QListWidget::dropMimeData
+792 (int (*)(...))QListWidget::supportedDropActions
+800 (int (*)(...))-16
+808 (int (*)(...))(& _ZTI11QListWidget)
+816 (int (*)(...))QListWidget::_ZThn16_N11QListWidgetD1Ev
+824 (int (*)(...))QListWidget::_ZThn16_N11QListWidgetD0Ev
+832 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+840 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+848 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+856 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+864 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+872 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QListWidget
+ size=48 align=8
+ base size=48 base align=8
+QListWidget (0x0x7f1d1994cd00) 0
+ vptr=((& QListWidget::_ZTV11QListWidget) + 16)
+ QListView (0x0x7f1d1994cd68) 0
+ primary-for QListWidget (0x0x7f1d1994cd00)
+ QAbstractItemView (0x0x7f1d1994cdd0) 0
+ primary-for QListView (0x0x7f1d1994cd68)
+ QAbstractScrollArea (0x0x7f1d1994ce38) 0
+ primary-for QAbstractItemView (0x0x7f1d1994cdd0)
+ QFrame (0x0x7f1d1994cea0) 0
+ primary-for QAbstractScrollArea (0x0x7f1d1994ce38)
+ QWidget (0x0x7f1d199fe9a0) 0
+ primary-for QFrame (0x0x7f1d1994cea0)
+ QObject (0x0x7f1d19a70000) 0
+ primary-for QWidget (0x0x7f1d199fe9a0)
+ QPaintDevice (0x0x7f1d19a70060) 16
+ vptr=((& QListWidget::_ZTV11QListWidget) + 816)
+
+Class QMainWindow::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMainWindow::QPrivateSignal (0x0x7f1d19a70600) 0 empty
+
+Vtable for QMainWindow
+QMainWindow::_ZTV11QMainWindow: 65 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QMainWindow)
+16 (int (*)(...))QMainWindow::metaObject
+24 (int (*)(...))QMainWindow::qt_metacast
+32 (int (*)(...))QMainWindow::qt_metacall
+40 (int (*)(...))QMainWindow::~QMainWindow
+48 (int (*)(...))QMainWindow::~QMainWindow
+56 (int (*)(...))QMainWindow::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QMainWindow::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QMainWindow::createPopupMenu
+440 (int (*)(...))-16
+448 (int (*)(...))(& _ZTI11QMainWindow)
+456 (int (*)(...))QMainWindow::_ZThn16_N11QMainWindowD1Ev
+464 (int (*)(...))QMainWindow::_ZThn16_N11QMainWindowD0Ev
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QMainWindow
+ size=48 align=8
+ base size=48 base align=8
+QMainWindow (0x0x7f1d1994cf08) 0
+ vptr=((& QMainWindow::_ZTV11QMainWindow) + 16)
+ QWidget (0x0x7f1d199fec40) 0
+ primary-for QMainWindow (0x0x7f1d1994cf08)
+ QObject (0x0x7f1d19a70540) 0
+ primary-for QWidget (0x0x7f1d199fec40)
+ QPaintDevice (0x0x7f1d19a705a0) 16
+ vptr=((& QMainWindow::_ZTV11QMainWindow) + 456)
+
+Class QMdiArea::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMdiArea::QPrivateSignal (0x0x7f1d196c1120) 0 empty
+
+Vtable for QMdiArea
+QMdiArea::_ZTV8QMdiArea: 68 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QMdiArea)
+16 (int (*)(...))QMdiArea::metaObject
+24 (int (*)(...))QMdiArea::qt_metacast
+32 (int (*)(...))QMdiArea::qt_metacall
+40 (int (*)(...))QMdiArea::~QMdiArea
+48 (int (*)(...))QMdiArea::~QMdiArea
+56 (int (*)(...))QMdiArea::event
+64 (int (*)(...))QMdiArea::eventFilter
+72 (int (*)(...))QMdiArea::timerEvent
+80 (int (*)(...))QMdiArea::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QMdiArea::sizeHint
+136 (int (*)(...))QMdiArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractScrollArea::mousePressEvent
+176 (int (*)(...))QAbstractScrollArea::mouseReleaseEvent
+184 (int (*)(...))QAbstractScrollArea::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractScrollArea::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QAbstractScrollArea::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QMdiArea::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QMdiArea::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractScrollArea::dragEnterEvent
+320 (int (*)(...))QAbstractScrollArea::dragMoveEvent
+328 (int (*)(...))QAbstractScrollArea::dragLeaveEvent
+336 (int (*)(...))QAbstractScrollArea::dropEvent
+344 (int (*)(...))QMdiArea::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QMdiArea::setupViewport
+440 (int (*)(...))QMdiArea::viewportEvent
+448 (int (*)(...))QMdiArea::scrollContentsBy
+456 (int (*)(...))QAbstractScrollArea::viewportSizeHint
+464 (int (*)(...))-16
+472 (int (*)(...))(& _ZTI8QMdiArea)
+480 (int (*)(...))QMdiArea::_ZThn16_N8QMdiAreaD1Ev
+488 (int (*)(...))QMdiArea::_ZThn16_N8QMdiAreaD0Ev
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QMdiArea
+ size=48 align=8
+ base size=48 base align=8
+QMdiArea (0x0x7f1d19aa8068) 0
+ vptr=((& QMdiArea::_ZTV8QMdiArea) + 16)
+ QAbstractScrollArea (0x0x7f1d19aa80d0) 0
+ primary-for QMdiArea (0x0x7f1d19aa8068)
+ QFrame (0x0x7f1d19aa8138) 0
+ primary-for QAbstractScrollArea (0x0x7f1d19aa80d0)
+ QWidget (0x0x7f1d19aa47e0) 0
+ primary-for QFrame (0x0x7f1d19aa8138)
+ QObject (0x0x7f1d196c1060) 0
+ primary-for QWidget (0x0x7f1d19aa47e0)
+ QPaintDevice (0x0x7f1d196c10c0) 16
+ vptr=((& QMdiArea::_ZTV8QMdiArea) + 480)
+
+Class QMdiSubWindow::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMdiSubWindow::QPrivateSignal (0x0x7f1d196c1c00) 0 empty
+
+Vtable for QMdiSubWindow
+QMdiSubWindow::_ZTV13QMdiSubWindow: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QMdiSubWindow)
+16 (int (*)(...))QMdiSubWindow::metaObject
+24 (int (*)(...))QMdiSubWindow::qt_metacast
+32 (int (*)(...))QMdiSubWindow::qt_metacall
+40 (int (*)(...))QMdiSubWindow::~QMdiSubWindow
+48 (int (*)(...))QMdiSubWindow::~QMdiSubWindow
+56 (int (*)(...))QMdiSubWindow::event
+64 (int (*)(...))QMdiSubWindow::eventFilter
+72 (int (*)(...))QMdiSubWindow::timerEvent
+80 (int (*)(...))QMdiSubWindow::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QMdiSubWindow::sizeHint
+136 (int (*)(...))QMdiSubWindow::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QMdiSubWindow::mousePressEvent
+176 (int (*)(...))QMdiSubWindow::mouseReleaseEvent
+184 (int (*)(...))QMdiSubWindow::mouseDoubleClickEvent
+192 (int (*)(...))QMdiSubWindow::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QMdiSubWindow::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QMdiSubWindow::focusInEvent
+232 (int (*)(...))QMdiSubWindow::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QMdiSubWindow::leaveEvent
+256 (int (*)(...))QMdiSubWindow::paintEvent
+264 (int (*)(...))QMdiSubWindow::moveEvent
+272 (int (*)(...))QMdiSubWindow::resizeEvent
+280 (int (*)(...))QMdiSubWindow::closeEvent
+288 (int (*)(...))QMdiSubWindow::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QMdiSubWindow::showEvent
+352 (int (*)(...))QMdiSubWindow::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QMdiSubWindow::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI13QMdiSubWindow)
+448 (int (*)(...))QMdiSubWindow::_ZThn16_N13QMdiSubWindowD1Ev
+456 (int (*)(...))QMdiSubWindow::_ZThn16_N13QMdiSubWindowD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QMdiSubWindow
+ size=48 align=8
+ base size=48 base align=8
+QMdiSubWindow (0x0x7f1d19aa8270) 0
+ vptr=((& QMdiSubWindow::_ZTV13QMdiSubWindow) + 16)
+ QWidget (0x0x7f1d196ed2a0) 0
+ primary-for QMdiSubWindow (0x0x7f1d19aa8270)
+ QObject (0x0x7f1d196c1b40) 0
+ primary-for QWidget (0x0x7f1d196ed2a0)
+ QPaintDevice (0x0x7f1d196c1ba0) 16
+ vptr=((& QMdiSubWindow::_ZTV13QMdiSubWindow) + 448)
+
+Class QMenu::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMenu::QPrivateSignal (0x0x7f1d19717600) 0 empty
+
+Vtable for QMenu
+QMenu::_ZTV5QMenu: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI5QMenu)
+16 (int (*)(...))QMenu::metaObject
+24 (int (*)(...))QMenu::qt_metacast
+32 (int (*)(...))QMenu::qt_metacall
+40 (int (*)(...))QMenu::~QMenu
+48 (int (*)(...))QMenu::~QMenu
+56 (int (*)(...))QMenu::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QMenu::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QMenu::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QMenu::mousePressEvent
+176 (int (*)(...))QMenu::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QMenu::mouseMoveEvent
+200 (int (*)(...))QMenu::wheelEvent
+208 (int (*)(...))QMenu::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QMenu::enterEvent
+248 (int (*)(...))QMenu::leaveEvent
+256 (int (*)(...))QMenu::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QMenu::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QMenu::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QMenu::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QMenu::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI5QMenu)
+448 (int (*)(...))QMenu::_ZThn16_N5QMenuD1Ev
+456 (int (*)(...))QMenu::_ZThn16_N5QMenuD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QMenu
+ size=48 align=8
+ base size=48 base align=8
+QMenu (0x0x7f1d19aa83a8) 0
+ vptr=((& QMenu::_ZTV5QMenu) + 16)
+ QWidget (0x0x7f1d196edcb0) 0
+ primary-for QMenu (0x0x7f1d19aa83a8)
+ QObject (0x0x7f1d19717540) 0
+ primary-for QWidget (0x0x7f1d196edcb0)
+ QPaintDevice (0x0x7f1d197175a0) 16
+ vptr=((& QMenu::_ZTV5QMenu) + 448)
+
+Class QMenuBar::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMenuBar::QPrivateSignal (0x0x7f1d19717a20) 0 empty
+
+Vtable for QMenuBar
+QMenuBar::_ZTV8QMenuBar: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QMenuBar)
+16 (int (*)(...))QMenuBar::metaObject
+24 (int (*)(...))QMenuBar::qt_metacast
+32 (int (*)(...))QMenuBar::qt_metacall
+40 (int (*)(...))QMenuBar::~QMenuBar
+48 (int (*)(...))QMenuBar::~QMenuBar
+56 (int (*)(...))QMenuBar::event
+64 (int (*)(...))QMenuBar::eventFilter
+72 (int (*)(...))QMenuBar::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QMenuBar::setVisible
+128 (int (*)(...))QMenuBar::sizeHint
+136 (int (*)(...))QMenuBar::minimumSizeHint
+144 (int (*)(...))QMenuBar::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QMenuBar::mousePressEvent
+176 (int (*)(...))QMenuBar::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QMenuBar::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QMenuBar::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QMenuBar::focusInEvent
+232 (int (*)(...))QMenuBar::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QMenuBar::leaveEvent
+256 (int (*)(...))QMenuBar::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QMenuBar::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QMenuBar::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QMenuBar::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI8QMenuBar)
+448 (int (*)(...))QMenuBar::_ZThn16_N8QMenuBarD1Ev
+456 (int (*)(...))QMenuBar::_ZThn16_N8QMenuBarD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QMenuBar
+ size=48 align=8
+ base size=48 base align=8
+QMenuBar (0x0x7f1d19aa8410) 0
+ vptr=((& QMenuBar::_ZTV8QMenuBar) + 16)
+ QWidget (0x0x7f1d196edd20) 0
+ primary-for QMenuBar (0x0x7f1d19aa8410)
+ QObject (0x0x7f1d19717960) 0
+ primary-for QWidget (0x0x7f1d196edd20)
+ QPaintDevice (0x0x7f1d197179c0) 16
+ vptr=((& QMenuBar::_ZTV8QMenuBar) + 448)
+
+Class QMessageBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMessageBox::QPrivateSignal (0x0x7f1d19717d80) 0 empty
+
+Vtable for QMessageBox
+QMessageBox::_ZTV11QMessageBox: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QMessageBox)
+16 (int (*)(...))QMessageBox::metaObject
+24 (int (*)(...))QMessageBox::qt_metacast
+32 (int (*)(...))QMessageBox::qt_metacall
+40 (int (*)(...))QMessageBox::~QMessageBox
+48 (int (*)(...))QMessageBox::~QMessageBox
+56 (int (*)(...))QMessageBox::event
+64 (int (*)(...))QDialog::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QDialog::setVisible
+128 (int (*)(...))QDialog::sizeHint
+136 (int (*)(...))QDialog::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QMessageBox::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QMessageBox::resizeEvent
+280 (int (*)(...))QMessageBox::closeEvent
+288 (int (*)(...))QDialog::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QMessageBox::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QMessageBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDialog::open
+440 (int (*)(...))QDialog::exec
+448 (int (*)(...))QDialog::done
+456 (int (*)(...))QDialog::accept
+464 (int (*)(...))QDialog::reject
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI11QMessageBox)
+488 (int (*)(...))QMessageBox::_ZThn16_N11QMessageBoxD1Ev
+496 (int (*)(...))QMessageBox::_ZThn16_N11QMessageBoxD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QMessageBox
+ size=48 align=8
+ base size=48 base align=8
+QMessageBox (0x0x7f1d19aa8478) 0
+ vptr=((& QMessageBox::_ZTV11QMessageBox) + 16)
+ QDialog (0x0x7f1d19aa84e0) 0
+ primary-for QMessageBox (0x0x7f1d19aa8478)
+ QWidget (0x0x7f1d196ede70) 0
+ primary-for QDialog (0x0x7f1d19aa84e0)
+ QObject (0x0x7f1d19717cc0) 0
+ primary-for QWidget (0x0x7f1d196ede70)
+ QPaintDevice (0x0x7f1d19717d20) 16
+ vptr=((& QMessageBox::_ZTV11QMessageBox) + 488)
+
+Class QMouseEventTransition::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMouseEventTransition::QPrivateSignal (0x0x7f1d197809c0) 0 empty
+
+Vtable for QMouseEventTransition
+QMouseEventTransition::_ZTV21QMouseEventTransition: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QMouseEventTransition)
+16 (int (*)(...))QMouseEventTransition::metaObject
+24 (int (*)(...))QMouseEventTransition::qt_metacast
+32 (int (*)(...))QMouseEventTransition::qt_metacall
+40 (int (*)(...))QMouseEventTransition::~QMouseEventTransition
+48 (int (*)(...))QMouseEventTransition::~QMouseEventTransition
+56 (int (*)(...))QEventTransition::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QMouseEventTransition::eventTest
+120 (int (*)(...))QMouseEventTransition::onTransition
+
+Class QMouseEventTransition
+ size=16 align=8
+ base size=16 base align=8
+QMouseEventTransition (0x0x7f1d19aa8618) 0
+ vptr=((& QMouseEventTransition::_ZTV21QMouseEventTransition) + 16)
+ QEventTransition (0x0x7f1d19aa8680) 0
+ primary-for QMouseEventTransition (0x0x7f1d19aa8618)
+ QAbstractTransition (0x0x7f1d19aa86e8) 0
+ primary-for QEventTransition (0x0x7f1d19aa8680)
+ QObject (0x0x7f1d19780960) 0
+ primary-for QAbstractTransition (0x0x7f1d19aa86e8)
+
+Class QOpenGLWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOpenGLWidget::QPrivateSignal (0x0x7f1d19780c60) 0 empty
+
+Vtable for QOpenGLWidget
+QOpenGLWidget::_ZTV13QOpenGLWidget: 67 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QOpenGLWidget)
+16 (int (*)(...))QOpenGLWidget::metaObject
+24 (int (*)(...))QOpenGLWidget::qt_metacast
+32 (int (*)(...))QOpenGLWidget::qt_metacall
+40 (int (*)(...))QOpenGLWidget::~QOpenGLWidget
+48 (int (*)(...))QOpenGLWidget::~QOpenGLWidget
+56 (int (*)(...))QOpenGLWidget::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QOpenGLWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QOpenGLWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QOpenGLWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QOpenGLWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QOpenGLWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QOpenGLWidget::initializeGL
+440 (int (*)(...))QOpenGLWidget::resizeGL
+448 (int (*)(...))QOpenGLWidget::paintGL
+456 (int (*)(...))-16
+464 (int (*)(...))(& _ZTI13QOpenGLWidget)
+472 (int (*)(...))QOpenGLWidget::_ZThn16_N13QOpenGLWidgetD1Ev
+480 (int (*)(...))QOpenGLWidget::_ZThn16_N13QOpenGLWidgetD0Ev
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 (int (*)(...))QOpenGLWidget::_ZThn16_NK13QOpenGLWidget11paintEngineEv
+504 (int (*)(...))QOpenGLWidget::_ZThn16_NK13QOpenGLWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+520 (int (*)(...))QOpenGLWidget::_ZThn16_NK13QOpenGLWidget10redirectedEP6QPoint
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QOpenGLWidget
+ size=48 align=8
+ base size=48 base align=8
+QOpenGLWidget (0x0x7f1d19aa8750) 0
+ vptr=((& QOpenGLWidget::_ZTV13QOpenGLWidget) + 16)
+ QWidget (0x0x7f1d19756b60) 0
+ primary-for QOpenGLWidget (0x0x7f1d19aa8750)
+ QObject (0x0x7f1d19780ba0) 0
+ primary-for QWidget (0x0x7f1d19756b60)
+ QPaintDevice (0x0x7f1d19780c00) 16
+ vptr=((& QOpenGLWidget::_ZTV13QOpenGLWidget) + 472)
+
+Class QTextEdit::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextEdit::QPrivateSignal (0x0x7f1d19780f00) 0 empty
+
+Class QTextEdit::ExtraSelection
+ size=24 align=8
+ base size=24 base align=8
+QTextEdit::ExtraSelection (0x0x7f1d19780f60) 0
+
+Vtable for QTextEdit
+QTextEdit::_ZTV9QTextEdit: 73 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QTextEdit)
+16 (int (*)(...))QTextEdit::metaObject
+24 (int (*)(...))QTextEdit::qt_metacast
+32 (int (*)(...))QTextEdit::qt_metacall
+40 (int (*)(...))QTextEdit::~QTextEdit
+48 (int (*)(...))QTextEdit::~QTextEdit
+56 (int (*)(...))QTextEdit::event
+64 (int (*)(...))QAbstractScrollArea::eventFilter
+72 (int (*)(...))QTextEdit::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QTextEdit::mousePressEvent
+176 (int (*)(...))QTextEdit::mouseReleaseEvent
+184 (int (*)(...))QTextEdit::mouseDoubleClickEvent
+192 (int (*)(...))QTextEdit::mouseMoveEvent
+200 (int (*)(...))QTextEdit::wheelEvent
+208 (int (*)(...))QTextEdit::keyPressEvent
+216 (int (*)(...))QTextEdit::keyReleaseEvent
+224 (int (*)(...))QTextEdit::focusInEvent
+232 (int (*)(...))QTextEdit::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QTextEdit::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QTextEdit::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QTextEdit::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QTextEdit::dragEnterEvent
+320 (int (*)(...))QTextEdit::dragMoveEvent
+328 (int (*)(...))QTextEdit::dragLeaveEvent
+336 (int (*)(...))QTextEdit::dropEvent
+344 (int (*)(...))QTextEdit::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QTextEdit::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QTextEdit::inputMethodEvent
+416 (int (*)(...))QTextEdit::inputMethodQuery
+424 (int (*)(...))QTextEdit::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractScrollArea::viewportEvent
+448 (int (*)(...))QTextEdit::scrollContentsBy
+456 (int (*)(...))QAbstractScrollArea::viewportSizeHint
+464 (int (*)(...))QTextEdit::loadResource
+472 (int (*)(...))QTextEdit::createMimeDataFromSelection
+480 (int (*)(...))QTextEdit::canInsertFromMimeData
+488 (int (*)(...))QTextEdit::insertFromMimeData
+496 (int (*)(...))QTextEdit::doSetTextCursor
+504 (int (*)(...))-16
+512 (int (*)(...))(& _ZTI9QTextEdit)
+520 (int (*)(...))QTextEdit::_ZThn16_N9QTextEditD1Ev
+528 (int (*)(...))QTextEdit::_ZThn16_N9QTextEditD0Ev
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+552 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+560 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+568 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+576 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QTextEdit
+ size=48 align=8
+ base size=48 base align=8
+QTextEdit (0x0x7f1d19aa8820) 0
+ vptr=((& QTextEdit::_ZTV9QTextEdit) + 16)
+ QAbstractScrollArea (0x0x7f1d19aa8888) 0
+ primary-for QTextEdit (0x0x7f1d19aa8820)
+ QFrame (0x0x7f1d19aa88f0) 0
+ primary-for QAbstractScrollArea (0x0x7f1d19aa8888)
+ QWidget (0x0x7f1d19756e00) 0
+ primary-for QFrame (0x0x7f1d19aa88f0)
+ QObject (0x0x7f1d19780e40) 0
+ primary-for QWidget (0x0x7f1d19756e00)
+ QPaintDevice (0x0x7f1d19780ea0) 16
+ vptr=((& QTextEdit::_ZTV9QTextEdit) + 520)
+
+Class QPlainTextEdit::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPlainTextEdit::QPrivateSignal (0x0x7f1d197d4c00) 0 empty
+
+Vtable for QPlainTextEdit
+QPlainTextEdit::_ZTV14QPlainTextEdit: 73 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QPlainTextEdit)
+16 (int (*)(...))QPlainTextEdit::metaObject
+24 (int (*)(...))QPlainTextEdit::qt_metacast
+32 (int (*)(...))QPlainTextEdit::qt_metacall
+40 (int (*)(...))QPlainTextEdit::~QPlainTextEdit
+48 (int (*)(...))QPlainTextEdit::~QPlainTextEdit
+56 (int (*)(...))QPlainTextEdit::event
+64 (int (*)(...))QAbstractScrollArea::eventFilter
+72 (int (*)(...))QPlainTextEdit::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QPlainTextEdit::mousePressEvent
+176 (int (*)(...))QPlainTextEdit::mouseReleaseEvent
+184 (int (*)(...))QPlainTextEdit::mouseDoubleClickEvent
+192 (int (*)(...))QPlainTextEdit::mouseMoveEvent
+200 (int (*)(...))QPlainTextEdit::wheelEvent
+208 (int (*)(...))QPlainTextEdit::keyPressEvent
+216 (int (*)(...))QPlainTextEdit::keyReleaseEvent
+224 (int (*)(...))QPlainTextEdit::focusInEvent
+232 (int (*)(...))QPlainTextEdit::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QPlainTextEdit::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QPlainTextEdit::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QPlainTextEdit::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QPlainTextEdit::dragEnterEvent
+320 (int (*)(...))QPlainTextEdit::dragMoveEvent
+328 (int (*)(...))QPlainTextEdit::dragLeaveEvent
+336 (int (*)(...))QPlainTextEdit::dropEvent
+344 (int (*)(...))QPlainTextEdit::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QPlainTextEdit::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QPlainTextEdit::inputMethodEvent
+416 (int (*)(...))QPlainTextEdit::inputMethodQuery
+424 (int (*)(...))QPlainTextEdit::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractScrollArea::viewportEvent
+448 (int (*)(...))QPlainTextEdit::scrollContentsBy
+456 (int (*)(...))QAbstractScrollArea::viewportSizeHint
+464 (int (*)(...))QPlainTextEdit::loadResource
+472 (int (*)(...))QPlainTextEdit::createMimeDataFromSelection
+480 (int (*)(...))QPlainTextEdit::canInsertFromMimeData
+488 (int (*)(...))QPlainTextEdit::insertFromMimeData
+496 (int (*)(...))QPlainTextEdit::doSetTextCursor
+504 (int (*)(...))-16
+512 (int (*)(...))(& _ZTI14QPlainTextEdit)
+520 (int (*)(...))QPlainTextEdit::_ZThn16_N14QPlainTextEditD1Ev
+528 (int (*)(...))QPlainTextEdit::_ZThn16_N14QPlainTextEditD0Ev
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+552 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+560 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+568 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+576 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QPlainTextEdit
+ size=48 align=8
+ base size=48 base align=8
+QPlainTextEdit (0x0x7f1d19aa8a28) 0
+ vptr=((& QPlainTextEdit::_ZTV14QPlainTextEdit) + 16)
+ QAbstractScrollArea (0x0x7f1d19aa8a90) 0
+ primary-for QPlainTextEdit (0x0x7f1d19aa8a28)
+ QFrame (0x0x7f1d19aa8af8) 0
+ primary-for QAbstractScrollArea (0x0x7f1d19aa8a90)
+ QWidget (0x0x7f1d197b1bd0) 0
+ primary-for QFrame (0x0x7f1d19aa8af8)
+ QObject (0x0x7f1d197d4b40) 0
+ primary-for QWidget (0x0x7f1d197b1bd0)
+ QPaintDevice (0x0x7f1d197d4ba0) 16
+ vptr=((& QPlainTextEdit::_ZTV14QPlainTextEdit) + 520)
+
+Class QPlainTextDocumentLayout::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPlainTextDocumentLayout::QPrivateSignal (0x0x7f1d198191e0) 0 empty
+
+Vtable for QPlainTextDocumentLayout
+QPlainTextDocumentLayout::_ZTV24QPlainTextDocumentLayout: 24 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QPlainTextDocumentLayout)
+16 (int (*)(...))QPlainTextDocumentLayout::metaObject
+24 (int (*)(...))QPlainTextDocumentLayout::qt_metacast
+32 (int (*)(...))QPlainTextDocumentLayout::qt_metacall
+40 (int (*)(...))QPlainTextDocumentLayout::~QPlainTextDocumentLayout
+48 (int (*)(...))QPlainTextDocumentLayout::~QPlainTextDocumentLayout
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QPlainTextDocumentLayout::draw
+120 (int (*)(...))QPlainTextDocumentLayout::hitTest
+128 (int (*)(...))QPlainTextDocumentLayout::pageCount
+136 (int (*)(...))QPlainTextDocumentLayout::documentSize
+144 (int (*)(...))QPlainTextDocumentLayout::frameBoundingRect
+152 (int (*)(...))QPlainTextDocumentLayout::blockBoundingRect
+160 (int (*)(...))QPlainTextDocumentLayout::documentChanged
+168 (int (*)(...))QAbstractTextDocumentLayout::resizeInlineObject
+176 (int (*)(...))QAbstractTextDocumentLayout::positionInlineObject
+184 (int (*)(...))QAbstractTextDocumentLayout::drawInlineObject
+
+Class QPlainTextDocumentLayout
+ size=16 align=8
+ base size=16 base align=8
+QPlainTextDocumentLayout (0x0x7f1d19aa8b60) 0
+ vptr=((& QPlainTextDocumentLayout::_ZTV24QPlainTextDocumentLayout) + 16)
+ QAbstractTextDocumentLayout (0x0x7f1d19aa8bc8) 0
+ primary-for QPlainTextDocumentLayout (0x0x7f1d19aa8b60)
+ QObject (0x0x7f1d19819180) 0
+ primary-for QAbstractTextDocumentLayout (0x0x7f1d19aa8bc8)
+
+Class QProgressBar::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QProgressBar::QPrivateSignal (0x0x7f1d19819480) 0 empty
+
+Vtable for QProgressBar
+QProgressBar::_ZTV12QProgressBar: 65 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QProgressBar)
+16 (int (*)(...))QProgressBar::metaObject
+24 (int (*)(...))QProgressBar::qt_metacast
+32 (int (*)(...))QProgressBar::qt_metacall
+40 (int (*)(...))QProgressBar::~QProgressBar
+48 (int (*)(...))QProgressBar::~QProgressBar
+56 (int (*)(...))QProgressBar::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QProgressBar::sizeHint
+136 (int (*)(...))QProgressBar::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QProgressBar::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QProgressBar::text
+440 (int (*)(...))-16
+448 (int (*)(...))(& _ZTI12QProgressBar)
+456 (int (*)(...))QProgressBar::_ZThn16_N12QProgressBarD1Ev
+464 (int (*)(...))QProgressBar::_ZThn16_N12QProgressBarD0Ev
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QProgressBar
+ size=48 align=8
+ base size=48 base align=8
+QProgressBar (0x0x7f1d19aa8c30) 0
+ vptr=((& QProgressBar::_ZTV12QProgressBar) + 16)
+ QWidget (0x0x7f1d197b1ee0) 0
+ primary-for QProgressBar (0x0x7f1d19aa8c30)
+ QObject (0x0x7f1d198193c0) 0
+ primary-for QWidget (0x0x7f1d197b1ee0)
+ QPaintDevice (0x0x7f1d19819420) 16
+ vptr=((& QProgressBar::_ZTV12QProgressBar) + 456)
+
+Class QProgressDialog::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QProgressDialog::QPrivateSignal (0x0x7f1d198197e0) 0 empty
+
+Vtable for QProgressDialog
+QProgressDialog::_ZTV15QProgressDialog: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QProgressDialog)
+16 (int (*)(...))QProgressDialog::metaObject
+24 (int (*)(...))QProgressDialog::qt_metacast
+32 (int (*)(...))QProgressDialog::qt_metacall
+40 (int (*)(...))QProgressDialog::~QProgressDialog
+48 (int (*)(...))QProgressDialog::~QProgressDialog
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QDialog::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QDialog::setVisible
+128 (int (*)(...))QProgressDialog::sizeHint
+136 (int (*)(...))QDialog::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QDialog::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QProgressDialog::resizeEvent
+280 (int (*)(...))QProgressDialog::closeEvent
+288 (int (*)(...))QDialog::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QProgressDialog::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QProgressDialog::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDialog::open
+440 (int (*)(...))QDialog::exec
+448 (int (*)(...))QDialog::done
+456 (int (*)(...))QDialog::accept
+464 (int (*)(...))QDialog::reject
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI15QProgressDialog)
+488 (int (*)(...))QProgressDialog::_ZThn16_N15QProgressDialogD1Ev
+496 (int (*)(...))QProgressDialog::_ZThn16_N15QProgressDialogD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QProgressDialog
+ size=48 align=8
+ base size=48 base align=8
+QProgressDialog (0x0x7f1d19aa8c98) 0
+ vptr=((& QProgressDialog::_ZTV15QProgressDialog) + 16)
+ QDialog (0x0x7f1d19aa8d00) 0
+ primary-for QProgressDialog (0x0x7f1d19aa8c98)
+ QWidget (0x0x7f1d19825150) 0
+ primary-for QDialog (0x0x7f1d19aa8d00)
+ QObject (0x0x7f1d19819720) 0
+ primary-for QWidget (0x0x7f1d19825150)
+ QPaintDevice (0x0x7f1d19819780) 16
+ vptr=((& QProgressDialog::_ZTV15QProgressDialog) + 488)
+
+Class QProxyStyle::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QProxyStyle::QPrivateSignal (0x0x7f1d19819a20) 0 empty
+
+Vtable for QProxyStyle
+QProxyStyle::_ZTV11QProxyStyle: 37 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QProxyStyle)
+16 (int (*)(...))QProxyStyle::metaObject
+24 (int (*)(...))QProxyStyle::qt_metacast
+32 (int (*)(...))QProxyStyle::qt_metacall
+40 (int (*)(...))QProxyStyle::~QProxyStyle
+48 (int (*)(...))QProxyStyle::~QProxyStyle
+56 (int (*)(...))QProxyStyle::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QProxyStyle::polish
+120 (int (*)(...))QProxyStyle::unpolish
+128 (int (*)(...))QProxyStyle::polish
+136 (int (*)(...))QProxyStyle::unpolish
+144 (int (*)(...))QProxyStyle::polish
+152 (int (*)(...))QProxyStyle::itemTextRect
+160 (int (*)(...))QProxyStyle::itemPixmapRect
+168 (int (*)(...))QProxyStyle::drawItemText
+176 (int (*)(...))QProxyStyle::drawItemPixmap
+184 (int (*)(...))QProxyStyle::standardPalette
+192 (int (*)(...))QProxyStyle::drawPrimitive
+200 (int (*)(...))QProxyStyle::drawControl
+208 (int (*)(...))QProxyStyle::subElementRect
+216 (int (*)(...))QProxyStyle::drawComplexControl
+224 (int (*)(...))QProxyStyle::hitTestComplexControl
+232 (int (*)(...))QProxyStyle::subControlRect
+240 (int (*)(...))QProxyStyle::pixelMetric
+248 (int (*)(...))QProxyStyle::sizeFromContents
+256 (int (*)(...))QProxyStyle::styleHint
+264 (int (*)(...))QProxyStyle::standardPixmap
+272 (int (*)(...))QProxyStyle::standardIcon
+280 (int (*)(...))QProxyStyle::generatedIconPixmap
+288 (int (*)(...))QProxyStyle::layoutSpacing
+
+Class QProxyStyle
+ size=16 align=8
+ base size=16 base align=8
+QProxyStyle (0x0x7f1d19aa8d68) 0
+ vptr=((& QProxyStyle::_ZTV11QProxyStyle) + 16)
+ QCommonStyle (0x0x7f1d19aa8dd0) 0
+ primary-for QProxyStyle (0x0x7f1d19aa8d68)
+ QStyle (0x0x7f1d19aa8e38) 0
+ primary-for QCommonStyle (0x0x7f1d19aa8dd0)
+ QObject (0x0x7f1d198199c0) 0
+ primary-for QStyle (0x0x7f1d19aa8e38)
+
+Class QRadioButton::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QRadioButton::QPrivateSignal (0x0x7f1d19819cc0) 0 empty
+
+Vtable for QRadioButton
+QRadioButton::_ZTV12QRadioButton: 67 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QRadioButton)
+16 (int (*)(...))QRadioButton::metaObject
+24 (int (*)(...))QRadioButton::qt_metacast
+32 (int (*)(...))QRadioButton::qt_metacall
+40 (int (*)(...))QRadioButton::~QRadioButton
+48 (int (*)(...))QRadioButton::~QRadioButton
+56 (int (*)(...))QRadioButton::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractButton::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QRadioButton::sizeHint
+136 (int (*)(...))QRadioButton::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractButton::mousePressEvent
+176 (int (*)(...))QAbstractButton::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QRadioButton::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QAbstractButton::keyPressEvent
+216 (int (*)(...))QAbstractButton::keyReleaseEvent
+224 (int (*)(...))QAbstractButton::focusInEvent
+232 (int (*)(...))QAbstractButton::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QRadioButton::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractButton::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QRadioButton::hitButton
+440 (int (*)(...))QAbstractButton::checkStateSet
+448 (int (*)(...))QAbstractButton::nextCheckState
+456 (int (*)(...))-16
+464 (int (*)(...))(& _ZTI12QRadioButton)
+472 (int (*)(...))QRadioButton::_ZThn16_N12QRadioButtonD1Ev
+480 (int (*)(...))QRadioButton::_ZThn16_N12QRadioButtonD0Ev
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QRadioButton
+ size=48 align=8
+ base size=48 base align=8
+QRadioButton (0x0x7f1d19aa8ea0) 0
+ vptr=((& QRadioButton::_ZTV12QRadioButton) + 16)
+ QAbstractButton (0x0x7f1d19aa8f08) 0
+ primary-for QRadioButton (0x0x7f1d19aa8ea0)
+ QWidget (0x0x7f1d19825460) 0
+ primary-for QAbstractButton (0x0x7f1d19aa8f08)
+ QObject (0x0x7f1d19819c00) 0
+ primary-for QWidget (0x0x7f1d19825460)
+ QPaintDevice (0x0x7f1d19819c60) 16
+ vptr=((& QRadioButton::_ZTV12QRadioButton) + 472)
+
+Class QScrollBar::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QScrollBar::QPrivateSignal (0x0x7f1d19819f60) 0 empty
+
+Vtable for QScrollBar
+QScrollBar::_ZTV10QScrollBar: 65 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QScrollBar)
+16 (int (*)(...))QScrollBar::metaObject
+24 (int (*)(...))QScrollBar::qt_metacast
+32 (int (*)(...))QScrollBar::qt_metacall
+40 (int (*)(...))QScrollBar::~QScrollBar
+48 (int (*)(...))QScrollBar::~QScrollBar
+56 (int (*)(...))QScrollBar::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSlider::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QScrollBar::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QScrollBar::mousePressEvent
+176 (int (*)(...))QScrollBar::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QScrollBar::mouseMoveEvent
+200 (int (*)(...))QScrollBar::wheelEvent
+208 (int (*)(...))QAbstractSlider::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QScrollBar::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QScrollBar::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QScrollBar::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSlider::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QScrollBar::sliderChange
+440 (int (*)(...))-16
+448 (int (*)(...))(& _ZTI10QScrollBar)
+456 (int (*)(...))QScrollBar::_ZThn16_N10QScrollBarD1Ev
+464 (int (*)(...))QScrollBar::_ZThn16_N10QScrollBarD0Ev
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QScrollBar
+ size=48 align=8
+ base size=48 base align=8
+QScrollBar (0x0x7f1d19aa8f70) 0
+ vptr=((& QScrollBar::_ZTV10QScrollBar) + 16)
+ QAbstractSlider (0x0x7f1d19865000) 0
+ primary-for QScrollBar (0x0x7f1d19aa8f70)
+ QWidget (0x0x7f1d198255b0) 0
+ primary-for QAbstractSlider (0x0x7f1d19865000)
+ QObject (0x0x7f1d19819ea0) 0
+ primary-for QWidget (0x0x7f1d198255b0)
+ QPaintDevice (0x0x7f1d19819f00) 16
+ vptr=((& QScrollBar::_ZTV10QScrollBar) + 456)
+
+Vtable for QScrollerProperties
+QScrollerProperties::_ZTV19QScrollerProperties: 4 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QScrollerProperties)
+16 (int (*)(...))QScrollerProperties::~QScrollerProperties
+24 (int (*)(...))QScrollerProperties::~QScrollerProperties
+
+Class QScrollerProperties
+ size=16 align=8
+ base size=16 base align=8
+QScrollerProperties (0x0x7f1d19871180) 0
+ vptr=((& QScrollerProperties::_ZTV19QScrollerProperties) + 16)
+
+Class QScroller::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QScroller::QPrivateSignal (0x0x7f1d19871660) 0 empty
+
+Vtable for QScroller
+QScroller::_ZTV9QScroller: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QScroller)
+16 (int (*)(...))QScroller::metaObject
+24 (int (*)(...))QScroller::qt_metacast
+32 (int (*)(...))QScroller::qt_metacall
+40 (int (*)(...))QScroller::~QScroller
+48 (int (*)(...))QScroller::~QScroller
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QScroller
+ size=24 align=8
+ base size=24 base align=8
+QScroller (0x0x7f1d19865068) 0
+ vptr=((& QScroller::_ZTV9QScroller) + 16)
+ QObject (0x0x7f1d19871600) 0
+ primary-for QScroller (0x0x7f1d19865068)
+
+Class QShortcut::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QShortcut::QPrivateSignal (0x0x7f1d19871960) 0 empty
+
+Vtable for QShortcut
+QShortcut::_ZTV9QShortcut: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QShortcut)
+16 (int (*)(...))QShortcut::metaObject
+24 (int (*)(...))QShortcut::qt_metacast
+32 (int (*)(...))QShortcut::qt_metacall
+40 (int (*)(...))QShortcut::~QShortcut
+48 (int (*)(...))QShortcut::~QShortcut
+56 (int (*)(...))QShortcut::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QShortcut
+ size=16 align=8
+ base size=16 base align=8
+QShortcut (0x0x7f1d198650d0) 0
+ vptr=((& QShortcut::_ZTV9QShortcut) + 16)
+ QObject (0x0x7f1d19871900) 0
+ primary-for QShortcut (0x0x7f1d198650d0)
+
+Class QSizeGrip::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSizeGrip::QPrivateSignal (0x0x7f1d19871c60) 0 empty
+
+Vtable for QSizeGrip
+QSizeGrip::_ZTV9QSizeGrip: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QSizeGrip)
+16 (int (*)(...))QSizeGrip::metaObject
+24 (int (*)(...))QSizeGrip::qt_metacast
+32 (int (*)(...))QSizeGrip::qt_metacall
+40 (int (*)(...))QSizeGrip::~QSizeGrip
+48 (int (*)(...))QSizeGrip::~QSizeGrip
+56 (int (*)(...))QSizeGrip::event
+64 (int (*)(...))QSizeGrip::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QSizeGrip::setVisible
+128 (int (*)(...))QSizeGrip::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QSizeGrip::mousePressEvent
+176 (int (*)(...))QSizeGrip::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QSizeGrip::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QSizeGrip::paintEvent
+264 (int (*)(...))QSizeGrip::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QSizeGrip::showEvent
+352 (int (*)(...))QSizeGrip::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI9QSizeGrip)
+448 (int (*)(...))QSizeGrip::_ZThn16_N9QSizeGripD1Ev
+456 (int (*)(...))QSizeGrip::_ZThn16_N9QSizeGripD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QSizeGrip
+ size=48 align=8
+ base size=48 base align=8
+QSizeGrip (0x0x7f1d19865138) 0
+ vptr=((& QSizeGrip::_ZTV9QSizeGrip) + 16)
+ QWidget (0x0x7f1d1988e1c0) 0
+ primary-for QSizeGrip (0x0x7f1d19865138)
+ QObject (0x0x7f1d19871ba0) 0
+ primary-for QWidget (0x0x7f1d1988e1c0)
+ QPaintDevice (0x0x7f1d19871c00) 16
+ vptr=((& QSizeGrip::_ZTV9QSizeGrip) + 448)
+
+Class QSpinBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSpinBox::QPrivateSignal (0x0x7f1d19871f00) 0 empty
+
+Vtable for QSpinBox
+QSpinBox::_ZTV8QSpinBox: 71 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QSpinBox)
+16 (int (*)(...))QSpinBox::metaObject
+24 (int (*)(...))QSpinBox::qt_metacast
+32 (int (*)(...))QSpinBox::qt_metacall
+40 (int (*)(...))QSpinBox::~QSpinBox
+48 (int (*)(...))QSpinBox::~QSpinBox
+56 (int (*)(...))QSpinBox::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSpinBox::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractSpinBox::sizeHint
+136 (int (*)(...))QAbstractSpinBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractSpinBox::mousePressEvent
+176 (int (*)(...))QAbstractSpinBox::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractSpinBox::mouseMoveEvent
+200 (int (*)(...))QAbstractSpinBox::wheelEvent
+208 (int (*)(...))QAbstractSpinBox::keyPressEvent
+216 (int (*)(...))QAbstractSpinBox::keyReleaseEvent
+224 (int (*)(...))QAbstractSpinBox::focusInEvent
+232 (int (*)(...))QAbstractSpinBox::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QAbstractSpinBox::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractSpinBox::resizeEvent
+280 (int (*)(...))QAbstractSpinBox::closeEvent
+288 (int (*)(...))QAbstractSpinBox::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QAbstractSpinBox::showEvent
+352 (int (*)(...))QAbstractSpinBox::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSpinBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QAbstractSpinBox::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QSpinBox::validate
+440 (int (*)(...))QSpinBox::fixup
+448 (int (*)(...))QAbstractSpinBox::stepBy
+456 (int (*)(...))QAbstractSpinBox::clear
+464 (int (*)(...))QAbstractSpinBox::stepEnabled
+472 (int (*)(...))QSpinBox::valueFromText
+480 (int (*)(...))QSpinBox::textFromValue
+488 (int (*)(...))-16
+496 (int (*)(...))(& _ZTI8QSpinBox)
+504 (int (*)(...))QSpinBox::_ZThn16_N8QSpinBoxD1Ev
+512 (int (*)(...))QSpinBox::_ZThn16_N8QSpinBoxD0Ev
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+552 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+560 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QSpinBox
+ size=48 align=8
+ base size=48 base align=8
+QSpinBox (0x0x7f1d198651a0) 0
+ vptr=((& QSpinBox::_ZTV8QSpinBox) + 16)
+ QAbstractSpinBox (0x0x7f1d19865208) 0
+ primary-for QSpinBox (0x0x7f1d198651a0)
+ QWidget (0x0x7f1d1988e310) 0
+ primary-for QAbstractSpinBox (0x0x7f1d19865208)
+ QObject (0x0x7f1d19871e40) 0
+ primary-for QWidget (0x0x7f1d1988e310)
+ QPaintDevice (0x0x7f1d19871ea0) 16
+ vptr=((& QSpinBox::_ZTV8QSpinBox) + 504)
+
+Class QDoubleSpinBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDoubleSpinBox::QPrivateSignal (0x0x7f1d194c11e0) 0 empty
+
+Vtable for QDoubleSpinBox
+QDoubleSpinBox::_ZTV14QDoubleSpinBox: 71 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QDoubleSpinBox)
+16 (int (*)(...))QDoubleSpinBox::metaObject
+24 (int (*)(...))QDoubleSpinBox::qt_metacast
+32 (int (*)(...))QDoubleSpinBox::qt_metacall
+40 (int (*)(...))QDoubleSpinBox::~QDoubleSpinBox
+48 (int (*)(...))QDoubleSpinBox::~QDoubleSpinBox
+56 (int (*)(...))QAbstractSpinBox::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QAbstractSpinBox::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractSpinBox::sizeHint
+136 (int (*)(...))QAbstractSpinBox::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractSpinBox::mousePressEvent
+176 (int (*)(...))QAbstractSpinBox::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractSpinBox::mouseMoveEvent
+200 (int (*)(...))QAbstractSpinBox::wheelEvent
+208 (int (*)(...))QAbstractSpinBox::keyPressEvent
+216 (int (*)(...))QAbstractSpinBox::keyReleaseEvent
+224 (int (*)(...))QAbstractSpinBox::focusInEvent
+232 (int (*)(...))QAbstractSpinBox::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QAbstractSpinBox::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractSpinBox::resizeEvent
+280 (int (*)(...))QAbstractSpinBox::closeEvent
+288 (int (*)(...))QAbstractSpinBox::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QAbstractSpinBox::showEvent
+352 (int (*)(...))QAbstractSpinBox::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QAbstractSpinBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QAbstractSpinBox::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDoubleSpinBox::validate
+440 (int (*)(...))QDoubleSpinBox::fixup
+448 (int (*)(...))QAbstractSpinBox::stepBy
+456 (int (*)(...))QAbstractSpinBox::clear
+464 (int (*)(...))QAbstractSpinBox::stepEnabled
+472 (int (*)(...))QDoubleSpinBox::valueFromText
+480 (int (*)(...))QDoubleSpinBox::textFromValue
+488 (int (*)(...))-16
+496 (int (*)(...))(& _ZTI14QDoubleSpinBox)
+504 (int (*)(...))QDoubleSpinBox::_ZThn16_N14QDoubleSpinBoxD1Ev
+512 (int (*)(...))QDoubleSpinBox::_ZThn16_N14QDoubleSpinBoxD0Ev
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+552 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+560 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QDoubleSpinBox
+ size=48 align=8
+ base size=48 base align=8
+QDoubleSpinBox (0x0x7f1d19865270) 0
+ vptr=((& QDoubleSpinBox::_ZTV14QDoubleSpinBox) + 16)
+ QAbstractSpinBox (0x0x7f1d198652d8) 0
+ primary-for QDoubleSpinBox (0x0x7f1d19865270)
+ QWidget (0x0x7f1d1988e460) 0
+ primary-for QAbstractSpinBox (0x0x7f1d198652d8)
+ QObject (0x0x7f1d194c1120) 0
+ primary-for QWidget (0x0x7f1d1988e460)
+ QPaintDevice (0x0x7f1d194c1180) 16
+ vptr=((& QDoubleSpinBox::_ZTV14QDoubleSpinBox) + 504)
+
+Class QSplashScreen::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSplashScreen::QPrivateSignal (0x0x7f1d194c1480) 0 empty
+
+Vtable for QSplashScreen
+QSplashScreen::_ZTV13QSplashScreen: 65 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSplashScreen)
+16 (int (*)(...))QSplashScreen::metaObject
+24 (int (*)(...))QSplashScreen::qt_metacast
+32 (int (*)(...))QSplashScreen::qt_metacall
+40 (int (*)(...))QSplashScreen::~QSplashScreen
+48 (int (*)(...))QSplashScreen::~QSplashScreen
+56 (int (*)(...))QSplashScreen::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QSplashScreen::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QSplashScreen::drawContents
+440 (int (*)(...))-16
+448 (int (*)(...))(& _ZTI13QSplashScreen)
+456 (int (*)(...))QSplashScreen::_ZThn16_N13QSplashScreenD1Ev
+464 (int (*)(...))QSplashScreen::_ZThn16_N13QSplashScreenD0Ev
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QSplashScreen
+ size=48 align=8
+ base size=48 base align=8
+QSplashScreen (0x0x7f1d19865340) 0
+ vptr=((& QSplashScreen::_ZTV13QSplashScreen) + 16)
+ QWidget (0x0x7f1d1988e5b0) 0
+ primary-for QSplashScreen (0x0x7f1d19865340)
+ QObject (0x0x7f1d194c13c0) 0
+ primary-for QWidget (0x0x7f1d1988e5b0)
+ QPaintDevice (0x0x7f1d194c1420) 16
+ vptr=((& QSplashScreen::_ZTV13QSplashScreen) + 456)
+
+Class QSplitter::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSplitter::QPrivateSignal (0x0x7f1d194c1720) 0 empty
+
+Vtable for QSplitter
+QSplitter::_ZTV9QSplitter: 65 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QSplitter)
+16 (int (*)(...))QSplitter::metaObject
+24 (int (*)(...))QSplitter::qt_metacast
+32 (int (*)(...))QSplitter::qt_metacall
+40 (int (*)(...))QSplitter::~QSplitter
+48 (int (*)(...))QSplitter::~QSplitter
+56 (int (*)(...))QSplitter::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QSplitter::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QSplitter::sizeHint
+136 (int (*)(...))QSplitter::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QFrame::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QSplitter::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QSplitter::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QSplitter::createHandle
+440 (int (*)(...))-16
+448 (int (*)(...))(& _ZTI9QSplitter)
+456 (int (*)(...))QSplitter::_ZThn16_N9QSplitterD1Ev
+464 (int (*)(...))QSplitter::_ZThn16_N9QSplitterD0Ev
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QSplitter
+ size=48 align=8
+ base size=48 base align=8
+QSplitter (0x0x7f1d198653a8) 0
+ vptr=((& QSplitter::_ZTV9QSplitter) + 16)
+ QFrame (0x0x7f1d19865410) 0
+ primary-for QSplitter (0x0x7f1d198653a8)
+ QWidget (0x0x7f1d1988e7e0) 0
+ primary-for QFrame (0x0x7f1d19865410)
+ QObject (0x0x7f1d194c1660) 0
+ primary-for QWidget (0x0x7f1d1988e7e0)
+ QPaintDevice (0x0x7f1d194c16c0) 16
+ vptr=((& QSplitter::_ZTV9QSplitter) + 456)
+
+Class QSplitterHandle::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSplitterHandle::QPrivateSignal (0x0x7f1d194c19c0) 0 empty
+
+Vtable for QSplitterHandle
+QSplitterHandle::_ZTV15QSplitterHandle: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QSplitterHandle)
+16 (int (*)(...))QSplitterHandle::metaObject
+24 (int (*)(...))QSplitterHandle::qt_metacast
+32 (int (*)(...))QSplitterHandle::qt_metacall
+40 (int (*)(...))QSplitterHandle::~QSplitterHandle
+48 (int (*)(...))QSplitterHandle::~QSplitterHandle
+56 (int (*)(...))QSplitterHandle::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QSplitterHandle::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QSplitterHandle::mousePressEvent
+176 (int (*)(...))QSplitterHandle::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QSplitterHandle::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QSplitterHandle::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QSplitterHandle::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI15QSplitterHandle)
+448 (int (*)(...))QSplitterHandle::_ZThn16_N15QSplitterHandleD1Ev
+456 (int (*)(...))QSplitterHandle::_ZThn16_N15QSplitterHandleD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QSplitterHandle
+ size=48 align=8
+ base size=48 base align=8
+QSplitterHandle (0x0x7f1d19865478) 0
+ vptr=((& QSplitterHandle::_ZTV15QSplitterHandle) + 16)
+ QWidget (0x0x7f1d1988e930) 0
+ primary-for QSplitterHandle (0x0x7f1d19865478)
+ QObject (0x0x7f1d194c1900) 0
+ primary-for QWidget (0x0x7f1d1988e930)
+ QPaintDevice (0x0x7f1d194c1960) 16
+ vptr=((& QSplitterHandle::_ZTV15QSplitterHandle) + 448)
+
+Class QStackedLayout::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStackedLayout::QPrivateSignal (0x0x7f1d194c1c60) 0 empty
+
+Vtable for QStackedLayout
+QStackedLayout::_ZTV14QStackedLayout: 50 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QStackedLayout)
+16 (int (*)(...))QStackedLayout::metaObject
+24 (int (*)(...))QStackedLayout::qt_metacast
+32 (int (*)(...))QStackedLayout::qt_metacall
+40 (int (*)(...))QStackedLayout::~QStackedLayout
+48 (int (*)(...))QStackedLayout::~QStackedLayout
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QLayout::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QLayout::invalidate
+120 (int (*)(...))QLayout::geometry
+128 (int (*)(...))QStackedLayout::addItem
+136 (int (*)(...))QLayout::expandingDirections
+144 (int (*)(...))QStackedLayout::minimumSize
+152 (int (*)(...))QLayout::maximumSize
+160 (int (*)(...))QStackedLayout::setGeometry
+168 (int (*)(...))QStackedLayout::itemAt
+176 (int (*)(...))QStackedLayout::takeAt
+184 (int (*)(...))QLayout::indexOf
+192 (int (*)(...))QStackedLayout::count
+200 (int (*)(...))QLayout::isEmpty
+208 (int (*)(...))QLayout::controlTypes
+216 (int (*)(...))QLayout::layout
+224 (int (*)(...))QStackedLayout::sizeHint
+232 (int (*)(...))QStackedLayout::hasHeightForWidth
+240 (int (*)(...))QStackedLayout::heightForWidth
+248 (int (*)(...))-16
+256 (int (*)(...))(& _ZTI14QStackedLayout)
+264 (int (*)(...))QStackedLayout::_ZThn16_N14QStackedLayoutD1Ev
+272 (int (*)(...))QStackedLayout::_ZThn16_N14QStackedLayoutD0Ev
+280 (int (*)(...))QStackedLayout::_ZThn16_NK14QStackedLayout8sizeHintEv
+288 (int (*)(...))QStackedLayout::_ZThn16_NK14QStackedLayout11minimumSizeEv
+296 (int (*)(...))QLayout::_ZThn16_NK7QLayout11maximumSizeEv
+304 (int (*)(...))QLayout::_ZThn16_NK7QLayout19expandingDirectionsEv
+312 (int (*)(...))QStackedLayout::_ZThn16_N14QStackedLayout11setGeometryERK5QRect
+320 (int (*)(...))QLayout::_ZThn16_NK7QLayout8geometryEv
+328 (int (*)(...))QLayout::_ZThn16_NK7QLayout7isEmptyEv
+336 (int (*)(...))QStackedLayout::_ZThn16_NK14QStackedLayout17hasHeightForWidthEv
+344 (int (*)(...))QStackedLayout::_ZThn16_NK14QStackedLayout14heightForWidthEi
+352 (int (*)(...))QLayoutItem::minimumHeightForWidth
+360 (int (*)(...))QLayout::_ZThn16_N7QLayout10invalidateEv
+368 (int (*)(...))QLayoutItem::widget
+376 (int (*)(...))QLayout::_ZThn16_N7QLayout6layoutEv
+384 (int (*)(...))QLayoutItem::spacerItem
+392 (int (*)(...))QLayout::_ZThn16_NK7QLayout12controlTypesEv
+
+Class QStackedLayout
+ size=32 align=8
+ base size=28 base align=8
+QStackedLayout (0x0x7f1d198654e0) 0
+ vptr=((& QStackedLayout::_ZTV14QStackedLayout) + 16)
+ QLayout (0x0x7f1d1988ea80) 0
+ primary-for QStackedLayout (0x0x7f1d198654e0)
+ QObject (0x0x7f1d194c1ba0) 0
+ primary-for QLayout (0x0x7f1d1988ea80)
+ QLayoutItem (0x0x7f1d194c1c00) 16
+ vptr=((& QStackedLayout::_ZTV14QStackedLayout) + 264)
+
+Class QStackedWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStackedWidget::QPrivateSignal (0x0x7f1d1950f000) 0 empty
+
+Vtable for QStackedWidget
+QStackedWidget::_ZTV14QStackedWidget: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QStackedWidget)
+16 (int (*)(...))QStackedWidget::metaObject
+24 (int (*)(...))QStackedWidget::qt_metacast
+32 (int (*)(...))QStackedWidget::qt_metacall
+40 (int (*)(...))QStackedWidget::~QStackedWidget
+48 (int (*)(...))QStackedWidget::~QStackedWidget
+56 (int (*)(...))QStackedWidget::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QFrame::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QFrame::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI14QStackedWidget)
+448 (int (*)(...))QStackedWidget::_ZThn16_N14QStackedWidgetD1Ev
+456 (int (*)(...))QStackedWidget::_ZThn16_N14QStackedWidgetD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QStackedWidget
+ size=48 align=8
+ base size=48 base align=8
+QStackedWidget (0x0x7f1d19865548) 0
+ vptr=((& QStackedWidget::_ZTV14QStackedWidget) + 16)
+ QFrame (0x0x7f1d198655b0) 0
+ primary-for QStackedWidget (0x0x7f1d19865548)
+ QWidget (0x0x7f1d1988ecb0) 0
+ primary-for QFrame (0x0x7f1d198655b0)
+ QObject (0x0x7f1d194c1f00) 0
+ primary-for QWidget (0x0x7f1d1988ecb0)
+ QPaintDevice (0x0x7f1d194c1f60) 16
+ vptr=((& QStackedWidget::_ZTV14QStackedWidget) + 448)
+
+Class QStatusBar::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStatusBar::QPrivateSignal (0x0x7f1d1950f2a0) 0 empty
+
+Vtable for QStatusBar
+QStatusBar::_ZTV10QStatusBar: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QStatusBar)
+16 (int (*)(...))QStatusBar::metaObject
+24 (int (*)(...))QStatusBar::qt_metacast
+32 (int (*)(...))QStatusBar::qt_metacall
+40 (int (*)(...))QStatusBar::~QStatusBar
+48 (int (*)(...))QStatusBar::~QStatusBar
+56 (int (*)(...))QStatusBar::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QStatusBar::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QStatusBar::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QStatusBar::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI10QStatusBar)
+448 (int (*)(...))QStatusBar::_ZThn16_N10QStatusBarD1Ev
+456 (int (*)(...))QStatusBar::_ZThn16_N10QStatusBarD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QStatusBar
+ size=48 align=8
+ base size=48 base align=8
+QStatusBar (0x0x7f1d19865618) 0
+ vptr=((& QStatusBar::_ZTV10QStatusBar) + 16)
+ QWidget (0x0x7f1d1988ee00) 0
+ primary-for QStatusBar (0x0x7f1d19865618)
+ QObject (0x0x7f1d1950f1e0) 0
+ primary-for QWidget (0x0x7f1d1988ee00)
+ QPaintDevice (0x0x7f1d1950f240) 16
+ vptr=((& QStatusBar::_ZTV10QStatusBar) + 448)
+
+Class QStyledItemDelegate::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStyledItemDelegate::QPrivateSignal (0x0x7f1d1950f4e0) 0 empty
+
+Vtable for QStyledItemDelegate
+QStyledItemDelegate::_ZTV19QStyledItemDelegate: 26 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QStyledItemDelegate)
+16 (int (*)(...))QStyledItemDelegate::metaObject
+24 (int (*)(...))QStyledItemDelegate::qt_metacast
+32 (int (*)(...))QStyledItemDelegate::qt_metacall
+40 (int (*)(...))QStyledItemDelegate::~QStyledItemDelegate
+48 (int (*)(...))QStyledItemDelegate::~QStyledItemDelegate
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QStyledItemDelegate::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QStyledItemDelegate::paint
+120 (int (*)(...))QStyledItemDelegate::sizeHint
+128 (int (*)(...))QStyledItemDelegate::createEditor
+136 (int (*)(...))QAbstractItemDelegate::destroyEditor
+144 (int (*)(...))QStyledItemDelegate::setEditorData
+152 (int (*)(...))QStyledItemDelegate::setModelData
+160 (int (*)(...))QStyledItemDelegate::updateEditorGeometry
+168 (int (*)(...))QStyledItemDelegate::editorEvent
+176 (int (*)(...))QAbstractItemDelegate::helpEvent
+184 (int (*)(...))QAbstractItemDelegate::paintingRoles
+192 (int (*)(...))QStyledItemDelegate::displayText
+200 (int (*)(...))QStyledItemDelegate::initStyleOption
+
+Class QStyledItemDelegate
+ size=16 align=8
+ base size=16 base align=8
+QStyledItemDelegate (0x0x7f1d19865680) 0
+ vptr=((& QStyledItemDelegate::_ZTV19QStyledItemDelegate) + 16)
+ QAbstractItemDelegate (0x0x7f1d198656e8) 0
+ primary-for QStyledItemDelegate (0x0x7f1d19865680)
+ QObject (0x0x7f1d1950f480) 0
+ primary-for QAbstractItemDelegate (0x0x7f1d198656e8)
+
+Class QStyleFactory
+ size=1 align=1
+ base size=0 base align=1
+QStyleFactory (0x0x7f1d1950f6c0) 0 empty
+
+Class QStylePainter
+ size=24 align=8
+ base size=24 base align=8
+QStylePainter (0x0x7f1d19865750) 0
+ QPainter (0x0x7f1d1950f720) 0
+
+Class QStylePlugin::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStylePlugin::QPrivateSignal (0x0x7f1d19543000) 0 empty
+
+Vtable for QStylePlugin
+QStylePlugin::_ZTV12QStylePlugin: 15 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QStylePlugin)
+16 (int (*)(...))QStylePlugin::metaObject
+24 (int (*)(...))QStylePlugin::qt_metacast
+32 (int (*)(...))QStylePlugin::qt_metacall
+40 0
+48 0
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+
+Class QStylePlugin
+ size=16 align=8
+ base size=16 base align=8
+QStylePlugin (0x0x7f1d198657b8) 0
+ vptr=((& QStylePlugin::_ZTV12QStylePlugin) + 16)
+ QObject (0x0x7f1d1950ff60) 0
+ primary-for QStylePlugin (0x0x7f1d198657b8)
+
+Class QSystemTrayIcon::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSystemTrayIcon::QPrivateSignal (0x0x7f1d19543180) 0 empty
+
+Vtable for QSystemTrayIcon
+QSystemTrayIcon::_ZTV15QSystemTrayIcon: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QSystemTrayIcon)
+16 (int (*)(...))QSystemTrayIcon::metaObject
+24 (int (*)(...))QSystemTrayIcon::qt_metacast
+32 (int (*)(...))QSystemTrayIcon::qt_metacall
+40 (int (*)(...))QSystemTrayIcon::~QSystemTrayIcon
+48 (int (*)(...))QSystemTrayIcon::~QSystemTrayIcon
+56 (int (*)(...))QSystemTrayIcon::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSystemTrayIcon
+ size=16 align=8
+ base size=16 base align=8
+QSystemTrayIcon (0x0x7f1d19865820) 0
+ vptr=((& QSystemTrayIcon::_ZTV15QSystemTrayIcon) + 16)
+ QObject (0x0x7f1d19543120) 0
+ primary-for QSystemTrayIcon (0x0x7f1d19865820)
+
+Class QTableView::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTableView::QPrivateSignal (0x0x7f1d195434e0) 0 empty
+
+Vtable for QTableView
+QTableView::_ZTV10QTableView: 106 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTableView)
+16 (int (*)(...))QTableView::metaObject
+24 (int (*)(...))QTableView::qt_metacast
+32 (int (*)(...))QTableView::qt_metacall
+40 (int (*)(...))QTableView::~QTableView
+48 (int (*)(...))QTableView::~QTableView
+56 (int (*)(...))QAbstractItemView::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QTableView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractItemView::mousePressEvent
+176 (int (*)(...))QAbstractItemView::mouseReleaseEvent
+184 (int (*)(...))QAbstractItemView::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractItemView::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QAbstractItemView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QTableView::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractItemView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QAbstractItemView::dragMoveEvent
+328 (int (*)(...))QAbstractItemView::dragLeaveEvent
+336 (int (*)(...))QAbstractItemView::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractItemView::viewportEvent
+448 (int (*)(...))QTableView::scrollContentsBy
+456 (int (*)(...))QTableView::viewportSizeHint
+464 (int (*)(...))QTableView::setModel
+472 (int (*)(...))QTableView::setSelectionModel
+480 (int (*)(...))QAbstractItemView::keyboardSearch
+488 (int (*)(...))QTableView::visualRect
+496 (int (*)(...))QTableView::scrollTo
+504 (int (*)(...))QTableView::indexAt
+512 (int (*)(...))QTableView::sizeHintForRow
+520 (int (*)(...))QTableView::sizeHintForColumn
+528 (int (*)(...))QAbstractItemView::reset
+536 (int (*)(...))QTableView::setRootIndex
+544 (int (*)(...))QTableView::doItemsLayout
+552 (int (*)(...))QAbstractItemView::selectAll
+560 (int (*)(...))QAbstractItemView::dataChanged
+568 (int (*)(...))QAbstractItemView::rowsInserted
+576 (int (*)(...))QAbstractItemView::rowsAboutToBeRemoved
+584 (int (*)(...))QTableView::selectionChanged
+592 (int (*)(...))QTableView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QTableView::updateGeometries
+624 (int (*)(...))QTableView::verticalScrollbarAction
+632 (int (*)(...))QTableView::horizontalScrollbarAction
+640 (int (*)(...))QAbstractItemView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))QTableView::moveCursor
+688 (int (*)(...))QTableView::horizontalOffset
+696 (int (*)(...))QTableView::verticalOffset
+704 (int (*)(...))QTableView::isIndexHidden
+712 (int (*)(...))QTableView::setSelection
+720 (int (*)(...))QTableView::visualRegionForSelection
+728 (int (*)(...))QTableView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QAbstractItemView::startDrag
+760 (int (*)(...))QTableView::viewOptions
+768 (int (*)(...))-16
+776 (int (*)(...))(& _ZTI10QTableView)
+784 (int (*)(...))QTableView::_ZThn16_N10QTableViewD1Ev
+792 (int (*)(...))QTableView::_ZThn16_N10QTableViewD0Ev
+800 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+808 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+816 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+824 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+832 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+840 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QTableView
+ size=48 align=8
+ base size=48 base align=8
+QTableView (0x0x7f1d19865888) 0
+ vptr=((& QTableView::_ZTV10QTableView) + 16)
+ QAbstractItemView (0x0x7f1d198658f0) 0
+ primary-for QTableView (0x0x7f1d19865888)
+ QAbstractScrollArea (0x0x7f1d19865958) 0
+ primary-for QAbstractItemView (0x0x7f1d198658f0)
+ QFrame (0x0x7f1d198659c0) 0
+ primary-for QAbstractScrollArea (0x0x7f1d19865958)
+ QWidget (0x0x7f1d195309a0) 0
+ primary-for QFrame (0x0x7f1d198659c0)
+ QObject (0x0x7f1d19543420) 0
+ primary-for QWidget (0x0x7f1d195309a0)
+ QPaintDevice (0x0x7f1d19543480) 16
+ vptr=((& QTableView::_ZTV10QTableView) + 784)
+
+Class QTableWidgetSelectionRange
+ size=16 align=4
+ base size=16 base align=4
+QTableWidgetSelectionRange (0x0x7f1d19543720) 0
+
+Vtable for QTableWidgetItem
+QTableWidgetItem::_ZTV16QTableWidgetItem: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QTableWidgetItem)
+16 (int (*)(...))QTableWidgetItem::~QTableWidgetItem
+24 (int (*)(...))QTableWidgetItem::~QTableWidgetItem
+32 (int (*)(...))QTableWidgetItem::clone
+40 (int (*)(...))QTableWidgetItem::data
+48 (int (*)(...))QTableWidgetItem::setData
+56 (int (*)(...))QTableWidgetItem::operator<
+64 (int (*)(...))QTableWidgetItem::read
+72 (int (*)(...))QTableWidgetItem::write
+
+Class QTableWidgetItem
+ size=48 align=8
+ base size=44 base align=8
+QTableWidgetItem (0x0x7f1d195439c0) 0
+ vptr=((& QTableWidgetItem::_ZTV16QTableWidgetItem) + 16)
+
+Class QTableWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTableWidget::QPrivateSignal (0x0x7f1d195ac720) 0 empty
+
+Vtable for QTableWidget
+QTableWidget::_ZTV12QTableWidget: 110 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QTableWidget)
+16 (int (*)(...))QTableWidget::metaObject
+24 (int (*)(...))QTableWidget::qt_metacast
+32 (int (*)(...))QTableWidget::qt_metacall
+40 (int (*)(...))QTableWidget::~QTableWidget
+48 (int (*)(...))QTableWidget::~QTableWidget
+56 (int (*)(...))QTableWidget::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QTableView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractItemView::mousePressEvent
+176 (int (*)(...))QAbstractItemView::mouseReleaseEvent
+184 (int (*)(...))QAbstractItemView::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractItemView::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QAbstractItemView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QTableView::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractItemView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QAbstractItemView::dragMoveEvent
+328 (int (*)(...))QAbstractItemView::dragLeaveEvent
+336 (int (*)(...))QTableWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractItemView::viewportEvent
+448 (int (*)(...))QTableView::scrollContentsBy
+456 (int (*)(...))QTableView::viewportSizeHint
+464 (int (*)(...))QTableWidget::setModel
+472 (int (*)(...))QTableView::setSelectionModel
+480 (int (*)(...))QAbstractItemView::keyboardSearch
+488 (int (*)(...))QTableView::visualRect
+496 (int (*)(...))QTableView::scrollTo
+504 (int (*)(...))QTableView::indexAt
+512 (int (*)(...))QTableView::sizeHintForRow
+520 (int (*)(...))QTableView::sizeHintForColumn
+528 (int (*)(...))QAbstractItemView::reset
+536 (int (*)(...))QTableView::setRootIndex
+544 (int (*)(...))QTableView::doItemsLayout
+552 (int (*)(...))QAbstractItemView::selectAll
+560 (int (*)(...))QAbstractItemView::dataChanged
+568 (int (*)(...))QAbstractItemView::rowsInserted
+576 (int (*)(...))QAbstractItemView::rowsAboutToBeRemoved
+584 (int (*)(...))QTableView::selectionChanged
+592 (int (*)(...))QTableView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QTableView::updateGeometries
+624 (int (*)(...))QTableView::verticalScrollbarAction
+632 (int (*)(...))QTableView::horizontalScrollbarAction
+640 (int (*)(...))QAbstractItemView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))QTableView::moveCursor
+688 (int (*)(...))QTableView::horizontalOffset
+696 (int (*)(...))QTableView::verticalOffset
+704 (int (*)(...))QTableView::isIndexHidden
+712 (int (*)(...))QTableView::setSelection
+720 (int (*)(...))QTableView::visualRegionForSelection
+728 (int (*)(...))QTableView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QAbstractItemView::startDrag
+760 (int (*)(...))QTableView::viewOptions
+768 (int (*)(...))QTableWidget::mimeTypes
+776 (int (*)(...))QTableWidget::mimeData
+784 (int (*)(...))QTableWidget::dropMimeData
+792 (int (*)(...))QTableWidget::supportedDropActions
+800 (int (*)(...))-16
+808 (int (*)(...))(& _ZTI12QTableWidget)
+816 (int (*)(...))QTableWidget::_ZThn16_N12QTableWidgetD1Ev
+824 (int (*)(...))QTableWidget::_ZThn16_N12QTableWidgetD0Ev
+832 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+840 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+848 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+856 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+864 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+872 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QTableWidget
+ size=48 align=8
+ base size=48 base align=8
+QTableWidget (0x0x7f1d19865af8) 0
+ vptr=((& QTableWidget::_ZTV12QTableWidget) + 16)
+ QTableView (0x0x7f1d19865b60) 0
+ primary-for QTableWidget (0x0x7f1d19865af8)
+ QAbstractItemView (0x0x7f1d19865bc8) 0
+ primary-for QTableView (0x0x7f1d19865b60)
+ QAbstractScrollArea (0x0x7f1d19865c30) 0
+ primary-for QAbstractItemView (0x0x7f1d19865bc8)
+ QFrame (0x0x7f1d19865c98) 0
+ primary-for QAbstractScrollArea (0x0x7f1d19865c30)
+ QWidget (0x0x7f1d19530d90) 0
+ primary-for QFrame (0x0x7f1d19865c98)
+ QObject (0x0x7f1d195ac660) 0
+ primary-for QWidget (0x0x7f1d19530d90)
+ QPaintDevice (0x0x7f1d195ac6c0) 16
+ vptr=((& QTableWidget::_ZTV12QTableWidget) + 816)
+
+Class QTextBrowser::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTextBrowser::QPrivateSignal (0x0x7f1d195acb40) 0 empty
+
+Vtable for QTextBrowser
+QTextBrowser::_ZTV12QTextBrowser: 78 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QTextBrowser)
+16 (int (*)(...))QTextBrowser::metaObject
+24 (int (*)(...))QTextBrowser::qt_metacast
+32 (int (*)(...))QTextBrowser::qt_metacall
+40 (int (*)(...))QTextBrowser::~QTextBrowser
+48 (int (*)(...))QTextBrowser::~QTextBrowser
+56 (int (*)(...))QTextBrowser::event
+64 (int (*)(...))QAbstractScrollArea::eventFilter
+72 (int (*)(...))QTextEdit::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QTextBrowser::mousePressEvent
+176 (int (*)(...))QTextBrowser::mouseReleaseEvent
+184 (int (*)(...))QTextEdit::mouseDoubleClickEvent
+192 (int (*)(...))QTextBrowser::mouseMoveEvent
+200 (int (*)(...))QTextEdit::wheelEvent
+208 (int (*)(...))QTextBrowser::keyPressEvent
+216 (int (*)(...))QTextEdit::keyReleaseEvent
+224 (int (*)(...))QTextEdit::focusInEvent
+232 (int (*)(...))QTextBrowser::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QTextBrowser::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QTextEdit::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QTextEdit::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QTextEdit::dragEnterEvent
+320 (int (*)(...))QTextEdit::dragMoveEvent
+328 (int (*)(...))QTextEdit::dragLeaveEvent
+336 (int (*)(...))QTextEdit::dropEvent
+344 (int (*)(...))QTextEdit::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QTextEdit::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QTextEdit::inputMethodEvent
+416 (int (*)(...))QTextEdit::inputMethodQuery
+424 (int (*)(...))QTextBrowser::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractScrollArea::viewportEvent
+448 (int (*)(...))QTextEdit::scrollContentsBy
+456 (int (*)(...))QAbstractScrollArea::viewportSizeHint
+464 (int (*)(...))QTextBrowser::loadResource
+472 (int (*)(...))QTextEdit::createMimeDataFromSelection
+480 (int (*)(...))QTextEdit::canInsertFromMimeData
+488 (int (*)(...))QTextEdit::insertFromMimeData
+496 (int (*)(...))QTextEdit::doSetTextCursor
+504 (int (*)(...))QTextBrowser::setSource
+512 (int (*)(...))QTextBrowser::backward
+520 (int (*)(...))QTextBrowser::forward
+528 (int (*)(...))QTextBrowser::home
+536 (int (*)(...))QTextBrowser::reload
+544 (int (*)(...))-16
+552 (int (*)(...))(& _ZTI12QTextBrowser)
+560 (int (*)(...))QTextBrowser::_ZThn16_N12QTextBrowserD1Ev
+568 (int (*)(...))QTextBrowser::_ZThn16_N12QTextBrowserD0Ev
+576 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+584 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+592 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+600 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+608 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+616 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QTextBrowser
+ size=48 align=8
+ base size=48 base align=8
+QTextBrowser (0x0x7f1d19865d00) 0
+ vptr=((& QTextBrowser::_ZTV12QTextBrowser) + 16)
+ QTextEdit (0x0x7f1d19865d68) 0
+ primary-for QTextBrowser (0x0x7f1d19865d00)
+ QAbstractScrollArea (0x0x7f1d19865dd0) 0
+ primary-for QTextEdit (0x0x7f1d19865d68)
+ QFrame (0x0x7f1d19865e38) 0
+ primary-for QAbstractScrollArea (0x0x7f1d19865dd0)
+ QWidget (0x0x7f1d19530f50) 0
+ primary-for QFrame (0x0x7f1d19865e38)
+ QObject (0x0x7f1d195aca80) 0
+ primary-for QWidget (0x0x7f1d19530f50)
+ QPaintDevice (0x0x7f1d195acae0) 16
+ vptr=((& QTextBrowser::_ZTV12QTextBrowser) + 560)
+
+Class QToolBar::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QToolBar::QPrivateSignal (0x0x7f1d195acde0) 0 empty
+
+Vtable for QToolBar
+QToolBar::_ZTV8QToolBar: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QToolBar)
+16 (int (*)(...))QToolBar::metaObject
+24 (int (*)(...))QToolBar::qt_metacast
+32 (int (*)(...))QToolBar::qt_metacall
+40 (int (*)(...))QToolBar::~QToolBar
+48 (int (*)(...))QToolBar::~QToolBar
+56 (int (*)(...))QToolBar::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QToolBar::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QToolBar::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QToolBar::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI8QToolBar)
+448 (int (*)(...))QToolBar::_ZThn16_N8QToolBarD1Ev
+456 (int (*)(...))QToolBar::_ZThn16_N8QToolBarD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QToolBar
+ size=48 align=8
+ base size=48 base align=8
+QToolBar (0x0x7f1d19865ea0) 0
+ vptr=((& QToolBar::_ZTV8QToolBar) + 16)
+ QWidget (0x0x7f1d195d80e0) 0
+ primary-for QToolBar (0x0x7f1d19865ea0)
+ QObject (0x0x7f1d195acd20) 0
+ primary-for QWidget (0x0x7f1d195d80e0)
+ QPaintDevice (0x0x7f1d195acd80) 16
+ vptr=((& QToolBar::_ZTV8QToolBar) + 448)
+
+Class QToolBox::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QToolBox::QPrivateSignal (0x0x7f1d195fc780) 0 empty
+
+Vtable for QToolBox
+QToolBox::_ZTV8QToolBox: 66 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QToolBox)
+16 (int (*)(...))QToolBox::metaObject
+24 (int (*)(...))QToolBox::qt_metacast
+32 (int (*)(...))QToolBox::qt_metacall
+40 (int (*)(...))QToolBox::~QToolBox
+48 (int (*)(...))QToolBox::~QToolBox
+56 (int (*)(...))QToolBox::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QFrame::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QFrame::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QToolBox::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QToolBox::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QToolBox::itemInserted
+440 (int (*)(...))QToolBox::itemRemoved
+448 (int (*)(...))-16
+456 (int (*)(...))(& _ZTI8QToolBox)
+464 (int (*)(...))QToolBox::_ZThn16_N8QToolBoxD1Ev
+472 (int (*)(...))QToolBox::_ZThn16_N8QToolBoxD0Ev
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QToolBox
+ size=48 align=8
+ base size=48 base align=8
+QToolBox (0x0x7f1d195ff410) 0
+ vptr=((& QToolBox::_ZTV8QToolBox) + 16)
+ QFrame (0x0x7f1d195ff478) 0
+ primary-for QToolBox (0x0x7f1d195ff410)
+ QWidget (0x0x7f1d195d87e0) 0
+ primary-for QFrame (0x0x7f1d195ff478)
+ QObject (0x0x7f1d195fc6c0) 0
+ primary-for QWidget (0x0x7f1d195d87e0)
+ QPaintDevice (0x0x7f1d195fc720) 16
+ vptr=((& QToolBox::_ZTV8QToolBox) + 464)
+
+Class QToolButton::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QToolButton::QPrivateSignal (0x0x7f1d195fcb40) 0 empty
+
+Vtable for QToolButton
+QToolButton::_ZTV11QToolButton: 67 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QToolButton)
+16 (int (*)(...))QToolButton::metaObject
+24 (int (*)(...))QToolButton::qt_metacast
+32 (int (*)(...))QToolButton::qt_metacall
+40 (int (*)(...))QToolButton::~QToolButton
+48 (int (*)(...))QToolButton::~QToolButton
+56 (int (*)(...))QToolButton::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QToolButton::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QToolButton::sizeHint
+136 (int (*)(...))QToolButton::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QToolButton::mousePressEvent
+176 (int (*)(...))QToolButton::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QAbstractButton::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QAbstractButton::keyPressEvent
+216 (int (*)(...))QAbstractButton::keyReleaseEvent
+224 (int (*)(...))QAbstractButton::focusInEvent
+232 (int (*)(...))QAbstractButton::focusOutEvent
+240 (int (*)(...))QToolButton::enterEvent
+248 (int (*)(...))QToolButton::leaveEvent
+256 (int (*)(...))QToolButton::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QToolButton::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QToolButton::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QToolButton::hitButton
+440 (int (*)(...))QAbstractButton::checkStateSet
+448 (int (*)(...))QToolButton::nextCheckState
+456 (int (*)(...))-16
+464 (int (*)(...))(& _ZTI11QToolButton)
+472 (int (*)(...))QToolButton::_ZThn16_N11QToolButtonD1Ev
+480 (int (*)(...))QToolButton::_ZThn16_N11QToolButtonD0Ev
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QToolButton
+ size=48 align=8
+ base size=48 base align=8
+QToolButton (0x0x7f1d195ff4e0) 0
+ vptr=((& QToolButton::_ZTV11QToolButton) + 16)
+ QAbstractButton (0x0x7f1d195ff548) 0
+ primary-for QToolButton (0x0x7f1d195ff4e0)
+ QWidget (0x0x7f1d195d8930) 0
+ primary-for QAbstractButton (0x0x7f1d195ff548)
+ QObject (0x0x7f1d195fca80) 0
+ primary-for QWidget (0x0x7f1d195d8930)
+ QPaintDevice (0x0x7f1d195fcae0) 16
+ vptr=((& QToolButton::_ZTV11QToolButton) + 472)
+
+Class QToolTip
+ size=1 align=1
+ base size=0 base align=1
+QToolTip (0x0x7f1d195fcde0) 0 empty
+
+Class QTreeView::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTreeView::QPrivateSignal (0x0x7f1d195fcf60) 0 empty
+
+Vtable for QTreeView
+QTreeView::_ZTV9QTreeView: 108 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QTreeView)
+16 (int (*)(...))QTreeView::metaObject
+24 (int (*)(...))QTreeView::qt_metacast
+32 (int (*)(...))QTreeView::qt_metacall
+40 (int (*)(...))QTreeView::~QTreeView
+48 (int (*)(...))QTreeView::~QTreeView
+56 (int (*)(...))QAbstractItemView::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QTreeView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QTreeView::mousePressEvent
+176 (int (*)(...))QTreeView::mouseReleaseEvent
+184 (int (*)(...))QTreeView::mouseDoubleClickEvent
+192 (int (*)(...))QTreeView::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QTreeView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QTreeView::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractItemView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QTreeView::dragMoveEvent
+328 (int (*)(...))QAbstractItemView::dragLeaveEvent
+336 (int (*)(...))QAbstractItemView::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QTreeView::viewportEvent
+448 (int (*)(...))QTreeView::scrollContentsBy
+456 (int (*)(...))QTreeView::viewportSizeHint
+464 (int (*)(...))QTreeView::setModel
+472 (int (*)(...))QTreeView::setSelectionModel
+480 (int (*)(...))QTreeView::keyboardSearch
+488 (int (*)(...))QTreeView::visualRect
+496 (int (*)(...))QTreeView::scrollTo
+504 (int (*)(...))QTreeView::indexAt
+512 (int (*)(...))QAbstractItemView::sizeHintForRow
+520 (int (*)(...))QTreeView::sizeHintForColumn
+528 (int (*)(...))QTreeView::reset
+536 (int (*)(...))QTreeView::setRootIndex
+544 (int (*)(...))QTreeView::doItemsLayout
+552 (int (*)(...))QTreeView::selectAll
+560 (int (*)(...))QTreeView::dataChanged
+568 (int (*)(...))QTreeView::rowsInserted
+576 (int (*)(...))QTreeView::rowsAboutToBeRemoved
+584 (int (*)(...))QTreeView::selectionChanged
+592 (int (*)(...))QTreeView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QTreeView::updateGeometries
+624 (int (*)(...))QAbstractItemView::verticalScrollbarAction
+632 (int (*)(...))QTreeView::horizontalScrollbarAction
+640 (int (*)(...))QTreeView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))QTreeView::moveCursor
+688 (int (*)(...))QTreeView::horizontalOffset
+696 (int (*)(...))QTreeView::verticalOffset
+704 (int (*)(...))QTreeView::isIndexHidden
+712 (int (*)(...))QTreeView::setSelection
+720 (int (*)(...))QTreeView::visualRegionForSelection
+728 (int (*)(...))QTreeView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QAbstractItemView::startDrag
+760 (int (*)(...))QAbstractItemView::viewOptions
+768 (int (*)(...))QTreeView::drawRow
+776 (int (*)(...))QTreeView::drawBranches
+784 (int (*)(...))-16
+792 (int (*)(...))(& _ZTI9QTreeView)
+800 (int (*)(...))QTreeView::_ZThn16_N9QTreeViewD1Ev
+808 (int (*)(...))QTreeView::_ZThn16_N9QTreeViewD0Ev
+816 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+824 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+832 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+840 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+848 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+856 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QTreeView
+ size=48 align=8
+ base size=48 base align=8
+QTreeView (0x0x7f1d195ff5b0) 0
+ vptr=((& QTreeView::_ZTV9QTreeView) + 16)
+ QAbstractItemView (0x0x7f1d195ff618) 0
+ primary-for QTreeView (0x0x7f1d195ff5b0)
+ QAbstractScrollArea (0x0x7f1d195ff680) 0
+ primary-for QAbstractItemView (0x0x7f1d195ff618)
+ QFrame (0x0x7f1d195ff6e8) 0
+ primary-for QAbstractScrollArea (0x0x7f1d195ff680)
+ QWidget (0x0x7f1d195d8c40) 0
+ primary-for QFrame (0x0x7f1d195ff6e8)
+ QObject (0x0x7f1d195fcea0) 0
+ primary-for QWidget (0x0x7f1d195d8c40)
+ QPaintDevice (0x0x7f1d195fcf00) 16
+ vptr=((& QTreeView::_ZTV9QTreeView) + 800)
+
+Class QTreeWidgetItemIterator
+ size=24 align=8
+ base size=20 base align=8
+QTreeWidgetItemIterator (0x0x7f1d196341e0) 0
+
+Vtable for QTreeWidgetItem
+QTreeWidgetItem::_ZTV15QTreeWidgetItem: 10 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QTreeWidgetItem)
+16 (int (*)(...))QTreeWidgetItem::~QTreeWidgetItem
+24 (int (*)(...))QTreeWidgetItem::~QTreeWidgetItem
+32 (int (*)(...))QTreeWidgetItem::clone
+40 (int (*)(...))QTreeWidgetItem::data
+48 (int (*)(...))QTreeWidgetItem::setData
+56 (int (*)(...))QTreeWidgetItem::operator<
+64 (int (*)(...))QTreeWidgetItem::read
+72 (int (*)(...))QTreeWidgetItem::write
+
+Class QTreeWidgetItem
+ size=64 align=8
+ base size=60 base align=8
+QTreeWidgetItem (0x0x7f1d19634c60) 0
+ vptr=((& QTreeWidgetItem::_ZTV15QTreeWidgetItem) + 16)
+
+Class QTreeWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTreeWidget::QPrivateSignal (0x0x7f1d192d1c60) 0 empty
+
+Vtable for QTreeWidget
+QTreeWidget::_ZTV11QTreeWidget: 112 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTreeWidget)
+16 (int (*)(...))QTreeWidget::metaObject
+24 (int (*)(...))QTreeWidget::qt_metacast
+32 (int (*)(...))QTreeWidget::qt_metacall
+40 (int (*)(...))QTreeWidget::~QTreeWidget
+48 (int (*)(...))QTreeWidget::~QTreeWidget
+56 (int (*)(...))QTreeWidget::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QTreeView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QTreeView::mousePressEvent
+176 (int (*)(...))QTreeView::mouseReleaseEvent
+184 (int (*)(...))QTreeView::mouseDoubleClickEvent
+192 (int (*)(...))QTreeView::mouseMoveEvent
+200 (int (*)(...))QAbstractScrollArea::wheelEvent
+208 (int (*)(...))QTreeView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QTreeView::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QAbstractItemView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QTreeView::dragMoveEvent
+328 (int (*)(...))QAbstractItemView::dragLeaveEvent
+336 (int (*)(...))QTreeWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QTreeView::viewportEvent
+448 (int (*)(...))QTreeView::scrollContentsBy
+456 (int (*)(...))QTreeView::viewportSizeHint
+464 (int (*)(...))QTreeWidget::setModel
+472 (int (*)(...))QTreeWidget::setSelectionModel
+480 (int (*)(...))QTreeView::keyboardSearch
+488 (int (*)(...))QTreeView::visualRect
+496 (int (*)(...))QTreeView::scrollTo
+504 (int (*)(...))QTreeView::indexAt
+512 (int (*)(...))QAbstractItemView::sizeHintForRow
+520 (int (*)(...))QTreeView::sizeHintForColumn
+528 (int (*)(...))QTreeView::reset
+536 (int (*)(...))QTreeView::setRootIndex
+544 (int (*)(...))QTreeView::doItemsLayout
+552 (int (*)(...))QTreeView::selectAll
+560 (int (*)(...))QTreeView::dataChanged
+568 (int (*)(...))QTreeView::rowsInserted
+576 (int (*)(...))QTreeView::rowsAboutToBeRemoved
+584 (int (*)(...))QTreeView::selectionChanged
+592 (int (*)(...))QTreeView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QTreeView::updateGeometries
+624 (int (*)(...))QAbstractItemView::verticalScrollbarAction
+632 (int (*)(...))QTreeView::horizontalScrollbarAction
+640 (int (*)(...))QTreeView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))QTreeView::moveCursor
+688 (int (*)(...))QTreeView::horizontalOffset
+696 (int (*)(...))QTreeView::verticalOffset
+704 (int (*)(...))QTreeView::isIndexHidden
+712 (int (*)(...))QTreeView::setSelection
+720 (int (*)(...))QTreeView::visualRegionForSelection
+728 (int (*)(...))QTreeView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QAbstractItemView::startDrag
+760 (int (*)(...))QAbstractItemView::viewOptions
+768 (int (*)(...))QTreeView::drawRow
+776 (int (*)(...))QTreeView::drawBranches
+784 (int (*)(...))QTreeWidget::mimeTypes
+792 (int (*)(...))QTreeWidget::mimeData
+800 (int (*)(...))QTreeWidget::dropMimeData
+808 (int (*)(...))QTreeWidget::supportedDropActions
+816 (int (*)(...))-16
+824 (int (*)(...))(& _ZTI11QTreeWidget)
+832 (int (*)(...))QTreeWidget::_ZThn16_N11QTreeWidgetD1Ev
+840 (int (*)(...))QTreeWidget::_ZThn16_N11QTreeWidgetD0Ev
+848 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+856 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+864 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+872 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+880 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+888 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QTreeWidget
+ size=48 align=8
+ base size=48 base align=8
+QTreeWidget (0x0x7f1d195ff958) 0
+ vptr=((& QTreeWidget::_ZTV11QTreeWidget) + 16)
+ QTreeView (0x0x7f1d195ff9c0) 0
+ primary-for QTreeWidget (0x0x7f1d195ff958)
+ QAbstractItemView (0x0x7f1d195ffa28) 0
+ primary-for QTreeView (0x0x7f1d195ff9c0)
+ QAbstractScrollArea (0x0x7f1d195ffa90) 0
+ primary-for QAbstractItemView (0x0x7f1d195ffa28)
+ QFrame (0x0x7f1d195ffaf8) 0
+ primary-for QAbstractScrollArea (0x0x7f1d195ffa90)
+ QWidget (0x0x7f1d1966f770) 0
+ primary-for QFrame (0x0x7f1d195ffaf8)
+ QObject (0x0x7f1d192d1ba0) 0
+ primary-for QWidget (0x0x7f1d1966f770)
+ QPaintDevice (0x0x7f1d192d1c00) 16
+ vptr=((& QTreeWidget::_ZTV11QTreeWidget) + 832)
+
+Class QUndoGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QUndoGroup::QPrivateSignal (0x0x7f1d192fd0c0) 0 empty
+
+Vtable for QUndoGroup
+QUndoGroup::_ZTV10QUndoGroup: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QUndoGroup)
+16 (int (*)(...))QUndoGroup::metaObject
+24 (int (*)(...))QUndoGroup::qt_metacast
+32 (int (*)(...))QUndoGroup::qt_metacall
+40 (int (*)(...))QUndoGroup::~QUndoGroup
+48 (int (*)(...))QUndoGroup::~QUndoGroup
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QUndoGroup
+ size=16 align=8
+ base size=16 base align=8
+QUndoGroup (0x0x7f1d195ffb60) 0
+ vptr=((& QUndoGroup::_ZTV10QUndoGroup) + 16)
+ QObject (0x0x7f1d192fd060) 0
+ primary-for QUndoGroup (0x0x7f1d195ffb60)
+
+Vtable for QUndoCommand
+QUndoCommand::_ZTV12QUndoCommand: 8 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QUndoCommand)
+16 (int (*)(...))QUndoCommand::~QUndoCommand
+24 (int (*)(...))QUndoCommand::~QUndoCommand
+32 (int (*)(...))QUndoCommand::undo
+40 (int (*)(...))QUndoCommand::redo
+48 (int (*)(...))QUndoCommand::id
+56 (int (*)(...))QUndoCommand::mergeWith
+
+Class QUndoCommand
+ size=16 align=8
+ base size=16 base align=8
+QUndoCommand (0x0x7f1d192fd2a0) 0
+ vptr=((& QUndoCommand::_ZTV12QUndoCommand) + 16)
+
+Class QUndoStack::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QUndoStack::QPrivateSignal (0x0x7f1d192fd360) 0 empty
+
+Vtable for QUndoStack
+QUndoStack::_ZTV10QUndoStack: 14 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QUndoStack)
+16 (int (*)(...))QUndoStack::metaObject
+24 (int (*)(...))QUndoStack::qt_metacast
+32 (int (*)(...))QUndoStack::qt_metacall
+40 (int (*)(...))QUndoStack::~QUndoStack
+48 (int (*)(...))QUndoStack::~QUndoStack
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QUndoStack
+ size=16 align=8
+ base size=16 base align=8
+QUndoStack (0x0x7f1d195ffbc8) 0
+ vptr=((& QUndoStack::_ZTV10QUndoStack) + 16)
+ QObject (0x0x7f1d192fd300) 0
+ primary-for QUndoStack (0x0x7f1d195ffbc8)
+
+Class QUndoView::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QUndoView::QPrivateSignal (0x0x7f1d192fd600) 0 empty
+
+Vtable for QUndoView
+QUndoView::_ZTV9QUndoView: 106 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QUndoView)
+16 (int (*)(...))QUndoView::metaObject
+24 (int (*)(...))QUndoView::qt_metacast
+32 (int (*)(...))QUndoView::qt_metacall
+40 (int (*)(...))QUndoView::~QUndoView
+48 (int (*)(...))QUndoView::~QUndoView
+56 (int (*)(...))QListView::event
+64 (int (*)(...))QAbstractItemView::eventFilter
+72 (int (*)(...))QListView::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QAbstractScrollArea::sizeHint
+136 (int (*)(...))QAbstractScrollArea::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QAbstractItemView::mousePressEvent
+176 (int (*)(...))QListView::mouseReleaseEvent
+184 (int (*)(...))QAbstractItemView::mouseDoubleClickEvent
+192 (int (*)(...))QListView::mouseMoveEvent
+200 (int (*)(...))QListView::wheelEvent
+208 (int (*)(...))QAbstractItemView::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QAbstractItemView::focusInEvent
+232 (int (*)(...))QAbstractItemView::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QListView::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QListView::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QAbstractScrollArea::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QAbstractItemView::dragEnterEvent
+320 (int (*)(...))QListView::dragMoveEvent
+328 (int (*)(...))QListView::dragLeaveEvent
+336 (int (*)(...))QListView::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QFrame::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QAbstractItemView::inputMethodEvent
+416 (int (*)(...))QAbstractItemView::inputMethodQuery
+424 (int (*)(...))QAbstractItemView::focusNextPrevChild
+432 (int (*)(...))QAbstractScrollArea::setupViewport
+440 (int (*)(...))QAbstractItemView::viewportEvent
+448 (int (*)(...))QListView::scrollContentsBy
+456 (int (*)(...))QListView::viewportSizeHint
+464 (int (*)(...))QAbstractItemView::setModel
+472 (int (*)(...))QAbstractItemView::setSelectionModel
+480 (int (*)(...))QAbstractItemView::keyboardSearch
+488 (int (*)(...))QListView::visualRect
+496 (int (*)(...))QListView::scrollTo
+504 (int (*)(...))QListView::indexAt
+512 (int (*)(...))QAbstractItemView::sizeHintForRow
+520 (int (*)(...))QAbstractItemView::sizeHintForColumn
+528 (int (*)(...))QListView::reset
+536 (int (*)(...))QListView::setRootIndex
+544 (int (*)(...))QListView::doItemsLayout
+552 (int (*)(...))QAbstractItemView::selectAll
+560 (int (*)(...))QListView::dataChanged
+568 (int (*)(...))QListView::rowsInserted
+576 (int (*)(...))QListView::rowsAboutToBeRemoved
+584 (int (*)(...))QListView::selectionChanged
+592 (int (*)(...))QListView::currentChanged
+600 (int (*)(...))QAbstractItemView::updateEditorData
+608 (int (*)(...))QAbstractItemView::updateEditorGeometries
+616 (int (*)(...))QListView::updateGeometries
+624 (int (*)(...))QAbstractItemView::verticalScrollbarAction
+632 (int (*)(...))QAbstractItemView::horizontalScrollbarAction
+640 (int (*)(...))QAbstractItemView::verticalScrollbarValueChanged
+648 (int (*)(...))QAbstractItemView::horizontalScrollbarValueChanged
+656 (int (*)(...))QAbstractItemView::closeEditor
+664 (int (*)(...))QAbstractItemView::commitData
+672 (int (*)(...))QAbstractItemView::editorDestroyed
+680 (int (*)(...))QListView::moveCursor
+688 (int (*)(...))QListView::horizontalOffset
+696 (int (*)(...))QListView::verticalOffset
+704 (int (*)(...))QListView::isIndexHidden
+712 (int (*)(...))QListView::setSelection
+720 (int (*)(...))QListView::visualRegionForSelection
+728 (int (*)(...))QListView::selectedIndexes
+736 (int (*)(...))QAbstractItemView::edit
+744 (int (*)(...))QAbstractItemView::selectionCommand
+752 (int (*)(...))QListView::startDrag
+760 (int (*)(...))QListView::viewOptions
+768 (int (*)(...))-16
+776 (int (*)(...))(& _ZTI9QUndoView)
+784 (int (*)(...))QUndoView::_ZThn16_N9QUndoViewD1Ev
+792 (int (*)(...))QUndoView::_ZThn16_N9QUndoViewD0Ev
+800 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+808 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+816 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+824 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+832 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+840 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QUndoView
+ size=48 align=8
+ base size=48 base align=8
+QUndoView (0x0x7f1d195ffc30) 0
+ vptr=((& QUndoView::_ZTV9QUndoView) + 16)
+ QListView (0x0x7f1d195ffc98) 0
+ primary-for QUndoView (0x0x7f1d195ffc30)
+ QAbstractItemView (0x0x7f1d195ffd00) 0
+ primary-for QListView (0x0x7f1d195ffc98)
+ QAbstractScrollArea (0x0x7f1d195ffd68) 0
+ primary-for QAbstractItemView (0x0x7f1d195ffd00)
+ QFrame (0x0x7f1d195ffdd0) 0
+ primary-for QAbstractScrollArea (0x0x7f1d195ffd68)
+ QWidget (0x0x7f1d1966faf0) 0
+ primary-for QFrame (0x0x7f1d195ffdd0)
+ QObject (0x0x7f1d192fd540) 0
+ primary-for QWidget (0x0x7f1d1966faf0)
+ QPaintDevice (0x0x7f1d192fd5a0) 16
+ vptr=((& QUndoView::_ZTV9QUndoView) + 784)
+
+Class QWhatsThis
+ size=1 align=1
+ base size=0 base align=1
+QWhatsThis (0x0x7f1d192fd7e0) 0 empty
+
+Class QWidgetAction::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QWidgetAction::QPrivateSignal (0x0x7f1d192fd8a0) 0 empty
+
+Vtable for QWidgetAction
+QWidgetAction::_ZTV13QWidgetAction: 16 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QWidgetAction)
+16 (int (*)(...))QWidgetAction::metaObject
+24 (int (*)(...))QWidgetAction::qt_metacast
+32 (int (*)(...))QWidgetAction::qt_metacall
+40 (int (*)(...))QWidgetAction::~QWidgetAction
+48 (int (*)(...))QWidgetAction::~QWidgetAction
+56 (int (*)(...))QWidgetAction::event
+64 (int (*)(...))QWidgetAction::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidgetAction::createWidget
+120 (int (*)(...))QWidgetAction::deleteWidget
+
+Class QWidgetAction
+ size=16 align=8
+ base size=16 base align=8
+QWidgetAction (0x0x7f1d195ffe38) 0
+ vptr=((& QWidgetAction::_ZTV13QWidgetAction) + 16)
+ QAction (0x0x7f1d195ffea0) 0
+ primary-for QWidgetAction (0x0x7f1d195ffe38)
+ QObject (0x0x7f1d192fd840) 0
+ primary-for QAction (0x0x7f1d195ffea0)
+
+Class QWizard::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QWizard::QPrivateSignal (0x0x7f1d192fdb40) 0 empty
+
+Vtable for QWizard
+QWizard::_ZTV7QWizard: 73 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QWizard)
+16 (int (*)(...))QWizard::metaObject
+24 (int (*)(...))QWizard::qt_metacast
+32 (int (*)(...))QWizard::qt_metacall
+40 (int (*)(...))QWizard::~QWizard
+48 (int (*)(...))QWizard::~QWizard
+56 (int (*)(...))QWizard::event
+64 (int (*)(...))QDialog::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWizard::setVisible
+128 (int (*)(...))QWizard::sizeHint
+136 (int (*)(...))QDialog::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QDialog::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWizard::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWizard::resizeEvent
+280 (int (*)(...))QDialog::closeEvent
+288 (int (*)(...))QDialog::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QDialog::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QDialog::open
+440 (int (*)(...))QDialog::exec
+448 (int (*)(...))QWizard::done
+456 (int (*)(...))QDialog::accept
+464 (int (*)(...))QDialog::reject
+472 (int (*)(...))QWizard::validateCurrentPage
+480 (int (*)(...))QWizard::nextId
+488 (int (*)(...))QWizard::initializePage
+496 (int (*)(...))QWizard::cleanupPage
+504 (int (*)(...))-16
+512 (int (*)(...))(& _ZTI7QWizard)
+520 (int (*)(...))QWizard::_ZThn16_N7QWizardD1Ev
+528 (int (*)(...))QWizard::_ZThn16_N7QWizardD0Ev
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+552 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+560 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+568 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+576 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QWizard
+ size=48 align=8
+ base size=48 base align=8
+QWizard (0x0x7f1d195fff08) 0
+ vptr=((& QWizard::_ZTV7QWizard) + 16)
+ QDialog (0x0x7f1d195fff70) 0
+ primary-for QWizard (0x0x7f1d195fff08)
+ QWidget (0x0x7f1d1966fd90) 0
+ primary-for QDialog (0x0x7f1d195fff70)
+ QObject (0x0x7f1d192fda80) 0
+ primary-for QWidget (0x0x7f1d1966fd90)
+ QPaintDevice (0x0x7f1d192fdae0) 16
+ vptr=((& QWizard::_ZTV7QWizard) + 520)
+
+Class QWizardPage::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QWizardPage::QPrivateSignal (0x0x7f1d19361720) 0 empty
+
+Vtable for QWizardPage
+QWizardPage::_ZTV11QWizardPage: 69 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QWizardPage)
+16 (int (*)(...))QWizardPage::metaObject
+24 (int (*)(...))QWizardPage::qt_metacast
+32 (int (*)(...))QWizardPage::qt_metacall
+40 (int (*)(...))QWizardPage::~QWizardPage
+48 (int (*)(...))QWizardPage::~QWizardPage
+56 (int (*)(...))QWidget::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QWidget::mousePressEvent
+176 (int (*)(...))QWidget::mouseReleaseEvent
+184 (int (*)(...))QWidget::mouseDoubleClickEvent
+192 (int (*)(...))QWidget::mouseMoveEvent
+200 (int (*)(...))QWidget::wheelEvent
+208 (int (*)(...))QWidget::keyPressEvent
+216 (int (*)(...))QWidget::keyReleaseEvent
+224 (int (*)(...))QWidget::focusInEvent
+232 (int (*)(...))QWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QWidget::dragEnterEvent
+320 (int (*)(...))QWidget::dragMoveEvent
+328 (int (*)(...))QWidget::dragLeaveEvent
+336 (int (*)(...))QWidget::dropEvent
+344 (int (*)(...))QWidget::showEvent
+352 (int (*)(...))QWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QWidget::focusNextPrevChild
+432 (int (*)(...))QWizardPage::initializePage
+440 (int (*)(...))QWizardPage::cleanupPage
+448 (int (*)(...))QWizardPage::validatePage
+456 (int (*)(...))QWizardPage::isComplete
+464 (int (*)(...))QWizardPage::nextId
+472 (int (*)(...))-16
+480 (int (*)(...))(& _ZTI11QWizardPage)
+488 (int (*)(...))QWizardPage::_ZThn16_N11QWizardPageD1Ev
+496 (int (*)(...))QWizardPage::_ZThn16_N11QWizardPageD0Ev
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+528 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+536 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+544 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QWizardPage
+ size=48 align=8
+ base size=48 base align=8
+QWizardPage (0x0x7f1d193540d0) 0
+ vptr=((& QWizardPage::_ZTV11QWizardPage) + 16)
+ QWidget (0x0x7f1d1933f8c0) 0
+ primary-for QWizardPage (0x0x7f1d193540d0)
+ QObject (0x0x7f1d19361660) 0
+ primary-for QWidget (0x0x7f1d1933f8c0)
+ QPaintDevice (0x0x7f1d193616c0) 16
+ vptr=((& QWizardPage::_ZTV11QWizardPage) + 488)
+
+Class QQuickWidget::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QQuickWidget::QPrivateSignal (0x0x7f1d193619c0) 0 empty
+
+Vtable for QQuickWidget
+QQuickWidget::_ZTV12QQuickWidget: 64 entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QQuickWidget)
+16 (int (*)(...))QQuickWidget::metaObject
+24 (int (*)(...))QQuickWidget::qt_metacast
+32 (int (*)(...))QQuickWidget::qt_metacall
+40 (int (*)(...))QQuickWidget::~QQuickWidget
+48 (int (*)(...))QQuickWidget::~QQuickWidget
+56 (int (*)(...))QQuickWidget::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QQuickWidget::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QWidget::devType
+120 (int (*)(...))QWidget::setVisible
+128 (int (*)(...))QQuickWidget::sizeHint
+136 (int (*)(...))QWidget::minimumSizeHint
+144 (int (*)(...))QWidget::heightForWidth
+152 (int (*)(...))QWidget::hasHeightForWidth
+160 (int (*)(...))QWidget::paintEngine
+168 (int (*)(...))QQuickWidget::mousePressEvent
+176 (int (*)(...))QQuickWidget::mouseReleaseEvent
+184 (int (*)(...))QQuickWidget::mouseDoubleClickEvent
+192 (int (*)(...))QQuickWidget::mouseMoveEvent
+200 (int (*)(...))QQuickWidget::wheelEvent
+208 (int (*)(...))QQuickWidget::keyPressEvent
+216 (int (*)(...))QQuickWidget::keyReleaseEvent
+224 (int (*)(...))QQuickWidget::focusInEvent
+232 (int (*)(...))QQuickWidget::focusOutEvent
+240 (int (*)(...))QWidget::enterEvent
+248 (int (*)(...))QWidget::leaveEvent
+256 (int (*)(...))QQuickWidget::paintEvent
+264 (int (*)(...))QWidget::moveEvent
+272 (int (*)(...))QQuickWidget::resizeEvent
+280 (int (*)(...))QWidget::closeEvent
+288 (int (*)(...))QWidget::contextMenuEvent
+296 (int (*)(...))QWidget::tabletEvent
+304 (int (*)(...))QWidget::actionEvent
+312 (int (*)(...))QQuickWidget::dragEnterEvent
+320 (int (*)(...))QQuickWidget::dragMoveEvent
+328 (int (*)(...))QQuickWidget::dragLeaveEvent
+336 (int (*)(...))QQuickWidget::dropEvent
+344 (int (*)(...))QQuickWidget::showEvent
+352 (int (*)(...))QQuickWidget::hideEvent
+360 (int (*)(...))QWidget::nativeEvent
+368 (int (*)(...))QWidget::changeEvent
+376 (int (*)(...))QWidget::metric
+384 (int (*)(...))QWidget::initPainter
+392 (int (*)(...))QWidget::redirected
+400 (int (*)(...))QWidget::sharedPainter
+408 (int (*)(...))QWidget::inputMethodEvent
+416 (int (*)(...))QWidget::inputMethodQuery
+424 (int (*)(...))QQuickWidget::focusNextPrevChild
+432 (int (*)(...))-16
+440 (int (*)(...))(& _ZTI12QQuickWidget)
+448 (int (*)(...))QQuickWidget::_ZThn16_N12QQuickWidgetD1Ev
+456 (int (*)(...))QQuickWidget::_ZThn16_N12QQuickWidgetD0Ev
+464 (int (*)(...))QWidget::_ZThn16_NK7QWidget7devTypeEv
+472 (int (*)(...))QWidget::_ZThn16_NK7QWidget11paintEngineEv
+480 (int (*)(...))QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+488 (int (*)(...))QWidget::_ZThn16_NK7QWidget11initPainterEP8QPainter
+496 (int (*)(...))QWidget::_ZThn16_NK7QWidget10redirectedEP6QPoint
+504 (int (*)(...))QWidget::_ZThn16_NK7QWidget13sharedPainterEv
+
+Class QQuickWidget
+ size=48 align=8
+ base size=48 base align=8
+QQuickWidget (0x0x7f1d19354138) 0
+ vptr=((& QQuickWidget::_ZTV12QQuickWidget) + 16)
+ QWidget (0x0x7f1d1933f930) 0
+ primary-for QQuickWidget (0x0x7f1d19354138)
+ QObject (0x0x7f1d19361900) 0
+ primary-for QWidget (0x0x7f1d1933f930)
+ QPaintDevice (0x0x7f1d19361960) 16
+ vptr=((& QQuickWidget::_ZTV12QQuickWidget) + 448)
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f1d193b7000) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f1d193b7360) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f1d193b7540) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f1d193b78a0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f1d193b7a80) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f1d193b7de0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f1d193e3000) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f1d193e3360) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f1d193e3540) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f1d193e38a0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7f1d193e3a80) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7f1d193e3de0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7f1d19409000) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7f1d19409360) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7f1d19409540) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7f1d194098a0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f1d1942ad80) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f1d19449120) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f1d194492a0) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f1d19449600) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f1d19449780) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f1d19449ae0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f1d19449c60) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f1d19468000) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7f1d19468180) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7f1d194684e0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7f1d19468660) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7f1d194689c0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7f1d19468b40) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7f1d19468ea0) 0 empty
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno
+ size=4 align=4
+ base size=4 base align=4
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7f1d19485060) 0
+
+Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7f1d194853c0) 0 empty
+
diff --git a/tests/auto/particles/qquickitemparticle/data/loader.qml b/tests/auto/particles/qquickitemparticle/data/loader.qml
new file mode 100644
index 0000000000..beac7a0410
--- /dev/null
+++ b/tests/auto/particles/qquickitemparticle/data/loader.qml
@@ -0,0 +1,65 @@
+/****************************************************************************
+**
+** Copyright (C) 2020 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import QtQuick.Particles 2.0
+
+Rectangle {
+ color: "black"
+ width: 320
+ height: 320
+
+ Component {
+ id: component
+
+ ParticleSystem {
+ id: sys
+ objectName: "system"
+ anchors.fill: parent
+ running: visible
+
+ ItemParticle {
+ delegate: Image { source: "../../shared/star.png" }
+ }
+
+ Emitter {
+ //0,0 position
+ size: 32
+ emitRate: 10
+ lifeSpan: 150000
+ }
+ }
+ }
+
+ Loader {
+ id: loader
+ objectName: "loader"
+ sourceComponent: component
+ anchors.fill: parent
+ }
+}
diff --git a/tests/auto/particles/qquickitemparticle/data/takeGive.qml b/tests/auto/particles/qquickitemparticle/data/takeGive.qml
new file mode 100644
index 0000000000..e95ae738bd
--- /dev/null
+++ b/tests/auto/particles/qquickitemparticle/data/takeGive.qml
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2020 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import QtQuick.Particles 2.0
+
+Rectangle {
+ id: testTakeGive
+ color: "black"
+ width: 320
+ height: 320
+
+ function takeItems()
+ {
+ for(var i = 0; i < imgList.count; i++) ip.take(imgList.itemAt(i));
+ }
+ function giveItems()
+ {
+ for(var i = 0; i < imgList.count; i++) ip.give(imgList.itemAt(i));
+ }
+
+ Repeater {
+ id: imgList
+ model: 100
+ delegate: Image {
+ ItemParticle.onAttached: sys.acc = sys.acc + 1
+ ItemParticle.onDetached: sys.acc = sys.acc - 1;
+ source: "../../shared/star.png"
+ }
+ }
+
+ ParticleSystem {
+ id: sys
+ objectName: "system"
+ anchors.fill: parent
+ property int acc: 0
+
+ ItemParticle {
+ id: ip
+ }
+
+ Emitter{
+ //0,0 position
+ size: 32
+ emitRate: 1000
+ lifeSpan: Emitter.InfiniteLife
+ }
+ }
+}
diff --git a/tests/auto/particles/qquickitemparticle/tst_qquickitemparticle.cpp b/tests/auto/particles/qquickitemparticle/tst_qquickitemparticle.cpp
index d9791cdb33..28ebbb3c05 100644
--- a/tests/auto/particles/qquickitemparticle/tst_qquickitemparticle.cpp
+++ b/tests/auto/particles/qquickitemparticle/tst_qquickitemparticle.cpp
@@ -45,6 +45,9 @@ private slots:
void test_basic();
void test_deletion();
void test_noDeletion();
+ void test_takeGive();
+ void test_noCrashOnReset();
+ void test_noLeakWhenDeleted();
};
void tst_qquickitemparticle::initTestCase()
@@ -107,6 +110,53 @@ void tst_qquickitemparticle::test_noDeletion()
delete view;
}
+void tst_qquickitemparticle::test_takeGive()
+{
+ QQuickView* view = createView(testFileUrl("takeGive.qml"), 500);
+ QQuickParticleSystem* system = view->rootObject()->findChild<QQuickParticleSystem*>("system");
+ QMetaObject::invokeMethod(view->rootObject(), "takeItems");
+ ensureAnimTime(1000, system->m_animation);
+ QVERIFY(system->property("acc").toInt() == 100);
+ QMetaObject::invokeMethod(view->rootObject(), "giveItems");
+ QTRY_VERIFY(system->property("acc").toInt() == 0);
+ delete view;
+}
+
+void tst_qquickitemparticle::test_noCrashOnReset()
+{
+ QQuickView* view = createView(testFileUrl("basic.qml"), 600);
+ QQuickParticleSystem* system = view->rootObject()->findChild<QQuickParticleSystem*>("system");
+
+ for (int i = 0; i < 10; ++i) {
+ ensureAnimTime(16, system->m_animation);
+ system->reset();
+ }
+
+ delete view;
+}
+
+void tst_qquickitemparticle::test_noLeakWhenDeleted()
+{
+ QQuickView* view = createView(testFileUrl("loader.qml"), 500);
+ QQuickParticleSystem* system = view->rootObject()->findChild<QQuickParticleSystem*>("system");
+ ensureAnimTime(100, system->m_animation);
+
+ auto particles = qAsConst(system->groupData[0]->data);
+ QVERIFY(!particles.isEmpty());
+
+ QQuickParticleData* firstParticleData = particles.first();
+ QPointer<QQuickItem> firstParticleDelegate = firstParticleData->delegate;
+ QVERIFY(!firstParticleDelegate.isNull());
+
+ QQuickItem* loader = view->rootObject()->findChild<QQuickItem*>("loader");
+ loader->setProperty("active", false); //This should destroy the ParticleSystem, ItemParticle and Emitter
+
+ QTest::qWait(1); //Process events to make sure the loader is properly unloaded
+ QVERIFY(firstParticleDelegate.isNull()); //Delegates should be deleted
+
+ delete view;
+}
+
QTEST_MAIN(tst_qquickitemparticle);
#include "tst_qquickitemparticle.moc"
diff --git a/tests/auto/qml/debugger/qqmlpreview/tst_qqmlpreview.cpp b/tests/auto/qml/debugger/qqmlpreview/tst_qqmlpreview.cpp
index f08f3c1da7..15eb4012ac 100644
--- a/tests/auto/qml/debugger/qqmlpreview/tst_qqmlpreview.cpp
+++ b/tests/auto/qml/debugger/qqmlpreview/tst_qqmlpreview.cpp
@@ -122,7 +122,6 @@ void checkFiles(const QStringList &files)
{
QVERIFY(!files.contains("/etc/localtime"));
QVERIFY(!files.contains("/etc/timezome"));
- QVERIFY(!files.contains(":/qgradient/webgradients.binaryjson"));
}
void tst_QQmlPreview::cleanup()
diff --git a/tests/auto/qml/ecmascripttests/TestExpectations b/tests/auto/qml/ecmascripttests/TestExpectations
index 4c04afe886..6b743ba433 100644
--- a/tests/auto/qml/ecmascripttests/TestExpectations
+++ b/tests/auto/qml/ecmascripttests/TestExpectations
@@ -249,15 +249,6 @@ built-ins/String/prototype/toLocaleLowerCase/Final_Sigma_U180E.js fails
built-ins/String/prototype/toLocaleLowerCase/special_casing_conditional.js fails
built-ins/String/prototype/toLowerCase/Final_Sigma_U180E.js fails
built-ins/String/prototype/toLowerCase/special_casing_conditional.js fails
-built-ins/TypedArray/from/arylk-get-length-error.js fails
-built-ins/TypedArray/from/arylk-to-length-error.js fails
-built-ins/TypedArray/from/iter-access-error.js fails
-built-ins/TypedArray/from/iter-invoke-error.js fails
-built-ins/TypedArray/from/iter-next-error.js fails
-built-ins/TypedArray/from/iter-next-value-error.js fails
-built-ins/TypedArray/from/length.js fails
-built-ins/TypedArray/from/name.js fails
-built-ins/TypedArray/from/prop-desc.js fails
built-ins/TypedArray/prototype/constructor.js fails
built-ins/TypedArray/prototype/fill/fill-values-conversion-operations-consistent-nan.js fails
built-ins/TypedArray/prototype/slice/bit-precision.js fails
@@ -293,29 +284,6 @@ built-ins/TypedArrays/ctors/typedarray-arg/same-ctor-buffer-ctor-species-not-cto
built-ins/TypedArrays/ctors/typedarray-arg/same-ctor-buffer-ctor-species-prototype-throws.js fails
built-ins/TypedArrays/ctors/typedarray-arg/same-ctor-buffer-ctor-species-throws.js fails
built-ins/TypedArrays/ctors/typedarray-arg/same-ctor-buffer-ctor-value-not-obj-throws.js fails
-built-ins/TypedArrays/from/arylk-get-length-error.js fails
-built-ins/TypedArrays/from/arylk-to-length-error.js fails
-built-ins/TypedArrays/from/custom-ctor-returns-other-instance.js fails
-built-ins/TypedArrays/from/custom-ctor.js fails
-built-ins/TypedArrays/from/iter-access-error.js fails
-built-ins/TypedArrays/from/iter-invoke-error.js fails
-built-ins/TypedArrays/from/iter-next-error.js fails
-built-ins/TypedArrays/from/iter-next-value-error.js fails
-built-ins/TypedArrays/from/mapfn-abrupt-completion.js fails
-built-ins/TypedArrays/from/mapfn-arguments.js fails
-built-ins/TypedArrays/from/mapfn-this-with-thisarg.js fails
-built-ins/TypedArrays/from/mapfn-this-without-thisarg-non-strict.js sloppyFails
-built-ins/TypedArrays/from/mapfn-this-without-thisarg-strict.js strictFails
-built-ins/TypedArrays/from/nan-conversion.js fails
-built-ins/TypedArrays/from/new-instance-empty.js fails
-built-ins/TypedArrays/from/new-instance-from-ordinary-object.js fails
-built-ins/TypedArrays/from/new-instance-from-sparse-array.js fails
-built-ins/TypedArrays/from/new-instance-from-zero.js fails
-built-ins/TypedArrays/from/new-instance-using-custom-ctor.js fails
-built-ins/TypedArrays/from/new-instance-with-mapfn.js fails
-built-ins/TypedArrays/from/new-instance-without-mapfn.js fails
-built-ins/TypedArrays/from/property-abrupt-completion.js fails
-built-ins/TypedArrays/from/set-value-abrupt-completion.js fails
built-ins/TypedArrays/internals/Get/key-is-not-integer.js fails
built-ins/TypedArrays/internals/Get/key-is-not-minus-zero.js fails
built-ins/TypedArrays/internals/Get/key-is-out-of-bounds.js fails
diff --git a/tests/auto/qml/ecmascripttests/qjstest/main.cpp b/tests/auto/qml/ecmascripttests/qjstest/main.cpp
index 4a3541d892..38736b083d 100644
--- a/tests/auto/qml/ecmascripttests/qjstest/main.cpp
+++ b/tests/auto/qml/ecmascripttests/qjstest/main.cpp
@@ -92,6 +92,7 @@ int main(int argc, char **argv)
int flags = 0;
if (parser.isSet(verbose))
+
flags |= Test262Runner::Verbose;
if (parser.isSet(parallel))
flags |= Test262Runner::Parallel;
diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
index f1ff396d4f..66a526fda8 100644
--- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp
+++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
@@ -252,6 +252,17 @@ private slots:
void interrupt();
void triggerBackwardJumpWithDestructuring();
+ void arrayConcatOnSparseArray();
+ void sortSparseArray();
+ void compileBrokenRegexp();
+ void sortNonStringArray();
+ void iterateInvalidProxy();
+ void applyOnHugeArray();
+
+ void tostringRecursionCheck();
+ void arrayIncludesWithLargeArray();
+ void printCircularArray();
+ void typedArraySet();
public:
Q_INVOKABLE QJSValue throwingCppMethod1();
@@ -4961,6 +4972,177 @@ void tst_QJSEngine::triggerBackwardJumpWithDestructuring()
QVERIFY(!value.isError());
}
+void tst_QJSEngine::arrayConcatOnSparseArray()
+{
+ QJSEngine engine;
+ engine.installExtensions(QJSEngine::GarbageCollectionExtension);
+ const auto value = engine.evaluate(
+ "(function() {\n"
+ " const v4 = [1,2,3];\n"
+ " const v7 = [4,5];\n"
+ " v7.length = 1337;\n"
+ " const v9 = v4.concat(v7);\n"
+ " gc();\n"
+ " return v9;\n"
+ "})();");
+ QCOMPARE(value.property("length").toInt(), 1340);
+ for (int i = 0; i < 5; ++i)
+ QCOMPARE(value.property(i).toInt(), i + 1);
+ for (int i = 5; i < 1340; ++i)
+ QVERIFY(value.property(i).isUndefined());
+}
+
+void tst_QJSEngine::sortSparseArray()
+{
+ QJSEngine engine;
+ engine.installExtensions(QJSEngine::ConsoleExtension);
+ const auto value = engine.evaluate(
+ "(function() {\n"
+ " var sparse = [0];\n"
+ " sparse = Object.defineProperty(sparse, \"10\", "
+ " {get: ()=>{return 2}, set: ()=>{return 2}} );\n"
+ " return Array.prototype.sort.call(sparse, ()=>{});\n"
+ "})();");
+
+ QCOMPARE(value.property("length").toInt(), 11);
+ QVERIFY(value.property(0).isNumber());
+ QCOMPARE(value.property(0).toInt(), 0);
+ QVERIFY(value.property(1).isNumber());
+ QCOMPARE(value.property(1).toInt(), 2);
+ QVERIFY(value.property(10).isUndefined());
+}
+
+void tst_QJSEngine::compileBrokenRegexp()
+{
+ QJSEngine engine;
+ const auto value = engine.evaluate(
+ "(function() {"
+ "var ret = new RegExp(Array(4097).join("
+ " String.fromCharCode(58)) + Array(4097).join(String.fromCharCode(480)) "
+ " + Array(65537).join(String.fromCharCode(5307)));"
+ "return RegExp.prototype.compile.call(ret, 'a','b');"
+ "})();"
+ );
+
+ QVERIFY(value.isError());
+ QCOMPARE(value.toString(), "SyntaxError: Invalid flags supplied to RegExp constructor");
+}
+
+void tst_QJSEngine::tostringRecursionCheck()
+{
+ QJSEngine engine;
+ auto value = engine.evaluate(R"js(
+ var a = {};
+ var b = new Array(1337);
+ function main() {
+ var ret = a.toLocaleString;
+ b[1] = ret;
+ Array = {};
+ Object.toString = b[1];
+ var ret = String.prototype.lastIndexOf.call({}, b[1]);
+ var ret = String.prototype.charAt.call(Function, Object);
+ }
+ main();
+ )js");
+ QVERIFY(value.isError());
+ QCOMPARE(value.toString(), QLatin1String("RangeError: Maximum call stack size exceeded."));
+}
+
+void tst_QJSEngine::arrayIncludesWithLargeArray()
+{
+ QJSEngine engine;
+ auto value = engine.evaluate(R"js(
+ let arr = new Array(10000000)
+ arr.includes(42)
+ )js");
+ QVERIFY(value.isBool());
+ QCOMPARE(value.toBool(), false);
+}
+
+void tst_QJSEngine::printCircularArray()
+{
+ QJSEngine engine;
+ engine.installExtensions(QJSEngine::ConsoleExtension);
+ QTest::ignoreMessage(QtMsgType::QtDebugMsg, "[[Circular]]");
+ auto value = engine.evaluate(R"js(
+ let v1 = []
+ v1.push(v1)
+ console.log(v1)
+ )js");
+}
+
+void tst_QJSEngine::sortNonStringArray()
+{
+ QJSEngine engine;
+ const auto value = engine.evaluate(
+ "const v4 = [Symbol.iterator, 1];"
+ "const v5 = v4.sort();"
+ );
+ QVERIFY(value.isError());
+ QCOMPARE(value.toString(), "TypeError: Cannot convert a symbol to a string.");
+}
+
+void tst_QJSEngine::iterateInvalidProxy()
+{
+ QJSEngine engine;
+ const auto value = engine.evaluate(
+ "const v1 = new Proxy(Reflect, Reflect);"
+ "for (const v2 in v1) {}"
+ "const v3 = { getOwnPropertyDescriptor: eval, getPrototypeOf: eval };"
+ "const v4 = new Proxy(v3, v3);"
+ "for (const v5 in v4) {}"
+ );
+ QVERIFY(value.isError());
+ QCOMPARE(value.toString(), "TypeError: Type error");
+}
+
+void tst_QJSEngine::applyOnHugeArray()
+{
+ QJSEngine engine;
+ const auto value = engine.evaluate(
+ "var a = new Array(10);"
+ "a[536870912] = Function;"
+ "Function.apply('aaaaaaaa', a);"
+ );
+ QVERIFY(value.isError());
+ QCOMPARE(value.toString(), "RangeError: Array too large for apply().");
+}
+
+void tst_QJSEngine::typedArraySet()
+{
+ QJSEngine engine;
+ const auto value = engine.evaluate(
+ "(function() {"
+ " var length = 0xffffffe;"
+ " var offset = 0xfffffff0;"
+ " var e1;"
+ " var e2;"
+ " try {"
+ " var source1 = new Int8Array(length);"
+ " var target1 = new Int8Array(length);"
+ " target1.set(source1, offset);"
+ " } catch (intError) {"
+ " e1 = intError;"
+ " }"
+ " try {"
+ " var source2 = new Array(length);"
+ " var target2 = new Int8Array(length);"
+ " target2.set(source2, offset);"
+ " } catch (arrayError) {"
+ " e2 = arrayError;"
+ " }"
+ " return [e1, e2];"
+ "})();"
+ );
+
+ QVERIFY(value.isArray());
+ for (int i = 0; i < 2; ++i) {
+ const auto error = value.property(i);
+ QVERIFY(error.isError());
+ QCOMPARE(error.toString(), "RangeError: TypedArray.set: out of range");
+ }
+}
+
QTEST_MAIN(tst_QJSEngine)
#include "tst_qjsengine.moc"
diff --git a/tests/auto/qml/qjsvalue/tst_qjsvalue.cpp b/tests/auto/qml/qjsvalue/tst_qjsvalue.cpp
index 37d0ea4dea..95f554776f 100644
--- a/tests/auto/qml/qjsvalue/tst_qjsvalue.cpp
+++ b/tests/auto/qml/qjsvalue/tst_qjsvalue.cpp
@@ -2708,6 +2708,70 @@ void tst_QJSValue::nestedObjectToVariant()
QCOMPARE(o.toVariant(), expected);
}
+static int instanceCount = 0;
+
+struct MyType
+{
+ MyType(int n = 0, const char *t=nullptr): number(n), text(t)
+ {
+ ++instanceCount;
+ }
+ MyType(const MyType &other)
+ : number(other.number), text(other.text)
+ {
+ ++instanceCount;
+ }
+ ~MyType()
+ {
+ --instanceCount;
+ }
+ int number;
+ const char *text;
+};
+
+Q_DECLARE_METATYPE(MyType)
+Q_DECLARE_METATYPE(MyType*)
+
+void tst_QJSValue::jsvalueArrayToSequenceType()
+{
+ QCOMPARE(instanceCount, 0);
+ {
+ QJSEngine eng {};
+ auto testObject = eng.newObject();
+ testObject.setProperty("test", 42);
+ testObject.setProperty("mytypeobject", eng.toScriptValue(QVariant::fromValue(MyType {42, "hello"})));
+ auto array = eng.newArray(4);
+ array.setProperty(0, QLatin1String("Hello World"));
+ array.setProperty(1, 42);
+ array.setProperty(2, QJSValue(QJSValue::UndefinedValue));
+ array.setProperty(3, testObject);
+ auto asVariant = QVariant::fromValue(array);
+ QVERIFY(asVariant.canConvert<QVariantList>());
+ auto asIterable = asVariant.value<QSequentialIterable>();
+ for (auto it = asIterable.begin(); it != asIterable.end(); ++it) {
+ Q_UNUSED(*it)
+ }
+ int i = 0;
+ for (QVariant myVariant: asIterable) {
+ QCOMPARE(myVariant.isValid(), i != 2);
+ ++i;
+ }
+ QVERIFY(asIterable.at(2).value<QVariant>().isNull());
+ QCOMPARE(asIterable.at(3).value<QVariantMap>().find("mytypeobject")->value<MyType>().number, 42);
+ QCOMPARE(asIterable.at(0).value<QVariant>().toString(), QLatin1String("Hello World"));
+ auto it1 = asIterable.begin();
+ auto it2 = asIterable.begin();
+ QCOMPARE((*it1).value<QVariant>().toString(), (*it2).value<QVariant>().toString());
+ QCOMPARE((*it1).value<QVariant>().toString(), QLatin1String("Hello World"));
+ ++it2;
+ QCOMPARE((*it1).value<QVariant>().toString(), QLatin1String("Hello World"));
+ QCOMPARE((*it2).value<QVariant>().toInt(), 42);
+ }
+ // tests need to be done after engine has been destroyed, else it will hold a reference until
+ // the gc decides to collect it
+ QCOMPARE(instanceCount, 0);
+}
+
void tst_QJSValue::deleteFromDifferentThread()
{
#if !QT_CONFIG(thread)
diff --git a/tests/auto/qml/qjsvalue/tst_qjsvalue.h b/tests/auto/qml/qjsvalue/tst_qjsvalue.h
index f704169d43..d85b9a0552 100644
--- a/tests/auto/qml/qjsvalue/tst_qjsvalue.h
+++ b/tests/auto/qml/qjsvalue/tst_qjsvalue.h
@@ -142,6 +142,8 @@ private slots:
void nestedObjectToVariant_data();
void nestedObjectToVariant();
+ void jsvalueArrayToSequenceType();
+
void deleteFromDifferentThread();
private:
diff --git a/tests/auto/qml/qml.pro b/tests/auto/qml/qml.pro
index db9bb52010..d9f3fdf1b8 100644
--- a/tests/auto/qml/qml.pro
+++ b/tests/auto/qml/qml.pro
@@ -12,7 +12,7 @@ PUBLICTESTS += \
qqmlfileselector
PUBLICTESTS += \
- qmlmin \
+ qmlformat \
qqmlcomponent \
qqmlconsole \
qqmlengine \
diff --git a/tests/auto/qml/qmldiskcache/tst_qmldiskcache.cpp b/tests/auto/qml/qmldiskcache/tst_qmldiskcache.cpp
index 1f0115b926..d0c8390a74 100644
--- a/tests/auto/qml/qmldiskcache/tst_qmldiskcache.cpp
+++ b/tests/auto/qml/qmldiskcache/tst_qmldiskcache.cpp
@@ -87,7 +87,9 @@ public:
void waitForLoad()
{
- QTRY_VERIFY(status() == QQmlComponent::Ready || status() == QQmlComponent::Error);
+ QTRY_VERIFY_WITH_TIMEOUT(
+ status() == QQmlComponent::Ready || status() == QQmlComponent::Error,
+ 32768);
}
};
diff --git a/tests/auto/qml/qmlformat/data/Example1.formatted.nosort.qml b/tests/auto/qml/qmlformat/data/Example1.formatted.nosort.qml
new file mode 100644
index 0000000000..080cec438e
--- /dev/null
+++ b/tests/auto/qml/qmlformat/data/Example1.formatted.nosort.qml
@@ -0,0 +1,150 @@
+/* This file is licensed under the not a license license
+ 1. You may not comply
+ 2. Goodbye
+*/
+
+// Importing this is very important
+import QtQuick 5.15
+// Muddling the waters!
+import QtQuick.Models 3.14 as muddle
+// Importing that is important too
+import Z
+import That
+import This // THIS IS VERY IMPORTANT!
+import Y
+import X.Z
+import X.Y
+import A.LLOHA
+import A.B.B.A
+
+// This comment is related to Item
+Item {
+ // Orphan comment
+ // Another orphan
+ // More orphans
+
+ // This to id
+ // Also id. (line 2)
+ // This is the third id
+ // fourth id comment
+ id: foo
+
+ // This to enum
+ enum Foo {
+ A = 3, // This is A
+ B, // This is B
+ C = 4, // This is C
+ D // This is D
+ }
+
+ property bool some_bool: false
+ property variant some_array_literal: [30, 20, Math["PI"], [4, 3, 2], "foo", 0.3]
+ property bool something_computed: function(x) {
+ // This is an orphan inside something_computed
+ // Are these getting duplicated?
+ // Another orphan inside something_computed
+
+ const PI = 3, DAYS_PER_YEAR = 365.25;
+ var x = 3 + 2;
+ x["bla"] = 50;
+ // This one to var few!
+ var few = new WhatEver();
+ x += Math.sin(3);
+ x--;
+ --x;
+ x++;
+ ++x;
+ for (var x = 0; x < 100; x++) {
+ x++;
+ console.log("Foo");
+ }
+ for (var x in [3, 2, 1]) {
+ y++;
+ console.log("Bar");
+ }
+ while (true)
+ console.log("Wee");
+
+ with (foo) {
+ bar;
+ x += 5;
+ } // This is related to with!
+ x3:
+ do {
+ console.log("Hello");
+ } while (3 == 0);
+ try {
+ dangerous();
+ } catch (e) {
+ console.log(e);
+ } finally {
+ dangerous();
+ }
+ switch (x) {
+ case 0:
+ x = 1;
+ break;
+ case 1:
+ x = 5;
+ break;
+ case 4:
+ x = 100;
+ break;
+ }
+ if (x == 50)
+ console.log("true");
+ else if (x == 50)
+ console.log("other thing");
+ else
+ console.log("false");
+
+ if (x == 50) {
+ console.log("true");
+ } else if (x == 50) {
+ console.log("other thing");
+ x--;
+ } else {
+ console.log("false");
+ }
+ return "foobar";
+ }()
+ default property bool some_default_bool: 500 % 5 !== 0 // some_default_bool
+ // some_read_only_bool
+ readonly property bool some_read_only_bool: Math.sin(3) && (aFunc()[30] + 5) | 2 != 0
+
+ signal say(string name, bool caps)
+
+ // This one to aFunc()
+ function aFunc() {
+ var x = 3;
+ return x;
+ }
+
+ x: 3 // Very cool
+ Component.onCompleted: console.log("Foo!")
+ myFavouriteThings: [
+ // This is an orphan
+
+ // This is a cool text
+ Text {
+ },
+ // This is a cool rectangle
+ Rectangle {
+ }
+ ]
+ Text {
+ required property string batman
+
+ signal boo(int count, int times, real duration)
+
+ text: "Bla"
+ }
+
+ // This comment is related to the property animation
+ PropertyAnimation on x {
+ id: foo
+ x: 3
+ y: x + 3
+ }
+
+}
diff --git a/tests/auto/qml/qmlformat/data/Example1.formatted.qml b/tests/auto/qml/qmlformat/data/Example1.formatted.qml
new file mode 100644
index 0000000000..4b65b9add6
--- /dev/null
+++ b/tests/auto/qml/qmlformat/data/Example1.formatted.qml
@@ -0,0 +1,150 @@
+/* This file is licensed under the not a license license
+ 1. You may not comply
+ 2. Goodbye
+*/
+
+import A.B.B.A
+import A.LLOHA
+// Importing this is very important
+import QtQuick 5.15
+// Muddling the waters!
+import QtQuick.Models 3.14 as muddle
+import That
+import This // THIS IS VERY IMPORTANT!
+import X.Y
+import X.Z
+import Y
+// Importing that is important too
+import Z
+
+// This comment is related to Item
+Item {
+ // Orphan comment
+ // Another orphan
+ // More orphans
+
+ // This to id
+ // Also id. (line 2)
+ // This is the third id
+ // fourth id comment
+ id: foo
+
+ // This to enum
+ enum Foo {
+ A = 3, // This is A
+ B, // This is B
+ C = 4, // This is C
+ D // This is D
+ }
+
+ property bool some_bool: false
+ property variant some_array_literal: [30, 20, Math["PI"], [4, 3, 2], "foo", 0.3]
+ property bool something_computed: function(x) {
+ // This is an orphan inside something_computed
+ // Are these getting duplicated?
+ // Another orphan inside something_computed
+
+ const PI = 3, DAYS_PER_YEAR = 365.25;
+ var x = 3 + 2;
+ x["bla"] = 50;
+ // This one to var few!
+ var few = new WhatEver();
+ x += Math.sin(3);
+ x--;
+ --x;
+ x++;
+ ++x;
+ for (var x = 0; x < 100; x++) {
+ x++;
+ console.log("Foo");
+ }
+ for (var x in [3, 2, 1]) {
+ y++;
+ console.log("Bar");
+ }
+ while (true)
+ console.log("Wee");
+
+ with (foo) {
+ bar;
+ x += 5;
+ } // This is related to with!
+ x3:
+ do {
+ console.log("Hello");
+ } while (3 == 0);
+ try {
+ dangerous();
+ } catch (e) {
+ console.log(e);
+ } finally {
+ dangerous();
+ }
+ switch (x) {
+ case 0:
+ x = 1;
+ break;
+ case 1:
+ x = 5;
+ break;
+ case 4:
+ x = 100;
+ break;
+ }
+ if (x == 50)
+ console.log("true");
+ else if (x == 50)
+ console.log("other thing");
+ else
+ console.log("false");
+
+ if (x == 50) {
+ console.log("true");
+ } else if (x == 50) {
+ console.log("other thing");
+ x--;
+ } else {
+ console.log("false");
+ }
+ return "foobar";
+ }()
+ default property bool some_default_bool: 500 % 5 !== 0 // some_default_bool
+ // some_read_only_bool
+ readonly property bool some_read_only_bool: Math.sin(3) && (aFunc()[30] + 5) | 2 != 0
+
+ signal say(string name, bool caps)
+
+ // This one to aFunc()
+ function aFunc() {
+ var x = 3;
+ return x;
+ }
+
+ x: 3 // Very cool
+ Component.onCompleted: console.log("Foo!")
+ myFavouriteThings: [
+ // This is an orphan
+
+ // This is a cool text
+ Text {
+ },
+ // This is a cool rectangle
+ Rectangle {
+ }
+ ]
+ Text {
+ required property string batman
+
+ signal boo(int count, int times, real duration)
+
+ text: "Bla"
+ }
+
+ // This comment is related to the property animation
+ PropertyAnimation on x {
+ id: foo
+ x: 3
+ y: x + 3
+ }
+
+}
diff --git a/tests/auto/qml/qmlformat/data/Example1.qml b/tests/auto/qml/qmlformat/data/Example1.qml
new file mode 100644
index 0000000000..0fb9053e3a
--- /dev/null
+++ b/tests/auto/qml/qmlformat/data/Example1.qml
@@ -0,0 +1,105 @@
+
+
+/* This file is licensed under the not a license license
+ 1. You may not comply
+ 2. Goodbye
+*/
+
+// Importing this is very important
+import QtQuick 5.15
+// Muddling the waters!
+import QtQuick.Models 3.14 as muddle
+// Importing that is important too
+import Z
+import That
+import This // THIS IS VERY IMPORTANT!
+import Y
+import X.Z
+import X.Y
+import A.LLOHA
+import A.B.B.A
+
+// This comment is related to Item
+Item {
+ x: 3 // Very cool
+
+ // This to enum
+ enum Foo {
+ A = 3, // This is A
+ B, // This is B
+ C = 4, // This is C
+ D // This is D
+ }
+
+ // This one to aFunc()
+ function aFunc() {
+ var x = 3;
+ return x;
+ }
+
+ property bool some_bool : false
+ // This comment is related to the property animation
+ PropertyAnimation on x {
+ id: foo; x: 3; y: x + 3
+ }
+
+ // Orphan comment
+
+ // Another orphan
+
+ // More orphans
+
+
+ property variant some_array_literal: [30,20,Math["PI"],[4,3,2],"foo",0.3]
+ property bool something_computed: function(x) {
+ const PI = 3, DAYS_PER_YEAR=365.25; var x = 3 + 2; x["bla"] = 50;
+
+ // This is an orphan inside something_computed
+
+ // Are these getting duplicated?
+
+
+ // This one to var few!
+ var few = new WhatEver();
+ x += Math.sin(3); x--; --x; x++; ++x;
+ for (var x = 0; x < 100; x++) { x++; console.log("Foo"); }
+ for (var x in [3,2,1]) { y++; console.log("Bar"); }
+ while (true) { console.log("Wee"); }
+ with (foo) { bar; x+=5; } // This is related to with!
+ x3:
+ do { console.log("Hello"); } while (3 == 0)
+ try { dangerous(); } catch(e) { console.log(e); } finally { console.log("What else?"); }
+ switch (x) { case 0: x = 1; break; case 1: x = 5; break; case 4: x = 100; break; }
+ if (x == 50) { console.log("true"); } else if (x == 50) { console.log("other thing"); } else { console.log("false"); }
+ if (x == 50) { console.log("true"); } else if (x == 50) { console.log("other thing"); x--; } else { console.log("false"); }
+
+ // Another orphan inside something_computed
+
+ return "foobar"; }();
+
+ default property bool some_default_bool : 500 % 5 !== 0 // some_default_bool
+
+ myFavouriteThings: [
+ // This is an orphan
+
+ // This is a cool text
+ Text {},
+ // This is a cool rectangle
+ Rectangle {}]
+
+ // some_read_only_bool
+ readonly property bool some_read_only_bool : Math.sin(3) && (aFunc()[30] + 5) | 2 != 0
+
+ signal say(string name, bool caps);
+
+ Text { text: "Bla"; signal boo(int count, int times, real duration); required property string batman; }
+
+ Component.onCompleted: console.log("Foo!");
+
+ // This to id
+ // Also id. (line 2)
+ // This is the third id
+ // fourth id comment
+ id: foo
+
+}
diff --git a/tests/auto/qml/qmlformat/qmlformat.pro b/tests/auto/qml/qmlformat/qmlformat.pro
new file mode 100644
index 0000000000..9f8a44bc09
--- /dev/null
+++ b/tests/auto/qml/qmlformat/qmlformat.pro
@@ -0,0 +1,11 @@
+CONFIG += testcase
+TARGET = tst_qmlformat
+macos:CONFIG -= app_bundle
+
+SOURCES += tst_qmlformat.cpp
+
+include (../../shared/util.pri)
+
+TESTDATA = data/*
+
+QT += testlib
diff --git a/tests/auto/qml/qmlformat/tst_qmlformat.cpp b/tests/auto/qml/qmlformat/tst_qmlformat.cpp
new file mode 100644
index 0000000000..7ad9c99d83
--- /dev/null
+++ b/tests/auto/qml/qmlformat/tst_qmlformat.cpp
@@ -0,0 +1,111 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <QProcess>
+#include <QString>
+
+#include <util.h>
+
+class TestQmlformat: public QQmlDataTest
+{
+ Q_OBJECT
+
+private Q_SLOTS:
+ void initTestCase() override;
+
+ void testFormat();
+ void testFormatNoSort();
+
+private:
+ QString readTestFile(const QString &path);
+ QString runQmlformat(const QString &fileToFormat, bool sortImports, bool shouldSucceed);
+
+ QString m_qmlformatPath;
+};
+
+void TestQmlformat::initTestCase()
+{
+ QQmlDataTest::initTestCase();
+ m_qmlformatPath = QLibraryInfo::location(QLibraryInfo::BinariesPath) + QLatin1String("/qmlformat");
+#ifdef Q_OS_WIN
+ m_qmlformatPath += QLatin1String(".exe");
+#endif
+ if (!QFileInfo(m_qmlformatPath).exists()) {
+ QString message = QStringLiteral("qmlformat executable not found (looked for %0)").arg(m_qmlformatPath);
+ QFAIL(qPrintable(message));
+ }
+}
+
+QString TestQmlformat::readTestFile(const QString &path)
+{
+ QFile file(testFile(path));
+
+ if (!file.open(QIODevice::ReadOnly))
+ return "";
+
+ return QString::fromUtf8(file.readAll());
+}
+
+void TestQmlformat::testFormat()
+{
+ QCOMPARE(runQmlformat("Example1.qml", true, true), readTestFile("Example1.formatted.qml"));
+}
+
+void TestQmlformat::testFormatNoSort()
+{
+ QCOMPARE(runQmlformat("Example1.qml", false, true), readTestFile("Example1.formatted.nosort.qml"));
+}
+
+QString TestQmlformat::runQmlformat(const QString &fileToFormat, bool sortImports, bool shouldSucceed)
+{
+ QStringList args;
+ args << testFile(fileToFormat);
+
+ if (!sortImports)
+ args << "-n";
+
+ QString output;
+ auto verify = [&]() {
+ QProcess process;
+ process.start(m_qmlformatPath, args);
+ QVERIFY(process.waitForFinished());
+ QCOMPARE(process.exitStatus(), QProcess::NormalExit);
+ if (shouldSucceed)
+ QCOMPARE(process.exitCode(), 0);
+ else
+ QVERIFY(process.exitCode() != 0);
+ output = process.readAllStandardOutput();
+ };
+ verify();
+
+ return output;
+}
+
+QTEST_MAIN(TestQmlformat)
+#include "tst_qmlformat.moc"
diff --git a/tests/auto/qml/qmllint/data/AttachedProps.qml b/tests/auto/qml/qmllint/data/AttachedProps.qml
new file mode 100644
index 0000000000..01be66f866
--- /dev/null
+++ b/tests/auto/qml/qmllint/data/AttachedProps.qml
@@ -0,0 +1,6 @@
+import QtQml 2.0
+
+QtObject {
+ id: self
+ property var foo: self.Component.completed
+}
diff --git a/tests/auto/qml/qmllint/data/UnmatchedSignalHandler.qml b/tests/auto/qml/qmllint/data/AutomatchedSignalHandler.qml
index 064444e182..064444e182 100644
--- a/tests/auto/qml/qmllint/data/UnmatchedSignalHandler.qml
+++ b/tests/auto/qml/qmllint/data/AutomatchedSignalHandler.qml
diff --git a/tests/auto/qml/qmllint/data/Methods.js b/tests/auto/qml/qmllint/data/Methods.js
new file mode 100644
index 0000000000..52ab857e38
--- /dev/null
+++ b/tests/auto/qml/qmllint/data/Methods.js
@@ -0,0 +1,3 @@
+function foo() {
+ return "ttt"
+}
diff --git a/tests/auto/qml/qmllint/data/badAlias.qml b/tests/auto/qml/qmllint/data/badAlias.qml
new file mode 100644
index 0000000000..2dd7d1a7e0
--- /dev/null
+++ b/tests/auto/qml/qmllint/data/badAlias.qml
@@ -0,0 +1,5 @@
+import QtQml 2.0
+
+QtObject {
+ property alias wrong: nowhere
+}
diff --git a/tests/auto/qml/qmllint/data/badAliasProperty.qml b/tests/auto/qml/qmllint/data/badAliasProperty.qml
new file mode 100644
index 0000000000..9483c52cd0
--- /dev/null
+++ b/tests/auto/qml/qmllint/data/badAliasProperty.qml
@@ -0,0 +1,6 @@
+import QtQml 2.0
+
+QtObject {
+ id: self
+ property alias wrong: self.nowhere
+}
diff --git a/tests/auto/qml/qmllint/data/badParent.qml b/tests/auto/qml/qmllint/data/badParent.qml
new file mode 100644
index 0000000000..f381f059cc
--- /dev/null
+++ b/tests/auto/qml/qmllint/data/badParent.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.0
+
+Item {
+ Item {
+ property int yyy: parent.rrr
+ }
+}
diff --git a/tests/auto/qml/qmllint/data/badTypeAssertion.qml b/tests/auto/qml/qmllint/data/badTypeAssertion.qml
new file mode 100644
index 0000000000..717fc1b1bb
--- /dev/null
+++ b/tests/auto/qml/qmllint/data/badTypeAssertion.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.0
+
+Item {
+ property QtObject foo: Item { x: 4 }
+ property real foox: (foo as Item).rrr
+}
diff --git a/tests/auto/qml/qmllint/data/goodAlias.qml b/tests/auto/qml/qmllint/data/goodAlias.qml
new file mode 100644
index 0000000000..d2fa4485ec
--- /dev/null
+++ b/tests/auto/qml/qmllint/data/goodAlias.qml
@@ -0,0 +1,12 @@
+import QtQuick 2.0
+
+Item {
+ id: self
+
+ QtObject {
+ id: inner
+ }
+
+ property alias innerObj: inner
+ property alias name: self.objectName
+}
diff --git a/tests/auto/qml/qmllint/data/goodParent.qml b/tests/auto/qml/qmllint/data/goodParent.qml
new file mode 100644
index 0000000000..413337713a
--- /dev/null
+++ b/tests/auto/qml/qmllint/data/goodParent.qml
@@ -0,0 +1,8 @@
+import QtQuick 2.0
+
+Item {
+ property int rrr: 5
+ Item {
+ property int yyy: parent.rrr
+ }
+}
diff --git a/tests/auto/qml/qmllint/data/goodTypeAssertion.qml b/tests/auto/qml/qmllint/data/goodTypeAssertion.qml
new file mode 100644
index 0000000000..6f5f52eb6b
--- /dev/null
+++ b/tests/auto/qml/qmllint/data/goodTypeAssertion.qml
@@ -0,0 +1,6 @@
+import QtQuick 2.0
+
+Item {
+ property QtObject foo: Item { x: 4 }
+ property real foox: (foo as Item).x
+}
diff --git a/tests/auto/qml/qmllint/data/javascriptMethods.qml b/tests/auto/qml/qmllint/data/javascriptMethods.qml
new file mode 100644
index 0000000000..62ddcfda60
--- /dev/null
+++ b/tests/auto/qml/qmllint/data/javascriptMethods.qml
@@ -0,0 +1,6 @@
+import QtQml 2.0
+import "Methods.js" as Methods
+
+QtObject {
+ objectName: Methods.foo()
+}
diff --git a/tests/auto/qml/qmllint/data/memberNotFound.qml b/tests/auto/qml/qmllint/data/memberNotFound.qml
new file mode 100644
index 0000000000..da2e353227
--- /dev/null
+++ b/tests/auto/qml/qmllint/data/memberNotFound.qml
@@ -0,0 +1,7 @@
+import QtQml 2.0
+
+QtObject {
+ id: self
+ property string n: self.objectName
+ property string not: self.foo
+}
diff --git a/tests/auto/qml/qmllint/data/parentIsComponent.qml b/tests/auto/qml/qmllint/data/parentIsComponent.qml
new file mode 100644
index 0000000000..a74bf9e4e8
--- /dev/null
+++ b/tests/auto/qml/qmllint/data/parentIsComponent.qml
@@ -0,0 +1,13 @@
+import QtQuick 2.0
+
+Item {
+ Component {
+ id: foo
+ Item {
+ property real yyy: parent.progress
+ Component.onCompleted: console.log(yyy)
+ }
+ }
+
+ property var stuff: foo.createObject()
+}
diff --git a/tests/auto/qml/qmllint/data/spuriousParentWarning.qml b/tests/auto/qml/qmllint/data/unknownElement.qml
index 1323593031..1323593031 100644
--- a/tests/auto/qml/qmllint/data/spuriousParentWarning.qml
+++ b/tests/auto/qml/qmllint/data/unknownElement.qml
diff --git a/tests/auto/qml/qmllint/data/unknownJavascriptMethod.qml b/tests/auto/qml/qmllint/data/unknownJavascriptMethod.qml
new file mode 100644
index 0000000000..2718e07c60
--- /dev/null
+++ b/tests/auto/qml/qmllint/data/unknownJavascriptMethod.qml
@@ -0,0 +1,6 @@
+import QtQml 2.0
+import "Methods.js" as Methods
+
+QtObject {
+ objectName: Methods.foo2()
+}
diff --git a/tests/auto/qml/qmllint/tst_qmllint.cpp b/tests/auto/qml/qmllint/tst_qmllint.cpp
index e3c297fa0f..1cd9f8b0d1 100644
--- a/tests/auto/qml/qmllint/tst_qmllint.cpp
+++ b/tests/auto/qml/qmllint/tst_qmllint.cpp
@@ -48,7 +48,7 @@ private Q_SLOTS:
void dirtyQmlCode_data();
void dirtyQmlCode();
- void testUnqualifiedNoSpuriousParentWarning();
+ void testUnknownCausesFail();
private:
QString runQmllint(const QString &fileToLint, bool shouldSucceed);
@@ -107,9 +107,9 @@ void TestQmllint::testUnqualified_data()
QTest::newRow("NonSpuriousParent") << QStringLiteral("nonSpuriousParentWarning.qml") << QStringLiteral("property int x: <id>.parent.x") << 6 << 25;
}
-void TestQmllint::testUnqualifiedNoSpuriousParentWarning()
+void TestQmllint::testUnknownCausesFail()
{
- const QString unknownNotFound = runQmllint("spuriousParentWarning.qml", true);
+ const QString unknownNotFound = runQmllint("unknownElement.qml", false);
QVERIFY(unknownNotFound.contains(
QStringLiteral("warning: Unknown was not found. Did you add all import paths?")));
}
@@ -128,10 +128,38 @@ void TestQmllint::dirtyQmlCode_data()
<< QStringLiteral("failure1.js")
<< QStringLiteral("failure1.js:4 : Expected token `;'")
<< QString();
- QTest::newRow("UnmatchedSignalHandler")
- << QStringLiteral("UnmatchedSignalHandler.qml")
- << QString("Warning: no matching signal found for handler \"onClicked\" at 12:13")
- << QStringLiteral("onMouseXChanged");
+ QTest::newRow("AutomatchedSignalHandler")
+ << QStringLiteral("AutomatchedSignalHandler.qml")
+ << QString("Warning: unqualified access at 12:36")
+ << QStringLiteral("no matching signal found");
+ QTest::newRow("MemberNotFound")
+ << QStringLiteral("memberNotFound.qml")
+ << QString("Warning: Property \"foo\" not found on type \"QtObject\" at 6:31")
+ << QString();
+ QTest::newRow("UnknownJavascriptMethd")
+ << QStringLiteral("unknownJavascriptMethod.qml")
+ << QString("Warning: Property \"foo2\" not found on type \"Methods\" at 5:25")
+ << QString();
+ QTest::newRow("badAlias")
+ << QStringLiteral("badAlias.qml")
+ << QString("Warning: unqualified access at 4:27")
+ << QString();
+ QTest::newRow("badAliasProperty")
+ << QStringLiteral("badAliasProperty.qml")
+ << QString("Warning: Property \"nowhere\" not found on type \"QtObject\" at 5:32")
+ << QString();
+ QTest::newRow("badParent")
+ << QStringLiteral("badParent.qml")
+ << QString("Warning: Property \"rrr\" not found on type \"Item\" at 5:34")
+ << QString();
+ QTest::newRow("parentIsComponent")
+ << QStringLiteral("parentIsComponent.qml")
+ << QString("Warning: Property \"progress\" not found on type \"QQuickItem\" at 7:39")
+ << QString();
+ QTest::newRow("badTypeAssertion")
+ << QStringLiteral("badTypeAssertion.qml")
+ << QString("Warning: Property \"rrr\" not found on type \"Item\" at 5:39")
+ << QString();
}
void TestQmllint::dirtyQmlCode()
@@ -159,6 +187,11 @@ void TestQmllint::cleanQmlCode_data()
QTest::newRow("qmldirAndQmltypes") << QStringLiteral("qmldirAndQmltypes.qml");
QTest::newRow("forLoop") << QStringLiteral("forLoop.qml");
QTest::newRow("esmodule") << QStringLiteral("esmodule.mjs");
+ QTest::newRow("methodsInJavascript") << QStringLiteral("javascriptMethods.qml");
+ QTest::newRow("goodAlias") << QStringLiteral("goodAlias.qml");
+ QTest::newRow("goodParent") << QStringLiteral("goodParent.qml");
+ QTest::newRow("goodTypeAssertion") << QStringLiteral("goodTypeAssertion.qml");
+ QTest::newRow("AttachedProps") << QStringLiteral("AttachedProps.qml");
}
void TestQmllint::cleanQmlCode()
diff --git a/tests/auto/qml/qmlmin/qmlmin.pro b/tests/auto/qml/qmlmin/qmlmin.pro
deleted file mode 100644
index 93e5caabcf..0000000000
--- a/tests/auto/qml/qmlmin/qmlmin.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-CONFIG += testcase
-TARGET = tst_qmlmin
-QT += qml testlib gui-private
-macx:CONFIG -= app_bundle
-
-SOURCES += tst_qmlmin.cpp
-DEFINES += SRCDIR=\\\"$$PWD\\\"
-
-# Boot2qt is cross compiled but it has sources available
-!boot2qt {
- cross_compile: DEFINES += QTEST_CROSS_COMPILED
-}
diff --git a/tests/auto/qml/qmlmin/tst_qmlmin.cpp b/tests/auto/qml/qmlmin/tst_qmlmin.cpp
deleted file mode 100644
index e7498a8583..0000000000
--- a/tests/auto/qml/qmlmin/tst_qmlmin.cpp
+++ /dev/null
@@ -1,225 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-#include <QLibraryInfo>
-#include <QDir>
-#if QT_CONFIG(process)
-#include <QProcess>
-#endif
-#include <QDebug>
-#include <QQmlError>
-#include <cstdlib>
-
-class tst_qmlmin : public QObject
-{
- Q_OBJECT
-public:
- tst_qmlmin();
-
-private slots:
- void initTestCase();
-#if QT_CONFIG(process) && !defined(QTEST_CROSS_COMPILED) // sources not available when cross compiled
- void qmlMinify_data();
- void qmlMinify();
-#endif
-
-private:
- QString qmlminPath;
- QStringList excludedDirs;
- QStringList invalidFiles;
-
- QStringList findFiles(const QDir &);
- bool isInvalidFile(const QFileInfo &fileName) const;
-};
-
-tst_qmlmin::tst_qmlmin()
-{
-}
-
-void tst_qmlmin::initTestCase()
-{
-#if QT_CONFIG(process) && !defined(QTEST_CROSS_COMPILED) // sources not available when cross compiled
- qmlminPath = QLibraryInfo::location(QLibraryInfo::BinariesPath) + QLatin1String("/qmlmin");
-#ifdef Q_OS_WIN
- qmlminPath += QLatin1String(".exe");
-#endif
- if (!QFileInfo(qmlminPath).exists()) {
- QString message = QString::fromLatin1("qmlmin executable not found (looked for %0)")
- .arg(qmlminPath);
- QFAIL(qPrintable(message));
- }
-
- // Add directories you want excluded here
-
- // These snippets are not expected to run on their own.
- excludedDirs << "doc/src/snippets/qml/visualdatamodel_rootindex";
- excludedDirs << "doc/src/snippets/qml/qtbinding";
- excludedDirs << "doc/src/snippets/qml/imports";
- excludedDirs << "doc/src/snippets/qtquick1/visualdatamodel_rootindex";
- excludedDirs << "doc/src/snippets/qtquick1/qtbinding";
- excludedDirs << "doc/src/snippets/qtquick1/imports";
- excludedDirs << "tests/manual/v4";
- excludedDirs << "tests/auto/qml/ecmascripttests";
- excludedDirs << "tests/auto/qml/qmllint";
-
- // Add invalid files (i.e. files with syntax errors)
- invalidFiles << "tests/auto/quick/qquickloader/data/InvalidSourceComponent.qml";
- invalidFiles << "tests/auto/qml/qqmllanguage/data/signal.2.qml";
- invalidFiles << "tests/auto/qml/qqmllanguage/data/signal.3.qml";
- invalidFiles << "tests/auto/qml/qqmllanguage/data/signal.5.qml";
- invalidFiles << "tests/auto/qml/qqmllanguage/data/property.4.qml";
- invalidFiles << "tests/auto/qml/qqmllanguage/data/empty.qml";
- invalidFiles << "tests/auto/qml/qqmllanguage/data/missingObject.qml";
- invalidFiles << "tests/auto/qml/qqmllanguage/data/insertedSemicolon.1.qml";
- invalidFiles << "tests/auto/qml/qqmllanguage/data/nonexistantProperty.5.qml";
- invalidFiles << "tests/auto/qml/qqmllanguage/data/invalidRoot.1.qml";
- invalidFiles << "tests/auto/qml/qqmllanguage/data/invalidQmlEnumValue.1.qml";
- invalidFiles << "tests/auto/qml/qqmllanguage/data/invalidQmlEnumValue.2.qml";
- invalidFiles << "tests/auto/qml/qquickfolderlistmodel/data/dummy.qml";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/qtbug_22843.js";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/qtbug_22843.library.js";
- invalidFiles << "tests/auto/qml/qquickworkerscript/data/script_error_onLoad.js";
- invalidFiles << "tests/auto/qml/parserstress/tests/ecma_3/Unicode/regress-352044-02-n.js";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/incrDecrSemicolon_error1.qml";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFileQualifier.js";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFileQualifier.2.js";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedImport.js";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModule.js";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedFile.js";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleQualifier.js";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleQualifier.2.js";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/jsimportfail/malformedModuleVersion.js";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/jsimportfail/missingFileQualifier.js";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/jsimportfail/missingModuleQualifier.js";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/jsimportfail/missingModuleVersion.js";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/stringParsing_error.1.qml";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/stringParsing_error.2.qml";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/stringParsing_error.3.qml";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/stringParsing_error.4.qml";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/stringParsing_error.5.qml";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/stringParsing_error.6.qml";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/numberParsing_error.1.qml";
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/numberParsing_error.2.qml";
- invalidFiles << "tests/auto/qml/parserstress/tests/ecma_3/FunExpr/fe-001.js";
- invalidFiles << "tests/auto/qml/qjsengine/script/com/trolltech/syntaxerror/__init__.js";
- invalidFiles << "tests/auto/qml/debugger/qqmlpreview/data/broken.qml";
- invalidFiles << "tests/auto/qml/qqmllanguage/data/fuzzed.2.qml";
- invalidFiles << "tests/auto/qml/qqmllanguage/data/fuzzed.3.qml";
- invalidFiles << "tests/auto/qml/qqmllanguage/data/requiredProperties.2.qml";
- invalidFiles << "tests/auto/qml/qqmllanguage/data/requiredProperties.3.qml";
- // generatorFunction.qml is not invalid per se, but the minifier cannot handle yield statements
- invalidFiles << "tests/auto/qml/qqmlecmascript/data/generatorFunction.qml";
-#endif
-}
-
-QStringList tst_qmlmin::findFiles(const QDir &d)
-{
- for (int ii = 0; ii < excludedDirs.count(); ++ii) {
- QString s = excludedDirs.at(ii);
- if (d.absolutePath().endsWith(s))
- return QStringList();
- }
-
- QStringList rv;
-
- QStringList files = d.entryList(QStringList() << QLatin1String("*.qml") << QLatin1String("*.js"),
- QDir::Files);
- foreach (const QString &file, files) {
- rv << d.absoluteFilePath(file);
- }
-
- QStringList dirs = d.entryList(QDir::Dirs | QDir::NoDotAndDotDot |
- QDir::NoSymLinks);
- foreach (const QString &dir, dirs) {
- QDir sub = d;
- sub.cd(dir);
- rv << findFiles(sub);
- }
-
- return rv;
-}
-
-bool tst_qmlmin::isInvalidFile(const QFileInfo &fileName) const
-{
- foreach (const QString &invalidFile, invalidFiles) {
- if (fileName.absoluteFilePath().endsWith(invalidFile))
- return true;
- }
- return false;
-}
-
-/*
-This test runs all the examples in the Qt QML UI source tree and ensures
-that they start and exit cleanly.
-
-Examples are any .qml files under the examples/ directory that start
-with a lower case letter.
-*/
-
-#if QT_CONFIG(process) && !defined(QTEST_CROSS_COMPILED) // sources not available when cross compiled
-void tst_qmlmin::qmlMinify_data()
-{
- QTest::addColumn<QString>("file");
-
- QString examples = QLatin1String(SRCDIR) + "/../../../../examples/";
- QString tests = QLatin1String(SRCDIR) + "/../../../../tests/";
-
- QStringList files;
- files << findFiles(QDir(examples));
- files << findFiles(QDir(tests));
-
- foreach (const QString &file, files)
- QTest::newRow(qPrintable(file)) << file;
-}
-#endif
-
-#if QT_CONFIG(process) && !defined(QTEST_CROSS_COMPILED) // sources not available when cross compiled
-void tst_qmlmin::qmlMinify()
-{
- QFETCH(QString, file);
-
- QProcess qmlminify;
-
- // Restrict line width to 100 characters
- qmlminify.start(qmlminPath, QStringList() << QLatin1String("--verify-only") << QLatin1String("-w100") << file);
- qmlminify.waitForFinished();
-
- QCOMPARE(qmlminify.error(), QProcess::UnknownError);
- QCOMPARE(qmlminify.exitStatus(), QProcess::NormalExit);
-
- if (isInvalidFile(file))
- QCOMPARE(qmlminify.exitCode(), EXIT_FAILURE); // cannot minify files with syntax errors
- else
- QCOMPARE(qmlminify.exitCode(), 0);
-}
-#endif
-
-QTEST_MAIN(tst_qmlmin)
-
-#include "tst_qmlmin.moc"
diff --git a/tests/auto/qml/qqmlapplicationengine/data/invalid.qml b/tests/auto/qml/qqmlapplicationengine/data/invalid.qml
new file mode 100644
index 0000000000..5939a69a7a
--- /dev/null
+++ b/tests/auto/qml/qqmlapplicationengine/data/invalid.qml
@@ -0,0 +1,5 @@
+import QtQml 2.12
+
+QtObject {
+ JUST_SOME_INVALID_PROPERTY: 0
+}
diff --git a/tests/auto/qml/qqmlapplicationengine/tst_qqmlapplicationengine.cpp b/tests/auto/qml/qqmlapplicationengine/tst_qqmlapplicationengine.cpp
index 0f5eea8b95..5e855efe1a 100644
--- a/tests/auto/qml/qqmlapplicationengine/tst_qqmlapplicationengine.cpp
+++ b/tests/auto/qml/qqmlapplicationengine/tst_qqmlapplicationengine.cpp
@@ -30,6 +30,7 @@
#include <QQmlApplicationEngine>
#include <QScopedPointer>
#include <QSignalSpy>
+#include <QRegularExpression>
#if QT_CONFIG(process)
#include <QProcess>
#endif
@@ -53,6 +54,7 @@ private slots:
void loadTranslation_data();
void loadTranslation();
void setInitialProperties();
+ void failureToLoadTriggersWarningSignal();
private:
QString buildDir;
@@ -293,6 +295,20 @@ void tst_qqmlapplicationengine::setInitialProperties()
}
}
+Q_DECLARE_METATYPE(QList<QQmlError>) // for signalspy below
+
+void tst_qqmlapplicationengine::failureToLoadTriggersWarningSignal()
+{
+ auto url = testFileUrl("invalid.qml");
+ qRegisterMetaType<QList<QQmlError>>();
+ QTest::ignoreMessage(QtMsgType::QtWarningMsg, "QQmlApplicationEngine failed to load component");
+ QTest::ignoreMessage(QtMsgType::QtWarningMsg, QRegularExpression(url.toString() + QLatin1Char('*')));
+ QQmlApplicationEngine test;
+ QSignalSpy warningObserver(&test, &QQmlApplicationEngine::warnings);
+ test.load(url);
+ QTRY_COMPARE(warningObserver.count(), 1);
+}
+
QTEST_MAIN(tst_qqmlapplicationengine)
#include "tst_qqmlapplicationengine.moc"
diff --git a/tests/auto/qml/qqmldirparser/tst_qqmldirparser.cpp b/tests/auto/qml/qqmldirparser/tst_qqmldirparser.cpp
index 1e690e38dd..bc4ba9437c 100644
--- a/tests/auto/qml/qqmldirparser/tst_qqmldirparser.cpp
+++ b/tests/auto/qml/qqmldirparser/tst_qqmldirparser.cpp
@@ -375,6 +375,9 @@ void tst_qqmldirparser::parse()
QCOMPARE(toStringList(p.dependencies()), dependencies);
QCOMPARE(p.designerSupported(), designerSupported);
+
+ p.clear();
+ QVERIFY(p.typeNamespace().isEmpty());
}
QTEST_MAIN(tst_qqmldirparser)
diff --git a/tests/auto/qml/qqmlecmascript/data/hugeStack.qml b/tests/auto/qml/qqmlecmascript/data/hugeStack.qml
new file mode 100644
index 0000000000..5465bcaf18
--- /dev/null
+++ b/tests/auto/qml/qqmlecmascript/data/hugeStack.qml
@@ -0,0 +1,33065 @@
+import QtQml 2.14
+
+QtObject {
+ property var longList : [
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo"),
+ Qt.resolvedUrl("foo")
+ ]
+}
diff --git a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp
index a002658fee..a05933d071 100644
--- a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp
+++ b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp
@@ -379,6 +379,9 @@ private slots:
void singletonTypeWrapperLookup();
void getThisObject();
void semicolonAfterProperty();
+ void hugeStack();
+
+ void gcCrashRegressionTest();
private:
// static void propertyVarWeakRefCallback(v8::Persistent<v8::Value> object, void* parameter);
@@ -9200,6 +9203,65 @@ void tst_qqmlecmascript::semicolonAfterProperty()
QVERIFY(!test.isNull());
}
+void tst_qqmlecmascript::hugeStack()
+{
+ QQmlEngine engine;
+ QQmlComponent component(&engine, testFileUrl("hugeStack.qml"));
+ QVERIFY(component.isReady());
+ QScopedPointer<QObject> test(component.create());
+ QVERIFY(!test.isNull());
+
+ QVariant huge = test->property("longList");
+ QCOMPARE(qvariant_cast<QJSValue>(huge).property(QLatin1String("length")).toInt(), 33059);
+}
+
+void tst_qqmlecmascript::gcCrashRegressionTest()
+{
+ const QString qmljs = QLibraryInfo::location(QLibraryInfo::BinariesPath) + "/qmljs";
+ if (!QFile::exists(qmljs)) {
+ QSKIP("Tets requires qmljs");
+ }
+ QProcess process;
+
+ QTemporaryFile infile;
+ QVERIFY(infile.open());
+ infile.write(R"js(
+ function i_want_to_break_free() {
+ var n = 400;
+ var m = 10;
+ var regex = new RegExp("(ab)".repeat(n), "g"); // g flag to trigger the vulnerable path
+ var part = "ab".repeat(n); // matches have to be at least size 2 to prevent interning
+ var s = (part + "|").repeat(m);
+ var cnt = 0;
+ var ary = [];
+ s.replace(regex, function() {
+ for (var i = 1; i < arguments.length-2; ++i) {
+ if (typeof arguments[i] !== 'string') {
+ i_am_free = arguments[i];
+ throw "success";
+ }
+ ary[cnt++] = arguments[i]; // root everything to force GC
+ }
+ return "x";
+ });
+ }
+ try { i_want_to_break_free(); } catch (e) {console.log("hi") }
+ console.log(typeof(i_am_free)); // will print "object"
+ )js");
+ infile.close();
+
+ QProcessEnvironment environment = QProcessEnvironment::systemEnvironment();
+ environment.insert("QV4_GC_MAX_STACK_SIZE", "32768");
+
+ process.setProcessEnvironment(environment);
+ process.start(qmljs, QStringList({infile.fileName()}));
+ QVERIFY(process.waitForStarted());
+ const qint64 pid = process.processId();
+ QVERIFY(pid != 0);
+ QVERIFY(process.waitForFinished());
+ QCOMPARE(process.exitCode(), 0);
+}
+
QTEST_MAIN(tst_qqmlecmascript)
#include "tst_qqmlecmascript.moc"
diff --git a/tests/auto/qml/qqmlengine/data/evilSingletonInstantiation.qml b/tests/auto/qml/qqmlengine/data/evilSingletonInstantiation.qml
new file mode 100644
index 0000000000..757b0c90bb
--- /dev/null
+++ b/tests/auto/qml/qqmlengine/data/evilSingletonInstantiation.qml
@@ -0,0 +1,6 @@
+import QtQml 2.12
+import foo.foo 1.0
+
+QtObject {
+ objectName: Singleton.objectName
+}
diff --git a/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp b/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp
index 2a3b945509..d782df3e7f 100644
--- a/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp
+++ b/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp
@@ -83,6 +83,7 @@ private slots:
void singletonInstance();
void aggressiveGc();
void cachedGetterLookup_qtbug_75335();
+ void createComponentOnSingletonDestruction();
public slots:
QObject *createAQObjectForOwnershipTest ()
@@ -1144,6 +1145,36 @@ void tst_qqmlengine::cachedGetterLookup_qtbug_75335()
QVERIFY(object != nullptr);
}
+class EvilSingleton : public QObject
+{
+ Q_OBJECT
+public:
+ QPointer<QQmlEngine> m_engine;
+ EvilSingleton(QQmlEngine *engine) : m_engine(engine) {
+ connect(this, &QObject::destroyed, this, [this]() {
+ QQmlComponent component(m_engine);
+ component.setData("import QtQml 2.0\nQtObject {}", QUrl("file://Stuff.qml"));
+ QVERIFY(component.isReady());
+ QScopedPointer<QObject> obj(component.create());
+ QVERIFY(obj);
+ });
+ }
+};
+
+void tst_qqmlengine::createComponentOnSingletonDestruction()
+{
+ qmlRegisterSingletonType<EvilSingleton>("foo.foo", 1, 0, "Singleton",
+ [](QQmlEngine *engine, QJSEngine *) {
+ return new EvilSingleton(engine);
+ });
+
+ QQmlEngine engine;
+ QQmlComponent component(&engine, testFileUrl("evilSingletonInstantiation.qml"));
+ QVERIFY(component.isReady());
+ QScopedPointer<QObject> obj(component.create());
+ QVERIFY(obj);
+}
+
QTEST_MAIN(tst_qqmlengine)
#include "tst_qqmlengine.moc"
diff --git a/tests/auto/qml/qqmllanguage/data/listContainingDeleted.qml b/tests/auto/qml/qqmllanguage/data/listContainingDeleted.qml
new file mode 100644
index 0000000000..efd273ddc6
--- /dev/null
+++ b/tests/auto/qml/qqmllanguage/data/listContainingDeleted.qml
@@ -0,0 +1,36 @@
+import QtQuick 2.12
+
+Item {
+ width: 1024
+ height: 800
+
+ property Component a: Component {
+ id: a
+ Item {
+ property list<QtObject> myList: [
+ QtObject {
+ property bool enabled: true
+ }
+ ]
+ }
+ }
+ Component {
+ id: b
+ Item {
+ property list<QtObject> myList
+
+ function test() {
+ for (var i = 0; i < myList.length; ++i)
+ console.log(i, "==", myList[i].enabled)
+ }
+ }
+ }
+ property Item instance
+ function doAssign(o) {
+ instance = b.createObject(null, {myList: o.myList})
+ }
+ function use() {
+ instance.test()
+ }
+
+}
diff --git a/tests/auto/qml/qqmllanguage/data/nullishCoalescing_LHS_And.errors.txt b/tests/auto/qml/qqmllanguage/data/nullishCoalescing_LHS_And.errors.txt
new file mode 100644
index 0000000000..d4f3eb3ecf
--- /dev/null
+++ b/tests/auto/qml/qqmllanguage/data/nullishCoalescing_LHS_And.errors.txt
@@ -0,0 +1 @@
+6:29:Left-hand side may not contain || or &&
diff --git a/tests/auto/qml/qqmllanguage/data/nullishCoalescing_LHS_And.qml b/tests/auto/qml/qqmllanguage/data/nullishCoalescing_LHS_And.qml
new file mode 100644
index 0000000000..ce6aa9a532
--- /dev/null
+++ b/tests/auto/qml/qqmllanguage/data/nullishCoalescing_LHS_And.qml
@@ -0,0 +1,8 @@
+import QtQuick 2.0
+
+Component {
+ Component.onCompleted: {
+ // Should cause an error since having either || or && on any side of the coalescing operator is banned by the specification
+ var bad_lhs_and = 3 && 4 ?? 0;
+ }
+}
diff --git a/tests/auto/qml/qqmllanguage/data/nullishCoalescing_LHS_Or.errors.txt b/tests/auto/qml/qqmllanguage/data/nullishCoalescing_LHS_Or.errors.txt
new file mode 100644
index 0000000000..f2f1719acd
--- /dev/null
+++ b/tests/auto/qml/qqmllanguage/data/nullishCoalescing_LHS_Or.errors.txt
@@ -0,0 +1 @@
+6:28:Left-hand side may not contain || or &&
diff --git a/tests/auto/qml/qqmllanguage/data/nullishCoalescing_LHS_Or.qml b/tests/auto/qml/qqmllanguage/data/nullishCoalescing_LHS_Or.qml
new file mode 100644
index 0000000000..8864524d0d
--- /dev/null
+++ b/tests/auto/qml/qqmllanguage/data/nullishCoalescing_LHS_Or.qml
@@ -0,0 +1,8 @@
+import QtQuick 2.0
+
+Component {
+ Component.onCompleted: {
+ // Should cause an error since having either || or && on any side of the coalescing operator is banned by the specification
+ var bad_lhs_or = 3 || 4 ?? 0;
+ }
+}
diff --git a/tests/auto/qml/qqmllanguage/data/nullishCoalescing_RHS_And.errors.txt b/tests/auto/qml/qqmllanguage/data/nullishCoalescing_RHS_And.errors.txt
new file mode 100644
index 0000000000..0ff61be687
--- /dev/null
+++ b/tests/auto/qml/qqmllanguage/data/nullishCoalescing_RHS_And.errors.txt
@@ -0,0 +1 @@
+6:34:Right-hand side may not contain || or &&
diff --git a/tests/auto/qml/qqmllanguage/data/nullishCoalescing_RHS_And.qml b/tests/auto/qml/qqmllanguage/data/nullishCoalescing_RHS_And.qml
new file mode 100644
index 0000000000..97898f055a
--- /dev/null
+++ b/tests/auto/qml/qqmllanguage/data/nullishCoalescing_RHS_And.qml
@@ -0,0 +1,8 @@
+import QtQuick 2.0
+
+Component {
+ Component.onCompleted: {
+ // Should cause an error since having either || or && on any side of the coalescing operator is banned by the specification
+ var bad_rhs_and = 0 ?? 3 && 4;
+ }
+}
diff --git a/tests/auto/qml/qqmllanguage/data/nullishCoalescing_RHS_Or.errors.txt b/tests/auto/qml/qqmllanguage/data/nullishCoalescing_RHS_Or.errors.txt
new file mode 100644
index 0000000000..4b2784ac0a
--- /dev/null
+++ b/tests/auto/qml/qqmllanguage/data/nullishCoalescing_RHS_Or.errors.txt
@@ -0,0 +1 @@
+6:33:Right-hand side may not contain || or &&
diff --git a/tests/auto/qml/qqmllanguage/data/nullishCoalescing_RHS_Or.qml b/tests/auto/qml/qqmllanguage/data/nullishCoalescing_RHS_Or.qml
new file mode 100644
index 0000000000..f172755e91
--- /dev/null
+++ b/tests/auto/qml/qqmllanguage/data/nullishCoalescing_RHS_Or.qml
@@ -0,0 +1,8 @@
+import QtQuick 2.0
+
+Component {
+ Component.onCompleted: {
+ // Should cause an error since having either || or && on any side of the coalescing operator is banned by the specification
+ var bad_rhs_or = 0 ?? 3 || 4;
+ }
+}
diff --git a/tests/auto/qml/qqmllanguage/testtypes.cpp b/tests/auto/qml/qqmllanguage/testtypes.cpp
index 462745eb93..0ddb1b1491 100644
--- a/tests/auto/qml/qqmllanguage/testtypes.cpp
+++ b/tests/auto/qml/qqmllanguage/testtypes.cpp
@@ -120,6 +120,7 @@ void registerTypes()
qmlRegisterType<DeferredProperties>("Test", 1, 0, "DeferredProperties");
qmlRegisterTypesAndRevisions<Extended, Foreign, ForeignExtended>("Test", 1);
+ qmlRegisterTypesAndRevisions<BareSingleton>("Test", 1);
}
QVariant myCustomVariantTypeConverter(const QString &data)
diff --git a/tests/auto/qml/qqmllanguage/testtypes.h b/tests/auto/qml/qqmllanguage/testtypes.h
index bfbd3e66f5..a7410e190b 100644
--- a/tests/auto/qml/qqmllanguage/testtypes.h
+++ b/tests/auto/qml/qqmllanguage/testtypes.h
@@ -1455,6 +1455,19 @@ class ForeignExtended
QML_EXTENDED(Extension)
};
+class BareSingleton : public QObject
+{
+ Q_OBJECT
+ QML_SINGLETON
+ QML_ELEMENT
+
+public:
+ BareSingleton(QObject *parent = nullptr) : QObject(parent)
+ {
+ setObjectName("statically registered");
+ }
+};
+
void registerTypes();
#endif // TESTTYPES_H
diff --git a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
index 7fff982cde..7b4662a5cd 100644
--- a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
+++ b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
@@ -309,6 +309,9 @@ private slots:
void selfReference();
void selfReferencingSingleton();
+ void listContainingDeletedObject();
+ void overrideSingleton();
+
private:
QQmlEngine engine;
QStringList defaultImportPathList;
@@ -477,6 +480,11 @@ void tst_qqmllanguage::errors_data()
QTest::newRow("finalOverride") << "finalOverride.qml" << "finalOverride.errors.txt" << false;
QTest::newRow("customParserIdNotAllowed") << "customParserIdNotAllowed.qml" << "customParserIdNotAllowed.errors.txt" << false;
+ QTest::newRow("nullishCoalescing_LHS_Or") << "nullishCoalescing_LHS_Or.qml" << "nullishCoalescing_LHS_Or.errors.txt" << false;
+ QTest::newRow("nullishCoalescing_LHS_And") << "nullishCoalescing_LHS_And.qml" << "nullishCoalescing_LHS_And.errors.txt" << false;
+ QTest::newRow("nullishCoalescing_RHS_Or") << "nullishCoalescing_RHS_Or.qml" << "nullishCoalescing_RHS_Or.errors.txt" << false;
+ QTest::newRow("nullishCoalescing_RHS_And") << "nullishCoalescing_RHS_And.qml" << "nullishCoalescing_RHS_And.errors.txt" << false;
+
QTest::newRow("invalidGroupedProperty.1") << "invalidGroupedProperty.1.qml" << "invalidGroupedProperty.1.errors.txt" << false;
QTest::newRow("invalidGroupedProperty.2") << "invalidGroupedProperty.2.qml" << "invalidGroupedProperty.2.errors.txt" << false;
QTest::newRow("invalidGroupedProperty.3") << "invalidGroupedProperty.3.qml" << "invalidGroupedProperty.3.errors.txt" << false;
@@ -5349,6 +5357,48 @@ void tst_qqmllanguage::selfReferencingSingleton()
QCOMPARE(singletonPointer->property("dummy").toInt(), 42);
}
+void tst_qqmllanguage::listContainingDeletedObject()
+{
+ QQmlEngine engine;
+ auto url = testFileUrl("listContainingDeleted.qml");
+ const QString message = url.toString() + ":24: TypeError: Cannot read property 'enabled' of null";
+ QTest::ignoreMessage(QtMsgType::QtWarningMsg, message.toUtf8().data());
+ QQmlComponent comp(&engine, url);
+ QScopedPointer<QObject> root(comp.create());
+ QVERIFY(root);
+
+ auto cmp = root->property("a").value<QQmlComponent*>();
+ auto o = cmp->create();
+
+ QMetaObject::invokeMethod(root.get(), "doAssign", Q_ARG(QVariant, QVariant::fromValue(o)));
+ delete o;
+ QMetaObject::invokeMethod(root.get(), "use");
+
+}
+
+void tst_qqmllanguage::overrideSingleton()
+{
+ auto check = [](const QString &name) {
+ const QByteArray testQml = "import Test 1.0\n"
+ "import QtQml 2.0\n"
+ "QtObject { objectName: BareSingleton.objectName }";
+ QQmlEngine engine;
+ QQmlComponent component(&engine, nullptr);
+ component.setData(testQml, QUrl());
+ QVERIFY(component.isReady());
+ QScopedPointer<QObject> obj(component.create());
+ QCOMPARE(obj->objectName(), name);
+ };
+
+ check("statically registered");
+
+ BareSingleton singleton;
+ singleton.setObjectName("dynamically registered");
+ qmlRegisterSingletonInstance("Test", 1, 0, "BareSingleton", &singleton);
+
+ check("dynamically registered");
+}
+
QTEST_MAIN(tst_qqmllanguage)
#include "tst_qqmllanguage.moc"
diff --git a/tests/auto/qml/qqmllocale/tst_qqmllocale.cpp b/tests/auto/qml/qqmllocale/tst_qqmllocale.cpp
index a90749208c..c846ee32df 100644
--- a/tests/auto/qml/qqmllocale/tst_qqmllocale.cpp
+++ b/tests/auto/qml/qqmllocale/tst_qqmllocale.cpp
@@ -102,6 +102,7 @@ private slots:
void numberFromLocaleString_data();
void numberFromLocaleString();
void numberConstToLocaleString();
+ void numberOptions();
void stringLocaleCompare_data();
void stringLocaleCompare();
@@ -1157,6 +1158,35 @@ void tst_qqmllocale::numberConstToLocaleString()
QCOMPARE(obj->property("const2").toString(), l.toString(1234., 'f', 2));
}
+void tst_qqmllocale::numberOptions()
+{
+ QQmlEngine engine;
+ QQmlComponent comp(&engine);
+ comp.setData(R"(
+ import QtQml 2.15
+ QtObject {
+ id: root
+ property string formatted
+ property bool caughtException: false
+ Component.onCompleted: () => {
+ const myLocale = Qt.locale("de_DE")
+ myLocale.numberOptions = Locale.OmitGroupSeparator | Locale.RejectTrailingZeroesAfterDot
+ root.formatted = Number(10000).toLocaleString(myLocale, 'f', 4)
+ try {
+ Number.fromLocaleString(myLocale, "1,10");
+ } catch (e) {console.warn(e); root.caughtException = true}
+ }
+ }
+ )", QUrl("testdata"));
+ QTest::ignoreMessage(QtMsgType::QtWarningMsg, "Error: Locale: Number.fromLocaleString(): Invalid format");
+ QScopedPointer<QObject> root {comp.create()};
+ qDebug() << comp.errorString();
+ QVERIFY(root);
+ QCOMPARE(root->property("formatted").toString(), QLatin1String("10000,0000"));
+ QCOMPARE(root->property("caughtException").toBool(), true);
+
+}
+
void tst_qqmllocale::stringLocaleCompare_data()
{
QTest::addColumn<QString>("string1");
diff --git a/tests/auto/qml/qqmlmetatype/tst_qqmlmetatype.cpp b/tests/auto/qml/qqmlmetatype/tst_qqmlmetatype.cpp
index 76185a97e0..72295044a5 100644
--- a/tests/auto/qml/qqmlmetatype/tst_qqmlmetatype.cpp
+++ b/tests/auto/qml/qqmlmetatype/tst_qqmlmetatype.cpp
@@ -307,7 +307,7 @@ void tst_qqmlmetatype::compositeType()
//Loading the test file also loads all composite types it imports
QQmlComponent c(&engine, testFileUrl("testImplicitComposite.qml"));
- QObject* obj = c.create();
+ QScopedPointer<QObject> obj(c.create());
QVERIFY(obj);
QQmlType type = QQmlMetaType::qmlType(QString("ImplicitType"), QString(""), 1, 0);
@@ -324,7 +324,7 @@ void tst_qqmlmetatype::externalEnums()
qmlRegisterSingletonType<ExternalEnums>("x.y.z", 1, 0, "ExternalEnums", ExternalEnums::create);
QQmlComponent c(&engine, testFileUrl("testExternalEnums.qml"));
- QObject *obj = c.create();
+ QScopedPointer<QObject> obj(c.create());
QVERIFY(obj);
QVariant a = obj->property("a");
QCOMPARE(a.type(), QVariant::Int);
@@ -552,7 +552,8 @@ void tst_qqmlmetatype::unregisterAttachedProperties()
QCOMPARE(attachedType.attachedPropertiesType(QQmlEnginePrivate::get(&e)),
attachedType.metaObject());
- QVERIFY(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ QVERIFY(obj);
}
qmlClearTypeRegistrations();
@@ -571,7 +572,8 @@ void tst_qqmlmetatype::unregisterAttachedProperties()
QCOMPARE(attachedType.attachedPropertiesType(QQmlEnginePrivate::get(&e)),
attachedType.metaObject());
- QVERIFY(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ QVERIFY(obj);
}
}
diff --git a/tests/auto/qml/qqmlparser/tst_qqmlparser.cpp b/tests/auto/qml/qqmlparser/tst_qqmlparser.cpp
index 9d8818d01e..76b56bd303 100644
--- a/tests/auto/qml/qqmlparser/tst_qqmlparser.cpp
+++ b/tests/auto/qml/qqmlparser/tst_qqmlparser.cpp
@@ -62,6 +62,9 @@ private slots:
void typeAnnotations();
void disallowedTypeAnnotations_data();
void disallowedTypeAnnotations();
+ void semicolonPartOfExpressionStatement();
+ void typeAssertion_data();
+ void typeAssertion();
private:
QStringList excludedDirs;
@@ -141,6 +144,30 @@ struct TypeAnnotationObserver: public AST::Visitor
}
};
+struct ExpressionStatementObserver: public AST::Visitor
+{
+ int expressionsSeen = 0;
+ bool endsWithSemicolon = true;
+
+ void operator()(AST::Node *node)
+ {
+ AST::Node::accept(node, this);
+ }
+
+ virtual bool visit(AST::ExpressionStatement *statement)
+ {
+ ++expressionsSeen;
+ endsWithSemicolon = endsWithSemicolon
+ && (statement->lastSourceLocation().end() == statement->semicolonToken.end());
+ return true;
+ }
+
+ void throwRecursionDepthError() final
+ {
+ QFAIL("Maximum statement or expression depth exceeded");
+ }
+};
+
}
tst_qqmlparser::tst_qqmlparser()
@@ -438,6 +465,62 @@ void tst_qqmlparser::disallowedTypeAnnotations()
QVERIFY2(parser.errorMessage().startsWith("Type annotations are not permitted "), qPrintable(parser.errorMessage()));
}
+void tst_qqmlparser::semicolonPartOfExpressionStatement()
+{
+ QQmlJS::Engine engine;
+ QQmlJS::Lexer lexer(&engine);
+ lexer.setCode(QLatin1String("A { property int x: 1+1; property int y: 2+2 \n"
+ "tt: {'a': 5, 'b': 6}; ff: {'c': 'rrr'}}"), 1);
+ QQmlJS::Parser parser(&engine);
+ QVERIFY(parser.parse());
+
+ check::ExpressionStatementObserver observer;
+ observer(parser.rootNode());
+
+ QCOMPARE(observer.expressionsSeen, 4);
+ QVERIFY(observer.endsWithSemicolon);
+}
+
+void tst_qqmlparser::typeAssertion_data()
+{
+ QTest::addColumn<QString>("expression");
+ QTest::addRow("as A")
+ << QString::fromLatin1("A { onStuff: (b as A).happen() }");
+ QTest::addRow("as double paren")
+ << QString::fromLatin1("A { onStuff: console.log((12 as double)); }");
+ QTest::addRow("as double noparen")
+ << QString::fromLatin1("A { onStuff: console.log(12 as double); }");
+ QTest::addRow("property as double")
+ << QString::fromLatin1("A { prop: (12 as double); }");
+ QTest::addRow("property noparen as double")
+ << QString::fromLatin1("A { prop: 12 as double; }");
+
+ // rabbits cannot be discerned from types on a syntactical level.
+ // We could detect this on a semantical level, once we implement type assertions there.
+
+ QTest::addRow("as rabbit")
+ << QString::fromLatin1("A { onStuff: (b as rabbit).happen() }");
+ QTest::addRow("as rabbit paren")
+ << QString::fromLatin1("A { onStuff: console.log((12 as rabbit)); }");
+ QTest::addRow("as rabbit noparen")
+ << QString::fromLatin1("A { onStuff: console.log(12 as rabbit); }");
+ QTest::addRow("property as rabbit")
+ << QString::fromLatin1("A { prop: (12 as rabbit); }");
+ QTest::addRow("property noparen as rabbit")
+ << QString::fromLatin1("A { prop: 12 as rabbit; }");
+}
+
+void tst_qqmlparser::typeAssertion()
+{
+ QFETCH(QString, expression);
+
+ QQmlJS::Engine engine;
+ QQmlJS::Lexer lexer(&engine);
+ lexer.setCode(expression, 1);
+ QQmlJS::Parser parser(&engine);
+ QVERIFY(parser.parse());
+}
+
QTEST_MAIN(tst_qqmlparser)
#include "tst_qqmlparser.moc"
diff --git a/tests/auto/qml/qqmlpropertycache/tst_qqmlpropertycache.cpp b/tests/auto/qml/qqmlpropertycache/tst_qqmlpropertycache.cpp
index c9e92cd3c9..c79fdc57b4 100644
--- a/tests/auto/qml/qqmlpropertycache/tst_qqmlpropertycache.cpp
+++ b/tests/auto/qml/qqmlpropertycache/tst_qqmlpropertycache.cpp
@@ -114,7 +114,8 @@ void tst_qqmlpropertycache::properties()
DerivedObject object;
const QMetaObject *metaObject = object.metaObject();
- QQmlRefPointer<QQmlPropertyCache> cache(new QQmlPropertyCache(metaObject));
+ QQmlRefPointer<QQmlPropertyCache> cache(new QQmlPropertyCache(metaObject),
+ QQmlRefPointer<QQmlPropertyCache>::Adopt);
QQmlPropertyData *data;
QVERIFY((data = cacheProperty(cache, "propertyA")));
@@ -136,8 +137,11 @@ void tst_qqmlpropertycache::propertiesDerived()
DerivedObject object;
const QMetaObject *metaObject = object.metaObject();
- QQmlRefPointer<QQmlPropertyCache> parentCache(new QQmlPropertyCache(&BaseObject::staticMetaObject));
- QQmlRefPointer<QQmlPropertyCache> cache(parentCache->copyAndAppend(object.metaObject()));
+ QQmlRefPointer<QQmlPropertyCache> parentCache(
+ new QQmlPropertyCache(&BaseObject::staticMetaObject),
+ QQmlRefPointer<QQmlPropertyCache>::Adopt);
+ QQmlRefPointer<QQmlPropertyCache> cache(parentCache->copyAndAppend(object.metaObject()),
+ QQmlRefPointer<QQmlPropertyCache>::Adopt);
QQmlPropertyData *data;
QVERIFY((data = cacheProperty(cache, "propertyA")));
@@ -161,8 +165,10 @@ void tst_qqmlpropertycache::revisionedProperties()
DerivedObject object;
const QMetaObject *metaObject = object.metaObject();
- QQmlRefPointer<QQmlPropertyCache> cacheWithoutVersion(new QQmlPropertyCache(metaObject));
- QQmlRefPointer<QQmlPropertyCache> cacheWithVersion(new QQmlPropertyCache(metaObject, 1));
+ QQmlRefPointer<QQmlPropertyCache> cacheWithoutVersion(new QQmlPropertyCache(metaObject),
+ QQmlRefPointer<QQmlPropertyCache>::Adopt);
+ QQmlRefPointer<QQmlPropertyCache> cacheWithVersion(new QQmlPropertyCache(metaObject, 1),
+ QQmlRefPointer<QQmlPropertyCache>::Adopt);
QQmlPropertyData *data;
QVERIFY((data = cacheProperty(cacheWithoutVersion, "propertyE")));
@@ -176,7 +182,8 @@ void tst_qqmlpropertycache::methods()
DerivedObject object;
const QMetaObject *metaObject = object.metaObject();
- QQmlRefPointer<QQmlPropertyCache> cache(new QQmlPropertyCache(metaObject));
+ QQmlRefPointer<QQmlPropertyCache> cache(new QQmlPropertyCache(metaObject),
+ QQmlRefPointer<QQmlPropertyCache>::Adopt);
QQmlPropertyData *data;
QVERIFY((data = cacheProperty(cache, "slotA")));
@@ -210,8 +217,11 @@ void tst_qqmlpropertycache::methodsDerived()
DerivedObject object;
const QMetaObject *metaObject = object.metaObject();
- QQmlRefPointer<QQmlPropertyCache> parentCache(new QQmlPropertyCache(&BaseObject::staticMetaObject));
- QQmlRefPointer<QQmlPropertyCache> cache(parentCache->copyAndAppend(object.metaObject()));
+ QQmlRefPointer<QQmlPropertyCache> parentCache(
+ new QQmlPropertyCache(&BaseObject::staticMetaObject),
+ QQmlRefPointer<QQmlPropertyCache>::Adopt);
+ QQmlRefPointer<QQmlPropertyCache> cache(parentCache->copyAndAppend(object.metaObject()),
+ QQmlRefPointer<QQmlPropertyCache>::Adopt);
QQmlPropertyData *data;
QVERIFY((data = cacheProperty(cache, "slotA")));
@@ -245,7 +255,8 @@ void tst_qqmlpropertycache::signalHandlers()
DerivedObject object;
const QMetaObject *metaObject = object.metaObject();
- QQmlRefPointer<QQmlPropertyCache> cache(new QQmlPropertyCache(metaObject));
+ QQmlRefPointer<QQmlPropertyCache> cache(new QQmlPropertyCache(metaObject),
+ QQmlRefPointer<QQmlPropertyCache>::Adopt);
QQmlPropertyData *data;
QVERIFY((data = cacheProperty(cache, "onSignalA")));
@@ -273,8 +284,11 @@ void tst_qqmlpropertycache::signalHandlersDerived()
DerivedObject object;
const QMetaObject *metaObject = object.metaObject();
- QQmlRefPointer<QQmlPropertyCache> parentCache(new QQmlPropertyCache(&BaseObject::staticMetaObject));
- QQmlRefPointer<QQmlPropertyCache> cache(parentCache->copyAndAppend(object.metaObject()));
+ QQmlRefPointer<QQmlPropertyCache> parentCache(
+ new QQmlPropertyCache(&BaseObject::staticMetaObject),
+ QQmlRefPointer<QQmlPropertyCache>::Adopt);
+ QQmlRefPointer<QQmlPropertyCache> cache(parentCache->copyAndAppend(object.metaObject()),
+ QQmlRefPointer<QQmlPropertyCache>::Adopt);
QQmlPropertyData *data;
QVERIFY((data = cacheProperty(cache, "onSignalA")));
@@ -478,7 +492,9 @@ class TestClassWithClassInfo : public QObject
int(sizeof(arr) / sizeof(arr[0]))
#define TEST_CLASS(Class) \
- QTest::newRow(#Class) << &Class::staticMetaObject << ARRAY_SIZE(qt_meta_data_##Class) << ARRAY_SIZE(qt_meta_stringdata_##Class.data)
+ QTest::newRow(#Class) \
+ << &Class::staticMetaObject << ARRAY_SIZE(qt_meta_data_##Class) \
+ << int(sizeof(qt_meta_stringdata_##Class.offsetsAndSize) / (sizeof(uint) * 2))
Q_DECLARE_METATYPE(const QMetaObject*);
diff --git a/tests/auto/qml/qqmlqt/tst_qqmlqt.cpp b/tests/auto/qml/qqmlqt/tst_qqmlqt.cpp
index 15ef31464b..8fa18c9860 100644
--- a/tests/auto/qml/qqmlqt/tst_qqmlqt.cpp
+++ b/tests/auto/qml/qqmlqt/tst_qqmlqt.cpp
@@ -167,15 +167,13 @@ void tst_qqmlqt::initTestCase()
void tst_qqmlqt::enums()
{
QQmlComponent component(&engine, testFileUrl("enums.qml"));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(object->property("test1").toInt(), (int)Qt::Key_Escape);
QCOMPARE(object->property("test2").toInt(), (int)Qt::DescendingOrder);
QCOMPARE(object->property("test3").toInt(), (int)Qt::ElideMiddle);
QCOMPARE(object->property("test4").toInt(), (int)Qt::AlignRight);
-
- delete object;
}
void tst_qqmlqt::rgba()
@@ -187,7 +185,7 @@ void tst_qqmlqt::rgba()
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
@@ -197,8 +195,6 @@ void tst_qqmlqt::rgba()
QCOMPARE(qvariant_cast<QColor>(object->property("test4")), QColor());
QCOMPARE(qvariant_cast<QColor>(object->property("test5")), QColor::fromRgbF(1, 1, 1, 1));
QCOMPARE(qvariant_cast<QColor>(object->property("test6")), QColor::fromRgbF(0, 0, 0, 0));
-
- delete object;
}
void tst_qqmlqt::hsla()
@@ -210,7 +206,7 @@ void tst_qqmlqt::hsla()
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(qvariant_cast<QColor>(object->property("test1")), QColor::fromHslF(1, 0, 0, 0.8));
@@ -219,8 +215,6 @@ void tst_qqmlqt::hsla()
QCOMPARE(qvariant_cast<QColor>(object->property("test4")), QColor());
QCOMPARE(qvariant_cast<QColor>(object->property("test5")), QColor::fromHslF(1, 1, 1, 1));
QCOMPARE(qvariant_cast<QColor>(object->property("test6")), QColor::fromHslF(0, 0, 0, 0));
-
- delete object;
}
void tst_qqmlqt::hsva()
@@ -232,7 +226,7 @@ void tst_qqmlqt::hsva()
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(qvariant_cast<QColor>(object->property("test1")), QColor::fromHsvF(1, 0, 0, 0.8));
@@ -241,8 +235,6 @@ void tst_qqmlqt::hsva()
QCOMPARE(qvariant_cast<QColor>(object->property("test4")), QColor());
QCOMPARE(qvariant_cast<QColor>(object->property("test5")), QColor::fromHsvF(1, 1, 1, 1));
QCOMPARE(qvariant_cast<QColor>(object->property("test6")), QColor::fromHsvF(0, 0, 0, 0));
-
- delete object;
}
void tst_qqmlqt::colorEqual()
@@ -260,7 +252,7 @@ void tst_qqmlqt::colorEqual()
QTest::ignoreMessage(QtWarningMsg, qPrintable(component.url().toString() + ":34: Error: Qt.colorEqual(): Invalid color name"));
QTest::ignoreMessage(QtWarningMsg, qPrintable(component.url().toString() + ":35: Error: Qt.colorEqual(): Invalid color name"));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(object->property("test1a").toBool(), false);
@@ -324,8 +316,6 @@ void tst_qqmlqt::colorEqual()
QCOMPARE(object->property("test6c").toBool(), true);
QCOMPARE(object->property("test6d").toBool(), false);
QCOMPARE(object->property("test6e").toBool(), false);
-
- delete object;
}
void tst_qqmlqt::rect()
@@ -337,7 +327,7 @@ void tst_qqmlqt::rect()
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(qvariant_cast<QRectF>(object->property("test1")), QRectF(10, 13, 100, 109));
@@ -345,8 +335,6 @@ void tst_qqmlqt::rect()
QCOMPARE(qvariant_cast<QRectF>(object->property("test3")), QRectF());
QCOMPARE(qvariant_cast<QRectF>(object->property("test4")), QRectF());
QCOMPARE(qvariant_cast<QRectF>(object->property("test5")), QRectF(10, 13, 100, -109));
-
- delete object;
}
void tst_qqmlqt::point()
@@ -358,15 +346,13 @@ void tst_qqmlqt::point()
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(qvariant_cast<QPointF>(object->property("test1")), QPointF(19, 34));
QCOMPARE(qvariant_cast<QPointF>(object->property("test2")), QPointF(-3, 109.2));
QCOMPARE(qvariant_cast<QPointF>(object->property("test3")), QPointF());
QCOMPARE(qvariant_cast<QPointF>(object->property("test4")), QPointF());
-
- delete object;
}
void tst_qqmlqt::size()
@@ -378,7 +364,7 @@ void tst_qqmlqt::size()
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(qvariant_cast<QSizeF>(object->property("test1")), QSizeF(19, 34));
@@ -386,8 +372,6 @@ void tst_qqmlqt::size()
QCOMPARE(qvariant_cast<QSizeF>(object->property("test3")), QSizeF(-3, 10));
QCOMPARE(qvariant_cast<QSizeF>(object->property("test4")), QSizeF());
QCOMPARE(qvariant_cast<QSizeF>(object->property("test5")), QSizeF());
-
- delete object;
}
void tst_qqmlqt::vector2d()
@@ -399,15 +383,13 @@ void tst_qqmlqt::vector2d()
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(qvariant_cast<QVector2D>(object->property("test1")), QVector2D(1, 0.9f));
QCOMPARE(qvariant_cast<QVector2D>(object->property("test2")), QVector2D(102, -982.1f));
QCOMPARE(qvariant_cast<QVector2D>(object->property("test3")), QVector2D());
QCOMPARE(qvariant_cast<QVector2D>(object->property("test4")), QVector2D());
-
- delete object;
}
void tst_qqmlqt::vector3d()
@@ -419,15 +401,13 @@ void tst_qqmlqt::vector3d()
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(qvariant_cast<QVector3D>(object->property("test1")), QVector3D(1, 0, 0.9f));
QCOMPARE(qvariant_cast<QVector3D>(object->property("test2")), QVector3D(102, -10, -982.1f));
QCOMPARE(qvariant_cast<QVector3D>(object->property("test3")), QVector3D());
QCOMPARE(qvariant_cast<QVector3D>(object->property("test4")), QVector3D());
-
- delete object;
}
void tst_qqmlqt::vector4d()
@@ -439,15 +419,13 @@ void tst_qqmlqt::vector4d()
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(qvariant_cast<QVector4D>(object->property("test1")), QVector4D(1, 0, 0.9f, 0.6f));
QCOMPARE(qvariant_cast<QVector4D>(object->property("test2")), QVector4D(102, -10, -982.1f, 10));
QCOMPARE(qvariant_cast<QVector4D>(object->property("test3")), QVector4D());
QCOMPARE(qvariant_cast<QVector4D>(object->property("test4")), QVector4D());
-
- delete object;
}
void tst_qqmlqt::quaternion()
@@ -459,15 +437,13 @@ void tst_qqmlqt::quaternion()
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(qvariant_cast<QQuaternion>(object->property("test1")), QQuaternion(2, 17, 0.9f, 0.6f));
QCOMPARE(qvariant_cast<QQuaternion>(object->property("test2")), QQuaternion(102, -10, -982.1f, 10));
QCOMPARE(qvariant_cast<QQuaternion>(object->property("test3")), QQuaternion());
QCOMPARE(qvariant_cast<QQuaternion>(object->property("test4")), QQuaternion());
-
- delete object;
}
void tst_qqmlqt::matrix4x4()
@@ -481,7 +457,7 @@ void tst_qqmlqt::matrix4x4()
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2));
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning3));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(qvariant_cast<QMatrix4x4>(object->property("test1")), QMatrix4x4(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16));
@@ -489,8 +465,6 @@ void tst_qqmlqt::matrix4x4()
QCOMPARE(qvariant_cast<QMatrix4x4>(object->property("test3")), QMatrix4x4());
QCOMPARE(qvariant_cast<QMatrix4x4>(object->property("test4")), QMatrix4x4());
QCOMPARE(qvariant_cast<QMatrix4x4>(object->property("test5")), QMatrix4x4());
-
- delete object;
}
void tst_qqmlqt::font()
@@ -502,7 +476,7 @@ void tst_qqmlqt::font()
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QFont f;
@@ -515,8 +489,6 @@ void tst_qqmlqt::font()
QCOMPARE(qvariant_cast<QFont>(object->property("test2")), f);
QCOMPARE(qvariant_cast<QFont>(object->property("test3")), QFont());
QCOMPARE(qvariant_cast<QFont>(object->property("test4")), QFont());
-
- delete object;
}
void tst_qqmlqt::lighter()
@@ -528,7 +500,7 @@ void tst_qqmlqt::lighter()
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(qvariant_cast<QColor>(object->property("test1")), QColor::fromRgbF(1, 0.8, 0.3).lighter());
@@ -537,8 +509,6 @@ void tst_qqmlqt::lighter()
QCOMPARE(qvariant_cast<QColor>(object->property("test4")), QColor("red").lighter());
QCOMPARE(qvariant_cast<QColor>(object->property("test5")), QColor());
QCOMPARE(qvariant_cast<QColor>(object->property("test6")), QColor());
-
- delete object;
}
void tst_qqmlqt::darker()
@@ -550,7 +520,7 @@ void tst_qqmlqt::darker()
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(qvariant_cast<QColor>(object->property("test1")), QColor::fromRgbF(1, 0.8, 0.3).darker());
@@ -559,8 +529,6 @@ void tst_qqmlqt::darker()
QCOMPARE(qvariant_cast<QColor>(object->property("test4")), QColor("red").darker());
QCOMPARE(qvariant_cast<QColor>(object->property("test5")), QColor());
QCOMPARE(qvariant_cast<QColor>(object->property("test6")), QColor());
-
- delete object;
}
void tst_qqmlqt::tint()
@@ -573,7 +541,7 @@ void tst_qqmlqt::tint()
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(qvariant_cast<QColor>(object->property("test1")), QColor::fromRgbF(0, 0, 1));
@@ -582,8 +550,6 @@ void tst_qqmlqt::tint()
QCOMPARE(test3.rgba(), 0xFF7F0080);
QCOMPARE(qvariant_cast<QColor>(object->property("test4")), QColor());
QCOMPARE(qvariant_cast<QColor>(object->property("test5")), QColor());
-
- delete object;
}
class MyUrlHandler : public QObject
@@ -606,7 +572,7 @@ void tst_qqmlqt::openUrlExternally()
QDesktopServices::setUrlHandler("file", &handler, "noteCall");
QQmlComponent component(&engine, testFileUrl("openUrlExternally.qml"));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(handler.called,1);
QCOMPARE(handler.last, QUrl("test:url"));
@@ -628,7 +594,7 @@ void tst_qqmlqt::openUrlExternally_pragmaLibrary()
QDesktopServices::setUrlHandler("file", &handler, "noteCall");
QQmlComponent component(&engine, testFileUrl("openUrlExternally_lib.qml"));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(handler.called,1);
QCOMPARE(handler.last, QUrl("test:url"));
@@ -649,42 +615,37 @@ void tst_qqmlqt::md5()
QString warning1 = component.url().toString() + ":4: Error: Qt.md5(): Invalid arguments";
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(object->property("test2").toString(), QLatin1String(QCryptographicHash::hash("Hello World", QCryptographicHash::Md5).toHex()));
-
- delete object;
}
void tst_qqmlqt::createComponent()
{
{
- QQmlComponent component(&engine, testFileUrl("createComponent.qml"));
-
- QString warning1 = component.url().toString() + ":9: Error: Qt.createComponent(): Invalid arguments";
- QString warning2 = component.url().toString() + ":10: Error: Qt.createComponent(): Invalid arguments";
- QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
- QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2));
+ QQmlComponent component(&engine, testFileUrl("createComponent.qml"));
- QObject *object = component.create();
- QVERIFY(object != nullptr);
+ QString warning1 = component.url().toString() + ":9: Error: Qt.createComponent(): Invalid arguments";
+ QString warning2 = component.url().toString() + ":10: Error: Qt.createComponent(): Invalid arguments";
+ QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
+ QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2));
- QCOMPARE(object->property("absoluteUrl").toString(), QString("http://www.example.com/test.qml"));
- QCOMPARE(object->property("relativeUrl").toString(), testFileUrl("createComponentData.qml").toString());
+ QScopedPointer<QObject> object(component.create());
+ QVERIFY(object != nullptr);
- QTRY_VERIFY(object->property("asyncResult").toBool());
+ QCOMPARE(object->property("absoluteUrl").toString(), QString("http://www.example.com/test.qml"));
+ QCOMPARE(object->property("relativeUrl").toString(), testFileUrl("createComponentData.qml").toString());
- delete object;
+ QTRY_VERIFY(object->property("asyncResult").toBool());
}
// simultaneous sync and async compilation
{
- QQmlComponent component(&engine, testFileUrl("createComponent.2.qml"));
- QObject *object = component.create();
- QVERIFY(object != nullptr);
- QTRY_VERIFY(object->property("success").toBool());
- delete object;
+ QQmlComponent component(&engine, testFileUrl("createComponent.2.qml"));
+ QScopedPointer<QObject> object(component.create());
+ QVERIFY(object != nullptr);
+ QTRY_VERIFY(object->property("success").toBool());
}
}
@@ -692,11 +653,10 @@ void tst_qqmlqt::createComponent_pragmaLibrary()
{
// Currently, just loading createComponent_lib.qml causes crash on some platforms
QQmlComponent component(&engine, testFileUrl("createComponent_lib.qml"));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(object->property("status").toInt(), int(QQmlComponent::Ready));
QCOMPARE(object->property("readValue").toInt(), int(1913));
- delete object;
}
void tst_qqmlqt::createQmlObject()
@@ -716,17 +676,15 @@ void tst_qqmlqt::createQmlObject()
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning5));
QTest::ignoreMessage(QtDebugMsg, qPrintable(warning6));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(object->property("emptyArg").toBool(), true);
QCOMPARE(object->property("success").toBool(), true);
- QQuickItem *item = qobject_cast<QQuickItem *>(object);
+ QQuickItem *item = qobject_cast<QQuickItem *>(object.data());
QVERIFY(item != nullptr);
QCOMPARE(item->childItems().count(), 1);
-
- delete object;
}
@@ -749,7 +707,7 @@ void tst_qqmlqt::dateTimeConversion()
QQmlEngine eng;
QQmlComponent component(&eng, testFileUrl("dateTimeConversion.qml"));
- QObject *obj = component.create();
+ QScopedPointer<QObject> obj(component.create());
QCOMPARE(obj->property("qdate").toDate(), date);
QCOMPARE(obj->property("qtime").toTime(), time);
@@ -927,7 +885,7 @@ void tst_qqmlqt::dateTimeFormattingVariants_data()
void tst_qqmlqt::isQtObject()
{
QQmlComponent component(&engine, testFileUrl("isQtObject.qml"));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(object->property("test1").toBool(), true);
@@ -935,8 +893,6 @@ void tst_qqmlqt::isQtObject()
QCOMPARE(object->property("test3").toBool(), false);
QCOMPARE(object->property("test4").toBool(), false);
QCOMPARE(object->property("test5").toBool(), false);
-
- delete object;
}
void tst_qqmlqt::btoa()
@@ -946,12 +902,10 @@ void tst_qqmlqt::btoa()
QString warning1 = component.url().toString() + ":4: Error: Qt.btoa(): Invalid arguments";
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(object->property("test2").toString(), QString("SGVsbG8gd29ybGQh"));
-
- delete object;
}
void tst_qqmlqt::atob()
@@ -961,12 +915,10 @@ void tst_qqmlqt::atob()
QString warning1 = component.url().toString() + ":4: Error: Qt.atob(): Invalid arguments";
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(object->property("test2").toString(), QString("Hello world!"));
-
- delete object;
}
void tst_qqmlqt::fontFamilies()
@@ -976,13 +928,11 @@ void tst_qqmlqt::fontFamilies()
QString warning1 = component.url().toString() + ":4: Error: Qt.fontFamilies(): Invalid arguments";
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QFontDatabase database;
QCOMPARE(object->property("test2"), QVariant::fromValue(database.families()));
-
- delete object;
}
void tst_qqmlqt::quit()
@@ -990,11 +940,9 @@ void tst_qqmlqt::quit()
QQmlComponent component(&engine, testFileUrl("quit.qml"));
QSignalSpy spy(&engine, SIGNAL(quit()));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(spy.count(), 1);
-
- delete object;
}
void tst_qqmlqt::exit()
@@ -1002,26 +950,22 @@ void tst_qqmlqt::exit()
QQmlComponent component(&engine, testFileUrl("exit.qml"));
QSignalSpy spy(&engine, &QQmlEngine::exit);
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(spy.count(), 1);
QList<QVariant> arguments = spy.takeFirst();
QVERIFY(arguments.at(0).toInt() == object->property("returnCode").toInt());
-
- delete object;
}
void tst_qqmlqt::resolvedUrl()
{
QQmlComponent component(&engine, testFileUrl("resolvedUrl.qml"));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QCOMPARE(object->property("result").toString(), component.url().toString());
QCOMPARE(object->property("isString").toBool(), true);
-
- delete object;
}
void tst_qqmlqt::later_data()
@@ -1105,11 +1049,11 @@ void tst_qqmlqt::later()
QTest::ignoreMessage(QtWarningMsg, qPrintable(w));
QQmlComponent component(&engine, testFileUrl("later.qml"));
- QObject *root = component.create();
+ QScopedPointer<QObject> root(component.create());
QVERIFY(root != nullptr);
if (!function.isEmpty())
- QMetaObject::invokeMethod(root, qPrintable(function));
+ QMetaObject::invokeMethod(root.data(), qPrintable(function));
for (int i = 0; i < propNames.size(); ++i) {
if (propNames.at(i) == QLatin1String("processEvents")) {
@@ -1121,21 +1065,13 @@ void tst_qqmlqt::later()
QCOMPARE(root->property(qPrintable(propNames.at(i))), values.at(i));
}
}
-
- delete root;
}
void tst_qqmlqt::qtObjectContents()
{
- struct StaticQtMetaObject : public QObject
- {
- static const QMetaObject *get()
- { return &staticQtMetaObject; }
- };
-
QQmlComponent component(&engine, testFileUrl("qtObjectContents.qml"));
- QObject *object = component.create();
+ QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
QVERIFY(object->property("values").canConvert<QJSValue>());
@@ -1143,7 +1079,7 @@ void tst_qqmlqt::qtObjectContents()
QSet<const char *> keys;
int uniqueKeys = 0;
- const QMetaObject *qtMetaObject = StaticQtMetaObject::get();
+ const QMetaObject *qtMetaObject = &Qt::staticMetaObject;
for (int ii = 0; ii < qtMetaObject->enumeratorCount(); ++ii) {
QMetaEnum enumerator = qtMetaObject->enumerator(ii);
for (int jj = 0; jj < enumerator.keyCount(); ++jj) {
@@ -1166,8 +1102,6 @@ void tst_qqmlqt::qtObjectContents()
QCOMPARE(values.value("Synchronous").toInt(), 1);
++uniqueKeys;
QCOMPARE(values.count(), uniqueKeys);
-
- delete object;
}
class TimeProvider: public QObject
@@ -1261,7 +1195,8 @@ void tst_qqmlqt::timeRoundtrip()
QQmlEngine eng;
//qmlRegisterSingletonInstance("Test", 1, 0, "TimeProvider", &tp);
QQmlComponent component(&eng, testFileUrl("timeRoundtrip.qml"));
- QObject *obj = component.createWithInitialProperties({{"tp", QVariant::fromValue(&tp)}});
+ QScopedPointer<QObject> obj(component.createWithInitialProperties(
+ {{"tp", QVariant::fromValue(&tp)}}));
QVERIFY(obj != nullptr);
// QML reads m_getTime and saves the result as m_putTime; this should come out the same, without
diff --git a/tests/auto/qml/qqmltypeloader/tst_qqmltypeloader.cpp b/tests/auto/qml/qqmltypeloader/tst_qqmltypeloader.cpp
index d529600723..9ec3e9557b 100644
--- a/tests/auto/qml/qqmltypeloader/tst_qqmltypeloader.cpp
+++ b/tests/auto/qml/qqmltypeloader/tst_qqmltypeloader.cpp
@@ -58,6 +58,7 @@ private slots:
void qmlSingletonWithinModule();
void multiSingletonModule();
void implicitComponentModule();
+ void customDiskCachePath();
void qrcRootPathUrl();
void implicitImport();
void compositeSingletonCycle();
@@ -533,6 +534,35 @@ void tst_QQMLTypeLoader::implicitComponentModule()
checkCleanCacheLoad(QLatin1String("implicitComponentModule"));
}
+void tst_QQMLTypeLoader::customDiskCachePath()
+{
+#if QT_CONFIG(process)
+ const char *skipKey = "QT_TST_QQMLTYPELOADER_SKIP_MISMATCH";
+ if (qEnvironmentVariableIsSet(skipKey)) {
+ QQmlEngine engine;
+ QQmlComponent component(&engine, testFileUrl("Base.qml"));
+ QCOMPARE(component.status(), QQmlComponent::Ready);
+ QScopedPointer<QObject> obj(component.create());
+ QVERIFY(!obj.isNull());
+ return;
+ }
+
+ QTemporaryDir dir;
+ QProcess child;
+ child.setProgram(QCoreApplication::applicationFilePath());
+ child.setArguments(QStringList(QLatin1String("customDiskCachePath")));
+ QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
+ env.insert(QLatin1String(skipKey), QLatin1String("1"));
+ env.insert(QLatin1String("QML_DISK_CACHE_PATH"), dir.path());
+ child.setProcessEnvironment(env);
+ child.start();
+ QVERIFY(child.waitForFinished());
+ QCOMPARE(child.exitCode(), 0);
+ QDir cacheDir(dir.path());
+ QVERIFY(!cacheDir.isEmpty());
+#endif
+}
+
void tst_QQMLTypeLoader::qrcRootPathUrl()
{
QQmlEngine engine;
diff --git a/tests/auto/qml/qqmlxmlhttprequest/data/file_request.qml b/tests/auto/qml/qqmlxmlhttprequest/data/file_request.qml
new file mode 100644
index 0000000000..51020c185e
--- /dev/null
+++ b/tests/auto/qml/qqmlxmlhttprequest/data/file_request.qml
@@ -0,0 +1,32 @@
+import QtQuick 2.0
+
+QtObject {
+ // Inputs
+
+ id: root
+
+ property string writeURL
+ property string readURL
+ // Outputs
+ property bool writeDone: false
+ property variant readResult
+
+ Component.onCompleted: {
+ // PUT
+ var xhrWrite = new XMLHttpRequest;
+ xhrWrite.open("PUT", writeURL);
+ xhrWrite.onreadystatechange = function() {
+ if (xhrWrite.readyState === XMLHttpRequest.DONE)
+ writeDone = true;
+ };
+ xhrWrite.send("Test-String");
+ // GET
+ var xhrRead = new XMLHttpRequest;
+ xhrRead.open("GET", readURL);
+ xhrRead.onreadystatechange = function() {
+ if (xhrRead.readyState === XMLHttpRequest.DONE)
+ readResult = xhrRead.responseText;
+ };
+ xhrRead.send();
+ }
+}
diff --git a/tests/auto/qml/qqmlxmlhttprequest/tst_qqmlxmlhttprequest.cpp b/tests/auto/qml/qqmlxmlhttprequest/tst_qqmlxmlhttprequest.cpp
index 6cf80ccfdb..ae794e76a9 100644
--- a/tests/auto/qml/qqmlxmlhttprequest/tst_qqmlxmlhttprequest.cpp
+++ b/tests/auto/qml/qqmlxmlhttprequest/tst_qqmlxmlhttprequest.cpp
@@ -35,6 +35,13 @@
#include <QThread>
#include <QMutex>
#include <QWaitCondition>
+#include <QTemporaryFile>
+
+#if QT_CONFIG(process)
+#include <QProcess>
+#include <QProcessEnvironment>
+#endif
+
#include "testhttpserver.h"
#include "../../shared/util.h"
@@ -45,6 +52,8 @@ public:
tst_qqmlxmlhttprequest() {}
private slots:
+ void initTestCase();
+
void domExceptionCodes();
void callbackException();
void callbackException_data();
@@ -97,6 +106,14 @@ private slots:
void nonUtf8();
void nonUtf8_data();
+ void sendFileRequest();
+
+#if QT_CONFIG(process)
+ void sendFileRequestNotSet();
+ void sendFileRequestNoWrite();
+ void sendFileRequestNoRead();
+#endif
+
// WebDAV
void sendPropfind();
void sendPropfind_data();
@@ -119,13 +136,27 @@ private slots:
void stateChangeCallingContext();
private:
- QQmlEngine engine;
+ void doFileRequest(std::function<void(QObject *component, QTemporaryFile &writeFile)> verifyFunction);
+
+ QScopedPointer<QQmlEngine> engine;
};
+void tst_qqmlxmlhttprequest::initTestCase()
+{
+ QQmlDataTest::initTestCase();
+
+ if (!qEnvironmentVariableIsSet("TEST_CUSTOM_PERMISSIONS")) {
+ qputenv("QML_XHR_ALLOW_FILE_READ", "1");
+ qputenv("QML_XHR_ALLOW_FILE_WRITE", "1");
+ }
+
+ engine.reset(new QQmlEngine);
+}
+
// Test that the dom exception codes are correct
void tst_qqmlxmlhttprequest::domExceptionCodes()
{
- QQmlComponent component(&engine, testFileUrl("domExceptionCodes.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("domExceptionCodes.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -168,8 +199,8 @@ void tst_qqmlxmlhttprequest::callbackException()
QString expect = testFileUrl("callbackException.qml").toString() + ":"+QString::number(line)+": Error: Exception from Callback";
QTest::ignoreMessage(QtWarningMsg, expect.toLatin1());
- QQmlComponent component(&engine, testFileUrl("callbackException.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("callbackException.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", "testdocument.html");
object->setProperty("which", which);
@@ -182,7 +213,7 @@ void tst_qqmlxmlhttprequest::callbackException()
// ### WebKit does not do this, but it seems to fit the standard and QML better
void tst_qqmlxmlhttprequest::staticStateValues()
{
- QQmlComponent component(&engine, testFileUrl("staticStateValues.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("staticStateValues.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -196,7 +227,7 @@ void tst_qqmlxmlhttprequest::staticStateValues()
// Test that the state value properties on instances have the correct values.
void tst_qqmlxmlhttprequest::instanceStateValues()
{
- QQmlComponent component(&engine, testFileUrl("instanceStateValues.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("instanceStateValues.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -210,7 +241,7 @@ void tst_qqmlxmlhttprequest::instanceStateValues()
// Test calling constructor
void tst_qqmlxmlhttprequest::constructor()
{
- QQmlComponent component(&engine, testFileUrl("constructor.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("constructor.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -221,7 +252,7 @@ void tst_qqmlxmlhttprequest::constructor()
// Test that all the properties are set correctly before any request is sent
void tst_qqmlxmlhttprequest::defaultState()
{
- QQmlComponent component(&engine, testFileUrl("defaultState.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("defaultState.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -248,8 +279,8 @@ void tst_qqmlxmlhttprequest::open()
url = server.urlString(url);
}
- QQmlComponent component(&engine, qmlFile);
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), qmlFile);
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", url);
component.completeCreate();
@@ -281,7 +312,7 @@ void tst_qqmlxmlhttprequest::open_data()
// Test that calling XMLHttpRequest.open() with an invalid method raises an exception
void tst_qqmlxmlhttprequest::open_invalid_method()
{
- QQmlComponent component(&engine, testFileUrl("open_invalid_method.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("open_invalid_method.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -330,8 +361,8 @@ void tst_qqmlxmlhttprequest::open_sync()
{
TestThreadedHTTPServer server(testFileUrl("open_network.expect"), testFileUrl("open_network.reply"), testFileUrl("testdocument.html"));
- QQmlComponent component(&engine, testFileUrl("open_sync.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("open_sync.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", server.serverBaseUrl.resolved(QStringLiteral("/testdocument.html")).toString());
component.completeCreate();
@@ -343,7 +374,7 @@ void tst_qqmlxmlhttprequest::open_sync()
void tst_qqmlxmlhttprequest::open_arg_count()
{
{
- QQmlComponent component(&engine, testFileUrl("open_arg_count.1.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("open_arg_count.1.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -351,7 +382,7 @@ void tst_qqmlxmlhttprequest::open_arg_count()
}
{
- QQmlComponent component(&engine, testFileUrl("open_arg_count.2.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("open_arg_count.2.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -368,8 +399,8 @@ void tst_qqmlxmlhttprequest::setRequestHeader()
testFileUrl("setRequestHeader.reply"),
testFileUrl("testdocument.html")));
- QQmlComponent component(&engine, testFileUrl("setRequestHeader.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("setRequestHeader.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", server.urlString("/testdocument.html"));
component.completeCreate();
@@ -386,8 +417,8 @@ void tst_qqmlxmlhttprequest::setRequestHeader_caseInsensitive()
testFileUrl("setRequestHeader.reply"),
testFileUrl("testdocument.html")));
- QQmlComponent component(&engine, testFileUrl("setRequestHeader_caseInsensitive.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("setRequestHeader_caseInsensitive.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", server.urlString("/testdocument.html"));
component.completeCreate();
@@ -397,7 +428,7 @@ void tst_qqmlxmlhttprequest::setRequestHeader_caseInsensitive()
// Test setting headers before open() throws exception
void tst_qqmlxmlhttprequest::setRequestHeader_unsent()
{
- QQmlComponent component(&engine, testFileUrl("setRequestHeader_unsent.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("setRequestHeader_unsent.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -443,8 +474,8 @@ void tst_qqmlxmlhttprequest::setRequestHeader_illegalName()
testFileUrl("open_network.reply"),
testFileUrl("testdocument.html")));
- QQmlComponent component(&engine, testFileUrl("setRequestHeader_illegalName.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("setRequestHeader_illegalName.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", server.urlString("/testdocument.html"));
object->setProperty("header", name);
@@ -469,8 +500,8 @@ void tst_qqmlxmlhttprequest::setRequestHeader_sent()
testFileUrl("open_network.reply"),
testFileUrl("testdocument.html")));
- QQmlComponent component(&engine, testFileUrl("setRequestHeader_sent.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("setRequestHeader_sent.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", server.urlString("/testdocument.html"));
component.completeCreate();
@@ -483,7 +514,7 @@ void tst_qqmlxmlhttprequest::setRequestHeader_sent()
// Invalid arg count throws exception
void tst_qqmlxmlhttprequest::setRequestHeader_args()
{
- QQmlComponent component(&engine, testFileUrl("setRequestHeader_args.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("setRequestHeader_args.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -493,7 +524,7 @@ void tst_qqmlxmlhttprequest::setRequestHeader_args()
// Test that calling send() in UNSENT state throws an exception
void tst_qqmlxmlhttprequest::send_unsent()
{
- QQmlComponent component(&engine, testFileUrl("send_unsent.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("send_unsent.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -503,7 +534,7 @@ void tst_qqmlxmlhttprequest::send_unsent()
// Test attempting to resend a sent request throws an exception
void tst_qqmlxmlhttprequest::send_alreadySent()
{
- QQmlComponent component(&engine, testFileUrl("send_alreadySent.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("send_alreadySent.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -521,8 +552,8 @@ void tst_qqmlxmlhttprequest::send_ignoreData()
testFileUrl("send_ignoreData.reply"),
testFileUrl("testdocument.html")));
- QQmlComponent component(&engine, testFileUrl("send_ignoreData.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("send_ignoreData.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("reqType", "GET");
object->setProperty("url", server.urlString("/testdocument.html"));
@@ -538,8 +569,8 @@ void tst_qqmlxmlhttprequest::send_ignoreData()
testFileUrl("send_ignoreData.reply"),
QUrl()));
- QQmlComponent component(&engine, testFileUrl("send_ignoreData.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("send_ignoreData.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("reqType", "HEAD");
object->setProperty("url", server.urlString("/testdocument.html"));
@@ -555,8 +586,8 @@ void tst_qqmlxmlhttprequest::send_ignoreData()
testFileUrl("send_ignoreData.reply"),
QUrl()));
- QQmlComponent component(&engine, testFileUrl("send_ignoreData.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("send_ignoreData.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("reqType", "DELETE");
object->setProperty("url", server.urlString("/testdocument.html"));
@@ -578,8 +609,8 @@ void tst_qqmlxmlhttprequest::send_withdata()
testFileUrl("send_data.reply"),
testFileUrl("testdocument.html")));
- QQmlComponent component(&engine, testFileUrl(file_qml));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl(file_qml));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", server.urlString("/testdocument.html"));
component.completeCreate();
@@ -615,8 +646,8 @@ void tst_qqmlxmlhttprequest::send_options()
testFileUrl(file_reply),
testFileUrl("testdocument.html")));
- QQmlComponent component(&engine, testFileUrl(file_qml));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl(file_qml));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
QString url = server.baseUrl().toString();
if (url_suffix != "/")
@@ -652,8 +683,8 @@ void tst_qqmlxmlhttprequest::send_patch()
// the content of response file will be ignored due to 204 status code
testFileUrl("testdocument.html")));
- QQmlComponent component(&engine, testFileUrl("send_patch.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("send_patch.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", server.urlString("/qqmlxmlhttprequest.cpp"));
component.completeCreate();
@@ -666,8 +697,8 @@ void tst_qqmlxmlhttprequest::send_patch()
// Test abort() has no effect in unsent state
void tst_qqmlxmlhttprequest::abort_unsent()
{
- QQmlComponent component(&engine, testFileUrl("abort_unsent.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("abort_unsent.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", "testdocument.html");
component.completeCreate();
@@ -685,8 +716,8 @@ void tst_qqmlxmlhttprequest::abort_unsent()
// Test abort() cancels an open (but unsent) request
void tst_qqmlxmlhttprequest::abort_opened()
{
- QQmlComponent component(&engine, testFileUrl("abort_opened.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("abort_opened.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", "testdocument.html");
component.completeCreate();
@@ -710,8 +741,8 @@ void tst_qqmlxmlhttprequest::abort()
testFileUrl("abort.reply"),
testFileUrl("testdocument.html")));
- QQmlComponent component(&engine, testFileUrl("abort.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("abort.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
const QUrl url = server.url("/testdocument.html");
QUrl dummyUrl = url;
@@ -767,7 +798,7 @@ void tst_qqmlxmlhttprequest::getResponseHeader()
// Test getResponseHeader throws an exception in an invalid state
void tst_qqmlxmlhttprequest::getResponseHeader_unsent()
{
- QQmlComponent component(&engine, testFileUrl("getResponseHeader_unsent.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("getResponseHeader_unsent.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -777,7 +808,7 @@ void tst_qqmlxmlhttprequest::getResponseHeader_unsent()
// Test getResponseHeader throws an exception in an invalid state
void tst_qqmlxmlhttprequest::getResponseHeader_sent()
{
- QQmlComponent component(&engine, testFileUrl("getResponseHeader_sent.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("getResponseHeader_sent.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -787,7 +818,7 @@ void tst_qqmlxmlhttprequest::getResponseHeader_sent()
// Invalid arg count throws exception
void tst_qqmlxmlhttprequest::getResponseHeader_args()
{
- QQmlComponent component(&engine, testFileUrl("getResponseHeader_args.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("getResponseHeader_args.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -827,7 +858,7 @@ void tst_qqmlxmlhttprequest::getAllResponseHeaders()
// Test getAllResponseHeaders throws an exception in an invalid state
void tst_qqmlxmlhttprequest::getAllResponseHeaders_unsent()
{
- QQmlComponent component(&engine, testFileUrl("getAllResponseHeaders_unsent.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("getAllResponseHeaders_unsent.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -837,7 +868,7 @@ void tst_qqmlxmlhttprequest::getAllResponseHeaders_unsent()
// Test getAllResponseHeaders throws an exception in an invalid state
void tst_qqmlxmlhttprequest::getAllResponseHeaders_sent()
{
- QQmlComponent component(&engine, testFileUrl("getAllResponseHeaders_sent.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("getAllResponseHeaders_sent.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -847,7 +878,7 @@ void tst_qqmlxmlhttprequest::getAllResponseHeaders_sent()
// Invalid arg count throws exception
void tst_qqmlxmlhttprequest::getAllResponseHeaders_args()
{
- QQmlComponent component(&engine, testFileUrl("getAllResponseHeaders_args.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("getAllResponseHeaders_args.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -862,8 +893,8 @@ void tst_qqmlxmlhttprequest::getBinaryData()
testFileUrl("receive_binary_data.reply"),
testFileUrl("qml_logo.png")));
- QQmlComponent component(&engine, testFileUrl("receiveBinaryData.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("receiveBinaryData.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", server.urlString("/gml_logo.png"));
component.completeCreate();
@@ -881,8 +912,8 @@ void tst_qqmlxmlhttprequest::getJsonData()
testFileUrl("receive_binary_data.reply"),
testFileUrl("json.data")));
- QQmlComponent component(&engine, testFileUrl("receiveJsonData.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("receiveJsonData.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", server.urlString("/json.data"));
component.completeCreate();
@@ -901,8 +932,8 @@ void tst_qqmlxmlhttprequest::status()
replyUrl,
testFileUrl("testdocument.html")));
- QQmlComponent component(&engine, testFileUrl("status.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("status.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", server.urlString("/testdocument.html"));
object->setProperty("expectedStatus", status);
@@ -943,8 +974,8 @@ void tst_qqmlxmlhttprequest::statusText()
replyUrl,
testFileUrl("testdocument.html")));
- QQmlComponent component(&engine, testFileUrl("statusText.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("statusText.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", server.urlString("/testdocument.html"));
object->setProperty("expectedStatus", statusText);
@@ -983,8 +1014,8 @@ void tst_qqmlxmlhttprequest::responseText()
replyUrl,
bodyUrl));
- QQmlComponent component(&engine, testFileUrl("responseText.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("responseText.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", server.urlString("/testdocument.html"));
object->setProperty("expectedText", responseText);
@@ -1020,7 +1051,7 @@ void tst_qqmlxmlhttprequest::nonUtf8()
QFETCH(QString, responseText);
QFETCH(QString, xmlRootNodeValue);
- QQmlComponent component(&engine, testFileUrl("utf16.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("utf16.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -1053,6 +1084,163 @@ void tst_qqmlxmlhttprequest::nonUtf8_data()
QTest::newRow("responseXML") << "utf16.xml" << "<?xml version=\"1.0\" encoding=\"UTF-16\" standalone='yes'?>\n<root>\n" + uc + "\n</root>\n" << QString('\n' + uc + '\n');
}
+static const QString testString = QStringLiteral("Test-String");
+
+void tst_qqmlxmlhttprequest::doFileRequest(std::function<void(QObject *component, QTemporaryFile &writeFile)> verifyFunction)
+{
+ // Create test files
+ QTemporaryFile writeFile;
+ QTemporaryFile readFile;
+
+ writeFile.open();
+ writeFile.close();
+
+ QVERIFY(readFile.open());
+ readFile.write(testString.toUtf8());
+ readFile.close();
+
+ // Avoid cached environment variables
+ QQmlEngine engine;
+
+ QQmlComponent component(&engine, testFileUrl("file_request.qml"));
+
+ const QVariantMap properties = {
+ {"writeURL", QUrl::fromLocalFile(writeFile.fileName()).toString()},
+ {"readURL", QUrl::fromLocalFile(readFile.fileName()).toString()}
+ };
+
+ QScopedPointer<QObject> object(component.createWithInitialProperties(properties, engine.rootContext()));
+ QVERIFY(!object.isNull());
+
+ verifyFunction(object.get(), writeFile);
+}
+
+// Test file:// requests
+void tst_qqmlxmlhttprequest::sendFileRequest()
+{
+ // Test with both writing and reading allowed
+ doFileRequest([](QObject* object, QTemporaryFile &writeFile) {
+ QTRY_COMPARE(object->property("readResult").toString(), testString);
+
+ QTRY_VERIFY(object->property("writeDone").toBool());
+
+ QVERIFY(writeFile.open());
+ QCOMPARE(QString::fromUtf8(writeFile.readAll()), testString);
+ writeFile.close();
+ });
+}
+
+#if QT_CONFIG(process)
+void tst_qqmlxmlhttprequest::sendFileRequestNotSet() {
+ if (qEnvironmentVariableIsSet("TEST_CUSTOM_PERMISSIONS")) {
+ // Test with no settings
+ // Should just result in warnings in Qt 5
+ doFileRequest([](QObject* object, QTemporaryFile &writeFile) {
+ QTRY_COMPARE(object->property("readResult").toString(), testString);
+
+ QTRY_VERIFY(object->property("writeDone").toBool());
+
+ QVERIFY(writeFile.open());
+ QCOMPARE(QString::fromUtf8(writeFile.readAll()), testString);
+ writeFile.close();
+ });
+ return;
+ }
+
+ QProcess child;
+ child.setProgram(QCoreApplication::applicationFilePath());
+ child.setArguments(QStringList(QLatin1String("sendFileRequestNotSet")));
+ QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
+ env.insert(QLatin1String("TEST_CUSTOM_PERMISSIONS"), QLatin1String("1"));
+ env.remove("QML_XHR_ALLOW_FILE_WRITE");
+ env.remove("QML_XHR_ALLOW_FILE_READ");
+ child.setProcessEnvironment(env);
+ child.start();
+ QVERIFY(child.waitForFinished());
+
+ // Check exit code
+ QCOMPARE(child.exitCode(), 0);
+
+ // Check if all warnings were printed
+ QString output = QString::fromUtf8(child.readAllStandardOutput());
+
+
+ const QString readingWarning = QLatin1String(
+ "XMLHttpRequest: Using GET on a local file is dangerous "
+ "and will be disabled by default in a future Qt version."
+ "Set QML_XHR_ALLOW_FILE_READ to 1 if you wish to continue using this feature.");
+
+ const QString writingWarning = QLatin1String(
+ "XMLHttpRequest: Using PUT on a local file is dangerous "
+ "and will be disabled by default in a future Qt version."
+ "Set QML_XHR_ALLOW_FILE_WRITE to 1 if you wish to continue using this feature.");
+
+ QVERIFY(output.contains(readingWarning));
+ QVERIFY(output.contains(writingWarning));
+}
+#endif
+
+#if QT_CONFIG(process)
+void tst_qqmlxmlhttprequest::sendFileRequestNoWrite() {
+ if (qEnvironmentVariableIsSet("TEST_CUSTOM_PERMISSIONS")) {
+ // Test with no writing enabled
+ doFileRequest([](QObject* object, QTemporaryFile &writeFile) {
+ QTRY_COMPARE(object->property("readResult").toString(), testString);
+
+ // Check that the file stays empty
+ QVERIFY(writeFile.open());
+ QCOMPARE(QString::fromUtf8(writeFile.readAll()), "");
+ writeFile.close();
+ });
+ return;
+ }
+
+ QProcess child;
+ child.setProgram(QCoreApplication::applicationFilePath());
+ child.setArguments(QStringList(QLatin1String("sendFileRequestNoWrite")));
+ QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
+ env.insert(QLatin1String("TEST_CUSTOM_PERMISSIONS"), QLatin1String("1"));
+ env.insert(QLatin1String("QML_XHR_ALLOW_FILE_WRITE"), QLatin1String("0"));
+ env.insert(QLatin1String("QML_XHR_ALLOW_FILE_READ"), QLatin1String("1"));
+ child.setProcessEnvironment(env);
+ child.start();
+ QVERIFY(child.waitForFinished());
+ QCOMPARE(child.exitCode(), 0);
+}
+#endif
+
+#if QT_CONFIG(process)
+void tst_qqmlxmlhttprequest::sendFileRequestNoRead() {
+ if (qEnvironmentVariableIsSet("TEST_CUSTOM_PERMISSIONS")) {
+ // Test with no reading enabled
+ doFileRequest([](QObject* object, QTemporaryFile &writeFile) {
+ // Check that the write happens
+ QTRY_VERIFY(object->property("writeDone").toBool());
+
+ QVERIFY(writeFile.open());
+ QCOMPARE(QString::fromUtf8(writeFile.readAll()), testString);
+ writeFile.close();
+
+ // Verify that the read has not yielded any value
+ QVERIFY(object->property("readResult").isNull());
+ });
+ return;
+ }
+
+ QProcess child;
+ child.setProgram(QCoreApplication::applicationFilePath());
+ child.setArguments(QStringList(QLatin1String("sendFileRequestNoRead")));
+ QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
+ env.insert(QLatin1String("TEST_CUSTOM_PERMISSIONS"), QLatin1String("1"));
+ env.insert(QLatin1String("QML_XHR_ALLOW_FILE_WRITE"), QLatin1String("1"));
+ env.insert(QLatin1String("QML_XHR_ALLOW_FILE_READ"), QLatin1String("0"));
+ child.setProcessEnvironment(env);
+ child.start();
+ QVERIFY(child.waitForFinished());
+ QCOMPARE(child.exitCode(), 0);
+}
+#endif
+
void tst_qqmlxmlhttprequest::sendPropfind()
{
const QString prefix = "WebDAV//";
@@ -1070,8 +1258,8 @@ void tst_qqmlxmlhttprequest::sendPropfind()
testFileUrl(prefix + replyHeader),
testFileUrl(prefix + replyBody)));
- QQmlComponent component(&engine, testFileUrl(prefix + qml));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl(prefix + qml));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", server.urlString(resource));
component.completeCreate();
@@ -1097,7 +1285,7 @@ void tst_qqmlxmlhttprequest::sendPropfind_data()
// throws an exception
void tst_qqmlxmlhttprequest::invalidMethodUsage()
{
- QQmlComponent component(&engine, testFileUrl("invalidMethodUsage.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("invalidMethodUsage.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -1124,8 +1312,8 @@ void tst_qqmlxmlhttprequest::redirects()
server.addRedirect("redirect.html", server.urlString("/redirecttarget.html"));
server.serveDirectory(dataDirectory());
- QQmlComponent component(&engine, testFileUrl("redirects.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("redirects.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", server.urlString("/redirect.html"));
object->setProperty("expectedText", "");
@@ -1141,8 +1329,8 @@ void tst_qqmlxmlhttprequest::redirects()
server.addRedirect("redirect.html", server.urlString("/redirectmissing.html"));
server.serveDirectory(dataDirectory());
- QQmlComponent component(&engine, testFileUrl("redirectError.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("redirectError.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", server.urlString("/redirect.html"));
object->setProperty("expectedText", "");
@@ -1158,8 +1346,8 @@ void tst_qqmlxmlhttprequest::redirects()
server.addRedirect("redirect.html", server.urlString("/redirect.html"));
server.serveDirectory(dataDirectory());
- QQmlComponent component(&engine, testFileUrl("redirectRecur.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("redirectRecur.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("url", server.urlString("/redirect.html"));
object->setProperty("expectedText", "");
@@ -1177,7 +1365,7 @@ void tst_qqmlxmlhttprequest::redirects()
void tst_qqmlxmlhttprequest::responseXML_invalid()
{
- QQmlComponent component(&engine, testFileUrl("responseXML_invalid.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("responseXML_invalid.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -1189,7 +1377,7 @@ void tst_qqmlxmlhttprequest::responseXML_invalid()
// Test the Document DOM element
void tst_qqmlxmlhttprequest::document()
{
- QQmlComponent component(&engine, testFileUrl("document.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("document.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -1201,7 +1389,7 @@ void tst_qqmlxmlhttprequest::document()
// Test the Element DOM element
void tst_qqmlxmlhttprequest::element()
{
- QQmlComponent component(&engine, testFileUrl("element.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("element.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -1213,7 +1401,7 @@ void tst_qqmlxmlhttprequest::element()
// Test the Attr DOM element
void tst_qqmlxmlhttprequest::attr()
{
- QQmlComponent component(&engine, testFileUrl("attr.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("attr.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -1225,7 +1413,7 @@ void tst_qqmlxmlhttprequest::attr()
// Test the Text DOM element
void tst_qqmlxmlhttprequest::text()
{
- QQmlComponent component(&engine, testFileUrl("text.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("text.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -1238,7 +1426,7 @@ void tst_qqmlxmlhttprequest::text()
// Test the CDataSection DOM element
void tst_qqmlxmlhttprequest::cdata()
{
- QQmlComponent component(&engine, testFileUrl("cdata.qml"));
+ QQmlComponent component(engine.get(), testFileUrl("cdata.qml"));
QScopedPointer<QObject> object(component.create());
QVERIFY(!object.isNull());
@@ -1285,8 +1473,8 @@ void tst_qqmlxmlhttprequest::stateChangeCallingContext()
QVERIFY2(server.listen(), qPrintable(server.errorString()));
server.serveDirectory(dataDirectory(), TestHTTPServer::Delay);
- QQmlComponent component(&engine, testFileUrl("stateChangeCallingContext.qml"));
- QScopedPointer<QObject> object(component.beginCreate(engine.rootContext()));
+ QQmlComponent component(engine.get(), testFileUrl("stateChangeCallingContext.qml"));
+ QScopedPointer<QObject> object(component.beginCreate(engine.get()->rootContext()));
QVERIFY(!object.isNull());
object->setProperty("serverBaseUrl", server.baseUrl().toString());
component.completeCreate();
diff --git a/tests/auto/qml/qquickfolderlistmodel/tst_qquickfolderlistmodel.cpp b/tests/auto/qml/qquickfolderlistmodel/tst_qquickfolderlistmodel.cpp
index ae99e35467..dccd3951b3 100644
--- a/tests/auto/qml/qquickfolderlistmodel/tst_qquickfolderlistmodel.cpp
+++ b/tests/auto/qml/qquickfolderlistmodel/tst_qquickfolderlistmodel.cpp
@@ -76,6 +76,7 @@ private slots:
void sortCaseSensitive_data();
void sortCaseSensitive();
void updateProperties();
+ void importBothVersions();
private:
void checkNoErrors(const QQmlComponent& component);
QQmlEngine engine;
@@ -467,6 +468,22 @@ void tst_qquickfolderlistmodel::updateProperties()
QCOMPARE(showHidden.toBool(), true);
}
+void tst_qquickfolderlistmodel::importBothVersions()
+{
+ {
+ QQmlComponent component(&engine, testFileUrl("sortReversed.qml"));
+ checkNoErrors(component);
+ QScopedPointer<QObject> obj(component.create());
+ QVERIFY(obj);
+ }
+ {
+ QQmlComponent component(&engine, testFileUrl("qrc.qml"));
+ checkNoErrors(component);
+ QScopedPointer<QObject> obj(component.create());
+ QVERIFY(obj);
+ }
+}
+
QTEST_MAIN(tst_qquickfolderlistmodel)
#include "tst_qquickfolderlistmodel.moc"
diff --git a/tests/auto/qml/qquickworkerscript/data/BaseWorker.qml b/tests/auto/qml/qquickworkerscript/data/BaseWorker.qml
index 0ac56d9b66..59af114379 100644
--- a/tests/auto/qml/qquickworkerscript/data/BaseWorker.qml
+++ b/tests/auto/qml/qquickworkerscript/data/BaseWorker.qml
@@ -4,8 +4,10 @@ WorkerScript {
id: worker
property variant response
+ property bool readyChangedCalled : false
signal done()
+ signal ready()
function testSend(value) {
worker.sendMessage(value)
@@ -20,5 +22,7 @@ WorkerScript {
worker.response = messageObject
worker.done()
}
+
+ onReadyChanged: worker.readyChangedCalled = true
}
diff --git a/tests/auto/qml/qquickworkerscript/data/doRequest.mjs b/tests/auto/qml/qquickworkerscript/data/doRequest.mjs
new file mode 100644
index 0000000000..d607c3400d
--- /dev/null
+++ b/tests/auto/qml/qquickworkerscript/data/doRequest.mjs
@@ -0,0 +1,6 @@
+WorkerScript.onMessage = function(message)
+{
+ var req = new XMLHttpRequest();
+ req.open("GET", message.url, true);
+ req.send();
+};
diff --git a/tests/auto/qml/qquickworkerscript/data/xmlHttpRequest.qml b/tests/auto/qml/qquickworkerscript/data/xmlHttpRequest.qml
new file mode 100644
index 0000000000..42136d78f0
--- /dev/null
+++ b/tests/auto/qml/qquickworkerscript/data/xmlHttpRequest.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.14
+
+Rectangle
+{
+ width: 100
+ height: 100
+
+ WorkerScript
+ {
+ source: "doRequest.mjs"
+ Component.onCompleted:
+ {
+ sendMessage({"url": "https://example.com"});
+ }
+ }
+}
diff --git a/tests/auto/qml/qquickworkerscript/tst_qquickworkerscript.cpp b/tests/auto/qml/qquickworkerscript/tst_qquickworkerscript.cpp
index bea9978f0b..2f79f7157f 100644
--- a/tests/auto/qml/qquickworkerscript/tst_qquickworkerscript.cpp
+++ b/tests/auto/qml/qquickworkerscript/tst_qquickworkerscript.cpp
@@ -47,6 +47,7 @@ public:
tst_QQuickWorkerScript() {}
private slots:
void source();
+ void ready();
void messaging();
void messaging_data();
void messaging_sendQObjectList();
@@ -59,6 +60,7 @@ private slots:
void script_function();
void script_var();
void stressDispose();
+ void xmlHttpRequest();
private:
void waitForEchoMessage(QQuickWorkerScript *worker) {
@@ -104,6 +106,22 @@ void tst_QQuickWorkerScript::source()
qApp->processEvents();
}
+void tst_QQuickWorkerScript::ready()
+{
+ QQmlComponent component(&m_engine, testFileUrl("worker.qml"));
+ QScopedPointer<QQuickWorkerScript>worker(qobject_cast<QQuickWorkerScript*>(component.create()));
+ QVERIFY(worker != nullptr);
+
+ const QMetaObject *mo = worker->metaObject();
+
+ QTRY_VERIFY(worker->ready());
+
+ QVariant readyChangedCalled = mo->property(mo->indexOfProperty("readyChangedCalled")).read(worker.data()).value<QVariant>();
+
+ QVERIFY(!readyChangedCalled.isNull());
+ QVERIFY(readyChangedCalled.toBool());
+}
+
void tst_QQuickWorkerScript::messaging()
{
QFETCH(QVariant, value);
@@ -151,6 +169,7 @@ void tst_QQuickWorkerScript::messaging_data()
QRegExp::RegExp2));
QTest::newRow("regularexpression") << QVariant::fromValue(QRegularExpression(
"^\\d\\d?$", QRegularExpression::CaseInsensitiveOption));
+ QTest::newRow("url") << QVariant::fromValue(QUrl("http://example.com/foo/bar"));
}
void tst_QQuickWorkerScript::messaging_sendQObjectList()
@@ -341,6 +360,13 @@ void tst_QQuickWorkerScript::stressDispose()
}
}
+void tst_QQuickWorkerScript::xmlHttpRequest()
+{
+ QQmlComponent component(&m_engine, testFileUrl("xmlHttpRequest.qml"));
+ QScopedPointer<QObject> root{component.create()}; // should not crash
+ QVERIFY(root);
+}
+
QTEST_MAIN(tst_QQuickWorkerScript)
#include "tst_qquickworkerscript.moc"
diff --git a/tests/auto/qmltest/events/tst_drag.qml b/tests/auto/qmltest/events/tst_drag.qml
index ae77247a41..5c5b885e6c 100644
--- a/tests/auto/qmltest/events/tst_drag.qml
+++ b/tests/auto/qmltest/events/tst_drag.qml
@@ -113,6 +113,52 @@ Rectangle{
}
}
+ Component {
+ id: nestedFlickableComponent
+
+ Flickable {
+ objectName: "outerFlickable"
+ width: parent.width
+ height: parent.height
+ contentWidth: 400
+ contentHeight: 400
+
+ property alias innerFlickable: innerFlickable
+
+ Flickable {
+ id: innerFlickable
+ objectName: "innerFlickable"
+ width: parent.width
+ height: parent.height
+ contentWidth: 400
+ contentHeight: 400
+
+ Rectangle {
+ width: 400
+ height: 400
+ gradient: Gradient {
+ GradientStop { position: 0; color: "salmon" }
+ GradientStop { position: 0; color: "navajowhite" }
+ }
+ }
+ }
+ }
+ }
+
+ Component {
+ id: signalSpyComponent
+ SignalSpy {}
+ }
+
+ Component {
+ id: mouseAreaComponent
+
+ MouseArea {
+ anchors.fill: parent
+ hoverEnabled: true
+ }
+ }
+
TestCase {
name:"mouserelease"
when:windowShown
@@ -163,5 +209,121 @@ Rectangle{
compare(spyX.count, 0)
compare(spyY.count, 1)
}
+
+ function test_dragAxis_data() {
+ return [
+ { tag: "horizontal" },
+ { tag: "vertical" }
+ ]
+ }
+
+ // mouseDrag() should not drag along an axis if the distance passed in for
+ // that axis was 0. Doing so can interfere with tests for an item that e.g.
+ // handles horizontal flicks which is within e.g. a Flickable that handles
+ // vertical flicks.
+ function test_dragAxis(data) {
+ let horizontal = data.tag === "horizontal"
+
+ let outerFlickable = createTemporaryObject(nestedFlickableComponent, root)
+ verify(outerFlickable)
+ // We want the outer flickable to use the opposite flick direction of the inner one,
+ // as the inner one has the direction that we're interested in testing.
+ outerFlickable.flickableDirection = horizontal ? Flickable.VerticalFlick : Flickable.HorizontalFlick
+
+ let innerFlickable = outerFlickable.innerFlickable
+ verify(innerFlickable)
+ let horizontalFlickable = null
+ let verticalFlickable = null
+ if (horizontal) {
+ innerFlickable.flickableDirection = Flickable.HorizontalFlick
+ horizontalFlickable = innerFlickable
+ verticalFlickable = outerFlickable
+ } else {
+ innerFlickable.flickableDirection = Flickable.VerticalFlick
+ horizontalFlickable = outerFlickable
+ verticalFlickable = innerFlickable
+ }
+
+ let movingHorizontallySpy = createTemporaryObject(signalSpyComponent, root,
+ { target: horizontalFlickable, signalName: "movingHorizontallyChanged" })
+ verify(movingHorizontallySpy)
+ verify(movingHorizontallySpy.valid)
+
+ let movingVerticallySpy = createTemporaryObject(signalSpyComponent, root,
+ { target: verticalFlickable, signalName: "movingVerticallyChanged" })
+ verify(movingVerticallySpy)
+ verify(movingVerticallySpy.valid)
+
+ let flickingHorizontallySpy = createTemporaryObject(signalSpyComponent, root,
+ { target: horizontalFlickable, signalName: "flickingHorizontallyChanged" })
+ verify(flickingHorizontallySpy)
+ verify(flickingHorizontallySpy.valid)
+
+ let flickingVerticallySpy = createTemporaryObject(signalSpyComponent, root,
+ { target: verticalFlickable, signalName: "flickingVerticallyChanged" })
+ verify(flickingVerticallySpy)
+ verify(flickingVerticallySpy.valid)
+
+ let contentXSpy = createTemporaryObject(signalSpyComponent, root,
+ { target: horizontalFlickable, signalName: "contentXChanged" })
+ verify(contentXSpy)
+ verify(contentXSpy.valid)
+
+ let contentYSpy = createTemporaryObject(signalSpyComponent, root,
+ { target: verticalFlickable, signalName: "contentYChanged" })
+ verify(contentYSpy)
+ verify(contentYSpy.valid)
+
+ // Dragging only horizontally should not result in movement on the Y axis, and vice versa.
+ let horizontalDragDistance = horizontal ? innerFlickable.width - 10 : 0
+ let verticalDragDistance = horizontal ? 0 : innerFlickable.height - 10
+ mouseDrag(innerFlickable, 10, 10, horizontalDragDistance, verticalDragDistance)
+
+ // Wait for it to stop moving.
+ if (horizontal) {
+ tryCompare(horizontalFlickable, "movingHorizontally", false)
+ tryCompare(horizontalFlickable, "flickingHorizontally", false)
+ } else {
+ tryCompare(verticalFlickable, "movingVertically", false)
+ tryCompare(verticalFlickable, "flickingVertically", false)
+ }
+
+ // 2 because it should change to true then false.
+ compare(movingHorizontallySpy.count, horizontal ? 2 : 0)
+ compare(movingVerticallySpy.count, horizontal ? 0 : 2)
+ compare(flickingHorizontallySpy.count, horizontal ? 2 : 0)
+ compare(flickingVerticallySpy.count, horizontal ? 0 : 2)
+
+ if (horizontal)
+ verify(contentXSpy.count > 0)
+ else
+ compare(contentXSpy.count, 0)
+
+ if (horizontal)
+ compare(contentYSpy.count, 0)
+ else
+ verify(contentYSpy.count > 0)
+ }
+
+ function test_negativeDragDistance_data() {
+ return [
+ { tag: "horizontal", startX: 100, startY: 100, xDistance: -90, yDistance: 0 },
+ { tag: "vertical", startX: 100, startY: 100, xDistance: 0, yDistance: -90 }
+ ]
+ }
+
+ // Tests that dragging to the left or top actually results in intermediate mouse moves.
+ function test_negativeDragDistance(data) {
+ let mouseArea = createTemporaryObject(mouseAreaComponent, root)
+ verify(mouseArea)
+
+ let positionSpy = signalSpyComponent.createObject(mouseArea,
+ { target: mouseArea, signalName: "positionChanged" })
+ verify(positionSpy)
+ verify(positionSpy.valid)
+
+ mouseDrag(mouseArea, data.startX, data.startY, data.xDistance, data.yDistance)
+ verify(positionSpy.count > 2, "Expected more than 2 mouse position changes, but only got " + positionSpy.count)
+ }
}
}
diff --git a/tests/auto/quick/nodes/tst_nodestest.cpp b/tests/auto/quick/nodes/tst_nodestest.cpp
index bd5e6c6383..249ecd5aa5 100644
--- a/tests/auto/quick/nodes/tst_nodestest.cpp
+++ b/tests/auto/quick/nodes/tst_nodestest.cpp
@@ -121,9 +121,6 @@ class DummyRenderer : public QSGBatchRenderer::Renderer
public:
DummyRenderer(QSGRootNode *root, QSGDefaultRenderContext *renderContext)
: QSGBatchRenderer::Renderer(renderContext)
- , changedNode(nullptr)
- , changedState(nullptr)
- , renderCount(0)
{
setRootNode(root);
}
@@ -139,11 +136,11 @@ public:
QSGBatchRenderer::Renderer::nodeChanged(node, state);
}
- QSGNode *changedNode;
+ QSGNode *changedNode = nullptr;
QSGNode::DirtyState changedState;
- int renderCount;
- int renderingOrder;
+ int renderCount = 0;
+ int renderingOrder = 0;
static int globalRendereringOrder;
};
diff --git a/tests/auto/quick/pointerhandlers/flickableinterop/BLACKLIST b/tests/auto/quick/pointerhandlers/flickableinterop/BLACKLIST
index 20f989fc50..92903955ac 100644
--- a/tests/auto/quick/pointerhandlers/flickableinterop/BLACKLIST
+++ b/tests/auto/quick/pointerhandlers/flickableinterop/BLACKLIST
@@ -1,5 +1,6 @@
[touchAndDragHandlerOnFlickable]
windows gcc
+opensuse-leap
[touchDragFlickableBehindSlider]
windows gcc
[touchDragFlickableBehindButton]
diff --git a/tests/auto/quick/pointerhandlers/mousearea_interop/data/dragTakeOverFromSibling.qml b/tests/auto/quick/pointerhandlers/mousearea_interop/data/dragTakeOverFromSibling.qml
new file mode 100644
index 0000000000..48b1dc86f0
--- /dev/null
+++ b/tests/auto/quick/pointerhandlers/mousearea_interop/data/dragTakeOverFromSibling.qml
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.12
+
+Item {
+ width: 640
+ height: 480
+
+ Rectangle {
+ width: 200
+ height: 200
+ color: mouseArea.pressed ? "red" : "blue"
+ opacity: 0.6
+
+ MouseArea {
+ id: mouseArea
+ anchors.fill: parent
+ }
+ }
+ Rectangle {
+ y: 100
+ z: -1
+ width: 200
+ height: 200
+ color: dragHandler.active ? "orange" : "green"
+ opacity: 0.6
+
+ DragHandler {
+ id: dragHandler
+ }
+ }
+}
diff --git a/tests/auto/quick/pointerhandlers/mousearea_interop/mousearea_interop.pro b/tests/auto/quick/pointerhandlers/mousearea_interop/mousearea_interop.pro
new file mode 100644
index 0000000000..0bf0ec86a9
--- /dev/null
+++ b/tests/auto/quick/pointerhandlers/mousearea_interop/mousearea_interop.pro
@@ -0,0 +1,15 @@
+CONFIG += testcase
+
+TARGET = tst_mousearea_interop
+QT += core-private gui-private qml-private quick-private testlib
+
+macos:CONFIG -= app_bundle
+
+SOURCES += tst_mousearea_interop.cpp
+
+include (../../../shared/util.pri)
+include (../../shared/util.pri)
+
+TESTDATA = data/*
+
+OTHER_FILES += data/dragTakeOverFromSibling.qml
diff --git a/tests/auto/quick/pointerhandlers/mousearea_interop/tst_mousearea_interop.cpp b/tests/auto/quick/pointerhandlers/mousearea_interop/tst_mousearea_interop.cpp
new file mode 100644
index 0000000000..794562fea0
--- /dev/null
+++ b/tests/auto/quick/pointerhandlers/mousearea_interop/tst_mousearea_interop.cpp
@@ -0,0 +1,178 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtQml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#include <QtQml/qqmlengine.h>
+#include <QtQml/qqmlproperty.h>
+#include <QtQuick/private/qquickdraghandler_p.h>
+#include <QtQuick/private/qquickmousearea_p.h>
+#include <QtQuick/qquickitem.h>
+#include <QtQuick/qquickview.h>
+
+#include "../../../shared/util.h"
+#include "../../shared/viewtestutil.h"
+
+Q_LOGGING_CATEGORY(lcPointerTests, "qt.quick.pointer.tests")
+
+class tst_MouseAreaInterop : public QQmlDataTest
+{
+ Q_OBJECT
+public:
+ tst_MouseAreaInterop()
+ : touchDevice(QTest::createTouchDevice())
+ , touchPointerDevice(QQuickPointerDevice::touchDevice(touchDevice))
+ {}
+
+private slots:
+ void dragHandlerInSiblingStealingGrabFromMouseAreaViaMouse();
+ void dragHandlerInSiblingStealingGrabFromMouseAreaViaTouch_data();
+ void dragHandlerInSiblingStealingGrabFromMouseAreaViaTouch();
+
+private:
+ void createView(QScopedPointer<QQuickView> &window, const char *fileName);
+ QTouchDevice *touchDevice;
+ QQuickPointerDevice *touchPointerDevice;
+};
+
+void tst_MouseAreaInterop::createView(QScopedPointer<QQuickView> &window, const char *fileName)
+{
+ window.reset(new QQuickView);
+ window->setSource(testFileUrl(fileName));
+ QTRY_COMPARE(window->status(), QQuickView::Ready);
+ QQuickViewTestUtil::centerOnScreen(window.data());
+ QQuickViewTestUtil::moveMouseAway(window.data());
+
+ window->show();
+ QVERIFY(QTest::qWaitForWindowActive(window.data()));
+ QVERIFY(window->rootObject() != nullptr);
+}
+
+void tst_MouseAreaInterop::dragHandlerInSiblingStealingGrabFromMouseAreaViaMouse()
+{
+ const int dragThreshold = QGuiApplication::styleHints()->startDragDistance();
+ QScopedPointer<QQuickView> windowPtr;
+ createView(windowPtr, "dragTakeOverFromSibling.qml");
+ QQuickView * window = windowPtr.data();
+ auto pointerEvent = QQuickWindowPrivate::get(window)->pointerEventInstance(QQuickPointerDevice::genericMouseDevice());
+
+ QPointer<QQuickPointerHandler> handler = window->rootObject()->findChild<QQuickPointerHandler*>();
+ QVERIFY(handler);
+ QQuickMouseArea *ma = window->rootObject()->findChild<QQuickMouseArea*>();
+ QVERIFY(ma);
+
+ QPoint p1(150, 150);
+ QTest::mousePress(window, Qt::LeftButton, Qt::NoModifier, p1);
+ QCOMPARE(window->mouseGrabberItem(), ma);
+ QCOMPARE(ma->pressed(), true);
+
+ // Start dragging
+ // DragHandler keeps monitoring, due to its passive grab,
+ // and eventually steals the exclusive grab from MA
+ int dragStoleGrab = 0;
+ for (int i = 0; i < 4; ++i) {
+ p1 += QPoint(dragThreshold / 2, 0);
+ QTest::mouseMove(window, p1);
+ if (!dragStoleGrab && pointerEvent->point(0)->exclusiveGrabber() == handler)
+ dragStoleGrab = i;
+ }
+ if (dragStoleGrab)
+ qCDebug(lcPointerTests, "DragHandler stole the grab after %d events", dragStoleGrab);
+ QVERIFY(dragStoleGrab > 1);
+ QCOMPARE(handler->active(), true);
+ QCOMPARE(ma->pressed(), false);
+
+ QTest::mouseRelease(window, Qt::LeftButton, Qt::NoModifier, p1);
+ QCOMPARE(handler->active(), false);
+}
+
+void tst_MouseAreaInterop::dragHandlerInSiblingStealingGrabFromMouseAreaViaTouch_data()
+{
+ QTest::addColumn<bool>("preventStealing");
+
+ QTest::newRow("allow stealing") << false;
+ QTest::newRow("prevent stealing") << true;
+}
+
+void tst_MouseAreaInterop::dragHandlerInSiblingStealingGrabFromMouseAreaViaTouch() // QTBUG-77624 and QTBUG-79163
+{
+ QFETCH(bool, preventStealing);
+
+ const int dragThreshold = QGuiApplication::styleHints()->startDragDistance();
+ QScopedPointer<QQuickView> windowPtr;
+ createView(windowPtr, "dragTakeOverFromSibling.qml");
+ QQuickView * window = windowPtr.data();
+ auto pointerEvent = QQuickWindowPrivate::get(window)->pointerEventInstance(touchPointerDevice);
+
+ QPointer<QQuickPointerHandler> handler = window->rootObject()->findChild<QQuickPointerHandler*>();
+ QVERIFY(handler);
+ QQuickMouseArea *ma = window->rootObject()->findChild<QQuickMouseArea*>();
+ QVERIFY(ma);
+ ma->setPreventStealing(preventStealing);
+
+ QPoint p1(150, 150);
+ QTest::QTouchEventSequence touch = QTest::touchEvent(window, touchDevice);
+
+ touch.press(1, p1).commit();
+ QQuickTouchUtils::flush(window);
+ QTRY_VERIFY(pointerEvent->point(0)->passiveGrabbers().contains(handler));
+ QCOMPARE(pointerEvent->point(0)->grabberItem(), ma);
+ QCOMPARE(window->mouseGrabberItem(), ma);
+ QCOMPARE(ma->pressed(), true);
+
+ // Start dragging
+ // DragHandler keeps monitoring, due to its passive grab,
+ // and eventually steals the exclusive grab from MA if MA allows it
+ int dragStoleGrab = 0;
+ for (int i = 0; i < 4; ++i) {
+ p1 += QPoint(dragThreshold / 2, 0);
+ touch.move(1, p1).commit();
+ QQuickTouchUtils::flush(window);
+ if (!dragStoleGrab && pointerEvent->point(0)->exclusiveGrabber() == handler)
+ dragStoleGrab = i;
+ }
+ if (dragStoleGrab)
+ qCDebug(lcPointerTests, "DragHandler stole the grab after %d events", dragStoleGrab);
+ if (preventStealing) {
+ QCOMPARE(dragStoleGrab, 0);
+ QCOMPARE(handler->active(), false);
+ QCOMPARE(ma->pressed(), true);
+ } else {
+ QVERIFY(dragStoleGrab > 1);
+ QCOMPARE(handler->active(), true);
+ QCOMPARE(ma->pressed(), false);
+ }
+
+ touch.release(1, p1).commit();
+ QQuickTouchUtils::flush(window);
+ QCOMPARE(handler->active(), false);
+}
+
+QTEST_MAIN(tst_MouseAreaInterop)
+
+#include "tst_mousearea_interop.moc"
diff --git a/tests/auto/quick/pointerhandlers/multipointtoucharea_interop/tst_multipointtoucharea_interop.cpp b/tests/auto/quick/pointerhandlers/multipointtoucharea_interop/tst_multipointtoucharea_interop.cpp
index 35fed99e8b..4a7a132be2 100644
--- a/tests/auto/quick/pointerhandlers/multipointtoucharea_interop/tst_multipointtoucharea_interop.cpp
+++ b/tests/auto/quick/pointerhandlers/multipointtoucharea_interop/tst_multipointtoucharea_interop.cpp
@@ -295,10 +295,10 @@ void tst_MptaInterop::unloadHandlerWithPassiveGrab()
QVERIFY(mpta);
QPoint point(90, 90);
- QTest::mousePress(window, Qt::LeftButton, 0, point);
+ QTest::mousePress(window, Qt::LeftButton, {}, point);
QCOMPARE(window->mouseGrabberItem(), mpta);
QTRY_VERIFY(handler.isNull()); // it got unloaded
- QTest::mouseRelease(window, Qt::LeftButton, 0, point); // QTBUG-73819: don't crash
+ QTest::mouseRelease(window, Qt::LeftButton, {}, point); // QTBUG-73819: don't crash
}
void tst_MptaInterop::dragHandlerInParentStealingGrabFromItem() // QTBUG-75025
diff --git a/tests/auto/quick/pointerhandlers/pointerhandlers.pro b/tests/auto/quick/pointerhandlers/pointerhandlers.pro
index 4d6311bdb2..7db28b6583 100644
--- a/tests/auto/quick/pointerhandlers/pointerhandlers.pro
+++ b/tests/auto/quick/pointerhandlers/pointerhandlers.pro
@@ -3,6 +3,7 @@ TEMPLATE = subdirs
qtConfig(private_tests) {
SUBDIRS += \
flickableinterop \
+ mousearea_interop \
multipointtoucharea_interop \
qquickdraghandler \
qquickhoverhandler \
diff --git a/tests/auto/quick/pointerhandlers/qquicktaphandler/data/Button.qml b/tests/auto/quick/pointerhandlers/qquicktaphandler/data/Button.qml
index 042b730799..800c25c77d 100644
--- a/tests/auto/quick/pointerhandlers/qquicktaphandler/data/Button.qml
+++ b/tests/auto/quick/pointerhandlers/qquicktaphandler/data/Button.qml
@@ -31,6 +31,7 @@ import QtQuick 2.12
Rectangle {
id: root
property alias label: label.text
+ property alias active: tap.active
property alias pressed: tap.pressed
property bool checked: false
property alias gesturePolicy: tap.gesturePolicy
diff --git a/tests/auto/quick/pointerhandlers/qquicktaphandler/tst_qquicktaphandler.cpp b/tests/auto/quick/pointerhandlers/qquicktaphandler/tst_qquicktaphandler.cpp
index e77ea97518..419afed3ac 100644
--- a/tests/auto/quick/pointerhandlers/qquicktaphandler/tst_qquicktaphandler.cpp
+++ b/tests/auto/quick/pointerhandlers/qquicktaphandler/tst_qquicktaphandler.cpp
@@ -600,10 +600,32 @@ void tst_TapHandler::buttonsMultiTouch()
touchSeq.stationary(1).press(2, p2, window).commit();
QQuickTouchUtils::flush(window);
QTRY_VERIFY(buttonWithinBounds->property("pressed").toBool());
+ QVERIFY(buttonWithinBounds->property("active").toBool());
QPoint p3 = buttonReleaseWithinBounds->mapToScene(QPointF(20, 20)).toPoint();
touchSeq.stationary(1).stationary(2).press(3, p3, window).commit();
QQuickTouchUtils::flush(window);
QTRY_VERIFY(buttonReleaseWithinBounds->property("pressed").toBool());
+ QVERIFY(buttonReleaseWithinBounds->property("active").toBool());
+ QVERIFY(buttonWithinBounds->property("pressed").toBool());
+ QVERIFY(buttonWithinBounds->property("active").toBool());
+ QVERIFY(buttonDragThreshold->property("pressed").toBool());
+
+ // combinations of small touchpoint movements and stationary points should not cause state changes
+ p1 += QPoint(2, 0);
+ p2 += QPoint(3, 0);
+ touchSeq.move(1, p1).move(2, p2).stationary(3).commit();
+ QVERIFY(buttonDragThreshold->property("pressed").toBool());
+ QVERIFY(buttonWithinBounds->property("pressed").toBool());
+ QVERIFY(buttonWithinBounds->property("active").toBool());
+ QVERIFY(buttonReleaseWithinBounds->property("pressed").toBool());
+ QVERIFY(buttonReleaseWithinBounds->property("active").toBool());
+ p3 += QPoint(4, 0);
+ touchSeq.stationary(1).stationary(2).move(3, p3).commit();
+ QVERIFY(buttonDragThreshold->property("pressed").toBool());
+ QVERIFY(buttonWithinBounds->property("pressed").toBool());
+ QVERIFY(buttonWithinBounds->property("active").toBool());
+ QVERIFY(buttonReleaseWithinBounds->property("pressed").toBool());
+ QVERIFY(buttonReleaseWithinBounds->property("active").toBool());
// can release top button and press again: others stay pressed the whole time
touchSeq.stationary(2).stationary(3).release(1, p1, window).commit();
diff --git a/tests/auto/quick/qquickaccessible/tst_qquickaccessible.cpp b/tests/auto/quick/qquickaccessible/tst_qquickaccessible.cpp
index d1f6d67aa1..061d5f8a1a 100644
--- a/tests/auto/quick/qquickaccessible/tst_qquickaccessible.cpp
+++ b/tests/auto/quick/qquickaccessible/tst_qquickaccessible.cpp
@@ -185,7 +185,8 @@ void tst_QQuickAccessible::quickAttachedProperties()
QObject *object = component.create();
QVERIFY(object != nullptr);
- QObject *attachedObject = QQuickAccessibleAttached::attachedProperties(object);
+ const auto attachedObject = qobject_cast<QQuickAccessibleAttached*>(
+ QQuickAccessibleAttached::attachedProperties(object));
QVERIFY(attachedObject);
if (attachedObject) {
QVariant p = attachedObject->property("role");
@@ -195,6 +196,7 @@ void tst_QQuickAccessible::quickAttachedProperties()
QCOMPARE(p.isNull(), true);
p = attachedObject->property("description");
QCOMPARE(p.isNull(), true);
+ QCOMPARE(attachedObject->wasNameExplicitlySet(), false);
}
delete object;
}
@@ -211,7 +213,8 @@ void tst_QQuickAccessible::quickAttachedProperties()
QObject *object = component.create();
QVERIFY(object != nullptr);
- QObject *attachedObject = QQuickAccessibleAttached::attachedProperties(object);
+ const auto attachedObject = qobject_cast<QQuickAccessibleAttached*>(
+ QQuickAccessibleAttached::attachedProperties(object));
QVERIFY(attachedObject);
if (attachedObject) {
QVariant p = attachedObject->property("role");
@@ -223,6 +226,7 @@ void tst_QQuickAccessible::quickAttachedProperties()
p = attachedObject->property("description");
QCOMPARE(p.isNull(), false);
QCOMPARE(p.toString(), QLatin1String("Duck"));
+ QCOMPARE(attachedObject->wasNameExplicitlySet(), true);
}
delete object;
}
@@ -292,6 +296,32 @@ void tst_QQuickAccessible::quickAttachedProperties()
}
delete object;
}
+ // Check that a name can be implicitly set.
+ {
+ QQmlEngine engine;
+ QQmlComponent component(&engine);
+ component.setData(R"(
+ import QtQuick 2.0
+ Text {
+ Accessible.role: Accessible.Button
+ Accessible.description: "Text Button"
+ })", QUrl());
+ QScopedPointer<QObject> object(component.create());
+ QVERIFY(object);
+
+ const auto attachedObject = qobject_cast<QQuickAccessibleAttached*>(
+ QQuickAccessibleAttached::attachedProperties(object.data()));
+ QVERIFY(attachedObject);
+ QVERIFY(!attachedObject->wasNameExplicitlySet());
+
+ attachedObject->setNameImplicitly(QLatin1String("Implicit"));
+ QCOMPARE(attachedObject->name(), QLatin1String("Implicit"));
+ QVERIFY(!attachedObject->wasNameExplicitlySet());
+
+ attachedObject->setName(QLatin1String("Explicit"));
+ QCOMPARE(attachedObject->name(), QLatin1String("Explicit"));
+ QVERIFY(attachedObject->wasNameExplicitlySet());
+ }
QTestAccessibility::clearEvents();
}
diff --git a/tests/auto/quick/qquickanimations/tst_qquickanimations.cpp b/tests/auto/quick/qquickanimations/tst_qquickanimations.cpp
index 48f779a490..55957fa71a 100644
--- a/tests/auto/quick/qquickanimations/tst_qquickanimations.cpp
+++ b/tests/auto/quick/qquickanimations/tst_qquickanimations.cpp
@@ -265,7 +265,8 @@ void tst_qquickanimations::simplePath()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("pathAnimation.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *redRect = rect->findChild<QQuickRectangle*>();
@@ -299,14 +300,13 @@ void tst_qquickanimations::simplePath()
pathAnim->start();
QTRY_VERIFY(redRect->rotation() != 0);
pathAnim->stop();
-
- delete rect;
}
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("pathAnimation2.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *redRect = rect->findChild<QQuickRectangle*>();
@@ -334,8 +334,6 @@ void tst_qquickanimations::simplePath()
QCOMPARE(redRect->x(), qreal(300));
QCOMPARE(redRect->y(), qreal(300));
QCOMPARE(redRect->rotation(), qreal(0));
-
- delete rect;
}
}
@@ -343,7 +341,8 @@ void tst_qquickanimations::simpleAnchor()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("reanchor.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *greenRect = rect->findChild<QQuickRectangle*>();
@@ -411,15 +410,14 @@ void tst_qquickanimations::simpleAnchor()
QCOMPARE(greenRect->y(), qreal(50));
QCOMPARE(greenRect->width(), qreal(150));
QCOMPARE(greenRect->height(), qreal(125));
-
- delete rect;
}
void tst_qquickanimations::reparent()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("reparent.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *target = rect->findChild<QQuickRectangle*>("target");
@@ -460,15 +458,14 @@ void tst_qquickanimations::reparent()
QCOMPARE(target->height(), qreal(50));
QCOMPARE(target->rotation(), qreal(0));
QCOMPARE(target->scale(), qreal(1));
-
- delete rect;
}
void tst_qquickanimations::pathInterpolator()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("pathInterpolator.qml"));
- QQuickPathInterpolator *interpolator = qobject_cast<QQuickPathInterpolator*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *interpolator = qobject_cast<QQuickPathInterpolator*>(obj.data());
QVERIFY(interpolator);
QCOMPARE(interpolator->progress(), qreal(0));
@@ -504,7 +501,8 @@ void tst_qquickanimations::pathInterpolatorBackwardJump()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("pathInterpolatorBack.qml"));
- QQuickPathInterpolator *interpolator = qobject_cast<QQuickPathInterpolator*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *interpolator = qobject_cast<QQuickPathInterpolator*>(obj.data());
QVERIFY(interpolator);
QCOMPARE(interpolator->progress(), qreal(0));
@@ -535,7 +533,8 @@ void tst_qquickanimations::pathInterpolatorBackwardJump()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("pathInterpolatorBack2.qml"));
- QQuickPathInterpolator *interpolator = qobject_cast<QQuickPathInterpolator*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *interpolator = qobject_cast<QQuickPathInterpolator*>(obj.data());
QVERIFY(interpolator);
QCOMPARE(interpolator->progress(), qreal(0));
@@ -562,7 +561,8 @@ void tst_qquickanimations::pathWithNoStart()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("pathAnimationNoStart.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *redRect = rect->findChild<QQuickRectangle*>();
@@ -728,12 +728,9 @@ void tst_qquickanimations::badTypes()
{
//don't crash
{
- QQuickView *view = new QQuickView;
+ QScopedPointer<QQuickView> view(new QQuickView);
view->setSource(testFileUrl("badtype1.qml"));
-
qApp->processEvents();
-
- delete view;
}
//make sure we get a compiler error
@@ -741,7 +738,8 @@ void tst_qquickanimations::badTypes()
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("badtype2.qml"));
QTest::ignoreMessage(QtWarningMsg, "QQmlComponent: Component is not ready");
- c.create();
+ QScopedPointer<QObject> obj(c.create());
+ QVERIFY(obj.isNull());
QCOMPARE(c.errors().count(), 1);
QCOMPARE(c.errors().at(0).description(), QLatin1String("Invalid property assignment: number expected"));
@@ -752,7 +750,8 @@ void tst_qquickanimations::badTypes()
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("badtype3.qml"));
QTest::ignoreMessage(QtWarningMsg, "QQmlComponent: Component is not ready");
- c.create();
+ QScopedPointer<QObject> obj(c.create());
+ QVERIFY(obj.isNull());
QCOMPARE(c.errors().count(), 1);
QCOMPARE(c.errors().at(0).description(), QLatin1String("Invalid property assignment: color expected"));
@@ -762,7 +761,8 @@ void tst_qquickanimations::badTypes()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("badtype4.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickItemPrivate::get(rect)->setState("state1");
@@ -782,13 +782,15 @@ void tst_qquickanimations::badProperties()
QQmlComponent c1(&engine, testFileUrl("badproperty1.qml"));
QByteArray message = testFileUrl("badproperty1.qml").toString().toUtf8() + ":18:9: QML ColorAnimation: Cannot animate non-existent property \"border.colr\"";
QTest::ignoreMessage(QtWarningMsg, message);
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c1.create());
+ QScopedPointer<QObject> obj(c1.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQmlComponent c2(&engine, testFileUrl("badproperty2.qml"));
message = testFileUrl("badproperty2.qml").toString().toUtf8() + ":18:9: QML ColorAnimation: Cannot animate read-only property \"border\"";
QTest::ignoreMessage(QtWarningMsg, message);
- rect = qobject_cast<QQuickRectangle*>(c2.create());
+ QScopedPointer<QObject> obj2(c2.create());
+ rect = qobject_cast<QQuickRectangle*>(obj2.data());
QVERIFY(rect);
//### should we warn here are well?
@@ -804,7 +806,8 @@ void tst_qquickanimations::mixedTypes()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("mixedtype1.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickItemPrivate::get(rect)->setState("state1");
@@ -820,7 +823,8 @@ void tst_qquickanimations::mixedTypes()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("mixedtype2.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickItemPrivate::get(rect)->setState("state1");
@@ -840,7 +844,8 @@ void tst_qquickanimations::properties()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("properties.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *myRect = rect->findChild<QQuickRectangle*>("TheRect");
@@ -852,7 +857,8 @@ void tst_qquickanimations::properties()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("properties2.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *myRect = rect->findChild<QQuickRectangle*>("TheRect");
@@ -864,7 +870,8 @@ void tst_qquickanimations::properties()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("properties3.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *myRect = rect->findChild<QQuickRectangle*>("TheRect");
@@ -876,7 +883,8 @@ void tst_qquickanimations::properties()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("properties4.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *myRect = rect->findChild<QQuickRectangle*>("TheRect");
@@ -889,7 +897,8 @@ void tst_qquickanimations::properties()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("properties5.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *myRect = rect->findChild<QQuickRectangle*>("TheRect");
@@ -906,7 +915,8 @@ void tst_qquickanimations::propertiesTransition()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("propertiesTransition.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickItemPrivate::get(rect)->setState("moved");
@@ -919,7 +929,8 @@ void tst_qquickanimations::propertiesTransition()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("propertiesTransition2.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *myRect = rect->findChild<QQuickRectangle*>("TheRect");
@@ -934,7 +945,8 @@ void tst_qquickanimations::propertiesTransition()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("propertiesTransition3.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *myRect = rect->findChild<QQuickRectangle*>("TheRect");
@@ -947,7 +959,8 @@ void tst_qquickanimations::propertiesTransition()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("propertiesTransition4.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *myRect = rect->findChild<QQuickRectangle*>("TheRect");
@@ -961,7 +974,8 @@ void tst_qquickanimations::propertiesTransition()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("propertiesTransition5.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *myRect = rect->findChild<QQuickRectangle*>("TheRect");
@@ -975,7 +989,8 @@ void tst_qquickanimations::propertiesTransition()
/*{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("propertiesTransition6.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *myRect = rect->findChild<QQuickRectangle*>("TheRect");
@@ -989,7 +1004,8 @@ void tst_qquickanimations::propertiesTransition()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("propertiesTransition7.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickItemPrivate::get(rect)->setState("moved");
@@ -1005,7 +1021,8 @@ void tst_qquickanimations::pathTransition()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("pathTransition.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *myRect = rect->findChild<QQuickRectangle*>("redRect");
@@ -1025,7 +1042,8 @@ void tst_qquickanimations::disabledTransition()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("disabledTransition.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *myRect = rect->findChild<QQuickRectangle*>("TheRect");
@@ -1053,12 +1071,12 @@ void tst_qquickanimations::disabledTransition()
void tst_qquickanimations::invalidDuration()
{
- QQuickPropertyAnimation *animation = new QQuickPropertyAnimation;
+ QScopedPointer<QQuickPropertyAnimation> animation(new QQuickPropertyAnimation);
QTest::ignoreMessage(QtWarningMsg, "<Unknown File>: QML PropertyAnimation: Cannot set a duration of < 0");
animation->setDuration(-1);
QCOMPARE(animation->duration(), 250);
- QQuickPauseAnimation *pauseAnimation = new QQuickPauseAnimation;
+ QScopedPointer<QQuickPauseAnimation> pauseAnimation(new QQuickPauseAnimation);
QTest::ignoreMessage(QtWarningMsg, "<Unknown File>: QML PauseAnimation: Cannot set a duration of < 0");
pauseAnimation->setDuration(-1);
QCOMPARE(pauseAnimation->duration(), 250);
@@ -1071,7 +1089,8 @@ void tst_qquickanimations::attached()
QQmlComponent c(&engine, testFileUrl("attached.qml"));
QTest::ignoreMessage(QtDebugMsg, "off");
QTest::ignoreMessage(QtDebugMsg, "on");
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
}
@@ -1082,7 +1101,8 @@ void tst_qquickanimations::propertyValueSourceDefaultStart()
QQmlComponent c(&engine, testFileUrl("valuesource.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickAbstractAnimation *myAnim = rect->findChild<QQuickAbstractAnimation*>("MyAnim");
@@ -1095,7 +1115,8 @@ void tst_qquickanimations::propertyValueSourceDefaultStart()
QQmlComponent c(&engine, testFileUrl("valuesource2.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickAbstractAnimation *myAnim = rect->findChild<QQuickAbstractAnimation*>("MyAnim");
@@ -1108,7 +1129,8 @@ void tst_qquickanimations::propertyValueSourceDefaultStart()
QQmlComponent c(&engine, testFileUrl("dontAutoStart.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickAbstractAnimation *myAnim = rect->findChild<QQuickAbstractAnimation*>("MyAnim");
@@ -1127,7 +1149,8 @@ void tst_qquickanimations::dontStart()
QString warning = c.url().toString() + ":14:13: QML NumberAnimation: setRunning() cannot be used on non-root animation nodes.";
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickAbstractAnimation *myAnim = rect->findChild<QQuickAbstractAnimation*>("MyAnim");
@@ -1142,7 +1165,8 @@ void tst_qquickanimations::dontStart()
QString warning = c.url().toString() + ":15:17: QML NumberAnimation: setRunning() cannot be used on non-root animation nodes.";
QTest::ignoreMessage(QtWarningMsg, qPrintable(warning));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickAbstractAnimation *myAnim = rect->findChild<QQuickAbstractAnimation*>("MyAnim");
@@ -1158,7 +1182,8 @@ void tst_qquickanimations::easingProperties()
QString componentStr = "import QtQuick 2.0\nNumberAnimation { easing.type: \"InOutQuad\" }";
QQmlComponent animationComponent(&engine);
animationComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile(""));
- QQuickPropertyAnimation *animObject = qobject_cast<QQuickPropertyAnimation*>(animationComponent.create());
+ QScopedPointer<QObject> obj(animationComponent.create());
+ auto *animObject = qobject_cast<QQuickPropertyAnimation *>(obj.data());
QVERIFY(animObject != nullptr);
QCOMPARE(animObject->easing().type(), QEasingCurve::InOutQuad);
@@ -1169,7 +1194,8 @@ void tst_qquickanimations::easingProperties()
QString componentStr = "import QtQuick 2.0\nPropertyAnimation { easing.type: \"OutBounce\"; easing.amplitude: 5.0 }";
QQmlComponent animationComponent(&engine);
animationComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile(""));
- QQuickPropertyAnimation *animObject = qobject_cast<QQuickPropertyAnimation*>(animationComponent.create());
+ QScopedPointer<QObject> obj(animationComponent.create());
+ auto *animObject = qobject_cast<QQuickPropertyAnimation *>(obj.data());
QVERIFY(animObject != nullptr);
QCOMPARE(animObject->easing().type(), QEasingCurve::OutBounce);
@@ -1181,7 +1207,8 @@ void tst_qquickanimations::easingProperties()
QString componentStr = "import QtQuick 2.0\nPropertyAnimation { easing.type: \"OutElastic\"; easing.amplitude: 5.0; easing.period: 3.0}";
QQmlComponent animationComponent(&engine);
animationComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile(""));
- QQuickPropertyAnimation *animObject = qobject_cast<QQuickPropertyAnimation*>(animationComponent.create());
+ QScopedPointer<QObject> obj(animationComponent.create());
+ auto *animObject = qobject_cast<QQuickPropertyAnimation *>(obj.data());
QVERIFY(animObject != nullptr);
QCOMPARE(animObject->easing().type(), QEasingCurve::OutElastic);
@@ -1194,7 +1221,8 @@ void tst_qquickanimations::easingProperties()
QString componentStr = "import QtQuick 2.0\nPropertyAnimation { easing.type: \"InOutBack\"; easing.overshoot: 2 }";
QQmlComponent animationComponent(&engine);
animationComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile(""));
- QQuickPropertyAnimation *animObject = qobject_cast<QQuickPropertyAnimation*>(animationComponent.create());
+ QScopedPointer<QObject> obj(animationComponent.create());
+ auto *animObject = qobject_cast<QQuickPropertyAnimation *>(obj.data());
QVERIFY(animObject != nullptr);
QCOMPARE(animObject->easing().type(), QEasingCurve::InOutBack);
@@ -1206,7 +1234,8 @@ void tst_qquickanimations::easingProperties()
QString componentStr = "import QtQuick 2.0\nPropertyAnimation { easing.type: \"Bezier\"; easing.bezierCurve: [0.5, 0.2, 0.13, 0.65, 1.0, 1.0] }";
QQmlComponent animationComponent(&engine);
animationComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile(""));
- QQuickPropertyAnimation *animObject = qobject_cast<QQuickPropertyAnimation*>(animationComponent.create());
+ QScopedPointer<QObject> obj(animationComponent.create());
+ auto *animObject = qobject_cast<QQuickPropertyAnimation *>(obj.data());
QVERIFY(animObject != nullptr);
QCOMPARE(animObject->easing().type(), QEasingCurve::BezierSpline);
@@ -1222,7 +1251,8 @@ void tst_qquickanimations::rotation()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("rotation.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *rr = rect->findChild<QQuickRectangle*>("rr");
@@ -1252,7 +1282,8 @@ void tst_qquickanimations::startStopSignals()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("signals.qml"));
- QQuickItem *root = qobject_cast<QQuickItem*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *root = qobject_cast<QQuickItem *>(obj.data());
QVERIFY(root);
QCOMPARE(root->property("startedCount").toInt(), 1); //autostart
@@ -1297,7 +1328,8 @@ void tst_qquickanimations::runningTrueBug()
//ensure we start correctly when "running: true" is explicitly set
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("runningTrueBug.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *cloud = rect->findChild<QQuickRectangle*>("cloud");
@@ -1312,7 +1344,8 @@ void tst_qquickanimations::pathAnimationInOutBackBug()
//ensure we don't pass bad progress value (out of [0,1]) to QQuickPath::backwardsPointAt()
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("pathAnimationInOutBackCrash.qml"));
- QQuickItem *item = qobject_cast<QQuickItem*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *item = qobject_cast<QQuickItem *>(obj.data());
QVERIFY(item);
QQuickRectangle *rect = item->findChild<QQuickRectangle *>("rect");
@@ -1330,7 +1363,8 @@ void tst_qquickanimations::nonTransitionBug()
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("nonTransitionBug.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect != nullptr);
QQuickItemPrivate *rectPrivate = QQuickItemPrivate::get(rect);
QQuickRectangle *mover = rect->findChild<QQuickRectangle*>("mover");
@@ -1356,7 +1390,8 @@ void tst_qquickanimations::registrationBug()
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("registrationBug.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect != nullptr);
QTRY_COMPARE(rect->property("value"), QVariant(int(100)));
}
@@ -1366,7 +1401,8 @@ void tst_qquickanimations::doubleRegistrationBug()
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("doubleRegistrationBug.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect != nullptr);
QQuickAbstractAnimation *anim = rect->findChild<QQuickAbstractAnimation*>("animation");
@@ -1407,7 +1443,8 @@ void tst_qquickanimations::transitionAssignmentBug()
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("transitionAssignmentBug.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect != nullptr);
QCOMPARE(rect->property("nullObject").toBool(), false);
@@ -1419,12 +1456,11 @@ void tst_qquickanimations::pauseBindingBug()
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("pauseBindingBug.qml"));
- QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect != nullptr);
QQuickAbstractAnimation *anim = rect->findChild<QQuickAbstractAnimation*>("animation");
QCOMPARE(anim->qtAnimation()->state(), QAbstractAnimationJob::Paused);
-
- delete rect;
}
//QTBUG-13598
@@ -1433,13 +1469,12 @@ void tst_qquickanimations::pauseBug()
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("pauseBug.qml"));
- QQuickAbstractAnimation *anim = qobject_cast<QQuickAbstractAnimation*>(c.create());
+ QScopedPointer<QObject> obj(c.create());
+ auto *anim = qobject_cast<QQuickAbstractAnimation*>(obj.data());
QVERIFY(anim != nullptr);
QCOMPARE(anim->qtAnimation()->state(), QAbstractAnimationJob::Paused);
QCOMPARE(anim->isPaused(), true);
QCOMPARE(anim->isRunning(), true);
-
- delete anim;
}
//QTBUG-23092
@@ -1448,7 +1483,7 @@ void tst_qquickanimations::loopingBug()
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("looping.qml"));
- QObject *obj = c.create();
+ QScopedPointer<QObject> obj(c.create());
QQuickAbstractAnimation *anim = obj->findChild<QQuickAbstractAnimation*>();
QVERIFY(anim != nullptr);
@@ -1460,8 +1495,6 @@ void tst_qquickanimations::loopingBug()
QQuickRectangle *rect = obj->findChild<QQuickRectangle*>();
QVERIFY(rect != nullptr);
QCOMPARE(rect->rotation(), qreal(90));
-
- delete obj;
}
//QTBUG-24532
@@ -1482,7 +1515,7 @@ void tst_qquickanimations::scriptActionBug()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("scriptActionBug.qml"));
- QObject *obj = c.create();
+ QScopedPointer<QObject> obj(c.create());
//Both the ScriptAction and StateChangeScript should be triggered
QCOMPARE(obj->property("actionTriggered").toBool(), true);
@@ -1496,20 +1529,16 @@ void tst_qquickanimations::groupAnimationNullChildBug()
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("sequentialAnimationNullChildBug.qml"));
- QQuickItem *root = qobject_cast<QQuickItem*>(c.create());
+ QScopedPointer<QObject> root(c.create());
QVERIFY(root);
-
- delete root;
}
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("parallelAnimationNullChildBug.qml"));
- QQuickItem *root = qobject_cast<QQuickItem*>(c.create());
+ QScopedPointer<QObject> root(c.create());
QVERIFY(root);
-
- delete root;
}
}
@@ -1518,12 +1547,10 @@ void tst_qquickanimations::scriptActionCrash()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("scriptActionCrash.qml"));
- QObject *obj = c.create();
+ QScopedPointer<QObject> obj(c.create());
//just testing that we don't crash
QTest::qWait(1000); //5x transition duration
-
- delete obj;
}
// QTBUG-49364
@@ -1534,12 +1561,10 @@ void tst_qquickanimations::animatorInvalidTargetCrash()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("animatorInvalidTargetCrash.qml"));
- QObject *obj = c.create();
+ QScopedPointer<QObject> obj(c.create());
//just testing that we don't crash
QTest::qWait(5000); //animator duration
-
- delete obj;
}
Q_DECLARE_METATYPE(QList<QQmlError>)
@@ -1555,7 +1580,8 @@ void tst_qquickanimations::defaultPropertyWarning()
QVERIFY(warnings.isValid());
QQmlComponent component(&engine, testFileUrl("defaultRotationAnimation.qml"));
- QScopedPointer<QQuickItem> root(qobject_cast<QQuickItem*>(component.create()));
+ QScopedPointer<QObject> obj(component.create());
+ auto *root = qobject_cast<QQuickItem *>(obj.data());
QVERIFY(root);
QVERIFY(warnings.isEmpty());
@@ -1566,7 +1592,8 @@ void tst_qquickanimations::pathSvgAnimation()
{
QQmlEngine engine;
QQmlComponent component(&engine, testFileUrl("pathSvgAnimation.qml"));
- QScopedPointer<QQuickRectangle> rect(qobject_cast<QQuickRectangle*>(component.create()));
+ QScopedPointer<QObject> obj(component.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *redRect = rect->findChild<QQuickRectangle*>();
@@ -1587,7 +1614,8 @@ void tst_qquickanimations::pathLineUnspecifiedXYBug()
{
QQmlEngine engine;
QQmlComponent component(&engine, testFileUrl("pathLineUnspecifiedXYBug.qml"));
- QScopedPointer<QQuickRectangle> rect(qobject_cast<QQuickRectangle*>(component.create()));
+ QScopedPointer<QObject> obj(component.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
QVERIFY(rect);
QQuickRectangle *redRect = rect->findChild<QQuickRectangle*>();
@@ -1623,7 +1651,8 @@ void tst_qquickanimations::finished()
{
QQmlEngine engine;
QQmlComponent component(&engine, testFileUrl("finished.qml"));
- QScopedPointer<QObject> root(component.create());
+ QScopedPointer<QObject> obj(component.create());
+ auto *root = qobject_cast<QQuickItem *>(obj.data());
QVERIFY(root);
// Test that finished() is emitted for a simple top-level animation.
@@ -1696,7 +1725,8 @@ void tst_qquickanimations::replacingTransitions()
{
QQmlEngine engine;
QQmlComponent c(&engine, testFileUrl("replacingTransitions.qml"));
- QScopedPointer<QQuickRectangle> rect(qobject_cast<QQuickRectangle*>(c.create()));
+ QScopedPointer<QObject> obj(c.create());
+ auto *rect = qobject_cast<QQuickRectangle*>(obj.data());
if (!c.errors().isEmpty())
qDebug() << c.errorString();
QVERIFY(rect);
@@ -1732,13 +1762,14 @@ void tst_qquickanimations::animationJobSelfDestruction()
QQmlEngine engine;
engine.clearComponentCache();
QQmlComponent c(&engine, testFileUrl("animationJobSelfDestructionBug.qml"));
- QScopedPointer<QQuickWindow> win(qobject_cast<QQuickWindow*>(c.create()));
+ QScopedPointer<QObject> obj(c.create());
+ auto *win = qobject_cast<QQuickWindow *>(obj.data());
if (!c.errors().isEmpty())
qDebug() << c.errorString();
QVERIFY(win);
win->setTitle(QTest::currentTestFunction());
win->show();
- QVERIFY(QTest::qWaitForWindowExposed(win.data()));
+ QVERIFY(QTest::qWaitForWindowExposed(win));
QQmlTimer *timer = win->property("timer").value<QQmlTimer*>();
QVERIFY(timer);
QCOMPARE(timer->isRunning(), false);
@@ -1752,13 +1783,14 @@ void tst_qquickanimations::fastFlickingBug()
QQmlEngine engine;
engine.clearComponentCache();
QQmlComponent c(&engine, testFileUrl("fastFlickingBug.qml"));
- QScopedPointer<QQuickWindow> win(qobject_cast<QQuickWindow*>(c.create()));
+ QScopedPointer<QObject> obj(c.create());
+ auto *win = qobject_cast<QQuickWindow *>(obj.data());
if (!c.errors().isEmpty())
qDebug() << c.errorString();
QVERIFY(win);
win->setTitle(QTest::currentTestFunction());
win->show();
- QVERIFY(QTest::qWaitForWindowExposed(win.data()));
+ QVERIFY(QTest::qWaitForWindowExposed(win));
auto timer = win->property("timer").value<QQmlTimer*>();
QVERIFY(timer);
QCOMPARE(timer->isRunning(), false);
diff --git a/tests/auto/quick/qquicklayouts/data/tst_gridlayout.qml b/tests/auto/quick/qquicklayouts/data/tst_gridlayout.qml
index e8b3960486..be94fca8d4 100644
--- a/tests/auto/quick/qquicklayouts/data/tst_gridlayout.qml
+++ b/tests/auto/quick/qquicklayouts/data/tst_gridlayout.qml
@@ -1073,5 +1073,38 @@ Item {
layout[propName] = data.value
compare(layout.spy.count, 1)
}
+
+ Component {
+ id: layout_columnIsOutsideGrid_Component
+ GridLayout {
+ columns: 2
+ Item {
+ Layout.row: 0
+ Layout.column: 1
+ }
+ Item {
+ implicitWidth: 10
+ implicitHeight: 10
+ Layout.row: 0
+ Layout.column: 2
+ }
+ Item {
+ Layout.columnSpan: 2
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+ }
+ }
+
+ function test_columnIsOutsideGrid()
+ {
+ ignoreWarning(/QML Item: Layout: column \(2\) should be less than the number of columns \(2\)/);
+ var layout = layout_columnIsOutsideGrid_Component.createObject(container);
+ layout.width = layout.implicitWidth
+ layout.height = layout.implicitHeight
+ waitForRendering(layout);
+ layout.destroy()
+ }
+
}
}
diff --git a/tests/auto/quick/qquicklistview/data/listview-initCurrent.qml b/tests/auto/quick/qquicklistview/data/listview-initCurrent.qml
index 8aff649a67..41d5bd3491 100644
--- a/tests/auto/quick/qquicklistview/data/listview-initCurrent.qml
+++ b/tests/auto/quick/qquicklistview/data/listview-initCurrent.qml
@@ -7,6 +7,7 @@ Rectangle {
property bool showHeader: false
property bool showFooter: false
property int currentItemChangedCount: 0
+ property string s: ""+list.currentIndex
width: 240
height: 320
diff --git a/tests/manual/nodetypes/Rects.qml b/tests/auto/quick/qquicklistview/data/moveObjectModelItemToAnotherObjectModel.qml
index 7f12d118dd..ebdebeb449 100644
--- a/tests/manual/nodetypes/Rects.qml
+++ b/tests/auto/quick/qquicklistview/data/moveObjectModelItemToAnotherObjectModel.qml
@@ -1,9 +1,9 @@
/****************************************************************************
**
-** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
-** This file is part of the demonstration applications of the Qt Toolkit.
+** This file is part of the test suite of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
@@ -48,100 +48,93 @@
**
****************************************************************************/
-import QtQuick 2.0
+import QtQuick 2.14
+import QtQml.Models 2.14
Item {
- Rectangle {
- width: 100
- height: 100
- anchors.centerIn: parent
- color: "red"
- NumberAnimation on rotation { from: 0; to: 360; duration: 2000; loops: Animation.Infinite; }
+ id: root
+ width: 400
+ height: 400
- Rectangle {
- color: "gray"
- width: 50
- height: 50
- anchors.centerIn: parent
+ readonly property int rectCount: 3
+ property var rectColors: ["red", "green", "blue"]
- SequentialAnimation on opacity {
- loops: Animation.Infinite
- NumberAnimation {
- from: 1.0
- to: 0.0
- duration: 4000
- }
- NumberAnimation {
- from: 0.0
- to: 1.0
- duration: 4000
- easing.type: Easing.InOutQuad
- }
- }
- }
+ property alias listView1: listView1
+ property alias listView2: listView2
+
+ function moveRedRectToModel2() {
+ var appItem = objectModel1.get(0)
+ objectModel1.remove(0, 1)
+ objectModel2.insert(0, appItem)
}
- Rectangle {
- color: "green"
- width: 100
- height: 200
- x: 0
- y: 0
+ function moveRedRectToModel1() {
+ var appItem = objectModel2.get(0)
+ objectModel2.remove(0, 1)
+ objectModel1.insert(0, appItem)
+ }
- NumberAnimation on x {
- from: 0
- to: 300
- duration: 5000
- }
- NumberAnimation on y {
- from: 0
- to: 50
- duration: 2000
- }
+ ObjectModel {
+ id: objectModel1
+ objectName: "objectModel1"
- clip: true
- Rectangle {
- color: "lightGreen"
- width: 50
- height: 50
- x: 75
- y: 175
+ Component.onCompleted: {
+ for (var i = 0; i < root.rectCount; i++) {
+ var outerRect = rectComponent.createObject(null, {
+ "objectName": root.rectColors[i] + "Rect",
+ "color": root.rectColors[i]
+ })
+ objectModel1.append(outerRect)
+ }
}
}
- Rectangle {
- color: "blue"
- width: 200
+ ObjectModel {
+ id: objectModel2
+ objectName: "objectModel2"
+ }
+
+ ListView {
+ id: listView1
+ objectName: "listView1"
+ anchors.left: parent.left
+ anchors.top: parent.top
height: 100
- x: 100
- y: 300
- radius: 16
- border.color: "red"
- border.width: 4
+ width: 100
+ anchors.margins: 20
+ clip: true
+ cacheBuffer: 0
+ model: objectModel1
+ orientation: ListView.Horizontal
+ spacing: 20
- SequentialAnimation on y {
- loops: Animation.Infinite
- NumberAnimation {
- from: 300
- to: 500
- duration: 7000
- }
- NumberAnimation {
- from: 500
- to: 300
- duration: 3000
- }
- }
+ Component.onCompleted: contentItem.objectName = "listView1ContentItem"
}
- Rectangle {
+ ListView {
+ id: listView2
+ objectName: "listView2"
anchors.right: parent.right
- width: 100
+ anchors.top: parent.top
height: 100
- gradient: Gradient {
- GradientStop { position: 0.0; color: "red" }
- GradientStop { position: 0.33; color: "yellow" }
- GradientStop { position: 1.0; color: "green" }
+ width: 100
+ anchors.margins: 20
+ clip: true
+ cacheBuffer: 0
+ model: objectModel2
+ orientation: ListView.Horizontal
+ spacing: 20
+
+ Component.onCompleted: contentItem.objectName = "listView2ContentItem"
+ }
+
+ Component {
+ id: rectComponent
+
+ Rectangle {
+ height: 100
+ width: 100
+ opacity: 0.2
}
}
}
diff --git a/tests/manual/nodetypes/Painter.qml b/tests/auto/quick/qquicklistview/data/reusedelegateitems.qml
index c5db3496f8..773fb50f81 100644
--- a/tests/manual/nodetypes/Painter.qml
+++ b/tests/auto/quick/qquicklistview/data/reusedelegateitems.qml
@@ -1,9 +1,9 @@
/****************************************************************************
**
-** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
-** This file is part of the demonstration applications of the Qt Toolkit.
+** This file is part of the test suite of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
@@ -47,47 +47,51 @@
** $QT_END_LICENSE$
**
****************************************************************************/
+import QtQuick 2.15
-import QtQuick 2.0
-import Stuff 1.0
+Rectangle {
+ id: root
+ width: 640
+ height: 480
-Item {
- ListModel {
- id: balloonModel
- ListElement {
- balloonWidth: 200
- }
- ListElement {
- balloonWidth: 120
- }
- ListElement {
- balloonWidth: 120
- }
- ListElement {
- balloonWidth: 120
- }
- ListElement {
- balloonWidth: 120
- }
- }
+ property int rows: 500
+ property int columns: 20
+ property real delegateHeight: 30
+ property real delegateWidth: 50
ListView {
+ id: list
anchors.fill: parent
anchors.margins: 10
- id: balloonView
- model: balloonModel
- spacing: 5
- delegate: TextBalloon {
- anchors.right: index % 2 == 0 ? undefined : parent.right
- height: 60
- rightAligned: index % 2 == 0 ? false : true
- width: balloonWidth
- innerAnim: model.index === 1
- NumberAnimation on width {
- from: 200
- to: 300
- duration: 5000
- running: model.index === 0
+ objectName: "list"
+
+ model: reuseModel
+ reuseItems: true
+
+ cacheBuffer: 0
+ contentWidth: columns * delegateWidth
+ contentHeight: rows * delegateHeight
+ clip: true
+
+ property int delegatesCreatedCount: 0
+
+ delegate: Item {
+ objectName: "delegate"
+ width: list.contentWidth
+ height: delegateHeight
+
+ property int modelIndex: index
+ property int reusedCount: 0
+ property int pooledCount: 0
+ property string displayBinding: display
+
+ ListView.onPooled: pooledCount++
+ ListView.onReused: reusedCount++
+ Component.onCompleted: list.delegatesCreatedCount++
+
+ Text {
+ id: text1
+ text: display + " (Model index: " + modelIndex + ", Reused count: " + reusedCount + ")"
}
}
}
diff --git a/tests/auto/quick/qquicklistview/qquicklistview.pro b/tests/auto/quick/qquicklistview/qquicklistview.pro
index b08fca2b1d..10edb06549 100644
--- a/tests/auto/quick/qquicklistview/qquicklistview.pro
+++ b/tests/auto/quick/qquicklistview/qquicklistview.pro
@@ -5,7 +5,8 @@ macx:CONFIG -= app_bundle
HEADERS += incrementalmodel.h \
proxytestinnermodel.h \
- randomsortmodel.h
+ randomsortmodel.h \
+ reusemodel.h
SOURCES += tst_qquicklistview.cpp \
incrementalmodel.cpp \
proxytestinnermodel.cpp \
diff --git a/tests/auto/quick/qquicklistview/reusemodel.h b/tests/auto/quick/qquicklistview/reusemodel.h
new file mode 100644
index 0000000000..21e6739384
--- /dev/null
+++ b/tests/auto/quick/qquicklistview/reusemodel.h
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef REUSEMODEL_H
+#define REUSEMODEL_H
+
+#include <QAbstractListModel>
+#include <QList>
+#include <QStringList>
+
+class ReuseModel : public QAbstractListModel
+{
+ Q_OBJECT
+
+public:
+ ReuseModel(int rowCount, QObject *parent = nullptr)
+ : QAbstractListModel(parent)
+ , m_rowCount(rowCount)
+ {}
+
+ int rowCount(const QModelIndex & = QModelIndex()) const override
+ {
+ return m_rowCount;
+ }
+
+ QVariant data(const QModelIndex &index, int role) const override
+ {
+ if (!index.isValid())
+ return QVariant();
+
+ switch (role) {
+ case Qt::DisplayRole:
+ return displayStringForRow(index.row());
+ default:
+ break;
+ }
+
+ return QVariant();
+ }
+
+ QString displayStringForRow(int row) const
+ {
+ return row % 2 == 0 ?
+ QStringLiteral("Even%1").arg(row) :
+ QStringLiteral("Odd%1").arg(row);
+ }
+
+ QHash<int, QByteArray> roleNames() const override
+ {
+ return {
+ {Qt::DisplayRole, "display"},
+ };
+ }
+
+private:
+ int m_rowCount;
+};
+
+#endif
diff --git a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
index fb5ae168e8..e527853148 100644
--- a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
+++ b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
@@ -49,6 +49,7 @@
#include "incrementalmodel.h"
#include "proxytestinnermodel.h"
#include "randomsortmodel.h"
+#include "reusemodel.h"
#include <math.h>
Q_DECLARE_METATYPE(Qt::LayoutDirection)
@@ -268,6 +269,7 @@ private slots:
void QTBUG_61269_appendDuringScrollDown_data();
void QTBUG_50097_stickyHeader_positionViewAtIndex();
void QTBUG_63974_stickyHeader_positionViewAtIndex_Contain();
+ void QTBUG_66163_setModelViewPortSizeChange();
void itemFiltered();
void releaseItems();
@@ -280,9 +282,14 @@ private slots:
void setPositionOnLayout();
void touchCancel();
void resizeAfterComponentComplete();
+ void dragOverFloatingHeaderOrFooter();
void delegateWithRequiredProperties();
+ void reuse_reuseIsOffByDefault();
+ void reuse_checkThatItemsAreReused();
+ void moveObjectModelItemToAnotherObjectModel();
+
private:
template <class T> void items(const QUrl &source);
template <class T> void changed(const QUrl &source);
@@ -2901,7 +2908,11 @@ void tst_QQuickListView::currentIndex()
// empty model should reset currentIndex to -1
QaimModel emptyModel;
+ window->rootObject()->setProperty("currentItemChangedCount", QVariant(0));
+ QVERIFY(QQmlProperty(window->rootObject(), "s").read().toString() != QLatin1String("-1"));
ctxt->setContextProperty("testModel", &emptyModel);
+ QCOMPARE(QQmlProperty(window->rootObject(), "s").read().toString(), "-1");
+ QCOMPARE(window->rootObject()->property("currentItemChangedCount").toInt(), 1);
QCOMPARE(listview->currentIndex(), -1);
delete window;
@@ -8855,6 +8866,62 @@ void tst_QQuickListView::QTBUG_63974_stickyHeader_positionViewAtIndex_Contain()
QTRY_COMPARE(listview->contentY(), -headerSize);
}
+void tst_QQuickListView::QTBUG_66163_setModelViewPortSizeChange()
+{
+ QScopedPointer<QQuickView> window(createView());
+ QQmlComponent comp(window->engine());
+ comp.setData(R"(
+ import QtQuick 2.0
+
+ Item {
+ id: root
+ width: 400
+ height: 400
+
+ ListView {
+ id: view
+ objectName: "view"
+ anchors.fill: parent
+
+ model: 4
+ highlightRangeMode: ListView.StrictlyEnforceRange
+
+ delegate: Rectangle {
+ color: index % 2 ? "green" : "orange"
+ width: parent.width
+ height: 50
+ }
+
+ populate: Transition {
+ SequentialAnimation {
+ NumberAnimation { property: "y"; from: 100; duration: 1000 }
+ }
+ }
+ }
+ }
+ )", QUrl("testData"));
+ auto root {qobject_cast<QQuickItem*>(comp.create())};
+ QVERIFY(root);
+ window->setContent(QUrl(), &comp, root);
+ window->show();
+ QVERIFY(QTest::qWaitForWindowExposed(window.data()));
+ auto view = root->findChild<QQuickListView *>("view");
+ QVERIFY(view);
+ QVERIFY(QQuickTest::qWaitForItemPolished(view));
+ QSignalSpy spy(view, &QQuickListView::contentYChanged);
+ auto transition = view->property("populate").value<QQuickTransition*>();
+ QVERIFY(transition);
+ QQmlProperty model(view, "model");
+ QVERIFY(model.isValid());
+ model.write(5);
+ // Animations inside a Transition do not emit a finished signal
+ // so we cannot wait for them in that way
+ QTest::qWait(1100); // animation takes 1000ms, + 10% extra delay
+ /* the viewport should not have changed, thus there should not have
+ been any contentYChanged signal*/
+ QCOMPARE(spy.count(), 0);
+}
+
void tst_QQuickListView::itemFiltered()
{
QStringListModel model(QStringList() << "one" << "two" << "three" << "four" << "five" << "six");
@@ -9158,6 +9225,196 @@ void tst_QQuickListView::delegateWithRequiredProperties()
}
}
+void tst_QQuickListView::reuse_reuseIsOffByDefault()
+{
+ // Check that delegate recycling is off by default. The reason is that
+ // ListView needs to be backwards compatible with legacy applications. And
+ // when using delegate recycling, there are certain differences, like that
+ // a delegates Component.onCompleted will just be called the first time the
+ // item is created, and not when it's reused.
+ QScopedPointer<QQuickView> window(createView());
+ window->setSource(testFileUrl("listviewtest.qml"));
+ window->resize(640, 480);
+ window->show();
+ QVERIFY(QTest::qWaitForWindowExposed(window.data()));
+
+ QQuickListView *listView = findItem<QQuickListView>(window->rootObject(), "list");
+ QVERIFY(listView != nullptr);
+ QVERIFY(!listView->reuseItems());
+}
+
+void tst_QQuickListView::reuse_checkThatItemsAreReused()
+{
+ // Flick up and down one page of items. Check that this results in the
+ // delegate items being reused once.
+ // Note that this is slightly different from tableview, which will reuse the items
+ // twice during a similar down-then-up flick. The reason is that listview fills up
+ // free space in the view with items _before_ it release old items that have been
+ // flicked out. But changing this will break other auto tests (and perhaps legacy
+ // apps), so we have chosen to stick with this behavior for now.
+ QScopedPointer<QQuickView> window(createView());
+
+ ReuseModel model(100);
+ QQmlContext *ctxt = window->rootContext();
+ ctxt->setContextProperty("reuseModel", &model);
+
+ window->setSource(testFileUrl("reusedelegateitems.qml"));
+ window->resize(640, 480);
+ window->show();
+ QVERIFY(QTest::qWaitForWindowExposed(window.data()));
+
+ QQuickListView *listView = findItem<QQuickListView>(window->rootObject(), "list");
+ QTRY_VERIFY(listView != nullptr);
+ const auto itemView_d = QQuickItemViewPrivate::get(listView);
+
+ QVERIFY(listView->reuseItems());
+
+ auto items = findItems<QQuickItem>(listView, "delegate");
+ const int initialItemCount = items.count();
+ QVERIFY(initialItemCount > 0);
+
+ // Sanity check that the size of the initial list of items match the count we tracked from QML
+ QCOMPARE(listView->property("delegatesCreatedCount").toInt(), initialItemCount);
+
+ // Go through all the initial items and check that they have not been reused yet
+ for (const auto item : qAsConst(items))
+ QCOMPARE(item->property("reusedCount").toInt(), 0);
+
+ // Flick one page down and count how many items we have created thus
+ // far. We expect this number to be twice as high as the initial count
+ // since we flicked one whole page.
+ const qreal delegateHeight = items.at(0)->height();
+ const qreal flickDistance = (initialItemCount * delegateHeight) + 1;
+ listView->setContentY(flickDistance);
+ QVERIFY(QQuickTest::qWaitForItemPolished(listView));
+ const int countAfterDownFlick = listView->property("delegatesCreatedCount").toInt();
+ QCOMPARE(countAfterDownFlick, initialItemCount * 2);
+
+ // Check that the reuse pool is now populated. We expect all initial items to be pooled,
+ // except model index 0, which was never reused or released, since it's ListView.currentItem.
+ const int poolSizeAfterDownFlick = itemView_d->model->poolSize();
+ QCOMPARE(poolSizeAfterDownFlick, initialItemCount - 1);
+
+ // Go through all items and check that all model data inside the delegate
+ // have values updated according to their model index. Since model roles
+ // like 'display' are injected into the context in a special way by the
+ // QML model classes, we need to catch it through a binding instead (which is
+ // OK, since then we can also check that bindings are updated when reused).
+ items = findItems<QQuickItem>(listView, "delegate");
+ for (const auto item : qAsConst(items)) {
+ const QString display = item->property("displayBinding").toString();
+ const int modelIndex = item->property("modelIndex").toInt();
+ QVERIFY(modelIndex >= initialItemCount);
+ QCOMPARE(display, model.displayStringForRow(modelIndex));
+ }
+
+ // Flick one page up. This time there shouldn't be any new items created, so
+ // delegatesCreatedCount should remain unchanged. But while we reuse all the items
+ // in the pool during the flick, we also fill it up again with all the items that
+ // were inside the page that was flicked out.
+ listView->setContentY(0);
+ QVERIFY(QQuickTest::qWaitForItemPolished(listView));
+ const int countAfterUpFlick = listView->property("delegatesCreatedCount").toInt();
+ const int poolSizeAfterUpFlick = itemView_d->model->poolSize();
+ QCOMPARE(countAfterUpFlick, countAfterDownFlick);
+ QCOMPARE(poolSizeAfterUpFlick, initialItemCount);
+
+ // Go through all items and check that they have been reused exactly once
+ // (except for ListView.currentItem, which was never released).
+ const auto listViewCurrentItem = listView->currentItem();
+ items = findItems<QQuickItem>(listView, "delegate");
+ for (const auto item : qAsConst(items)) {
+ const int reusedCount = item->property("reusedCount").toInt();
+ if (item == listViewCurrentItem)
+ QCOMPARE(reusedCount, 0);
+ else
+ QCOMPARE(reusedCount, 1);
+ }
+
+ // Go through all items again and check that all model data inside the delegate
+ // have correct values now that they have been reused.
+ items = findItems<QQuickItem>(listView, "delegate");
+ for (const auto item : qAsConst(items)) {
+ const QString display = item->property("displayBinding").toString();
+ const int modelIndex = item->property("modelIndex").toInt();
+ QVERIFY(modelIndex < initialItemCount);
+ QCOMPARE(display, model.displayStringForRow(modelIndex));
+ }
+}
+
+void tst_QQuickListView::dragOverFloatingHeaderOrFooter() // QTBUG-74046
+{
+ QQuickView *window = getView();
+ QQuickViewTestUtil::moveMouseAway(window);
+ window->setSource(testFileUrl("qtbug63974.qml"));
+ window->show();
+ QVERIFY(QTest::qWaitForWindowExposed(window));
+
+ QQuickListView *listview = qmlobject_cast<QQuickListView *>(window->rootObject());
+ QVERIFY(listview);
+ QCOMPARE(listview->contentY(), -20);
+
+ // Drag downwards from the header: the list shouldn't move
+ QTest::mousePress(window, Qt::LeftButton, Qt::NoModifier, QPoint(10,10));
+ for (int i = 0; i < 10; ++i)
+ QTest::mouseMove(window, QPoint(10, 10 + i * 10));
+ QCOMPARE(listview->isMoving(), false);
+ QCOMPARE(listview->contentY(), -20);
+ QTest::mouseRelease(window, Qt::LeftButton, Qt::NoModifier);
+
+ // Drag upwards from the footer: the list shouldn't move
+ QTest::mousePress(window, Qt::LeftButton, Qt::NoModifier, QPoint(10,190));
+ for (int i = 0; i < 10; ++i)
+ QTest::mouseMove(window, QPoint(10, 190 - i * 10));
+ QCOMPARE(listview->isMoving(), false);
+ QCOMPARE(listview->contentY(), -20);
+ QTest::mouseRelease(window, Qt::LeftButton, Qt::NoModifier);
+
+ // Drag upwards from the middle: the list should move
+ QTest::mousePress(window, Qt::LeftButton, Qt::NoModifier, QPoint(10,100));
+ for (int i = 0; i < 10 && listview->contentY() == -20; ++i)
+ QTest::mouseMove(window, QPoint(10, 100 - i * 10));
+ QVERIFY(listview->isMoving());
+ QVERIFY(listview->contentY() > -20);
+ QTest::mouseRelease(window, Qt::LeftButton, Qt::NoModifier);
+
+ releaseView(window);
+}
+
+void tst_QQuickListView::moveObjectModelItemToAnotherObjectModel()
+{
+ QScopedPointer<QQuickView> window(createView());
+ window->setSource(testFileUrl("moveObjectModelItemToAnotherObjectModel.qml"));
+ QCOMPARE(window->status(), QQuickView::Ready);
+ window->show();
+ QVERIFY(QTest::qWaitForWindowExposed(window.data()));
+
+ QObject *root = window->rootObject();
+ QVERIFY(root);
+
+ const QQuickListView *listView1 = root->property("listView1").value<QQuickListView*>();
+ QVERIFY(listView1);
+
+ const QQuickListView *listView2 = root->property("listView2").value<QQuickListView*>();
+ QVERIFY(listView2);
+
+ const QQuickItem *redRect = listView1->itemAtIndex(0);
+ QVERIFY(redRect);
+ QCOMPARE(redRect->objectName(), QString::fromLatin1("redRect"));
+
+ QVERIFY(QMetaObject::invokeMethod(root, "moveRedRectToModel2"));
+ QVERIFY(QQuickTest::qIsPolishScheduled(listView2));
+ QVERIFY(QQuickTest::qWaitForItemPolished(listView2));
+ QVERIFY(redRect->isVisible());
+ QVERIFY(!QQuickItemPrivate::get(redRect)->culled);
+
+ QVERIFY(QMetaObject::invokeMethod(root, "moveRedRectToModel1"));
+ QVERIFY(QQuickTest::qIsPolishScheduled(listView1));
+ QVERIFY(QQuickTest::qWaitForItemPolished(listView1));
+ QVERIFY(redRect->isVisible());
+ QVERIFY(!QQuickItemPrivate::get(redRect)->culled);
+}
+
QTEST_MAIN(tst_QQuickListView)
#include "tst_qquicklistview.moc"
diff --git a/tests/auto/quick/qquickmousearea/BLACKLIST b/tests/auto/quick/qquickmousearea/BLACKLIST
deleted file mode 100644
index f2cb00225b..0000000000
--- a/tests/auto/quick/qquickmousearea/BLACKLIST
+++ /dev/null
@@ -1,4 +0,0 @@
-# QTBUG-78153
-[nestedStopAtBounds]
-opensuse-leap
-
diff --git a/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp b/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
index 54a29dbc7f..6efa2e6b3a 100644
--- a/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
+++ b/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
@@ -717,7 +717,7 @@ void tst_QQuickMouseArea::updateMouseAreaPosOnClick()
QCOMPARE(mouseRegion->mouseX(), rect->x());
QCOMPARE(mouseRegion->mouseY(), rect->y());
- QMouseEvent event(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, nullptr);
+ QMouseEvent event(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, {});
QGuiApplication::sendEvent(&window, &event);
QCOMPARE(mouseRegion->mouseX(), 100.0);
@@ -745,7 +745,7 @@ void tst_QQuickMouseArea::updateMouseAreaPosOnResize()
QCOMPARE(mouseRegion->mouseX(), 0.0);
QCOMPARE(mouseRegion->mouseY(), 0.0);
- QMouseEvent event(QEvent::MouseButtonPress, rect->position().toPoint(), Qt::LeftButton, Qt::LeftButton, nullptr);
+ QMouseEvent event(QEvent::MouseButtonPress, rect->position().toPoint(), Qt::LeftButton, Qt::LeftButton, {});
QGuiApplication::sendEvent(&window, &event);
QVERIFY(!mouseRegion->property("emitPositionChanged").toBool());
@@ -774,7 +774,7 @@ void tst_QQuickMouseArea::noOnClickedWithPressAndHold()
QQuickMouseArea *mouseArea = qobject_cast<QQuickMouseArea*>(window.rootObject()->children().first());
QVERIFY(mouseArea);
- QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, nullptr);
+ QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, {});
QGuiApplication::sendEvent(&window, &pressEvent);
QCOMPARE(mouseArea->pressedButtons(), Qt::LeftButton);
@@ -788,7 +788,7 @@ void tst_QQuickMouseArea::noOnClickedWithPressAndHold()
QVERIFY(!window.rootObject()->property("clicked").toBool());
QVERIFY(window.rootObject()->property("held").toBool());
- QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, nullptr);
+ QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, {});
QGuiApplication::sendEvent(&window, &releaseEvent);
QTRY_VERIFY(window.rootObject()->property("held").toBool());
@@ -804,14 +804,14 @@ void tst_QQuickMouseArea::noOnClickedWithPressAndHold()
QVERIFY(QTest::qWaitForWindowExposed(&window));
QVERIFY(window.rootObject() != nullptr);
- QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, nullptr);
+ QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, {});
QGuiApplication::sendEvent(&window, &pressEvent);
QVERIFY(!window.rootObject()->property("clicked").toBool());
QTest::qWait(1000);
- QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, nullptr);
+ QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, {});
QGuiApplication::sendEvent(&window, &releaseEvent);
QVERIFY(window.rootObject()->property("clicked").toBool());
@@ -835,7 +835,7 @@ void tst_QQuickMouseArea::onMousePressRejected()
QVERIFY(!window.rootObject()->property("mr2_released").toBool());
QVERIFY(!window.rootObject()->property("mr2_canceled").toBool());
- QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, nullptr);
+ QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, {});
QGuiApplication::sendEvent(&window, &pressEvent);
QVERIFY(window.rootObject()->property("mr1_pressed").toBool());
@@ -847,7 +847,7 @@ void tst_QQuickMouseArea::onMousePressRejected()
QTest::qWait(200);
- QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, nullptr);
+ QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, {});
QGuiApplication::sendEvent(&window, &releaseEvent);
QVERIFY(window.rootObject()->property("mr1_released").toBool());
@@ -882,8 +882,8 @@ void tst_QQuickMouseArea::pressedCanceledOnWindowDeactivate()
QCOMPARE(window.rootObject()->property("clicked").toInt(), expectedClicks);
- QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, nullptr);
- QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, nullptr);
+ QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, {});
+ QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, {});
QGuiApplication::sendEvent(&window, &pressEvent);
@@ -900,7 +900,7 @@ void tst_QQuickMouseArea::pressedCanceledOnWindowDeactivate()
QCOMPARE(window.rootObject()->property("clicked").toInt(), ++expectedClicks);
QGuiApplication::sendEvent(&window, &pressEvent);
- QMouseEvent pressEvent2(QEvent::MouseButtonDblClick, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, nullptr);
+ QMouseEvent pressEvent2(QEvent::MouseButtonDblClick, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, {});
QGuiApplication::sendEvent(&window, &pressEvent2);
QTRY_VERIFY(window.rootObject()->property("pressed").toBool());
@@ -953,16 +953,16 @@ void tst_QQuickMouseArea::doubleClick()
// The sequence for a double click is:
// press, release, (click), press, double click, release
- QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), button, button, nullptr);
+ QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), button, button, {});
QGuiApplication::sendEvent(&window, &pressEvent);
- QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), button, button, nullptr);
+ QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), button, button, {});
QGuiApplication::sendEvent(&window, &releaseEvent);
QCOMPARE(window.rootObject()->property("released").toInt(), 1);
QGuiApplication::sendEvent(&window, &pressEvent);
- pressEvent = QMouseEvent(QEvent::MouseButtonDblClick, QPoint(100, 100), button, button, nullptr);
+ pressEvent = QMouseEvent(QEvent::MouseButtonDblClick, QPoint(100, 100), button, button, {});
QGuiApplication::sendEvent(&window, &pressEvent);
QGuiApplication::sendEvent(&window, &releaseEvent);
@@ -988,10 +988,10 @@ void tst_QQuickMouseArea::clickTwice()
QVERIFY(mouseArea);
mouseArea->setAcceptedButtons(acceptedButtons);
- QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), button, button, nullptr);
+ QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), button, button, {});
QGuiApplication::sendEvent(&window, &pressEvent);
- QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), button, button, nullptr);
+ QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), button, button, {});
QGuiApplication::sendEvent(&window, &releaseEvent);
QCOMPARE(window.rootObject()->property("pressed").toInt(), 1);
@@ -999,7 +999,7 @@ void tst_QQuickMouseArea::clickTwice()
QCOMPARE(window.rootObject()->property("clicked").toInt(), 1);
QGuiApplication::sendEvent(&window, &pressEvent);
- pressEvent = QMouseEvent(QEvent::MouseButtonDblClick, QPoint(100, 100), button, button, nullptr);
+ pressEvent = QMouseEvent(QEvent::MouseButtonDblClick, QPoint(100, 100), button, button, {});
QGuiApplication::sendEvent(&window, &pressEvent);
QGuiApplication::sendEvent(&window, &releaseEvent);
@@ -1026,16 +1026,16 @@ void tst_QQuickMouseArea::invalidClick()
// The sequence for a double click is:
// press, release, (click), press, double click, release
- QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), button, button, nullptr);
+ QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), button, button, {});
QGuiApplication::sendEvent(&window, &pressEvent);
- QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), button, button, nullptr);
+ QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), button, button, {});
QGuiApplication::sendEvent(&window, &releaseEvent);
QCOMPARE(window.rootObject()->property("released").toInt(), 0);
QGuiApplication::sendEvent(&window, &pressEvent);
- pressEvent = QMouseEvent(QEvent::MouseButtonDblClick, QPoint(100, 100), button, button, nullptr);
+ pressEvent = QMouseEvent(QEvent::MouseButtonDblClick, QPoint(100, 100), button, button, {});
QGuiApplication::sendEvent(&window, &pressEvent);
QGuiApplication::sendEvent(&window, &releaseEvent);
@@ -1055,12 +1055,12 @@ void tst_QQuickMouseArea::pressedOrdering()
QCOMPARE(window.rootObject()->property("value").toString(), QLatin1String("base"));
- QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, nullptr);
+ QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, {});
QGuiApplication::sendEvent(&window, &pressEvent);
QCOMPARE(window.rootObject()->property("value").toString(), QLatin1String("pressed"));
- QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, nullptr);
+ QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(100, 100), Qt::LeftButton, Qt::LeftButton, {});
QGuiApplication::sendEvent(&window, &releaseEvent);
QCOMPARE(window.rootObject()->property("value").toString(), QLatin1String("toggled"));
@@ -1319,13 +1319,13 @@ void tst_QQuickMouseArea::hoverPropagation()
QCOMPARE(root->property("point1").toBool(), false);
QCOMPARE(root->property("point2").toBool(), false);
- QMouseEvent moveEvent(QEvent::MouseMove, QPoint(32, 32), Qt::NoButton, Qt::NoButton, nullptr);
+ QMouseEvent moveEvent(QEvent::MouseMove, QPoint(32, 32), Qt::NoButton, Qt::NoButton, {});
QGuiApplication::sendEvent(&window, &moveEvent);
QCOMPARE(root->property("point1").toBool(), true);
QCOMPARE(root->property("point2").toBool(), false);
- QMouseEvent moveEvent2(QEvent::MouseMove, QPoint(232, 32), Qt::NoButton, Qt::NoButton, nullptr);
+ QMouseEvent moveEvent2(QEvent::MouseMove, QPoint(232, 32), Qt::NoButton, Qt::NoButton, {});
QGuiApplication::sendEvent(&window, &moveEvent2);
QCOMPARE(root->property("point1").toBool(), false);
QCOMPARE(root->property("point2").toBool(), true);
@@ -1887,7 +1887,7 @@ void tst_QQuickMouseArea::nestedStopAtBounds()
QTest::mouseMove(&view, position);
axis += invert ? threshold : -threshold;
QTest::mouseMove(&view, position);
- QCOMPARE(outer->drag()->active(), true);
+ QTRY_COMPARE(outer->drag()->active(), true);
QCOMPARE(inner->drag()->active(), false);
QTest::mouseRelease(&view, Qt::LeftButton, Qt::NoModifier, position);
diff --git a/tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp b/tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp
index e96b892b54..c18a220996 100644
--- a/tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp
+++ b/tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp
@@ -31,12 +31,15 @@
#include <private/qquickmultipointtoucharea_p.h>
#include <private/qquickflickable_p.h>
#include <private/qquickmousearea_p.h>
+#include <private/qquickwindow_p.h>
#include <qpa/qwindowsysteminterface.h>
#include <QtQuick/qquickview.h>
#include <QtGui/QScreen>
#include "../../shared/util.h"
#include "../shared/viewtestutil.h"
+Q_LOGGING_CATEGORY(lcTests, "qt.quick.tests")
+
class tst_QQuickMultiPointTouchArea : public QQmlDataTest
{
Q_OBJECT
@@ -62,6 +65,7 @@ private slots:
void nested();
void inFlickable();
void inFlickable2();
+ void inFlickableWithPressDelay();
void inMouseArea();
void mouseAsTouchpoint();
void invisible();
@@ -812,6 +816,68 @@ void tst_QQuickMultiPointTouchArea::inFlickable2()
QTRY_VERIFY(!flickable->isMoving());
}
+void tst_QQuickMultiPointTouchArea::inFlickableWithPressDelay() // QTBUG-78818
+{
+ const int dragThreshold = QGuiApplication::styleHints()->startDragDistance();
+ QScopedPointer<QQuickView> window(createAndShowView("inFlickable.qml"));
+ QVERIFY(window->rootObject() != nullptr);
+ QQuickWindowPrivate *windowPriv = QQuickWindowPrivate::get(window.data());
+
+ QQuickFlickable *flickable = qobject_cast<QQuickFlickable *>(window->rootObject());
+ QVERIFY(flickable != nullptr);
+ flickable->setPressDelay(50);
+
+ QQuickMultiPointTouchArea *mpta = window->rootObject()->findChild<QQuickMultiPointTouchArea*>();
+ QVERIFY(mpta != nullptr);
+ mpta->setMinimumTouchPoints(1);
+ QQuickTouchPoint *point11 = window->rootObject()->findChild<QQuickTouchPoint*>("point1");
+ QPoint p1(20,100);
+
+ // press: Flickable prevents delivery of TouchBegin, but sends mouse press instead, after the delay.
+ // MPTA handles the mouse press, and its first declared touchpoint is pressed.
+ QTest::touchEvent(window.data(), device).press(0, p1);
+ QQuickTouchUtils::flush(window.data());
+ QTRY_COMPARE(point11->pressed(), true);
+ auto pointerEvent = windowPriv->pointerEventInstance(QQuickPointerDevice::touchDevices().at(0));
+ QCOMPARE(pointerEvent->point(0)->exclusiveGrabber(), mpta);
+
+ // release: MPTA receives TouchEnd (which is asymmetric with mouse press); does NOT emit canceled.
+ QTest::touchEvent(window.data(), device).release(0, p1);
+ QQuickTouchUtils::flush(window.data());
+ QCOMPARE(flickable->property("cancelCount").toInt(), 0);
+
+ // press again
+ QTest::touchEvent(window.data(), device).press(0, p1);
+ QQuickTouchUtils::flush(window.data());
+ QTRY_COMPARE(point11->pressed(), true); // wait until pressDelay exceeded
+ QCOMPARE(pointerEvent->point(0)->exclusiveGrabber(), mpta);
+
+ // drag past the threshold: Flickable takes over the grab, MPTA gets touchUngrab and is no longer pressed
+ int i = 0;
+ for (; i < 10 && window->mouseGrabberItem() != flickable; ++i) {
+ p1 += QPoint(0,dragThreshold);
+ QTest::touchEvent(window.data(), device).move(0, p1);
+ QQuickTouchUtils::flush(window.data());
+ }
+ QCOMPARE(window->mouseGrabberItem(), flickable);
+ qCDebug(lcTests, "Flickable stole grab from MPTA after %d moves", i);
+ QCOMPARE(pointerEvent->point(0)->exclusiveGrabber(), flickable);
+ QCOMPARE(point11->pressed(), false);
+ QVERIFY(flickable->property("cancelCount").toInt() > 0); // actually 2 because 2 touchPoints are declared... but only one was really cancelled
+
+ // drag a little more and the Flickable moves
+ p1 += QPoint(0,1);
+ QTest::touchEvent(window.data(), device).move(0, p1);
+ QQuickTouchUtils::flush(window.data());
+ QVERIFY(flickable->contentY() < 0);
+ QVERIFY(flickable->isMoving());
+
+ QTest::touchEvent(window.data(), device).release(0, p1);
+ QQuickTouchUtils::flush(window.data());
+
+ QTRY_VERIFY(!flickable->isMoving());
+}
+
// QTBUG-31047
void tst_QQuickMultiPointTouchArea::inMouseArea()
{
diff --git a/tests/auto/quick/qquickpathview/data/ungrabNestedinFlickable.qml b/tests/auto/quick/qquickpathview/data/ungrabNestedinFlickable.qml
new file mode 100644
index 0000000000..4258d8fef4
--- /dev/null
+++ b/tests/auto/quick/qquickpathview/data/ungrabNestedinFlickable.qml
@@ -0,0 +1,75 @@
+import QtQuick 2.9
+
+Flickable {
+ width: 480
+ height: 480
+ contentX: 0
+ contentWidth: width
+ contentHeight: height
+ leftMargin: 408
+ rightMargin: 36
+ maximumFlickVelocity: 0
+ boundsBehavior: Flickable.StopAtBounds
+ flickableDirection: Flickable.HorizontalFlick
+
+ PathView {
+ id:pathView
+ objectName: "pathView"
+
+ property int countclick: 0
+
+ readonly property int contentsWidth: 348
+ readonly property int contentsHeight: 480
+
+ width: contentsWidth
+ height: contentsHeight
+
+ interactive: true
+
+ cacheItemCount: 10
+ currentIndex: 2
+ pathItemCount: 4
+ highlightMoveDuration: 300
+ highlightRangeMode : PathView.StrictlyEnforceRange
+ preferredHighlightBegin: 0.5
+ preferredHighlightEnd: 0.5
+ snapMode : PathView.SnapOneItem
+
+ path: Path {
+ startX: pathView.contentsWidth / 2 - 800
+ startY: pathView.contentsHeight / 2 - 800
+
+ PathArc {
+ x: pathView.contentsWidth / 2 - 800
+ y: pathView.contentsHeight / 2 + 800
+ radiusX: 800
+ radiusY: 800
+ direction: PathArc.Clockwise
+ }
+ }
+
+ model: ListModel {
+ ListElement { objectName:"aqua"; name: "aqua" ;mycolor:"aqua"}
+ ListElement { objectName:"blue"; name: "blue" ;mycolor:"blue"}
+ ListElement { objectName:"blueviolet"; name: "blueviolet" ;mycolor:"blueviolet"}
+ ListElement { objectName:"brown"; name: "brown" ;mycolor:"brown"}
+ ListElement { objectName:"chartreuse"; name: "chartreuse" ;mycolor:"chartreuse"}
+ }
+
+ delegate: Item {
+ id: revolveritem
+ objectName: model.objectName
+
+ width: pathView.contentsWidth
+ height: pathView.contentsHeight
+
+ Rectangle
+ {
+ id:myRectangle
+ color: mycolor
+ width: pathView.contentsWidth -20
+ height: pathView.contentsHeight -20
+ }
+ }
+ }
+}
diff --git a/tests/auto/quick/qquickpathview/tst_qquickpathview.cpp b/tests/auto/quick/qquickpathview/tst_qquickpathview.cpp
index a8e847a5c7..8ba09fa509 100644
--- a/tests/auto/quick/qquickpathview/tst_qquickpathview.cpp
+++ b/tests/auto/quick/qquickpathview/tst_qquickpathview.cpp
@@ -140,6 +140,7 @@ private slots:
void cacheItemCount();
void changePathDuringRefill();
void nestedinFlickable();
+ void ungrabNestedinFlickable();
void flickableDelegate();
void jsArrayChange();
void qtbug37815();
@@ -2413,6 +2414,40 @@ void tst_QQuickPathView::nestedinFlickable()
}
+void tst_QQuickPathView::ungrabNestedinFlickable()
+{
+ QScopedPointer<QQuickView> window(createView());
+ QQuickViewTestUtil::moveMouseAway(window.data());
+ window->setSource(testFileUrl("ungrabNestedinFlickable.qml"));
+ window->show();
+ window->requestActivate();
+ QVERIFY(QTest::qWaitForWindowActive(window.data()));
+ QCOMPARE(window.data(), qGuiApp->focusWindow());
+
+ QQuickPathView *pathview = findItem<QQuickPathView>(window->rootObject(), "pathView");
+ QVERIFY(pathview != nullptr);
+
+ double pathviewOffsetBefore = pathview->offset();
+
+ // Drag slowly upwards so that it does not flick, release, and let it start snapping back
+ QTest::mousePress(window.data(), Qt::LeftButton, 0, QPoint(200, 350));
+ for (int i = 0; i < 4; ++i)
+ QTest::mouseMove(window.data(), QPoint(200, 325 - i * 25), 500);
+ QTest::mouseRelease(window.data(), Qt::LeftButton, 0, QPoint(200, 250));
+ QCOMPARE(pathview->isMoving(), true);
+
+ // Press again to stop moving
+ QTest::mousePress(window.data(), Qt::LeftButton, 0, QPoint(200, 350));
+ QTRY_COMPARE(pathview->isMoving(), false);
+
+ // Cancel the grab, wait for movement to stop, and expect it to snap to
+ // the nearest delegate, which should be at the same offset as where we started
+ pathview->ungrabMouse();
+ QTRY_COMPARE(pathview->offset(), pathviewOffsetBefore);
+ QCOMPARE(pathview->isMoving(), false);
+ QTest::mouseRelease(window.data(), Qt::LeftButton, 0, QPoint(200, 350));
+}
+
void tst_QQuickPathView::flickableDelegate()
{
QScopedPointer<QQuickView> window(createView());
diff --git a/tests/auto/quick/qquickpixmapcache/data/asynchronousNoCache.qml b/tests/auto/quick/qquickpixmapcache/data/asynchronousNoCache.qml
new file mode 100644
index 0000000000..5331be5a15
--- /dev/null
+++ b/tests/auto/quick/qquickpixmapcache/data/asynchronousNoCache.qml
@@ -0,0 +1,17 @@
+import QtQuick 2.12
+
+Item {
+ visible: true
+ width: 640
+ height: 480
+
+ Image{
+ asynchronous: true
+ anchors.fill: parent
+ fillMode: Image.Stretch
+ source: "exists1.png"
+ cache: false
+ sourceSize.width: width/2
+ sourceSize.height: height/2
+ }
+}
diff --git a/tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp b/tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp
index bffaaf7c6e..88cf6ece96 100644
--- a/tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp
+++ b/tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp
@@ -30,6 +30,7 @@
#include <QtQuick/private/qquickpixmapcache_p.h>
#include <QtQml/qqmlengine.h>
#include <QtQuick/qquickimageprovider.h>
+#include <QtQml/QQmlComponent>
#include <QNetworkReply>
#include "../../shared/util.h"
#include "testhttpserver.h"
@@ -62,6 +63,7 @@ private slots:
#endif
void lockingCrash();
void uncached();
+ void asynchronousNoCache();
#if PIXMAP_DATA_LEAK_TEST
void dataLeak();
#endif
@@ -431,7 +433,7 @@ void tst_qquickpixmapcache::uncached()
QUrl url("image://mypixmaps/mypix");
{
QQuickPixmap p;
- p.load(&engine, url, nullptr);
+ p.load(&engine, url, QQuickPixmap::Options{});
QImage img = p.image();
QCOMPARE(img.pixel(0,0), qRgb(255, 0, 0));
}
@@ -440,7 +442,7 @@ void tst_qquickpixmapcache::uncached()
MyPixmapProvider::fillColor = qRgb(0, 255, 0);
{
QQuickPixmap p;
- p.load(&engine, url, nullptr);
+ p.load(&engine, url, QQuickPixmap::Options{});
QImage img = p.image();
QCOMPARE(img.pixel(0,0), qRgb(0, 255, 0));
}
@@ -458,7 +460,7 @@ void tst_qquickpixmapcache::uncached()
MyPixmapProvider::fillColor = qRgb(255, 0, 255);
{
QQuickPixmap p;
- p.load(&engine, url, nullptr);
+ p.load(&engine, url, QQuickPixmap::Options{});
QImage img = p.image();
QCOMPARE(img.pixel(0,0), qRgb(255, 0, 255));
}
@@ -473,6 +475,13 @@ void tst_qquickpixmapcache::uncached()
}
}
+void tst_qquickpixmapcache::asynchronousNoCache()
+{
+ QQmlEngine engine;
+ QQmlComponent component(&engine, testFileUrl("asynchronousNoCache.qml"));
+ QScopedPointer<QObject> root {component.create()}; // should not crash
+}
+
#if PIXMAP_DATA_LEAK_TEST
// This test should not be enabled by default as it
diff --git a/tests/auto/quick/qquickrepeater/data/contextProperty.qml b/tests/auto/quick/qquickrepeater/data/contextProperty.qml
new file mode 100644
index 0000000000..44e76f474f
--- /dev/null
+++ b/tests/auto/quick/qquickrepeater/data/contextProperty.qml
@@ -0,0 +1,13 @@
+import QtQuick 2.14
+
+Item {
+ Column {
+ Repeater {
+ model: ["apples", "oranges", "pears"]
+ Text {
+ id: txt
+ text: modelData + index
+ }
+ }
+ }
+}
diff --git a/tests/auto/quick/qquickrepeater/tst_qquickrepeater.cpp b/tests/auto/quick/qquickrepeater/tst_qquickrepeater.cpp
index ccfef63902..33b8742170 100644
--- a/tests/auto/quick/qquickrepeater/tst_qquickrepeater.cpp
+++ b/tests/auto/quick/qquickrepeater/tst_qquickrepeater.cpp
@@ -81,6 +81,7 @@ private slots:
void package();
void ownership();
void requiredProperties();
+ void contextProperties();
};
class TestObject : public QObject
@@ -1131,6 +1132,29 @@ void tst_QQuickRepeater::requiredProperties()
QVERIFY(o);
}
+void tst_QQuickRepeater::contextProperties()
+{
+ QQmlEngine engine;
+
+ QQmlComponent component(&engine, testFileUrl("contextProperty.qml"));
+ QScopedPointer<QObject> o {component.create()};
+ QVERIFY(o);
+
+ auto *root = qobject_cast<QQuickItem *>(o.get());
+ QVERIFY(root);
+
+ QQueue<QQuickItem *> items;
+ items.append(root);
+
+ while (!items.isEmpty()) {
+ QQuickItem *item = items.dequeue();
+ QQmlContextData *data = QQmlContextData::get(qmlContext(item));
+ QVERIFY(!data->hasExtraObject);
+ for (QQuickItem *child : item->childItems())
+ items.enqueue(child);
+ }
+}
+
QTEST_MAIN(tst_QQuickRepeater)
#include "tst_qquickrepeater.moc"
diff --git a/src/plugins/scenegraph/d3d12/qsgd3d12internalrectanglenode.cpp b/tests/auto/quick/qquicktableview/data/checkalwaysemit.qml
index 2d9c5b55d1..33db6f6d02 100644
--- a/src/plugins/scenegraph/d3d12/qsgd3d12internalrectanglenode.cpp
+++ b/tests/auto/quick/qquicktableview/data/checkalwaysemit.qml
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2018 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtQuick module of the Qt Toolkit.
@@ -37,36 +37,51 @@
**
****************************************************************************/
-#include "qsgd3d12internalrectanglenode_p.h"
+import QtQuick 2.12
+import QtQuick.Window 2.3
-QT_BEGIN_NAMESPACE
+Item {
+ width: 640
+ height: 450
-QSGD3D12InternalRectangleNode::QSGD3D12InternalRectangleNode()
-{
- setMaterial(&m_material);
-}
+ property alias tableView: tableView
+ property real delegateWidth: 100
+ property real delegateHeight: 50
+ property Component delegate: tableViewDelegate
+ property bool delegateParentSetBeforeCompleted: false
-void QSGD3D12InternalRectangleNode::updateMaterialAntialiasing()
-{
- if (m_antialiasing)
- setMaterial(&m_smoothMaterial);
- else
- setMaterial(&m_material);
-}
+ TableView {
+ id: tableView
+ width: 600
+ height: 400
+ anchors.margins: 1
+ clip: true
+ delegate: tableViewDelegate
+ columnSpacing: 1
+ rowSpacing: 1
+ }
+
+ Component {
+ id: tableViewDelegate
+ Rectangle {
+ objectName: "tableViewDelegate"
+ implicitWidth: delegateWidth
+ implicitHeight: delegateHeight
+ color: "lightgray"
+ border.width: 1
-void QSGD3D12InternalRectangleNode::updateMaterialBlending(QSGNode::DirtyState *state)
-{
- // smoothed material is always blended, so no change in material state
- if (material() == &m_material) {
- bool wasBlending = (m_material.flags() & QSGMaterial::Blending);
- bool isBlending = (m_gradient_stops.size() > 0 && !m_gradient_is_opaque)
- || (m_color.alpha() < 255 && m_color.alpha() != 0)
- || (m_pen_width > 0 && m_border_color.alpha() < 255);
- if (wasBlending != isBlending) {
- m_material.setFlag(QSGMaterial::Blending, isBlending);
- *state |= QSGNode::DirtyMaterial;
+ property string modelDataFromIndex: tableView.model.dataFromSerializedIndex(index)
+ property string modelDataBinding: modelData
+
+ Text {
+ anchors.centerIn: parent
+ text: modelData
+ }
+
+ Component.onCompleted: {
+ delegateParentSetBeforeCompleted = parent != null;
+ }
}
}
-}
-QT_END_NAMESPACE
+}
diff --git a/tests/auto/quick/qquicktableview/data/replaceModelTableView.qml b/tests/auto/quick/qquicktableview/data/replaceModelTableView.qml
new file mode 100644
index 0000000000..cc109bb469
--- /dev/null
+++ b/tests/auto/quick/qquicktableview/data/replaceModelTableView.qml
@@ -0,0 +1,56 @@
+import QtQuick 2.14
+import QtQml.Models 2.14
+
+Item {
+ id: root
+ visible: true
+ width: 640
+ height: 480
+
+ property alias tableView: tv
+ property alias objectModel: om
+ property alias listModel: lm
+ property alias delegateModel: dm
+
+ ObjectModel {
+ id: om
+ Rectangle { implicitHeight: 30; implicitWidth: 80; color: "red" }
+ Rectangle { implicitHeight: 30; implicitWidth: 80; color: "green" }
+ Rectangle { implicitHeight: 30; implicitWidth: 80; color: "blue" }
+ }
+
+ ListModel {
+ id: lm
+ ListElement { name: "1" }
+ ListElement { name: "44"}
+ }
+
+ DelegateModel {
+ id: dm
+ model: ListModel {
+ ListElement { name: "Apple" }
+ ListElement { name: "Orange" }
+ }
+ delegate: Rectangle {
+ implicitHeight: 25
+ implicitWidth: 100
+ Text { text: "Name: " + name}
+ }
+ }
+ TableView {
+ id: tv
+ visible: true
+ anchors.fill: parent
+
+ delegate: Rectangle {
+ id: dlg
+ implicitWidth: 40
+ implicitHeight: 20
+ color: "red"
+ Text {
+ text: qsTr("name: " + name)
+ }
+ border.color: "green"
+ }
+ }
+}
diff --git a/tests/auto/quick/qquicktableview/qquicktableview.pro b/tests/auto/quick/qquicktableview/qquicktableview.pro
index da0c0b01d0..735c728fc6 100644
--- a/tests/auto/quick/qquicktableview/qquicktableview.pro
+++ b/tests/auto/quick/qquicktableview/qquicktableview.pro
@@ -13,3 +13,5 @@ TESTDATA = data/*
QT += core-private gui-private qml-private quick-private testlib qmlmodels-private
+DISTFILES +=
+
diff --git a/tests/auto/quick/qquicktableview/testmodel.h b/tests/auto/quick/qquicktableview/testmodel.h
index 50f434019e..2697b1e801 100644
--- a/tests/auto/quick/qquicktableview/testmodel.h
+++ b/tests/auto/quick/qquicktableview/testmodel.h
@@ -46,6 +46,13 @@ public:
, m_columns(columns)
{}
+ TestModel(int rows, int columns, bool dataCanBeFetched, QObject *parent = nullptr)
+ : QAbstractTableModel(parent)
+ , m_rows(rows)
+ , m_columns(columns)
+ , m_dataCanBeFetched(dataCanBeFetched)
+ {}
+
int rowCount(const QModelIndex & = QModelIndex()) const override { return m_rows; }
void setRowCount(int count) { beginResetModel(); m_rows = count; emit rowCountChanged(); endResetModel(); }
@@ -63,6 +70,13 @@ public:
return QStringLiteral("%1").arg(index.row());
}
+ Q_INVOKABLE QVariant dataFromSerializedIndex(int index) const
+ {
+ if (modelData.contains(index))
+ return modelData.value(index);
+ return QString();
+ }
+
QHash<int, QByteArray> roleNames() const override
{
return { {Qt::DisplayRole, "display"} };
@@ -102,6 +116,12 @@ public:
beginRemoveRows(parent, row, row + count - 1);
m_rows -= count;
+ for (int c = 0; c < m_columns; ++c) {
+ for (int r = 0; r < count; ++r) {
+ const int serializedIndex = (row + r) + (c * m_rows);
+ modelData.remove(serializedIndex);
+ }
+ }
endRemoveRows();
return true;
}
@@ -128,6 +148,12 @@ public:
return true;
}
+ bool canFetchMore(const QModelIndex &parent) const override
+ {
+ Q_UNUSED(parent)
+ return m_dataCanBeFetched;
+ }
+
void swapRows(int row1, int row2)
{
layoutAboutToBeChanged();
@@ -139,6 +165,12 @@ public:
layoutChanged();
}
+ void fetchMore(const QModelIndex &parent) override
+ {
+ Q_UNUSED(parent)
+ addRow(m_rows - 1);
+ }
+
void clear() {
beginResetModel();
m_rows = 0;
@@ -159,6 +191,7 @@ signals:
private:
int m_rows = 0;
int m_columns = 0;
+ bool m_dataCanBeFetched = false;
QHash<int, QString> modelData;
};
diff --git a/tests/auto/quick/qquicktableview/tst_qquicktableview.cpp b/tests/auto/quick/qquicktableview/tst_qquicktableview.cpp
index 230dcc9446..ef39a91a65 100644
--- a/tests/auto/quick/qquicktableview/tst_qquicktableview.cpp
+++ b/tests/auto/quick/qquicktableview/tst_qquicktableview.cpp
@@ -60,7 +60,7 @@ Q_DECLARE_METATYPE(QMarginsF);
auto PROPNAME = view->rootObject()->property(#PROPNAME).value<QQuickTableView *>(); \
QVERIFY(PROPNAME); \
auto PROPNAME ## Private = QQuickTableViewPrivate::get(PROPNAME); \
- Q_UNUSED(PROPNAME ## Private)
+ Q_UNUSED(PROPNAME ## Private) void()
#define LOAD_TABLEVIEW(fileName) \
view->setSource(testFileUrl(fileName)); \
@@ -120,6 +120,7 @@ private slots:
void checkRowHeightProviderNotCallable();
void checkForceLayoutFunction();
void checkForceLayoutEndUpDoingALayout();
+ void checkForceLayoutDuringModelChange();
void checkContentWidthAndHeight();
void checkPageFlicking();
void checkExplicitContentWidthAndHeight();
@@ -159,6 +160,7 @@ private slots:
void checkContextPropertiesQQmlListProperyModel_data();
void checkContextPropertiesQQmlListProperyModel();
void checkRowAndColumnChangedButNotIndex();
+ void checkThatWeAlwaysEmitChangedUponItemReused();
void checkChangingModelFromDelegate();
void checkRebuildViewportOnly();
void useDelegateChooserWithoutDefault();
@@ -174,6 +176,8 @@ private slots:
void checkSyncView_connect_late_data();
void checkSyncView_connect_late();
void delegateWithRequiredProperties();
+ void checkThatFetchMoreIsCalledWhenScrolledToTheEndOfTable();
+ void replaceModel();
};
tst_QQuickTableView::tst_QQuickTableView()
@@ -390,7 +394,7 @@ void tst_QQuickTableView::checkColumnWidthProviderInvalidReturnValues()
tableView->setModel(model);
- QTest::ignoreMessage(QtWarningMsg, QRegularExpression(".*implicitHeight.*zero"));
+ QTest::ignoreMessage(QtWarningMsg, QRegularExpression(".*implicit.*zero"));
WAIT_UNTIL_POLISHED;
@@ -487,7 +491,7 @@ void tst_QQuickTableView::checkRowHeightProviderInvalidReturnValues()
tableView->setModel(model);
- QTest::ignoreMessage(QtWarningMsg, QRegularExpression(".*implicitHeight.*zero"));
+ QTest::ignoreMessage(QtWarningMsg, QRegularExpression(".*implicit.*zero"));
WAIT_UNTIL_POLISHED;
@@ -588,6 +592,29 @@ void tst_QQuickTableView::checkForceLayoutEndUpDoingALayout()
QCOMPARE(fxItem->item->height(), newDelegateSize);
}
+void tst_QQuickTableView::checkForceLayoutDuringModelChange()
+{
+ // Check that TableView doesn't assert if we call
+ // forceLayout() in the middle of a model change.
+ LOAD_TABLEVIEW("plaintableview.qml");
+
+ const int initialRowCount = 10;
+ TestModel model(initialRowCount, 10);
+ tableView->setModel(QVariant::fromValue(&model));
+
+ connect(&model, &QAbstractItemModel::rowsInserted, [=](){
+ QCOMPARE(tableView->rows(), initialRowCount);
+ tableView->forceLayout();
+ QCOMPARE(tableView->rows(), initialRowCount + 1);
+ });
+
+ WAIT_UNTIL_POLISHED;
+
+ QCOMPARE(tableView->rows(), initialRowCount);
+ model.addRow(0);
+ QCOMPARE(tableView->rows(), initialRowCount + 1);
+}
+
void tst_QQuickTableView::checkContentWidthAndHeight()
{
// Check that contentWidth/Height reports the correct size of the
@@ -2060,6 +2087,41 @@ void tst_QQuickTableView::checkRowAndColumnChangedButNotIndex()
QCOMPARE(contextColumn, 1);
}
+void tst_QQuickTableView::checkThatWeAlwaysEmitChangedUponItemReused()
+{
+ // Check that we always emit changes to index when we reuse an item, even
+ // if it doesn't change. This is needed since the model can have changed
+ // row or column count while the item was in the pool, which means that
+ // any data referred to by the index property inside the delegate
+ // will change too. So we need to refresh any bindings to index.
+ // QTBUG-79209
+ LOAD_TABLEVIEW("checkalwaysemit.qml");
+
+ TestModel model(1, 1);
+ tableView->setModel(QVariant::fromValue(&model));
+ model.setModelData(QPoint(0, 0), QSize(1, 1), "old value");
+
+ WAIT_UNTIL_POLISHED;
+
+ const auto reuseItem = tableViewPrivate->loadedTableItem(QPoint(0, 0))->item;
+ const auto context = qmlContext(reuseItem.data());
+
+ // Remove the cell/row that has "old value" as model data, and
+ // add a new one right after. The new cell will have the same
+ // index, but with no model data assigned.
+ // This change will not be detected by items in the pool. But since
+ // we emit indexChanged when the item is reused, it will be updated then.
+ model.removeRow(0);
+ model.insertRow(0);
+
+ WAIT_UNTIL_POLISHED;
+
+ QCOMPARE(context->contextProperty("index").toInt(), 0);
+ QCOMPARE(context->contextProperty("row").toInt(), 0);
+ QCOMPARE(context->contextProperty("column").toInt(), 0);
+ QCOMPARE(context->contextProperty("modelDataFromIndex").toString(), "");
+}
+
void tst_QQuickTableView::checkChangingModelFromDelegate()
{
// Check that we don't restart a rebuild of the table
@@ -2617,7 +2679,27 @@ void tst_QQuickTableView::checkSyncView_connect_late()
QCOMPARE(tableViewVPrivate->loadedTableOuterRect.left(), 0);
QCOMPARE(tableViewHVPrivate->loadedTableOuterRect, tableViewPrivate->loadedTableOuterRect);
+}
+
+void tst_QQuickTableView::checkThatFetchMoreIsCalledWhenScrolledToTheEndOfTable()
+{
+ LOAD_TABLEVIEW("plaintableview.qml");
+
+ auto model = TestModelAsVariant(5, 5, true);
+ tableView->setModel(model);
+ WAIT_UNTIL_POLISHED;
+
+ QCOMPARE(tableView->rows(), 5);
+ QCOMPARE(tableView->columns(), 5);
+ // Flick table out of view on top
+ tableView->setContentX(0);
+ tableView->setContentY(-tableView->height() - 10);
+ tableView->polish();
+ WAIT_UNTIL_POLISHED;
+
+ QCOMPARE(tableView->rows(), 6);
+ QCOMPARE(tableView->columns(), 5);
}
void tst_QQuickTableView::delegateWithRequiredProperties()
@@ -2648,7 +2730,7 @@ void tst_QQuickTableView::delegateWithRequiredProperties()
auto model = QVariant::fromValue(QSharedPointer<MyTable>(new MyTable));
{
QTest::ignoreMessage(QtMsgType::QtInfoMsg, "success");
- LOAD_TABLEVIEW("delegateWithRequired.qml")
+ LOAD_TABLEVIEW("delegateWithRequired.qml");
QVERIFY(tableView);
tableView->setModel(model);
WAIT_UNTIL_POLISHED;
@@ -2656,7 +2738,7 @@ void tst_QQuickTableView::delegateWithRequiredProperties()
}
{
QTest::ignoreMessage(QtMsgType::QtWarningMsg, QRegularExpression(R"|(TableView: failed loading index: \d)|"));
- LOAD_TABLEVIEW("delegatewithRequiredUnset.qml")
+ LOAD_TABLEVIEW("delegatewithRequiredUnset.qml");
QVERIFY(tableView);
tableView->setModel(model);
WAIT_UNTIL_POLISHED;
@@ -2664,6 +2746,28 @@ void tst_QQuickTableView::delegateWithRequiredProperties()
}
}
+void tst_QQuickTableView::replaceModel()
+{
+ LOAD_TABLEVIEW("replaceModelTableView.qml");
+
+ const auto objectModel = view->rootObject()->property("objectModel");
+ const auto listModel = view->rootObject()->property("listModel");
+ const auto delegateModel = view->rootObject()->property("delegateModel");
+
+ tableView->setModel(listModel);
+ QTRY_COMPARE(tableView->rows(), 2);
+ tableView->setModel(objectModel);
+ QTRY_COMPARE(tableView->rows(), 3);
+ tableView->setModel(delegateModel);
+ QTRY_COMPARE(tableView->rows(), 2);
+ tableView->setModel(listModel);
+ QTRY_COMPARE(tableView->rows(), 2);
+ tableView->setModel(QVariant());
+ QTRY_COMPARE(tableView->rows(), 0);
+ QCOMPARE(tableView->contentWidth(), 0);
+ QCOMPARE(tableView->contentHeight(), 0);
+}
+
QTEST_MAIN(tst_QQuickTableView)
#include "tst_qquicktableview.moc"
diff --git a/tests/auto/quick/qquicktextedit/BLACKLIST b/tests/auto/quick/qquicktextedit/BLACKLIST
index 9df9c7d75a..36c7f0042f 100644
--- a/tests/auto/quick/qquicktextedit/BLACKLIST
+++ b/tests/auto/quick/qquicktextedit/BLACKLIST
@@ -1,2 +1,6 @@
[mouseSelection]
opensuse-leap
+
+# QTBUG-78846
+[mouseSelectionMode]
+opensuse-leap
diff --git a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
index d03441e052..85342d4c1e 100644
--- a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
+++ b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
@@ -226,7 +226,7 @@ private:
void simulateKeys(QWindow *window, const QKeySequence &sequence);
#endif
- void simulateKey(QWindow *, int key, Qt::KeyboardModifiers modifiers = nullptr);
+ void simulateKey(QWindow *, int key, Qt::KeyboardModifiers modifiers = {});
QStringList standard;
QStringList richText;
@@ -1389,7 +1389,7 @@ void tst_qquicktextedit::focusOnPress()
QCOMPARE(textEditObject->hasActiveFocus(), false);
QPoint centerPoint(window.width()/2, window.height()/2);
- Qt::KeyboardModifiers noModifiers = nullptr;
+ Qt::KeyboardModifiers noModifiers;
QTest::mousePress(&window, Qt::LeftButton, noModifiers, centerPoint);
QGuiApplication::processEvents();
QCOMPARE(textEditObject->hasFocus(), true);
diff --git a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
index 1d12121a6f..2e64c80b85 100644
--- a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
+++ b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
@@ -2073,11 +2073,15 @@ void tst_qquicktextinput::validators()
QTest::keyPress(&window, Qt::Key_Comma);
QTest::keyRelease(&window, Qt::Key_Comma, Qt::NoModifier);
QTRY_COMPARE(dblInput->text(), QLatin1String("12,"));
- QCOMPARE(dblInput->hasAcceptableInput(), true);
- QTest::keyPress(&window, Qt::Key_1);
- QTest::keyRelease(&window, Qt::Key_1, Qt::NoModifier);
- QTRY_COMPARE(dblInput->text(), QLatin1String("12,"));
- QCOMPARE(dblInput->hasAcceptableInput(), true);
+ int extraSignals = 2;
+ if (dblInput->hasAcceptableInput()) {
+ // TODO: old behavior of QDoubleValidator - remove when merged from qtbase
+ QTest::keyPress(&window, Qt::Key_1);
+ QTest::keyRelease(&window, Qt::Key_1, Qt::NoModifier);
+ QTRY_COMPARE(dblInput->text(), QLatin1String("12,"));
+ QCOMPARE(dblInput->hasAcceptableInput(), true);
+ extraSignals = 0;
+ }
dblValidator->setLocaleName(deLocale.name());
QCOMPARE(dblInput->hasAcceptableInput(), true);
QTest::keyPress(&window, Qt::Key_1);
@@ -2106,84 +2110,84 @@ void tst_qquicktextinput::validators()
QTRY_COMPARE(dblInput->text(), QLatin1String("12."));
QCOMPARE(dblInput->hasAcceptableInput(), true);
QCOMPARE(dblInput->property("acceptable").toBool(), true);
- QCOMPARE(dblSpy.count(), 1);
+ QCOMPARE(dblSpy.count(), 1 + extraSignals);
QTest::keyPress(&window, Qt::Key_1);
QTest::keyRelease(&window, Qt::Key_1, Qt::NoModifier);
QTRY_COMPARE(dblInput->text(), QLatin1String("12.1"));
QCOMPARE(dblInput->hasAcceptableInput(), true);
QCOMPARE(dblInput->property("acceptable").toBool(), true);
- QCOMPARE(dblSpy.count(), 1);
+ QCOMPARE(dblSpy.count(), 1 + extraSignals);
QTest::keyPress(&window, Qt::Key_1);
QTest::keyRelease(&window, Qt::Key_1, Qt::NoModifier);
QTRY_COMPARE(dblInput->text(), QLatin1String("12.11"));
QCOMPARE(dblInput->hasAcceptableInput(), true);
QCOMPARE(dblInput->property("acceptable").toBool(), true);
- QCOMPARE(dblSpy.count(), 1);
+ QCOMPARE(dblSpy.count(), 1 + extraSignals);
QTest::keyPress(&window, Qt::Key_1);
QTest::keyRelease(&window, Qt::Key_1, Qt::NoModifier);
QTRY_COMPARE(dblInput->text(), QLatin1String("12.11"));
QCOMPARE(dblInput->hasAcceptableInput(), true);
QCOMPARE(dblInput->property("acceptable").toBool(), true);
- QCOMPARE(dblSpy.count(), 1);
+ QCOMPARE(dblSpy.count(), 1 + extraSignals);
// Ensure the validator doesn't prevent characters being removed.
dblInput->setValidator(intInput->validator());
QCOMPARE(dblInput->text(), QLatin1String("12.11"));
QCOMPARE(dblInput->hasAcceptableInput(), false);
QCOMPARE(dblInput->property("acceptable").toBool(), false);
- QCOMPARE(dblSpy.count(), 2);
+ QCOMPARE(dblSpy.count(), 2 + extraSignals);
QTest::keyPress(&window, Qt::Key_Backspace);
QTest::keyRelease(&window, Qt::Key_Backspace, Qt::NoModifier);
QTRY_COMPARE(dblInput->text(), QLatin1String("12.1"));
QCOMPARE(dblInput->hasAcceptableInput(), false);
QCOMPARE(dblInput->property("acceptable").toBool(), false);
- QCOMPARE(dblSpy.count(), 2);
+ QCOMPARE(dblSpy.count(), 2 + extraSignals);
// Once unacceptable input is in anything goes until it reaches an acceptable state again.
QTest::keyPress(&window, Qt::Key_1);
QTest::keyRelease(&window, Qt::Key_1, Qt::NoModifier);
QTRY_COMPARE(dblInput->text(), QLatin1String("12.11"));
QCOMPARE(dblInput->hasAcceptableInput(), false);
- QCOMPARE(dblSpy.count(), 2);
+ QCOMPARE(dblSpy.count(), 2 + extraSignals);
QTest::keyPress(&window, Qt::Key_Backspace);
QTest::keyRelease(&window, Qt::Key_Backspace, Qt::NoModifier);
QTRY_COMPARE(dblInput->text(), QLatin1String("12.1"));
QCOMPARE(dblInput->hasAcceptableInput(), false);
QCOMPARE(dblInput->property("acceptable").toBool(), false);
- QCOMPARE(dblSpy.count(), 2);
+ QCOMPARE(dblSpy.count(), 2 + extraSignals);
QTest::keyPress(&window, Qt::Key_Backspace);
QTest::keyRelease(&window, Qt::Key_Backspace, Qt::NoModifier);
QTRY_COMPARE(dblInput->text(), QLatin1String("12."));
QCOMPARE(dblInput->hasAcceptableInput(), false);
QCOMPARE(dblInput->property("acceptable").toBool(), false);
- QCOMPARE(dblSpy.count(), 2);
+ QCOMPARE(dblSpy.count(), 2 + extraSignals);
QTest::keyPress(&window, Qt::Key_Backspace);
QTest::keyRelease(&window, Qt::Key_Backspace, Qt::NoModifier);
QTRY_COMPARE(dblInput->text(), QLatin1String("12"));
QCOMPARE(dblInput->hasAcceptableInput(), false);
QCOMPARE(dblInput->property("acceptable").toBool(), false);
- QCOMPARE(dblSpy.count(), 2);
+ QCOMPARE(dblSpy.count(), 2 + extraSignals);
QTest::keyPress(&window, Qt::Key_Backspace);
QTest::keyRelease(&window, Qt::Key_Backspace, Qt::NoModifier);
QTRY_COMPARE(dblInput->text(), QLatin1String("1"));
QCOMPARE(dblInput->hasAcceptableInput(), false);
QCOMPARE(dblInput->property("acceptable").toBool(), false);
- QCOMPARE(dblSpy.count(), 2);
+ QCOMPARE(dblSpy.count(), 2 + extraSignals);
QTest::keyPress(&window, Qt::Key_1);
QTest::keyRelease(&window, Qt::Key_1, Qt::NoModifier);
QCOMPARE(dblInput->text(), QLatin1String("11"));
QCOMPARE(dblInput->property("acceptable").toBool(), true);
QCOMPARE(dblInput->hasAcceptableInput(), true);
- QCOMPARE(dblSpy.count(), 3);
+ QCOMPARE(dblSpy.count(), 3 + extraSignals);
// Changing the validator properties will re-evaluate whether the input is acceptable.
intValidator->setTop(10);
QCOMPARE(dblInput->property("acceptable").toBool(), false);
QCOMPARE(dblInput->hasAcceptableInput(), false);
- QCOMPARE(dblSpy.count(), 4);
+ QCOMPARE(dblSpy.count(), 4 + extraSignals);
intValidator->setTop(12);
QCOMPARE(dblInput->property("acceptable").toBool(), true);
QCOMPARE(dblInput->hasAcceptableInput(), true);
- QCOMPARE(dblSpy.count(), 5);
+ QCOMPARE(dblSpy.count(), 5 + extraSignals);
QQuickTextInput *strInput = qobject_cast<QQuickTextInput *>(qvariant_cast<QObject *>(window.rootObject()->property("strInput")));
QVERIFY(strInput);
@@ -6408,8 +6412,20 @@ void tst_qquicktextinput::setInputMask_data()
QTest::newRow(QString(insert_mode + "blank=input").toLatin1())
<< QString("9999;0")
<< QString("2004")
+ << QString("24")
<< QString("2004")
- << QString("2004")
+ << bool(insert_text);
+ QTest::newRow(QString(insert_mode + "any_opt").toLatin1())
+ << QString("@xxx@")
+ << QString("@A C@")
+ << QString("@AC@")
+ << QString("@A C@")
+ << bool(insert_text);
+ QTest::newRow(QString(insert_mode + "any_req").toLatin1())
+ << QString("@XXX@")
+ << QString("@A C@")
+ << QString("@AC@@")
+ << QString("@AC@@")
<< bool(insert_text);
}
}
@@ -6428,6 +6444,14 @@ void tst_qquicktextinput::setInputMask()
QQuickTextInput *textInput = qobject_cast<QQuickTextInput*>(textInputComponent.create());
QVERIFY(textInput != nullptr);
+ // [QTBUG-80190] check if setting the same property value again doesn't emit an
+ // inputMaskChanged signal
+ QString unescapedMask = mask; // mask is escaped, because '\' is also escape in a JS string
+ unescapedMask.replace(QLatin1String("\\\\"), QLatin1String("\\")); // simple unescape
+ QSignalSpy spy(textInput, SIGNAL(inputMaskChanged(const QString &)));
+ textInput->setInputMask(unescapedMask);
+ QCOMPARE(spy.count(), 0);
+
// then either insert using insert() or keyboard
if (insert_text) {
textInput->insert(0, input);
@@ -6444,9 +6468,6 @@ void tst_qquicktextinput::setInputMask()
QTest::keyClick(&window, input.at(i).toLatin1());
}
- QEXPECT_FAIL( "keys blank=input", "To eat blanks or not? Known issue. Task 43172", Abort);
- QEXPECT_FAIL( "insert blank=input", "To eat blanks or not? Known issue. Task 43172", Abort);
-
QCOMPARE(textInput->text(), expectedText);
QCOMPARE(textInput->displayText(), expectedDisplay);
}
diff --git a/tests/auto/quick/qquickvisualdatamodel/data/filterGroupForDelegate.qml b/tests/auto/quick/qquickvisualdatamodel/data/filterGroupForDelegate.qml
new file mode 100644
index 0000000000..d72ca51d7f
--- /dev/null
+++ b/tests/auto/quick/qquickvisualdatamodel/data/filterGroupForDelegate.qml
@@ -0,0 +1,77 @@
+import QtQml.Models 2.12
+import Qt.labs.qmlmodels 1.0
+import QtQuick 2.12
+
+Item {
+ id: root
+ width: 200
+ height: 320
+
+ property int numChanges: 0
+ property bool ok: true
+
+ DelegateModel {
+ id: theModel
+
+ model: ListModel {
+ ListElement { role: "section" }
+ ListElement { role: "item" }
+ ListElement { role: "section" }
+ ListElement { role: "item" }
+ ListElement { role: "section" }
+ ListElement { role: "item" }
+ ListElement { role: "item" }
+ ListElement { role: "item" }
+ }
+
+ filterOnGroup: "expanded"
+ groups: DelegateModelGroup {
+ name: "expanded"
+ }
+
+ delegate: DelegateChooser {
+ role: "role"
+
+ DelegateChoice {
+ roleValue: "section"
+ Text {
+ text: "+ Section " + index
+
+ Timer {
+ interval: (index + 10)
+ repeat: true
+ running: true
+ onTriggered: {
+ ++ root.numChanges;
+ if (model.role !== "section") {
+ root.ok = false;
+ console.warn("wrong!", root.numChanges);
+ }
+ let i = parent.DelegateModel.itemsIndex + 1;
+ for (; i < theModel.items.count; ++i) {
+ let item = theModel.items.get(i);
+ if (item.model.role === "section")
+ break;
+ item.inExpanded = !item.inExpanded;
+ }
+ }
+ }
+ }
+ }
+
+ DelegateChoice {
+ roleValue: "item"
+ Text {
+ text: "Item " + index
+ }
+ }
+ }
+
+ Component.onCompleted: items.addGroups(0, items.count, ["expanded"])
+ }
+
+ ListView {
+ anchors.fill: parent
+ model: theModel
+ }
+}
diff --git a/tests/auto/quick/qquickvisualdatamodel/data/readFromProxyObject.qml b/tests/auto/quick/qquickvisualdatamodel/data/readFromProxyObject.qml
new file mode 100644
index 0000000000..3983c707a1
--- /dev/null
+++ b/tests/auto/quick/qquickvisualdatamodel/data/readFromProxyObject.qml
@@ -0,0 +1,23 @@
+import QtQuick 2.15
+import QtQuick.Window 2.15
+
+Window {
+ id: window
+ width: 200
+ height: 200
+ color: "red"
+ visible: true
+ Repeater {
+ model: Qt.application.screens
+ Text {
+ required property string name
+ required property int virtualX
+ required property int virtualY
+
+ text: name + virtualX + ", " + virtualY
+ Component.onCompleted: window.name = name
+ }
+ }
+
+ property string name: "wrong"
+}
diff --git a/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp b/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp
index fe56cad018..66069c48cb 100644
--- a/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp
+++ b/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp
@@ -433,6 +433,8 @@ private slots:
void invalidContext();
void externalManagedModel();
void delegateModelChangeDelegate();
+ void checkFilterGroupForDelegate();
+ void readFromProxyObject();
private:
template <int N> void groups_verify(
@@ -4342,6 +4344,34 @@ void tst_qquickvisualdatamodel::delegateModelChangeDelegate()
QCOMPARE(visualModel->count(), 3);
}
+void tst_qquickvisualdatamodel::checkFilterGroupForDelegate()
+{
+ QQuickView view;
+ view.setSource(testFileUrl("filterGroupForDelegate.qml"));
+ view.show();
+
+ QQuickItem *obj = view.rootObject();
+ QVERIFY(obj);
+
+ QTRY_VERIFY(obj->property("numChanges").toInt() > 100);
+ QVERIFY(obj->property("ok").toBool());
+}
+
+void tst_qquickvisualdatamodel::readFromProxyObject()
+{
+ QQmlEngine engine;
+ QQmlComponent component(&engine, testFileUrl("readFromProxyObject.qml"));
+
+ QScopedPointer<QObject> obj(component.create());
+ QVERIFY(obj);
+
+ auto *window = qobject_cast<QQuickWindow *>(obj.get());
+ QVERIFY(window);
+
+ QCOMPARE(window->property("name").type(), QMetaType::QString);
+ QTRY_VERIFY(window->property("name").toString() != QLatin1String("wrong"));
+}
+
QTEST_MAIN(tst_qquickvisualdatamodel)
#include "tst_qquickvisualdatamodel.moc"
diff --git a/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp b/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp
index 7faa621e86..5b6b11c746 100644
--- a/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp
+++ b/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp
@@ -73,7 +73,7 @@ static QTouchEvent::TouchPoint makeTouchPoint(QQuickItem *item, const QPointF &p
return tp;
}
-static TouchEventData makeTouchData(QEvent::Type type, QWindow *w, Qt::TouchPointStates states = nullptr,
+static TouchEventData makeTouchData(QEvent::Type type, QWindow *w, Qt::TouchPointStates states = {},
const QList<QTouchEvent::TouchPoint>& touchPoints = QList<QTouchEvent::TouchPoint>())
{
TouchEventData d = { type, nullptr, w, states, touchPoints };
@@ -157,7 +157,7 @@ public:
setEnabled(true);
setVisible(true);
- lastEvent = makeTouchData(QEvent::None, window(), nullptr, QList<QTouchEvent::TouchPoint>());//CHECK_VALID
+ lastEvent = makeTouchData(QEvent::None, window(), {}, QList<QTouchEvent::TouchPoint>());//CHECK_VALID
lastVelocity = lastVelocityFromMouseMove = QVector2D();
lastMousePos = QPointF();
@@ -2082,7 +2082,7 @@ void tst_qquickwindow::requestActivate()
QString warning = QString::fromLatin1("Mouse event MousePress not accepted by receiving window");
QWARN(warning.toLatin1().data());
}
- me = QMouseEvent(QEvent::MouseButtonPress, pos, window1->mapToGlobal(pos), Qt::LeftButton, nullptr, Qt::NoModifier);
+ me = QMouseEvent(QEvent::MouseButtonPress, pos, window1->mapToGlobal(pos), Qt::LeftButton, {}, Qt::NoModifier);
QSpontaneKeyEvent::setSpontaneous(&me);
if (!qApp->notify(window1.data(), &me)) {
QString warning = QString::fromLatin1("Mouse event MouseRelease not accepted by receiving window");
diff --git a/tests/auto/quick/shared/viewtestutil.cpp b/tests/auto/quick/shared/viewtestutil.cpp
index 1680e850f7..4089e5ddae 100644
--- a/tests/auto/quick/shared/viewtestutil.cpp
+++ b/tests/auto/quick/shared/viewtestutil.cpp
@@ -73,13 +73,13 @@ void QQuickViewTestUtil::moveMouseAway(QQuickView *window)
void QQuickViewTestUtil::moveAndRelease(QQuickView *window, const QPoint &position)
{
QTest::mouseMove(window, position);
- QTest::mouseRelease(window, Qt::LeftButton, 0, position);
+ QTest::mouseRelease(window, Qt::LeftButton, {}, position);
}
void QQuickViewTestUtil::moveAndPress(QQuickView *window, const QPoint &position)
{
QTest::mouseMove(window, position);
- QTest::mousePress(window, Qt::LeftButton, 0, position);
+ QTest::mousePress(window, Qt::LeftButton, {}, position);
}
void QQuickViewTestUtil::flick(QQuickView *window, const QPoint &from, const QPoint &to, int duration)
diff --git a/tests/auto/toolsupport/tst_toolsupport.cpp b/tests/auto/toolsupport/tst_toolsupport.cpp
index f743a6f5c6..0c87d1a00c 100644
--- a/tests/auto/toolsupport/tst_toolsupport.cpp
+++ b/tests/auto/toolsupport/tst_toolsupport.cpp
@@ -87,7 +87,7 @@ void tst_toolsupport::offsets_data()
{
QTestData &data = QTest::newRow("sizeof(QObjectData)")
<< sizeof(QObjectData);
- data << 28 << 48; // vptr + 3 ptr + 2 int + ptr
+ data << 36 << 64; // vptr + 4 ptr + 3 int + (padding) + ptr
}
{
@@ -115,8 +115,8 @@ void tst_toolsupport::offsets_data()
{
QTestData &data
- = QTest::newRow("Heap::String::text")
- << pmm_to_offsetof(&QV4::Heap::String::text);
+ = QTest::newRow("Heap::String::textStorage")
+ << pmm_to_offsetof(&QV4::Heap::String::textStorage);
data << 4 << 8;
}
diff --git a/tests/benchmarks/qml/painting/paintbenchmark.cpp b/tests/benchmarks/qml/painting/paintbenchmark.cpp
index 1500f39c9a..e1659d6837 100644
--- a/tests/benchmarks/qml/painting/paintbenchmark.cpp
+++ b/tests/benchmarks/qml/painting/paintbenchmark.cpp
@@ -31,7 +31,7 @@
#include <QImage>
#include <QPainter>
#include <QPainterPath>
-#include <QGLWidget>
+#include <QOpenGLWidget>
#include <QTextLayout>
#include <QVBoxLayout>
#include <QElapsedTimer>
@@ -46,7 +46,7 @@ const int spacing = 36;
QSizeF size(1000, 800);
const qreal lineWidth = 1000;
QString strings[lines];
-QGLWidget *testWidget = 0;
+QOpenGLWidget *testWidget = 0;
void paint_QTextLayout(QPainter &p, bool useCache)
{
@@ -151,8 +151,8 @@ void paint_RoundedRect(QPainter &p)
static bool first = true;
if (first) {
if (testWidget) {
- QGLFormat format = testWidget->format();
- if (!format.sampleBuffers())
+ QSurfaceFormat format = testWidget->format();
+ if (format.samples() == -1)
qWarning() << "Cannot paint antialiased rounded rect without sampleBuffers";
}
first = false;
@@ -314,10 +314,11 @@ struct {
PaintFunc testFunc = 0;
-class MyGLWidget : public QGLWidget
+class MyGLWidget : public QOpenGLWidget
{
public:
- MyGLWidget(const QGLFormat &format) : QGLWidget(format), frames(0) {
+ MyGLWidget(const QSurfaceFormat &format) : frames(0) {
+ setFormat(format);
const char chars[] = "abcd efgh ijkl mnop qrst uvwx yz!$. ABCD 1234";
int len = strlen(chars);
for (int i = 0; i < lines; ++i) {
@@ -394,8 +395,11 @@ int main(int argc, char *argv[])
}
QWidget w;
- QGLFormat format = QGLFormat::defaultFormat();
- format.setSampleBuffers(sampleBuffers);
+ QSurfaceFormat format = QSurfaceFormat::defaultFormat();
+ if (!sampleBuffers)
+ format.setSamples(-1);
+ else if (format.samples() == -1)
+ format.setSamples(4);
testWidget = new MyGLWidget(format);
testWidget->setAutoFillBackground(false);
QVBoxLayout *layout = new QVBoxLayout(&w);
diff --git a/tests/libfuzzer/qml/jsapi/evaluate/evaluate.pro b/tests/libfuzzer/qml/jsapi/evaluate/evaluate.pro
index 301b4f606a..1b042c94d3 100644
--- a/tests/libfuzzer/qml/jsapi/evaluate/evaluate.pro
+++ b/tests/libfuzzer/qml/jsapi/evaluate/evaluate.pro
@@ -3,4 +3,9 @@ QT += qml
CONFIG += console
CONFIG -= app_bundle
SOURCES += main.cpp
-LIBS += -fsanitize=fuzzer
+FUZZ_ENGINE = $$(LIB_FUZZING_ENGINE)
+isEmpty(FUZZ_ENGINE) {
+ QMAKE_LFLAGS += -fsanitize=fuzzer
+} else {
+ LIBS += $$FUZZ_ENGINE
+}
diff --git a/tests/libfuzzer/qml/jsapi/evaluate/main.cpp b/tests/libfuzzer/qml/jsapi/evaluate/main.cpp
index 9e90ba7cbd..82b9847bca 100644
--- a/tests/libfuzzer/qml/jsapi/evaluate/main.cpp
+++ b/tests/libfuzzer/qml/jsapi/evaluate/main.cpp
@@ -32,7 +32,7 @@
// libfuzzer test for QJSEngine::evaluate()
extern "C" int LLVMFuzzerTestOneInput(const char *Data, size_t Size) {
- const QByteArray ba(Data, Size);
+ const QByteArray ba = QByteArray::fromRawData(Data, Size);
// avoid potential endless loops
if (ba.contains("for") || ba.contains("while"))
return 1;
diff --git a/tests/manual/listview/listview.pro b/tests/manual/listview/listview.pro
new file mode 100644
index 0000000000..a517b75079
--- /dev/null
+++ b/tests/manual/listview/listview.pro
@@ -0,0 +1,29 @@
+QT += quick
+CONFIG += c++11
+
+# The following define makes your compiler emit warnings if you use
+# any Qt feature that has been marked deprecated (the exact warnings
+# depend on your compiler). Refer to the documentation for the
+# deprecated API to know how to port your code away from it.
+DEFINES += QT_DEPRECATED_WARNINGS
+
+# You can also make your code fail to compile if it uses deprecated APIs.
+# In order to do so, uncomment the following line.
+# You can also select to disable deprecated APIs only up to a certain version of Qt.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
+
+SOURCES += \
+ main.cpp
+
+RESOURCES += qml.qrc
+
+# Additional import path used to resolve QML modules in Qt Creator's code model
+QML_IMPORT_PATH =
+
+# Additional import path used to resolve QML modules just for Qt Quick Designer
+QML_DESIGNER_IMPORT_PATH =
+
+# Default rules for deployment.
+qnx: target.path = /tmp/$${TARGET}/bin
+else: unix:!android: target.path = /opt/$${TARGET}/bin
+!isEmpty(target.path): INSTALLS += target
diff --git a/src/quick/scenegraph/util/qsgrhinativetextureimporter_p.h b/tests/manual/listview/main.cpp
index e811109a94..8b28b91ee8 100644
--- a/src/quick/scenegraph/util/qsgrhinativetextureimporter_p.h
+++ b/tests/manual/listview/main.cpp
@@ -37,34 +37,67 @@
**
****************************************************************************/
-#ifndef QSGRHINATIVETEXTUREIMPORTER_P_H
-#define QSGRHINATIVETEXTUREIMPORTER_P_H
+#include <QGuiApplication>
+#include <QQmlApplicationEngine>
+#include <QAbstractTableModel>
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
+typedef QPair<QString, bool> CellData;
-#include <QtQuick/private/qtquickglobal_p.h>
+class TestModel : public QAbstractListModel
+{
+ Q_OBJECT
+ Q_PROPERTY(int rowCount READ rowCount WRITE setRowCount NOTIFY rowCountChanged)
-QT_BEGIN_NAMESPACE
+public:
+ TestModel(QObject *parent = nullptr) : QAbstractListModel(parent) { }
-class QRhi;
-class QRhiTexture;
+ int rowCount(const QModelIndex & = QModelIndex()) const override { return m_rows; }
+ void setRowCount(int count) {
+ m_rows = count;
+ emit rowCountChanged();
+ }
-class QSGRhiNativeTextureImporter
-{
-public:
- static void buildWrapper(QRhi *rhi, QRhiTexture *t,
- const void *nativeObjectPtr, int nativeLayout);
+ QVariant data(const QModelIndex &index, int role) const override
+ {
+ if (!index.isValid())
+ return QVariant();
+
+ switch (role) {
+ case Qt::DisplayRole:
+ return index.row() % 2 ? QStringLiteral("type2") : QStringLiteral("type1");
+ default:
+ break;
+ }
+
+ return QVariant();
+ }
+
+ QHash<int, QByteArray> roleNames() const override
+ {
+ return {
+ {Qt::DisplayRole, "delegateType"},
+ };
+ }
+
+signals:
+ void rowCountChanged();
+
+private:
+ int m_rows = 0;
};
-QT_END_NAMESPACE
+#include "main.moc"
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
+
+ QGuiApplication app(argc, argv);
+
+ qmlRegisterType<TestModel>("TestModel", 0, 1, "TestModel");
+
+ QQmlApplicationEngine engine;
+ engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
-#endif // QSGRHINATIVETEXTUREIMPORTER_P_H
+ return app.exec();
+}
diff --git a/tests/manual/listview/main.qml b/tests/manual/listview/main.qml
new file mode 100644
index 0000000000..723e10ac05
--- /dev/null
+++ b/tests/manual/listview/main.qml
@@ -0,0 +1,171 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtQuick module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.15
+import QtQuick.Window 2.2
+import QtQuick.Controls 2.5
+import Qt.labs.qmlmodels 1.0
+import TestModel 0.1
+
+Window {
+ id: root
+ visible: true
+ width: 640
+ height: 480
+
+ property int rows: 500
+ property int columns: 20
+ property real delegateHeight: 10
+ property real delegateWidth: 50
+
+ CheckBox {
+ id: reuseItemsBox
+ text: "Reuse items"
+ checked: true
+ }
+
+ Rectangle {
+ anchors.fill: parent
+ anchors.margins: 10
+ anchors.topMargin: reuseItemsBox.height + 10
+ color: "lightgray"
+
+ ListView {
+ id: listView
+ anchors.fill: parent
+
+ reuseItems: reuseItemsBox.checked
+
+ cacheBuffer: 0
+ contentWidth: columns * delegateWidth
+ contentHeight: rows * delegateHeight
+ flickableDirection: Flickable.HorizontalAndVerticalFlick
+ clip: true
+
+ model: TestModel {
+ rowCount: root.rows
+ }
+
+ ScrollBar.vertical: ScrollBar { policy: ScrollBar.AlwaysOn }
+ ScrollBar.horizontal: ScrollBar { policy: ScrollBar.AlwaysOn }
+
+ delegate: DelegateChooser {
+ role: "delegateType"
+
+ DelegateChoice {
+ roleValue: "type1"
+
+ Item {
+ width: listView.contentWidth
+ height: delegateHeight
+ property int reusedCount: 0
+
+ ListView.onReused: reusedCount++
+
+ Text {
+ id: text1
+ text: "Reused count:" + reusedCount
+ font.pixelSize: 9
+ }
+
+ Row {
+ id: choice1
+ width: listView.contentWidth
+ height: delegateHeight
+ anchors.left: text1.right
+ anchors.leftMargin: 5
+ property color color: Qt.rgba(0.6, 0.6, 0.8, 1)
+
+ Component.onCompleted: {
+ for (var i = 0; i < columns; ++i)
+ cellComponent.createObject(choice1, {column: i, color: color})
+ }
+ }
+ }
+ }
+
+ DelegateChoice {
+ roleValue: "type2"
+
+ Item {
+ width: listView.contentWidth
+ height: delegateHeight
+ property int reusedCount: 0
+
+ ListView.onReused: reusedCount++
+
+ Text {
+ id: text2
+ text: "Reused count:" + reusedCount
+ font.pixelSize: 9
+ }
+
+ Row {
+ id: choice2
+ width: listView.contentWidth
+ height: delegateHeight
+ anchors.left: text2.right
+ anchors.leftMargin: 5
+ property color color: Qt.rgba(0.3, 0.3, 0.8, 1)
+
+ Component.onCompleted: {
+ for (var i = 0; i < columns; ++i)
+ cellComponent.createObject(choice2, {column: i, color: color})
+ }
+ }
+ }
+ }
+ }
+
+ }
+ }
+
+ Component {
+ id: cellComponent
+ Rectangle {
+ height: delegateHeight
+ width: delegateWidth
+ property int column
+ Text {
+ text: "Lorem ipsum dolor sit amet"
+ font.pixelSize: 9
+ }
+ }
+ }
+}
diff --git a/tests/manual/listview/qml.qrc b/tests/manual/listview/qml.qrc
new file mode 100644
index 0000000000..5f6483ac33
--- /dev/null
+++ b/tests/manual/listview/qml.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/">
+ <file>main.qml</file>
+ </qresource>
+</RCC>
diff --git a/tests/manual/nodetypes/Animators.qml b/tests/manual/nodetypes/Animators.qml
deleted file mode 100644
index c582106c5d..0000000000
--- a/tests/manual/nodetypes/Animators.qml
+++ /dev/null
@@ -1,190 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the demonstration applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.5
-
-Item {
- id: window
-
- Rectangle {
- anchors.fill: parent
- gradient: Gradient {
- GradientStop { position: 0.0; color: "#14148c" }
- GradientStop { position: 0.499; color: "#14aaff" }
- GradientStop { position: 0.5; color: "#80c342" }
- GradientStop { position: 1.0; color: "#006325" }
- }
- }
-
- SequentialAnimation {
- id: plainAnim
- SequentialAnimation {
- ParallelAnimation {
- PropertyAnimation {
- property: "y"
- target: smiley
- from: smiley.minHeight
- to: smiley.maxHeight
- easing.type: Easing.OutExpo
- duration: 300
- }
- PropertyAnimation {
- property: "scale"
- target: shadow
- from: 1
- to: 0.5
- easing.type: Easing.OutExpo
- duration: 300
- }
- }
- ParallelAnimation {
- PropertyAnimation {
- property: "y"
- target: smiley
- from: smiley.maxHeight
- to: smiley.minHeight
- easing.type: Easing.OutBounce
- duration: 1000
- }
- PropertyAnimation {
- property: "scale"
- target: shadow
- from: 0.5
- to: 1
- easing.type: Easing.OutBounce
- duration: 1000
- }
- }
- }
- running: false
- }
-
- SequentialAnimation {
- id: renderThreadAnim
- SequentialAnimation {
- ParallelAnimation {
- YAnimator {
- target: smiley
- from: smiley.minHeight
- to: smiley.maxHeight
- easing.type: Easing.OutExpo
- duration: 300
- }
- ScaleAnimator {
- target: shadow
- from: 1
- to: 0.5
- easing.type: Easing.OutExpo
- duration: 300
- }
- }
- ParallelAnimation {
- YAnimator {
- target: smiley
- from: smiley.maxHeight
- to: smiley.minHeight
- easing.type: Easing.OutBounce
- duration: 1000
- }
- ScaleAnimator {
- target: shadow
- from: 0.5
- to: 1
- easing.type: Easing.OutBounce
- duration: 1000
- }
- }
- }
- running: false
- }
-
- Image {
- id: shadow
- anchors.horizontalCenter: parent.horizontalCenter
- y: smiley.minHeight + smiley.height
- source: "qrc:/shadow.png"
- }
-
- Image {
- id: smiley
- property int maxHeight: window.height / 3
- property int minHeight: 2 * window.height / 3
-
- anchors.horizontalCenter: parent.horizontalCenter
- y: minHeight
- source: "qrc:/face-smile.png"
- }
-
- Text {
- text: "click left for plain animation, right for render thread Animators, middle to sleep for 2 sec on the main (gui) thread"
- color: "white"
- }
-
- Text {
- text: plainAnim.running ? "NORMAL ANIMATION" : (renderThreadAnim.running ? "RENDER THREAD ANIMATION" : "NO ANIMATION")
- color: "red"
- font.pointSize: 20
- anchors.bottom: parent.bottom
- }
-
- MouseArea {
- anchors.fill: parent
- acceptedButtons: Qt.AllButtons
- onClicked: if (mouse.button === Qt.LeftButton) {
- renderThreadAnim.running = false;
- plainAnim.running = true;
- } else if (mouse.button === Qt.RightButton) {
- plainAnim.running = false;
- renderThreadAnim.running = true;
- } else if (mouse.button === Qt.MiddleButton) {
- helper.sleep(2000);
- }
- }
-}
diff --git a/tests/manual/nodetypes/Effects.qml b/tests/manual/nodetypes/Effects.qml
deleted file mode 100644
index 90a30c40d3..0000000000
--- a/tests/manual/nodetypes/Effects.qml
+++ /dev/null
@@ -1,231 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the demonstration applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-// Use QtQuick 2.8 to get GraphicsInfo and the other new properties
-import QtQuick 2.8
-
-Item {
- Rectangle {
- color: "gray"
- anchors.margins: 10
- anchors.fill: parent
- Image {
- id: image1
- source: "qrc:/qt.png"
- }
- ShaderEffectSource {
- id: effectSource1
- sourceItem: image1
- hideSource: true
- }
- ShaderEffect { // wobble
- id: eff
- width: image1.width
- height: image1.height
- anchors.centerIn: parent
-
- property variant source: effectSource1
- property real amplitude: 0.04 * 0.2
- property real frequency: 20
- property real time: 0
-
- NumberAnimation on time { loops: Animation.Infinite; from: 0; to: Math.PI * 2; duration: 600 }
-
- property bool customVertexShader: false // the effect is fine with the default vs, but toggle this to test
- property bool useHLSLSourceString: false // toggle to provide HLSL shaders as strings instead of bytecode in files
-
- property string glslVertexShader:
- "uniform highp mat4 qt_Matrix;" +
- "attribute highp vec4 qt_Vertex;" +
- "attribute highp vec2 qt_MultiTexCoord0;" +
- "varying highp vec2 qt_TexCoord0;" +
- "void main() {" +
- " qt_TexCoord0 = qt_MultiTexCoord0;" +
- " gl_Position = qt_Matrix * qt_Vertex;" +
- "}"
-
- property string glslFragmentShader:
- "uniform sampler2D source;" +
- "uniform highp float amplitude;" +
- "uniform highp float frequency;" +
- "uniform highp float time;" +
- "uniform lowp float qt_Opacity;" +
- "varying highp vec2 qt_TexCoord0;" +
- "void main() {" +
- " highp vec2 p = sin(time + frequency * qt_TexCoord0);" +
- " gl_FragColor = texture2D(source, qt_TexCoord0 + amplitude * vec2(p.y, -p.x)) * qt_Opacity;" +
- "}"
-
- property string hlslVertexShader: "cbuffer ConstantBuffer : register(b0) {" +
- " float4x4 qt_Matrix;" +
- " float qt_Opacity; }" +
- "struct PSInput {" +
- " float4 position : SV_POSITION;" +
- " float2 coord : TEXCOORD0; };" +
- "PSInput main(float4 position : POSITION, float2 coord : TEXCOORD0) {" +
- " PSInput result;" +
- " result.position = mul(qt_Matrix, position);" +
- " result.coord = coord;" +
- " return result;" +
- "}";
-
- property string hlslPixelShader:"cbuffer ConstantBuffer : register(b0) {" +
- " float4x4 qt_Matrix;" +
- " float qt_Opacity;" +
- " float amplitude;" +
- " float frequency;" +
- " float time; }" +
- "Texture2D source : register(t0);" +
- "SamplerState sourceSampler : register(s0);" +
- "float4 main(float4 position : SV_POSITION, float2 coord : TEXCOORD0) : SV_TARGET" +
- "{" +
- " float2 p = sin(time + frequency * coord);" +
- " return source.Sample(sourceSampler, coord + amplitude * float2(p.y, -p.x)) * qt_Opacity;" +
- "}";
-
- property string hlslVertexShaderByteCode: "qrc:/vs_wobble.cso"
- property string hlslPixelShaderByteCode: "qrc:/ps_wobble.cso"
-
- vertexShader: customVertexShader ? (GraphicsInfo.shaderType === GraphicsInfo.HLSL
- ? (useHLSLSourceString ? hlslVertexShader : hlslVertexShaderByteCode)
- : (GraphicsInfo.shaderType === GraphicsInfo.GLSL ? glslVertexShader : "")) : ""
-
- fragmentShader: GraphicsInfo.shaderType === GraphicsInfo.HLSL
- ? (useHLSLSourceString ? hlslPixelShader : hlslPixelShaderByteCode)
- : (GraphicsInfo.shaderType === GraphicsInfo.GLSL ? glslFragmentShader : "")
- }
-
- Image {
- id: image2
- source: "qrc:/face-smile.png"
- }
- ShaderEffectSource {
- id: effectSource2
- sourceItem: image2
- hideSource: true
- }
- ShaderEffect { // dropshadow
- id: eff2
- width: image2.width
- height: image2.height
- scale: 2
- x: 40
- y: 40
-
- property variant source: effectSource2
-
- property string glslShaderPass1: "
- uniform lowp float qt_Opacity;
- uniform sampler2D source;
- uniform highp vec2 delta;
- varying highp vec2 qt_TexCoord0;
- void main() {
- gl_FragColor = (0.0538 * texture2D(source, qt_TexCoord0 - 3.182 * delta)
- + 0.3229 * texture2D(source, qt_TexCoord0 - 1.364 * delta)
- + 0.2466 * texture2D(source, qt_TexCoord0)
- + 0.3229 * texture2D(source, qt_TexCoord0 + 1.364 * delta)
- + 0.0538 * texture2D(source, qt_TexCoord0 + 3.182 * delta)) * qt_Opacity;
- }"
- property string glslShaderPass2: "
- uniform lowp float qt_Opacity;
- uniform highp vec2 offset;
- uniform sampler2D source;
- uniform sampler2D shadow;
- uniform highp float darkness;
- uniform highp vec2 delta;
- varying highp vec2 qt_TexCoord0;
- void main() {
- lowp vec4 fg = texture2D(source, qt_TexCoord0);
- lowp vec4 bg = texture2D(shadow, qt_TexCoord0 + delta);
- gl_FragColor = (fg + vec4(0., 0., 0., darkness * bg.a) * (1. - fg.a)) * qt_Opacity;
- }"
-
- property variant shadow: ShaderEffectSource {
- sourceItem: ShaderEffect {
- width: eff2.width
- height: eff2.height
- property variant delta: Qt.size(0.0, 1.0 / height)
- property variant source: ShaderEffectSource {
- sourceItem: ShaderEffect {
- id: innerEff
- width: eff2.width
- height: eff2.height
- property variant delta: Qt.size(1.0 / width, 0.0)
- property variant source: effectSource2
- fragmentShader: GraphicsInfo.shaderType === GraphicsInfo.HLSL ? "qrc:/ps_shadow1.cso" : (GraphicsInfo.shaderType === GraphicsInfo.GLSL ? eff2.glslShaderPass1 : "")
- }
- }
- fragmentShader: GraphicsInfo.shaderType === GraphicsInfo.HLSL ? "qrc:/ps_shadow1.cso" : (GraphicsInfo.shaderType === GraphicsInfo.GLSL ? eff2.glslShaderPass1: "")
- }
- }
- property real angle: 0
- property variant offset: Qt.point(5.0 * Math.cos(angle), 5.0 * Math.sin(angle))
- NumberAnimation on angle { loops: Animation.Infinite; from: 0; to: Math.PI * 2; duration: 6000 }
- property variant delta: Qt.size(offset.x / width, offset.y / height)
- property real darkness: 0.5
- fragmentShader: GraphicsInfo.shaderType === GraphicsInfo.HLSL ? "qrc:/ps_shadow2.cso" : (GraphicsInfo.shaderType === GraphicsInfo.GLSL ? glslShaderPass2 : "")
- }
-
- Column {
- anchors.bottom: parent.bottom
- Text {
- color: "yellow"
- font.pointSize: 24
- text: "Shader effect is " + (GraphicsInfo.shaderType === GraphicsInfo.HLSL ? "HLSL" : (GraphicsInfo.shaderType === GraphicsInfo.GLSL ? "GLSL" : "UNKNOWN")) + " based";
- }
- Text {
- text: GraphicsInfo.shaderType + " " + GraphicsInfo.shaderCompilationType + " " + GraphicsInfo.shaderSourceType
- }
- Text {
- text: eff.status + " " + eff.log
- }
- }
- }
-}
diff --git a/tests/manual/nodetypes/Layers.qml b/tests/manual/nodetypes/Layers.qml
deleted file mode 100644
index 755d00d41a..0000000000
--- a/tests/manual/nodetypes/Layers.qml
+++ /dev/null
@@ -1,116 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the demonstration applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-
-Item {
- Rectangle {
- color: "lightGray"
- anchors.fill: parent
- anchors.margins: 10
-
- Row {
- anchors.fill: parent
- anchors.margins: 10
- Rectangle {
- color: "red"
-// ColorAnimation on color {
-// from: "black"
-// to: "white"
-// duration: 2000
-// loops: Animation.Infinite
-// }
- width: 300
- height: 100
- layer.enabled: true
- Text { text: "this is in a layer, going through an offscreen render target" }
- clip: true
- Rectangle {
- color: "lightGreen"
- width: 50
- height: 50
- x: 275
- y: 75
- }
- }
- Rectangle {
- color: "white"
- width: 300
- height: 100
- Text { text: "this is not a layer" }
- }
- Rectangle {
- color: "green"
- width: 300
- height: 100
- layer.enabled: true
- Text { text: "this is another layer" }
- Rectangle {
- border.width: 4
- border.color: "black"
- anchors.centerIn: parent
- width: 150
- height: 50
- layer.enabled: true
- Text {
- anchors.centerIn: parent
- text: "layer in a layer"
- }
- }
- Image {
- source: "qrc:/face-smile.png"
- anchors.bottom: parent.bottom
- anchors.right: parent.right
- NumberAnimation on rotation { from: 0; to: 360; duration: 2000; loops: Animation.Infinite; }
- }
- }
- }
- }
-}
diff --git a/tests/manual/nodetypes/LotsOfRects.qml b/tests/manual/nodetypes/LotsOfRects.qml
deleted file mode 100644
index e54174f10c..0000000000
--- a/tests/manual/nodetypes/LotsOfRects.qml
+++ /dev/null
@@ -1,260 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the demonstration applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-
-Item {
- Rectangle {
- anchors.margins: 4
- anchors.fill: parent
-
- // Background
- gradient: Gradient {
- GradientStop { position: 0; color: "steelblue" }
- GradientStop { position: 1; color: "black" }
- }
-
- // Animated gradient stops.
- // NB! Causes a full buffer rebuild on every animated change due to the geometry change!
- Row {
- spacing: 10
- Repeater {
- model: 20
- Rectangle {
- width: 20
- height: 20
- gradient: Gradient {
- GradientStop { position: 0.0; color: "red" }
- GradientStop { NumberAnimation on position { from: 0.01; to: 0.99; duration: 5000; loops: Animation.Infinite } color: "yellow" }
- GradientStop { position: 1.0; color: "green" }
- }
- }
- }
- }
-
- // Rounded rects with border (smooth material)
- Row {
- spacing: 10
- Repeater {
- model: 5
- Rectangle {
- color: "blue"
- width: 100
- height: 50
- y: 50
- radius: 16
- border.color: "red"
- border.width: 4
-
- SequentialAnimation on y {
- loops: Animation.Infinite
- NumberAnimation {
- from: 50
- to: 150
- duration: 7000
- }
- NumberAnimation {
- from: 150
- to: 50
- duration: 3000
- }
- }
- }
- }
- }
-
- // Clip using scissor
- Row {
- spacing: 10
- Repeater {
- model: 5
- Rectangle {
- color: "green"
- width: 100
- height: 100
- y: 150
- NumberAnimation on y {
- from: 150
- to: 200
- duration: 2000
- loops: Animation.Infinite
- }
- clip: true
- Rectangle {
- color: "lightGreen"
- width: 50
- height: 50
- x: 75
- y: 75
- }
- }
- }
- }
-
- // Clip using scissor
- Row {
- spacing: 10
- Repeater {
- model: 5
- Rectangle {
- color: "green"
- width: 100
- height: 100
- y: 300
- NumberAnimation on y {
- from: 300
- to: 400
- duration: 2000
- loops: Animation.Infinite
- }
- clip: true
- Rectangle {
- color: "lightGreen"
- width: 50
- height: 50
- x: 75
- y: 75
- NumberAnimation on rotation { from: 0; to: 360; duration: 2000; loops: Animation.Infinite; }
- }
- }
- }
- }
-
- // Clip using stencil
- Row {
- spacing: 10
- Repeater {
- model: 5
- Rectangle {
- color: "green"
- width: 100
- height: 100
- y: 450
- NumberAnimation on y {
- from: 450
- to: 550
- duration: 2000
- loops: Animation.Infinite
- }
- NumberAnimation on rotation { from: 0; to: 360; duration: 2000; loops: Animation.Infinite; }
- clip: true
- Rectangle {
- color: "lightGreen"
- width: 50
- height: 50
- x: 75
- y: 75
- }
- }
- }
- }
-
- // The signature red square with another item with animated opacity blended on top
- Rectangle {
- width: 100
- height: 100
- anchors.centerIn: parent
- color: "red"
- NumberAnimation on rotation { from: 0; to: 360; duration: 2000; loops: Animation.Infinite; }
-
- Rectangle {
- color: "gray"
- width: 50
- height: 50
- anchors.centerIn: parent
-
- SequentialAnimation on opacity {
- loops: Animation.Infinite
- NumberAnimation {
- from: 1.0
- to: 0.0
- duration: 4000
- }
- NumberAnimation {
- from: 0.0
- to: 1.0
- duration: 4000
- easing.type: Easing.InOutQuad
- }
- }
- }
- }
-
- // Animated size and color.
- // NB! Causes a full buffer rebuild on every animated change due to the geometry change!
- Rectangle {
- anchors.right: parent.right
- anchors.bottom: parent.bottom
- width: 10
- height: 100
- ColorAnimation on color {
- from: "blue"
- to: "purple"
- duration: 5000
- loops: Animation.Infinite
- }
- NumberAnimation on width {
- from: 10
- to: 300
- duration: 5000
- loops: Animation.Infinite
- }
- }
-
- // Semi-transparent rect on top.
- Rectangle {
- anchors.centerIn: parent
- opacity: 0.2
- color: "black"
- anchors.fill: parent
- anchors.margins: 10
- }
- }
-}
diff --git a/tests/manual/nodetypes/face-smile.png b/tests/manual/nodetypes/face-smile.png
deleted file mode 100644
index 3d66d72578..0000000000
--- a/tests/manual/nodetypes/face-smile.png
+++ /dev/null
Binary files differ
diff --git a/tests/manual/nodetypes/hlslcompile.bat b/tests/manual/nodetypes/hlslcompile.bat
deleted file mode 100644
index b24824e324..0000000000
--- a/tests/manual/nodetypes/hlslcompile.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-fxc /E VS_Wobble /T vs_5_0 /Fo vs_wobble.cso wobble.hlsl
-fxc /E PS_Wobble /T ps_5_0 /Fo ps_wobble.cso wobble.hlsl
-fxc /E PS_Shadow1 /T ps_5_0 /Fo ps_shadow1.cso shadow1.hlsl
-fxc /E PS_Shadow2 /T ps_5_0 /Fo ps_shadow2.cso shadow2.hlsl
diff --git a/tests/manual/nodetypes/nodetypes.cpp b/tests/manual/nodetypes/nodetypes.cpp
deleted file mode 100644
index 287574f25c..0000000000
--- a/tests/manual/nodetypes/nodetypes.cpp
+++ /dev/null
@@ -1,216 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the demonstration applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QGuiApplication>
-#include <QThread>
-#include <QQuickView>
-#include <QQmlEngine>
-#include <QQmlContext>
-#include <QQuickPaintedItem>
-#include <QPainter>
-#include <QTimer>
-
-class TextBalloon : public QQuickPaintedItem
-{
- Q_OBJECT
- Q_PROPERTY(bool rightAligned READ isRightAligned WRITE setRightAligned NOTIFY rightAlignedChanged)
- Q_PROPERTY(bool innerAnim READ innerAnimEnabled WRITE setInnerAnimEnabled NOTIFY innerAnimChanged)
-
-public:
- TextBalloon(QQuickItem *parent = nullptr) : QQuickPaintedItem(parent) {
- connect(&m_timer, &QTimer::timeout, this, &TextBalloon::onAnim);
- m_timer.setInterval(500);
- }
- void paint(QPainter *painter);
-
- bool isRightAligned() { return m_rightAligned; }
- void setRightAligned(bool rightAligned);
-
- bool innerAnimEnabled() const { return m_innerAnim; }
- void setInnerAnimEnabled(bool b);
-
-signals:
- void rightAlignedChanged();
- void innerAnimChanged();
-
-private slots:
- void onAnim();
-
-private:
- bool m_rightAligned = false;
- bool m_innerAnim = false;
- QTimer m_timer;
- QRect m_animRect = QRect(10, 10, 50, 20);
- int m_anim = 0;
-};
-
-void TextBalloon::paint(QPainter *painter)
-{
- QBrush brush(QColor("#007430"));
-
- painter->setBrush(brush);
- painter->setPen(Qt::NoPen);
- painter->setRenderHint(QPainter::Antialiasing);
-
- painter->drawRoundedRect(0, 0, boundingRect().width(), boundingRect().height() - 10, 10, 10);
-
- if (m_rightAligned) {
- const QPointF points[3] = {
- QPointF(boundingRect().width() - 10.0, boundingRect().height() - 10.0),
- QPointF(boundingRect().width() - 20.0, boundingRect().height()),
- QPointF(boundingRect().width() - 30.0, boundingRect().height() - 10.0),
- };
- painter->drawConvexPolygon(points, 3);
- } else {
- const QPointF points[3] = {
- QPointF(10.0, boundingRect().height() - 10.0),
- QPointF(20.0, boundingRect().height()),
- QPointF(30.0, boundingRect().height() - 10.0),
- };
- painter->drawConvexPolygon(points, 3);
- }
-
- if (m_innerAnim) {
- painter->fillRect(m_animRect, Qt::lightGray);
- const int x = m_animRect.x() + m_anim;
- const int y = m_animRect.y() + m_animRect.height() / 2;
- painter->setPen(QPen(QBrush(Qt::SolidLine), 4));
- painter->drawLine(x + 4, y, x + 10, y);
- m_anim += 10;
- if (m_anim > m_animRect.width())
- m_anim = 0;
- }
-}
-
-void TextBalloon::setRightAligned(bool rightAligned)
-{
- if (m_rightAligned == rightAligned)
- return;
-
- m_rightAligned = rightAligned;
- emit rightAlignedChanged();
-}
-
-void TextBalloon::setInnerAnimEnabled(bool b)
-{
- if (m_innerAnim == b)
- return;
-
- m_innerAnim = b;
- if (!b)
- m_timer.stop();
- else
- m_timer.start();
- emit innerAnimChanged();
-}
-
-void TextBalloon::onAnim()
-{
- update(m_animRect);
-}
-
-class Helper : public QObject
-{
- Q_OBJECT
-
-public:
- Helper(QQuickWindow *w) : m_window(w) { }
-
- Q_INVOKABLE void sleep(int ms) {
- QThread::msleep(ms);
- }
-
- Q_INVOKABLE void testGrab() {
- QImage img = m_window->grabWindow();
- qDebug() << "Saving image to grab_result.png" << img;
- img.save("grab_result.png");
- }
-
- QQuickWindow *m_window;
-};
-
-int main(int argc, char **argv)
-{
- qputenv("QT_QUICK_BACKEND", "d3d12");
-
- QGuiApplication app(argc, argv);
-
- qDebug("Available tests:");
- qDebug(" [R] - Rectangles");
- qDebug(" [4] - A lot of rectangles");
- qDebug(" [I] - Images");
- qDebug(" [5] - A lot of async images");
- qDebug(" [T] - Text");
- qDebug(" [A] - Render thread Animator");
- qDebug(" [L] - Layers");
- qDebug(" [E] - Effects");
- qDebug(" [P] - QQuickPaintedItem");
- qDebug(" [G] - Grab current window");
- qDebug("\nPress S to stop the currently running test\n");
-
- QQuickView view;
- Helper helper(&view);
- if (app.arguments().contains(QLatin1String("--multisample"))) {
- qDebug("Requesting sample count 4");
- QSurfaceFormat fmt;
- fmt.setSamples(4);
- view.setFormat(fmt);
- }
- view.engine()->rootContext()->setContextProperty(QLatin1String("helper"), &helper);
- qmlRegisterType<TextBalloon>("Stuff", 1, 0, "TextBalloon");
- view.setResizeMode(QQuickView::SizeRootObjectToView);
- view.resize(1024, 768);
- view.setSource(QUrl("qrc:/main.qml"));
- view.show();
-
- return app.exec();
-}
-
-#include "nodetypes.moc"
diff --git a/tests/manual/nodetypes/nodetypes.pro b/tests/manual/nodetypes/nodetypes.pro
deleted file mode 100644
index 959b43cf18..0000000000
--- a/tests/manual/nodetypes/nodetypes.pro
+++ /dev/null
@@ -1,9 +0,0 @@
-QT += qml quick
-
-SOURCES += nodetypes.cpp
-
-RESOURCES += nodetypes.qrc
-
-OTHER_FILES += main.qml Rects.qml LotsOfRects.qml \
- Images.qml LotsOfImages.qml Text.qml Animators.qml Layers.qml Effects.qml Painter.qml \
- wobble.hlsl shadow1.hlsl shadow2.hlsl
diff --git a/tests/manual/nodetypes/nodetypes.qrc b/tests/manual/nodetypes/nodetypes.qrc
deleted file mode 100644
index 78c0d085a1..0000000000
--- a/tests/manual/nodetypes/nodetypes.qrc
+++ /dev/null
@@ -1,21 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>main.qml</file>
- <file>Rects.qml</file>
- <file>LotsOfRects.qml</file>
- <file>Images.qml</file>
- <file>LotsOfImages.qml</file>
- <file>Text.qml</file>
- <file>Animators.qml</file>
- <file>Layers.qml</file>
- <file>Effects.qml</file>
- <file>Painter.qml</file>
- <file>qt.png</file>
- <file>face-smile.png</file>
- <file>shadow.png</file>
- <file>vs_wobble.cso</file>
- <file>ps_wobble.cso</file>
- <file>ps_shadow1.cso</file>
- <file>ps_shadow2.cso</file>
- </qresource>
-</RCC>
diff --git a/tests/manual/nodetypes/ps_shadow1.cso b/tests/manual/nodetypes/ps_shadow1.cso
deleted file mode 100644
index b6fbe3f3c2..0000000000
--- a/tests/manual/nodetypes/ps_shadow1.cso
+++ /dev/null
Binary files differ
diff --git a/tests/manual/nodetypes/ps_shadow2.cso b/tests/manual/nodetypes/ps_shadow2.cso
deleted file mode 100644
index ab8cb63f34..0000000000
--- a/tests/manual/nodetypes/ps_shadow2.cso
+++ /dev/null
Binary files differ
diff --git a/tests/manual/nodetypes/ps_wobble.cso b/tests/manual/nodetypes/ps_wobble.cso
deleted file mode 100644
index 4e5b6a27f4..0000000000
--- a/tests/manual/nodetypes/ps_wobble.cso
+++ /dev/null
Binary files differ
diff --git a/tests/manual/nodetypes/qt.png b/tests/manual/nodetypes/qt.png
deleted file mode 100644
index f30eec0d4d..0000000000
--- a/tests/manual/nodetypes/qt.png
+++ /dev/null
Binary files differ
diff --git a/tests/manual/nodetypes/shadow.png b/tests/manual/nodetypes/shadow.png
deleted file mode 100644
index 8270565e87..0000000000
--- a/tests/manual/nodetypes/shadow.png
+++ /dev/null
Binary files differ
diff --git a/tests/manual/nodetypes/shadow1.hlsl b/tests/manual/nodetypes/shadow1.hlsl
deleted file mode 100644
index ff3f4b6fd5..0000000000
--- a/tests/manual/nodetypes/shadow1.hlsl
+++ /dev/null
@@ -1,18 +0,0 @@
-cbuffer ConstantBuffer : register(b0)
-{
- float4x4 qt_Matrix;
- float qt_Opacity;
- float2 delta;
-};
-
-Texture2D source : register(t0);
-SamplerState sourceSampler : register(s0);
-
-float4 PS_Shadow1(float4 position : SV_POSITION, float2 coord : TEXCOORD0) : SV_TARGET
-{
- return (0.0538 * source.Sample(sourceSampler, coord - 3.182 * delta)
- + 0.3229 * source.Sample(sourceSampler, coord - 1.364 * delta)
- + 0.2466 * source.Sample(sourceSampler, coord)
- + 0.3229 * source.Sample(sourceSampler, coord + 1.364 * delta)
- + 0.0538 * source.Sample(sourceSampler, coord + 3.182 * delta)) * qt_Opacity;
-}
diff --git a/tests/manual/nodetypes/shadow2.hlsl b/tests/manual/nodetypes/shadow2.hlsl
deleted file mode 100644
index eaa30cd988..0000000000
--- a/tests/manual/nodetypes/shadow2.hlsl
+++ /dev/null
@@ -1,22 +0,0 @@
-cbuffer ConstantBuffer : register(b0)
-{
- float4x4 qt_Matrix;
- float qt_Opacity;
- float2 offset;
- float darkness;
- float2 delta;
-};
-
-Texture2D source : register(t0);
-Texture2D shadow : register(t1);
-SamplerState samp : register(s0);
-// Use the same sampler for both textures. In fact the engine will create an extra static sampler
-// in any case (to match the number of textures) due to some internals, but that won't hurt, the
-// shader works either way.
-
-float4 PS_Shadow2(float4 position : SV_POSITION, float2 coord : TEXCOORD0) : SV_TARGET
-{
- float4 fg = source.Sample(samp, coord);
- float4 bg = shadow.Sample(samp, coord + delta);
- return (fg + float4(0.0, 0.0, 0.0, darkness * bg.a) * (1.0 - fg.a)) * qt_Opacity;
-}
diff --git a/tests/manual/nodetypes/vs_wobble.cso b/tests/manual/nodetypes/vs_wobble.cso
deleted file mode 100644
index f3a2596457..0000000000
--- a/tests/manual/nodetypes/vs_wobble.cso
+++ /dev/null
Binary files differ
diff --git a/tests/manual/nodetypes/wobble.hlsl b/tests/manual/nodetypes/wobble.hlsl
deleted file mode 100644
index 203dbda7f2..0000000000
--- a/tests/manual/nodetypes/wobble.hlsl
+++ /dev/null
@@ -1,32 +0,0 @@
-cbuffer ConstantBuffer : register(b0)
-{
- float4x4 qt_Matrix;
- float qt_Opacity;
-
- float amplitude;
- float frequency;
- float time;
-};
-
-struct PSInput
-{
- float4 position : SV_POSITION;
- float2 coord : TEXCOORD0;
-};
-
-PSInput VS_Wobble(float4 position : POSITION, float2 coord : TEXCOORD0)
-{
- PSInput result;
- result.position = mul(qt_Matrix, position);
- result.coord = coord;
- return result;
-}
-
-Texture2D source : register(t0);
-SamplerState sourceSampler : register(s0);
-
-float4 PS_Wobble(PSInput input) : SV_TARGET
-{
- float2 p = sin(time + frequency * input.coord);
- return source.Sample(sourceSampler, input.coord + amplitude * float2(p.y, -p.x)) * qt_Opacity;
-}
diff --git a/tests/manual/nodetypes_ng/shadow_pass1.frag.qsb b/tests/manual/nodetypes_ng/shadow_pass1.frag.qsb
index f3370caee2..f90265a997 100644
--- a/tests/manual/nodetypes_ng/shadow_pass1.frag.qsb
+++ b/tests/manual/nodetypes_ng/shadow_pass1.frag.qsb
Binary files differ
diff --git a/tests/manual/nodetypes_ng/shadow_pass2.frag.qsb b/tests/manual/nodetypes_ng/shadow_pass2.frag.qsb
index cbf9569373..9608763b61 100644
--- a/tests/manual/nodetypes_ng/shadow_pass2.frag.qsb
+++ b/tests/manual/nodetypes_ng/shadow_pass2.frag.qsb
Binary files differ
diff --git a/tests/manual/nodetypes_ng/wobble.frag.qsb b/tests/manual/nodetypes_ng/wobble.frag.qsb
index 9d3b80fad8..7d3105fd3c 100644
--- a/tests/manual/nodetypes_ng/wobble.frag.qsb
+++ b/tests/manual/nodetypes_ng/wobble.frag.qsb
Binary files differ
diff --git a/tests/manual/nodetypes_ng/wobble.vert.qsb b/tests/manual/nodetypes_ng/wobble.vert.qsb
index 0f44e87feb..92b8ba9703 100644
--- a/tests/manual/nodetypes_ng/wobble.vert.qsb
+++ b/tests/manual/nodetypes_ng/wobble.vert.qsb
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/activity/activity.qml b/tests/manual/scenegraph_lancelot/data/shaders/activity/activity.qml
index d4ae526b5d..956b3d7d91 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/activity/activity.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/activity/activity.qml
@@ -23,13 +23,6 @@ Item {
property variant source: source
- fragmentShader: "
- uniform lowp sampler2D source;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
- }
- "
+ fragmentShader: "qrc:shaders/gradient.frag"
}
}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/basic/basic.qml b/tests/manual/scenegraph_lancelot/data/shaders/basic/basic.qml
index f1bb03a4a9..24aa5db5e8 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/basic/basic.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/basic/basic.qml
@@ -6,12 +6,6 @@ Item {
ShaderEffect {
anchors.fill: parent;
- fragmentShader: "
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1);
- }
- "
+ fragmentShader: "qrc:shaders/basic.frag"
}
}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/culling/culling_1.qml b/tests/manual/scenegraph_lancelot/data/shaders/culling/culling_1.qml
index 76ce60fd7d..118de56098 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/culling/culling_1.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/culling/culling_1.qml
@@ -72,16 +72,7 @@ Rectangle {
cullMode: model.bar
property variant frontSource: front
property variant backSource: back
- fragmentShader: "
- varying highp vec2 qt_TexCoord0;
- uniform sampler2D frontSource;
- uniform sampler2D backSource;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = gl_FrontFacing
- ? texture2D(frontSource, qt_TexCoord0)
- : texture2D(backSource, qt_TexCoord0);
- }"
+ fragmentShader: "qrc:shaders/culling.frag"
transform: Rotation {
origin.x: 200
origin.y: 180 - 120 * index
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/culling/culling_2.qml b/tests/manual/scenegraph_lancelot/data/shaders/culling/culling_2.qml
index 45f20dd5a4..7614451e05 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/culling/culling_2.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/culling/culling_2.qml
@@ -72,16 +72,7 @@ Rectangle {
cullMode: model.bar
property variant frontSource: front
property variant backSource: back
- fragmentShader: "
- varying highp vec2 qt_TexCoord0;
- uniform sampler2D frontSource;
- uniform sampler2D backSource;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = gl_FrontFacing
- ? texture2D(frontSource, qt_TexCoord0)
- : texture2D(backSource, qt_TexCoord0);
- }"
+ fragmentShader: "qrc:shaders/culling.frag"
transform: Rotation {
origin.x: 100
origin.y: 180 - 120 * index
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_1.qml b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_1.qml
index ddea979124..7a743453ab 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_1.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_1.qml
@@ -6,8 +6,8 @@ Rectangle {
color: "skyblue"
ShaderEffect {
anchors.centerIn: parent
- width: 16 * 16
- height: 24 * 16
+ width: 22 * 12
+ height: 16 * 12
property variant source: ShaderEffectSource {
sourceItem: Rectangle {
width: 22 * 20
@@ -40,18 +40,7 @@ Rectangle {
}
smooth: true
}
- vertexShader: "
- uniform highp mat4 qt_Matrix;
- attribute highp vec4 qt_Vertex;
- attribute highp vec2 qt_MultiTexCoord0;
- varying highp vec2 qt_TexCoord0;
- void main() {
- highp vec4 pos = qt_Vertex;
- pos.x += sin(qt_Vertex.y * 0.02) * 20.;
- pos.y += sin(qt_Vertex.x * 0.02) * 20.;
- gl_Position = qt_Matrix * pos;
- qt_TexCoord0 = qt_MultiTexCoord0;
- }"
+ vertexShader: "qrc:shaders/wave.vert"
mesh: GridMesh {
property int r: 1
resolution: Qt.size(r, r)
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_16.qml b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_16.qml
index 971cda4f55..9e221d0887 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_16.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_16.qml
@@ -6,8 +6,8 @@ Rectangle {
color: "skyblue"
ShaderEffect {
anchors.centerIn: parent
- width: 16 * 16
- height: 24 * 16
+ width: 22 * 12
+ height: 16 * 12
property variant source: ShaderEffectSource {
sourceItem: Rectangle {
width: 22 * 20
@@ -40,18 +40,7 @@ Rectangle {
}
smooth: true
}
- vertexShader: "
- uniform highp mat4 qt_Matrix;
- attribute highp vec4 qt_Vertex;
- attribute highp vec2 qt_MultiTexCoord0;
- varying highp vec2 qt_TexCoord0;
- void main() {
- highp vec4 pos = qt_Vertex;
- pos.x += sin(qt_Vertex.y * 0.02) * 20.;
- pos.y += sin(qt_Vertex.x * 0.02) * 20.;
- gl_Position = qt_Matrix * pos;
- qt_TexCoord0 = qt_MultiTexCoord0;
- }"
+ vertexShader: "qrc:shaders/wave.vert"
mesh: GridMesh {
property int r: 16
resolution: Qt.size(r, r)
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_2.qml b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_2.qml
index d301ef089c..4dad42d182 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_2.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_2.qml
@@ -4,10 +4,10 @@ Rectangle {
width: 320
height: 480
color: "skyblue"
- ShaderEffect{
+ ShaderEffect {
anchors.centerIn: parent
- width: 16 * 16
- height: 24 * 16
+ width: 22 * 12
+ height: 16 * 12
property variant source: ShaderEffectSource {
sourceItem: Rectangle {
width: 22 * 20
@@ -40,18 +40,7 @@ Rectangle {
}
smooth: true
}
- vertexShader: "
- uniform highp mat4 qt_Matrix;
- attribute highp vec4 qt_Vertex;
- attribute highp vec2 qt_MultiTexCoord0;
- varying highp vec2 qt_TexCoord0;
- void main() {
- highp vec4 pos = qt_Vertex;
- pos.x += sin(qt_Vertex.y * 0.02) * 20.;
- pos.y += sin(qt_Vertex.x * 0.02) * 20.;
- gl_Position = qt_Matrix * pos;
- qt_TexCoord0 = qt_MultiTexCoord0;
- }"
+ vertexShader: "qrc:shaders/wave.vert"
mesh: GridMesh {
property int r: 2
resolution: Qt.size(r, r)
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_4.qml b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_4.qml
index 0043282efd..9d91da0bb2 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_4.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_4.qml
@@ -6,8 +6,8 @@ Rectangle {
color: "skyblue"
ShaderEffect {
anchors.centerIn: parent
- width: 16 * 16
- height: 24 * 16
+ width: 22 * 12
+ height: 16 * 12
property variant source: ShaderEffectSource {
sourceItem: Rectangle {
width: 22 * 20
@@ -40,18 +40,7 @@ Rectangle {
}
smooth: true
}
- vertexShader: "
- uniform highp mat4 qt_Matrix;
- attribute highp vec4 qt_Vertex;
- attribute highp vec2 qt_MultiTexCoord0;
- varying highp vec2 qt_TexCoord0;
- void main() {
- highp vec4 pos = qt_Vertex;
- pos.x += sin(qt_Vertex.y * 0.02) * 20.;
- pos.y += sin(qt_Vertex.x * 0.02) * 20.;
- gl_Position = qt_Matrix * pos;
- qt_TexCoord0 = qt_MultiTexCoord0;
- }"
+ vertexShader: "qrc:shaders/wave.vert"
mesh: GridMesh {
property int r: 4
resolution: Qt.size(r, r)
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_8.qml b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_8.qml
index f9427a1f16..c436c0f8e4 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_8.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_8.qml
@@ -6,8 +6,8 @@ Rectangle {
color: "skyblue"
ShaderEffect {
anchors.centerIn: parent
- width: 16 * 16
- height: 24 * 16
+ width: 22 * 12
+ height: 16 * 12
property variant source: ShaderEffectSource {
sourceItem: Rectangle {
width: 22 * 20
@@ -40,18 +40,7 @@ Rectangle {
}
smooth: true
}
- vertexShader: "
- uniform highp mat4 qt_Matrix;
- attribute highp vec4 qt_Vertex;
- attribute highp vec2 qt_MultiTexCoord0;
- varying highp vec2 qt_TexCoord0;
- void main() {
- highp vec4 pos = qt_Vertex;
- pos.x += sin(qt_Vertex.y * 0.02) * 20.;
- pos.y += sin(qt_Vertex.x * 0.02) * 20.;
- gl_Position = qt_Matrix * pos;
- qt_TexCoord0 = qt_MultiTexCoord0;
- }"
+ vertexShader: "qrc:shaders/wave.vert"
mesh: GridMesh {
property int r: 8
resolution: Qt.size(r, r)
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/hiddensource_1.qml b/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/hiddensource_1.qml
index 83469531b1..7c5b5efac5 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/hiddensource_1.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/hiddensource_1.qml
@@ -43,22 +43,6 @@ Item {
property variant offset: Qt.size(4 / width, 4 / height)
property variant delta: Qt.size(0.5 / width, 0.5 / height)
- fragmentShader: "
- uniform lowp sampler2D source;
- uniform highp vec2 offset;
- uniform highp vec2 delta;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- highp vec2 delta2 = vec2(delta.x, -delta.y);
- lowp float shadow = 0.25 * (texture2D(source, qt_TexCoord0 - offset + delta).a
- + texture2D(source, qt_TexCoord0 - offset - delta).a
- + texture2D(source, qt_TexCoord0 - offset + delta2).a
- + texture2D(source, qt_TexCoord0 - offset - delta2).a);
- lowp vec4 color = texture2D(source, qt_TexCoord0);
- gl_FragColor = mix(vec4(vec3(0.), 0.5 * shadow), color, color.a);
- }
- "
+ fragmentShader: "qrc:shaders/shadow.frag"
}
}
-
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/hiddensource_2.qml b/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/hiddensource_2.qml
index 160b89168e..64b950ace4 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/hiddensource_2.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/hiddensource_2.qml
@@ -43,23 +43,6 @@ Item {
property variant offset: Qt.size(4 / width, 4 / height)
property variant delta: Qt.size(0.5 / width, 0.5 / height)
- fragmentShader: "
- uniform lowp sampler2D source;
- uniform highp vec2 offset;
- uniform highp vec2 delta;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- highp vec2 delta2 = vec2(delta.x, -delta.y);
- lowp float shadow = 0.25 * (texture2D(source, qt_TexCoord0 - offset + delta).a
- + texture2D(source, qt_TexCoord0 - offset - delta).a
- + texture2D(source, qt_TexCoord0 - offset + delta2).a
- + texture2D(source, qt_TexCoord0 - offset - delta2).a);
- lowp vec4 color = texture2D(source, qt_TexCoord0);
- gl_FragColor = mix(vec4(vec3(0.), 0.5 * shadow), color, color.a);
- }
- "
+ fragmentShader: "qrc:shaders/shadow.frag"
}
}
-
-
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/unhidden_1.qml b/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/unhidden_1.qml
index 566edddedb..b071715cf2 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/unhidden_1.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/unhidden_1.qml
@@ -43,22 +43,6 @@ Item {
property variant offset: Qt.size(4 / width, 4 / height)
property variant delta: Qt.size(0.5 / width, 0.5 / height)
- fragmentShader: "
- uniform lowp sampler2D source;
- uniform highp vec2 offset;
- uniform highp vec2 delta;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- highp vec2 delta2 = vec2(delta.x, -delta.y);
- lowp float shadow = 0.25 * (texture2D(source, qt_TexCoord0 - offset + delta).a
- + texture2D(source, qt_TexCoord0 - offset - delta).a
- + texture2D(source, qt_TexCoord0 - offset + delta2).a
- + texture2D(source, qt_TexCoord0 - offset - delta2).a);
- lowp vec4 color = texture2D(source, qt_TexCoord0);
- gl_FragColor = mix(vec4(vec3(0.), 0.5 * shadow), color, color.a);
- }
- "
+ fragmentShader: "qrc:shaders/shadow.frag"
}
}
-
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/unhidden_2.qml b/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/unhidden_2.qml
index 0b8038e9ee..02ac70e69c 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/unhidden_2.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/unhidden_2.qml
@@ -43,24 +43,6 @@ Item {
property variant offset: Qt.size(4 / width, 4 / height)
property variant delta: Qt.size(0.5 / width, 0.5 / height)
- fragmentShader: "
- uniform lowp sampler2D source;
- uniform highp vec2 offset;
- uniform highp vec2 delta;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- highp vec2 delta2 = vec2(delta.x, -delta.y);
- lowp float shadow = 0.25 * (texture2D(source, qt_TexCoord0 - offset + delta).a
- + texture2D(source, qt_TexCoord0 - offset - delta).a
- + texture2D(source, qt_TexCoord0 - offset + delta2).a
- + texture2D(source, qt_TexCoord0 - offset - delta2).a);
- lowp vec4 color = texture2D(source, qt_TexCoord0);
- gl_FragColor = mix(vec4(vec3(0.), 0.5 * shadow), color, color.a);
- }
- "
+ fragmentShader: "qrc:shaders/shadow.frag"
}
}
-
-
-
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/image/async.qml b/tests/manual/scenegraph_lancelot/data/shaders/image/async.qml
index 132f160a26..c4cf4cc1e4 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/image/async.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/image/async.qml
@@ -6,7 +6,7 @@ Item {
Image {
id: image;
- source: "./face-smile.png"
+ source: "face-smile.png"
visible: false
asynchronous: true
}
@@ -14,15 +14,7 @@ Item {
ShaderEffect {
anchors.fill: image
property variant source: image
-
- fragmentShader: "
- uniform lowp sampler2D source;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 0, 1) + texture2D(source, qt_TexCoord0);
- }
- "
+ fragmentShader: "qrc:shaders/gradient2.frag"
visible: image.status == Image.Ready
}
}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/image/source.qml b/tests/manual/scenegraph_lancelot/data/shaders/image/source.qml
index 878eddeda5..04406829b3 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/image/source.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/image/source.qml
@@ -13,14 +13,6 @@ Item {
ShaderEffect {
anchors.fill: image
property variant source: image
-
- fragmentShader: "
- uniform lowp sampler2D source;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 0, 1) + texture2D(source, qt_TexCoord0);
- }
- "
+ fragmentShader: "qrc:shaders/gradient2.frag"
}
}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/live/liveonce_1.qml b/tests/manual/scenegraph_lancelot/data/shaders/live/liveonce_1.qml
index 0383feaf91..97b5760854 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/live/liveonce_1.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/live/liveonce_1.qml
@@ -32,13 +32,6 @@ Item {
property variant source: source
- fragmentShader: "
- uniform lowp sampler2D source;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = vec4(0, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
- }
- "
+ fragmentShader: "qrc:shaders/gradient3.frag"
}
}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/live/liveonce_2.qml b/tests/manual/scenegraph_lancelot/data/shaders/live/liveonce_2.qml
index 2e7074c65d..ea3456838c 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/live/liveonce_2.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/live/liveonce_2.qml
@@ -32,13 +32,6 @@ Item {
property variant source: source
- fragmentShader: "
- uniform lowp sampler2D source;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = vec4(0, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
- }
- "
+ fragmentShader: "qrc:shaders/gradient3.frag"
}
}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/live/livetwice_1.qml b/tests/manual/scenegraph_lancelot/data/shaders/live/livetwice_1.qml
index 3793e655c7..9f0162ccd3 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/live/livetwice_1.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/live/livetwice_1.qml
@@ -16,7 +16,7 @@ Item {
height: 50
color: "red"
anchors.centerIn: parent
- transform: Rotation{ angle: 45}
+ transform: Rotation{ angle: 45 }
}
}
@@ -38,14 +38,7 @@ Item {
property variant source: source1
- fragmentShader: "
- uniform lowp sampler2D source;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = vec4(1, qt_TexCoord0.y, 0, 1) * texture2D(source, qt_TexCoord0).a;
- }
- "
+ fragmentShader: "qrc:shaders/gradient4.frag"
}
ShaderEffect {
@@ -55,14 +48,7 @@ Item {
property variant source: source2
- fragmentShader: "
- uniform lowp sampler2D source;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = vec4(0, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
- }
- "
+ fragmentShader: "qrc:shaders/gradient3.frag"
}
}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/live/livetwice_2.qml b/tests/manual/scenegraph_lancelot/data/shaders/live/livetwice_2.qml
index 2d8a4b6c09..e0c218ca69 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/live/livetwice_2.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/live/livetwice_2.qml
@@ -16,7 +16,7 @@ Item {
height: 50
color: "red"
anchors.centerIn: parent
- transform: Rotation{ angle: 90}
+ transform: Rotation{ angle: 90 }
}
}
@@ -38,14 +38,7 @@ Item {
property variant source: source1
- fragmentShader: "
- uniform lowp sampler2D source;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = vec4(1, qt_TexCoord0.y, 0, 1) * texture2D(source, qt_TexCoord0).a;
- }
- "
+ fragmentShader: "qrc:shaders/gradient4.frag"
}
ShaderEffect {
@@ -55,14 +48,7 @@ Item {
property variant source: source2
- fragmentShader: "
- uniform lowp sampler2D source;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = vec4(0, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
- }
- "
+ fragmentShader: "qrc:shaders/gradient3.frag"
}
}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/live/samesource.qml b/tests/manual/scenegraph_lancelot/data/shaders/live/samesource.qml
index 67e0cc36ad..5b1f15c01c 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/live/samesource.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/live/samesource.qml
@@ -24,14 +24,7 @@ Item {
property variant source: source
- fragmentShader: "
- uniform lowp sampler2D source;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = vec4(0, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
- }
- "
+ fragmentShader: "qrc:shaders/gradient3.frag"
}
ShaderEffect {
@@ -41,13 +34,6 @@ Item {
property variant source: source
- fragmentShader: "
- uniform lowp sampler2D source;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = vec4(qt_TexCoord0.x, 1, 0, 1) * texture2D(source, qt_TexCoord0).a;
- }
- "
+ fragmentShader: "qrc:shaders/gradient5.frag"
}
}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/source/one-source.qml b/tests/manual/scenegraph_lancelot/data/shaders/source/one-source.qml
index d57f7c5dfb..309db50ba2 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/source/one-source.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/source/one-source.qml
@@ -23,13 +23,6 @@ Item {
property variant source: source
- fragmentShader: "
- uniform lowp sampler2D source;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
- }
- "
+ fragmentShader: "qrc:shaders/gradient.frag"
}
}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/source/rect.qml b/tests/manual/scenegraph_lancelot/data/shaders/source/rect.qml
index e2a3ca7a0c..f473207235 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/source/rect.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/source/rect.qml
@@ -22,14 +22,7 @@ Item {
property variant source: source
- fragmentShader: "
- uniform lowp sampler2D source;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
- }
- "
+ fragmentShader: "qrc:shaders/gradient.frag"
}
Rectangle {
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/source/switch_1.qml b/tests/manual/scenegraph_lancelot/data/shaders/source/switch_1.qml
index 9df6b13c1e..2b04b76482 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/source/switch_1.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/source/switch_1.qml
@@ -47,14 +47,7 @@ Item {
property variant source: source
- fragmentShader: "
- uniform lowp sampler2D source;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
- }
- "
+ fragmentShader: "qrc:shaders/gradient.frag"
}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/source/switch_2.qml b/tests/manual/scenegraph_lancelot/data/shaders/source/switch_2.qml
index f997630d30..0ce09cda18 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/source/switch_2.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/source/switch_2.qml
@@ -47,14 +47,7 @@ Item {
property variant source: source
- fragmentShader: "
- uniform lowp sampler2D source;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
- }
- "
+ fragmentShader: "qrc:shaders/gradient.frag"
}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/source/two-sources.qml b/tests/manual/scenegraph_lancelot/data/shaders/source/two-sources.qml
index 1fadabe5b6..dbb82a278e 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/source/two-sources.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/source/two-sources.qml
@@ -44,14 +44,6 @@ Item {
property variant colorSource: colorSource
property variant maskSource: maskSource;
- fragmentShader: "
- uniform lowp sampler2D maskSource;
- uniform lowp sampler2D colorSource;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = texture2D(maskSource, qt_TexCoord0).a * texture2D(colorSource, qt_TexCoord0.yx);
- }
- "
+ fragmentShader: "qrc:shaders/stencil.frag"
}
}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/source/visible_1.qml b/tests/manual/scenegraph_lancelot/data/shaders/source/visible_1.qml
index 7a3bf9fd36..309028807f 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/source/visible_1.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/source/visible_1.qml
@@ -27,14 +27,6 @@ Item {
property variant source: source
- fragmentShader: "
- uniform lowp sampler2D source;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
- }
- "
-
+ fragmentShader: "qrc:shaders/gradient.frag"
}
}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/source/visible_2.qml b/tests/manual/scenegraph_lancelot/data/shaders/source/visible_2.qml
index d60dbaee3d..df05c8f087 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/source/visible_2.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/source/visible_2.qml
@@ -27,14 +27,6 @@ Item {
property variant source: source
- fragmentShader: "
- uniform lowp sampler2D source;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
- }
- "
-
+ fragmentShader: "qrc:shaders/gradient.frag"
}
}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/texture/size.qml b/tests/manual/scenegraph_lancelot/data/shaders/texture/size.qml
index ab8db47009..5738da5e8d 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/texture/size.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/texture/size.qml
@@ -18,22 +18,7 @@ Item {
property variant textureSize: source.textureSize
property color color: "black"
- fragmentShader: "
- uniform lowp sampler2D source;
- varying highp vec2 qt_TexCoord0;
- uniform highp vec2 textureSize;
- uniform lowp vec4 color;
- uniform lowp float qt_Opacity;
- void main() {
- highp vec2 dx = vec2(0.5 / textureSize.x, 0.);
- highp vec2 dy = vec2(0., 0.5 / textureSize.y);
- gl_FragColor = color * 0.25
- * (texture2D(source, qt_TexCoord0 + dx + dy).a
- + texture2D(source, qt_TexCoord0 + dx - dy).a
- + texture2D(source, qt_TexCoord0 - dx + dy).a
- + texture2D(source, qt_TexCoord0 - dx - dy).a);
- }
- "
+ fragmentShader: "qrc:shaders/edge.frag"
}
Text {
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/wrap/modes.qml b/tests/manual/scenegraph_lancelot/data/shaders/wrap/modes.qml
index c008114810..baa002dc50 100644
--- a/tests/manual/scenegraph_lancelot/data/shaders/wrap/modes.qml
+++ b/tests/manual/scenegraph_lancelot/data/shaders/wrap/modes.qml
@@ -48,21 +48,6 @@ Item {
property variant yellow: repeat
property variant black: clamp
- fragmentShader: "
- uniform lowp sampler2D cyan;
- uniform lowp sampler2D magenta;
- uniform lowp sampler2D yellow;
- uniform lowp sampler2D black;
- varying highp vec2 qt_TexCoord0;
- uniform lowp float qt_Opacity;
- void main() {
- highp vec2 t = qt_TexCoord0 * 3. - 1.;
- lowp float c = texture2D(cyan, t + vec2(.05, .09)).a;
- lowp float m = texture2D(magenta, t + vec2(.04, -.10)).a;
- lowp float y = texture2D(yellow, t + vec2(-.10, .01)).a;
- lowp float k = texture2D(black, t).a;
- gl_FragColor = 1. - vec4(c + k, m + k, y + k, 0.);
- }
- "
+ fragmentShader: "qrc:shaders/cmyk.frag"
}
}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/basic.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/basic.frag
new file mode 100644
index 0000000000..c6da52fd32
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/basic.frag
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/cmyk.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/cmyk.frag
new file mode 100644
index 0000000000..e9c48edbb9
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/cmyk.frag
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/culling.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/culling.frag
new file mode 100644
index 0000000000..6f44fff112
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/culling.frag
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/edge.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/edge.frag
new file mode 100644
index 0000000000..01a1d1cb3d
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/edge.frag
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient.frag
new file mode 100644
index 0000000000..78ac8a9c95
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient.frag
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient2.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient2.frag
new file mode 100644
index 0000000000..364fffab52
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient2.frag
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient3.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient3.frag
new file mode 100644
index 0000000000..42bebf490a
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient3.frag
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient4.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient4.frag
new file mode 100644
index 0000000000..ed31582cf9
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient4.frag
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient5.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient5.frag
new file mode 100644
index 0000000000..7fe041f0ae
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradient5.frag
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/shadow.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/shadow.frag
new file mode 100644
index 0000000000..cb3428b75f
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/shadow.frag
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/stencil.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/stencil.frag
new file mode 100644
index 0000000000..ccf3633d64
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/stencil.frag
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/wave.vert b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/wave.vert
new file mode 100644
index 0000000000..04850feb27
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/wave.vert
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/basic.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/basic.frag
new file mode 100644
index 0000000000..6b3a881174
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/basic.frag
@@ -0,0 +1,5 @@
+varying highp vec2 qt_TexCoord0;
+uniform lowp float qt_Opacity;
+void main() {
+ gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1);
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/basic_rhi.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/basic_rhi.frag
new file mode 100644
index 0000000000..aa850af449
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/basic_rhi.frag
@@ -0,0 +1,8 @@
+#version 440
+
+layout(location = 0) in vec2 qt_TexCoord0;
+layout(location = 0) out vec4 fragColor;
+
+void main() {
+ fragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1);
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/cmyk.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/cmyk.frag
new file mode 100644
index 0000000000..d63a0fa6ee
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/cmyk.frag
@@ -0,0 +1,14 @@
+uniform lowp sampler2D cyan;
+uniform lowp sampler2D magenta;
+uniform lowp sampler2D yellow;
+uniform lowp sampler2D black;
+varying highp vec2 qt_TexCoord0;
+uniform lowp float qt_Opacity;
+void main() {
+ highp vec2 t = qt_TexCoord0 * 3. - 1.;
+ lowp float c = texture2D(cyan, t + vec2(.05, .09)).a;
+ lowp float m = texture2D(magenta, t + vec2(.04, -.10)).a;
+ lowp float y = texture2D(yellow, t + vec2(-.10, .01)).a;
+ lowp float k = texture2D(black, t).a;
+ gl_FragColor = 1. - vec4(c + k, m + k, y + k, 0.);
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/cmyk_rhi.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/cmyk_rhi.frag
new file mode 100644
index 0000000000..5d528e1d7a
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/cmyk_rhi.frag
@@ -0,0 +1,18 @@
+#version 440
+
+layout(location = 0) in vec2 qt_TexCoord0;
+layout(location = 0) out vec4 fragColor;
+
+layout(binding = 1) uniform sampler2D cyan;
+layout(binding = 2) uniform sampler2D magenta;
+layout(binding = 3) uniform sampler2D yellow;
+layout(binding = 4) uniform sampler2D black;
+
+void main() {
+ vec2 t = qt_TexCoord0 * 3. - 1.;
+ lowp float c = texture(cyan, t + vec2(.05, .09)).a;
+ lowp float m = texture(magenta, t + vec2(.04, -.10)).a;
+ lowp float y = texture(yellow, t + vec2(-.10, .01)).a;
+ lowp float k = texture(black, t).a;
+ fragColor = 1. - vec4(c + k, m + k, y + k, 0.);
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/compile.bat b/tests/manual/scenegraph_lancelot/data/shared/shaders/compile.bat
new file mode 100644
index 0000000000..13435f76b6
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/compile.bat
@@ -0,0 +1,13 @@
+qsb -b --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/wave.vert wave_rhi.vert
+
+qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/basic.frag basic_rhi.frag
+qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/cmyk.frag cmyk_rhi.frag
+qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/culling.frag culling_rhi.frag
+qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/edge.frag edge_rhi.frag
+qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/gradient.frag gradient_rhi.frag
+qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/gradient2.frag gradient2_rhi.frag
+qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/gradient3.frag gradient3_rhi.frag
+qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/gradient4.frag gradient4_rhi.frag
+qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/gradient5.frag gradient5_rhi.frag
+qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/shadow.frag shadow_rhi.frag
+qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/stencil.frag stencil_rhi.frag
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/culling.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/culling.frag
new file mode 100644
index 0000000000..1b12df7c6d
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/culling.frag
@@ -0,0 +1,9 @@
+varying highp vec2 qt_TexCoord0;
+uniform sampler2D frontSource;
+uniform sampler2D backSource;
+uniform lowp float qt_Opacity;
+void main() {
+ gl_FragColor = gl_FrontFacing
+ ? texture2D(frontSource, qt_TexCoord0)
+ : texture2D(backSource, qt_TexCoord0);
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/culling_rhi.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/culling_rhi.frag
new file mode 100644
index 0000000000..8399bc0282
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/culling_rhi.frag
@@ -0,0 +1,13 @@
+#version 440
+
+layout(location = 0) in vec2 qt_TexCoord0;
+layout(location = 0) out vec4 fragColor;
+
+layout(binding = 1) uniform sampler2D frontSource;
+layout(binding = 1) uniform sampler2D backSource;
+
+void main() {
+ fragColor = gl_FrontFacing
+ ? texture(frontSource, qt_TexCoord0)
+ : texture(backSource, qt_TexCoord0);
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/edge.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/edge.frag
new file mode 100644
index 0000000000..8cb616f3e0
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/edge.frag
@@ -0,0 +1,14 @@
+uniform lowp sampler2D source;
+varying highp vec2 qt_TexCoord0;
+uniform highp vec2 textureSize;
+uniform lowp vec4 color;
+uniform lowp float qt_Opacity;
+void main() {
+ highp vec2 dx = vec2(0.5 / textureSize.x, 0.);
+ highp vec2 dy = vec2(0., 0.5 / textureSize.y);
+ gl_FragColor = color * 0.25
+ * (texture2D(source, qt_TexCoord0 + dx + dy).a
+ + texture2D(source, qt_TexCoord0 + dx - dy).a
+ + texture2D(source, qt_TexCoord0 - dx + dy).a
+ + texture2D(source, qt_TexCoord0 - dx - dy).a);
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/edge_rhi.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/edge_rhi.frag
new file mode 100644
index 0000000000..77d7b47499
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/edge_rhi.frag
@@ -0,0 +1,23 @@
+#version 440
+
+layout(location = 0) in vec2 qt_TexCoord0;
+layout(location = 0) out vec4 fragColor;
+
+layout(binding = 1) uniform sampler2D source;
+
+layout(std140, binding = 0) uniform buf {
+ mat4 qt_Matrix;
+ float qt_Opacity;
+ vec2 textureSize;
+ vec4 color;
+} ubuf;
+
+void main() {
+ vec2 dx = vec2(0.5 / ubuf.textureSize.x, 0.);
+ vec2 dy = vec2(0., 0.5 / ubuf.textureSize.y);
+ fragColor = ubuf.color * 0.25
+ * (texture(source, qt_TexCoord0 + dx + dy).a
+ + texture(source, qt_TexCoord0 + dx - dy).a
+ + texture(source, qt_TexCoord0 - dx + dy).a
+ + texture(source, qt_TexCoord0 - dx - dy).a);
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient.frag
new file mode 100644
index 0000000000..c581cc0c73
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient.frag
@@ -0,0 +1,6 @@
+uniform lowp sampler2D source;
+varying highp vec2 qt_TexCoord0;
+uniform lowp float qt_Opacity;
+void main() {
+ gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient2.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient2.frag
new file mode 100644
index 0000000000..5f07e56d4a
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient2.frag
@@ -0,0 +1,6 @@
+uniform lowp sampler2D source;
+varying highp vec2 qt_TexCoord0;
+uniform lowp float qt_Opacity;
+void main() {
+ gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 0, 1) + texture2D(source, qt_TexCoord0);
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient2_rhi.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient2_rhi.frag
new file mode 100644
index 0000000000..b08e6339b3
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient2_rhi.frag
@@ -0,0 +1,10 @@
+#version 440
+
+layout(location = 0) in vec2 qt_TexCoord0;
+layout(location = 0) out vec4 fragColor;
+
+layout(binding = 1) uniform sampler2D source;
+
+void main() {
+ fragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 0, 1) + texture(source, qt_TexCoord0);
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient3.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient3.frag
new file mode 100644
index 0000000000..61c9d46f94
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient3.frag
@@ -0,0 +1,6 @@
+uniform lowp sampler2D source;
+varying highp vec2 qt_TexCoord0;
+uniform lowp float qt_Opacity;
+void main() {
+ gl_FragColor = vec4(0, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient3_rhi.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient3_rhi.frag
new file mode 100644
index 0000000000..2e523c2879
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient3_rhi.frag
@@ -0,0 +1,10 @@
+#version 440
+
+layout(location = 0) in vec2 qt_TexCoord0;
+layout(location = 0) out vec4 fragColor;
+
+layout(binding = 1) uniform sampler2D source;
+
+void main() {
+ fragColor = vec4(0, qt_TexCoord0.y, 1, 1) * texture(source, qt_TexCoord0).a;
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient4.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient4.frag
new file mode 100644
index 0000000000..81d96ce126
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient4.frag
@@ -0,0 +1,6 @@
+uniform lowp sampler2D source;
+varying highp vec2 qt_TexCoord0;
+uniform lowp float qt_Opacity;
+void main() {
+ gl_FragColor = vec4(1, qt_TexCoord0.y, 0, 1) * texture2D(source, qt_TexCoord0).a;
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient4_rhi.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient4_rhi.frag
new file mode 100644
index 0000000000..a100ba2cd7
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient4_rhi.frag
@@ -0,0 +1,10 @@
+#version 440
+
+layout(location = 0) in vec2 qt_TexCoord0;
+layout(location = 0) out vec4 fragColor;
+
+layout(binding = 1) uniform sampler2D source;
+
+void main() {
+ fragColor = vec4(1, qt_TexCoord0.y, 0, 1) * texture(source, qt_TexCoord0).a;
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient5.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient5.frag
new file mode 100644
index 0000000000..33485542af
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient5.frag
@@ -0,0 +1,6 @@
+uniform lowp sampler2D source;
+varying highp vec2 qt_TexCoord0;
+uniform lowp float qt_Opacity;
+void main() {
+ gl_FragColor = vec4(qt_TexCoord0.x, 1, 0, 1) * texture2D(source, qt_TexCoord0).a;
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient5_rhi.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient5_rhi.frag
new file mode 100644
index 0000000000..4ec104bd14
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient5_rhi.frag
@@ -0,0 +1,10 @@
+#version 440
+
+layout(location = 0) in vec2 qt_TexCoord0;
+layout(location = 0) out vec4 fragColor;
+
+layout(binding = 1) uniform sampler2D source;
+
+void main() {
+ fragColor = vec4(qt_TexCoord0.x, 1, 0, 1) * texture(source, qt_TexCoord0).a;
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient_rhi.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient_rhi.frag
new file mode 100644
index 0000000000..84eee1dbfe
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradient_rhi.frag
@@ -0,0 +1,10 @@
+#version 440
+
+layout(location = 0) in vec2 qt_TexCoord0;
+layout(location = 0) out vec4 fragColor;
+
+layout(binding = 1) uniform sampler2D source;
+
+void main() {
+ fragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1) * texture(source, qt_TexCoord0).a;
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/shadow.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/shadow.frag
new file mode 100644
index 0000000000..0a6cdf3044
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/shadow.frag
@@ -0,0 +1,14 @@
+uniform lowp sampler2D source;
+uniform highp vec2 offset;
+uniform highp vec2 delta;
+varying highp vec2 qt_TexCoord0;
+uniform lowp float qt_Opacity;
+void main() {
+ highp vec2 delta2 = vec2(delta.x, -delta.y);
+ lowp float shadow = 0.25 * (texture2D(source, qt_TexCoord0 - offset + delta).a
+ + texture2D(source, qt_TexCoord0 - offset - delta).a
+ + texture2D(source, qt_TexCoord0 - offset + delta2).a
+ + texture2D(source, qt_TexCoord0 - offset - delta2).a);
+ lowp vec4 color = texture2D(source, qt_TexCoord0);
+ gl_FragColor = mix(vec4(vec3(0.), 0.5 * shadow), color, color.a);
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/shadow_rhi.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/shadow_rhi.frag
new file mode 100644
index 0000000000..6a2d8dc122
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/shadow_rhi.frag
@@ -0,0 +1,23 @@
+#version 440
+
+layout(location = 0) in vec2 qt_TexCoord0;
+layout(location = 0) out vec4 fragColor;
+
+layout(binding = 1) uniform sampler2D source;
+
+layout(std140, binding = 0) uniform buf {
+ mat4 qt_Matrix;
+ float qt_Opacity;
+ vec2 offset;
+ vec2 delta;
+} ubuf;
+
+void main() {
+ vec2 delta2 = vec2(ubuf.delta.x, -ubuf.delta.y);
+ float shadow = 0.25 * (texture(source, qt_TexCoord0 - ubuf.offset + ubuf.delta).a
+ + texture(source, qt_TexCoord0 - ubuf.offset - ubuf.delta).a
+ + texture(source, qt_TexCoord0 - ubuf.offset + delta2).a
+ + texture(source, qt_TexCoord0 - ubuf.offset - delta2).a);
+ vec4 color = texture(source, qt_TexCoord0);
+ fragColor = mix(vec4(vec3(0.), 0.5 * shadow), color, color.a);
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/stencil.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/stencil.frag
new file mode 100644
index 0000000000..33c6cee064
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/stencil.frag
@@ -0,0 +1,7 @@
+uniform lowp sampler2D maskSource;
+uniform lowp sampler2D colorSource;
+varying highp vec2 qt_TexCoord0;
+uniform lowp float qt_Opacity;
+void main() {
+ gl_FragColor = texture2D(maskSource, qt_TexCoord0).a * texture2D(colorSource, qt_TexCoord0.yx);
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/stencil_rhi.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/stencil_rhi.frag
new file mode 100644
index 0000000000..734be73fdb
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/stencil_rhi.frag
@@ -0,0 +1,11 @@
+#version 440
+
+layout(location = 0) in vec2 qt_TexCoord0;
+layout(location = 0) out vec4 fragColor;
+
+layout(binding = 1) uniform sampler2D maskSource;
+layout(binding = 2) uniform sampler2D colorSource;
+
+void main() {
+ fragColor = texture(maskSource, qt_TexCoord0).a * texture(colorSource, qt_TexCoord0.yx);
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/wave.vert b/tests/manual/scenegraph_lancelot/data/shared/shaders/wave.vert
new file mode 100644
index 0000000000..38e523c06b
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/wave.vert
@@ -0,0 +1,12 @@
+uniform highp mat4 qt_Matrix;
+attribute highp vec4 qt_Vertex;
+attribute highp vec2 qt_MultiTexCoord0;
+varying highp vec2 qt_TexCoord0;
+
+void main() {
+ highp vec4 pos = qt_Vertex;
+ pos.x += sin(qt_Vertex.y * 0.02) * 20.;
+ pos.y += sin(qt_Vertex.x * 0.02) * 20.;
+ gl_Position = qt_Matrix * pos;
+ qt_TexCoord0 = qt_MultiTexCoord0;
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/wave_rhi.vert b/tests/manual/scenegraph_lancelot/data/shared/shaders/wave_rhi.vert
new file mode 100644
index 0000000000..38f6173773
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/wave_rhi.vert
@@ -0,0 +1,18 @@
+#version 440
+
+layout(location = 0) in vec4 qt_Vertex;
+layout(location = 1) in vec2 qt_MultiTexCoord0;
+
+layout(location = 0) out vec2 qt_TexCoord0;
+
+layout(std140, binding = 0) uniform buf {
+ mat4 qt_Matrix;
+} ubuf;
+
+void main() {
+ vec4 pos = qt_Vertex;
+ pos.x += sin(qt_Vertex.y * 0.02) * 20.;
+ pos.y += sin(qt_Vertex.x * 0.02) * 20.;
+ gl_Position = ubuf.qt_Matrix * pos;
+ qt_TexCoord0 = qt_MultiTexCoord0;
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shared.qrc b/tests/manual/scenegraph_lancelot/data/shared/shared.qrc
new file mode 100644
index 0000000000..3618fc8b94
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shared.qrc
@@ -0,0 +1,28 @@
+<RCC>
+ <qresource prefix="/">
+ <file>shaders/basic.frag</file>
+ <file>shaders/cmyk.frag</file>
+ <file>shaders/culling.frag</file>
+ <file>shaders/edge.frag</file>
+ <file>shaders/gradient.frag</file>
+ <file>shaders/gradient2.frag</file>
+ <file>shaders/gradient3.frag</file>
+ <file>shaders/gradient4.frag</file>
+ <file>shaders/gradient5.frag</file>
+ <file>shaders/shadow.frag</file>
+ <file>shaders/stencil.frag</file>
+ <file>shaders/wave.vert</file>
+ <file>shaders/+qsb/basic.frag</file>
+ <file>shaders/+qsb/cmyk.frag</file>
+ <file>shaders/+qsb/culling.frag</file>
+ <file>shaders/+qsb/edge.frag</file>
+ <file>shaders/+qsb/gradient.frag</file>
+ <file>shaders/+qsb/gradient2.frag</file>
+ <file>shaders/+qsb/gradient3.frag</file>
+ <file>shaders/+qsb/gradient4.frag</file>
+ <file>shaders/+qsb/gradient5.frag</file>
+ <file>shaders/+qsb/shadow.frag</file>
+ <file>shaders/+qsb/stencil.frag</file>
+ <file>shaders/+qsb/wave.vert</file>
+ </qresource>
+</RCC>
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_style2.qml b/tests/manual/scenegraph_lancelot/data/text/text_style2.qml
new file mode 100644
index 0000000000..984ca6a1ed
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_style2.qml
@@ -0,0 +1,37 @@
+import QtQuick 2.0
+
+//vary font style
+
+Item {
+ width: 320
+ height: 480
+
+ Column {
+ anchors.fill: parent
+ Repeater {
+ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken]
+ Text {
+ renderType: Text.QtRendering
+ width: parent.width
+ wrapMode: Text.Wrap
+ font.pointSize: 10
+ style: modelData
+ styleColor: "green"
+ text: "The quick fox jumps in style " + modelData
+ }
+ }
+
+ Repeater {
+ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken]
+ Text {
+ renderType: Text.NativeRendering
+ width: parent.width
+ wrapMode: Text.Wrap
+ font.pointSize: 10
+ style: modelData
+ styleColor: "green"
+ text: "The quick fox jumps in style " + modelData
+ }
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/scenegrabber/scenegrabber.pro b/tests/manual/scenegraph_lancelot/scenegrabber/scenegrabber.pro
index 24f0f8a315..3ecb1f8ac1 100644
--- a/tests/manual/scenegraph_lancelot/scenegrabber/scenegrabber.pro
+++ b/tests/manual/scenegraph_lancelot/scenegrabber/scenegrabber.pro
@@ -1,8 +1,10 @@
TARGET = qmlscenegrabber
DESTDIR=..
-macx:CONFIG -= app_bundle
CONFIG += console
QT += quick
SOURCES += main.cpp
+
+RESOURCES += \
+ ../data/shared/shared.qrc
diff --git a/tests/manual/scenegraph_lancelot/scenegraph/scenegraph.pro b/tests/manual/scenegraph_lancelot/scenegraph/scenegraph.pro
index dd0ef268b1..9deb46427e 100644
--- a/tests/manual/scenegraph_lancelot/scenegraph/scenegraph.pro
+++ b/tests/manual/scenegraph_lancelot/scenegraph/scenegraph.pro
@@ -10,6 +10,8 @@ SOURCES += tst_scenegraph.cpp
# Assuming that we are in a normal Qt5 source code tree
include(../../../../../qtbase/tests/baselineserver/shared/qbaselinetest.pri)
-TEST_HELPER_INSTALLS += .././qmlscenegrabber
+win32: TEST_HELPER_INSTALLS += .././qmlscenegrabber.exe
+else: macos: TEST_HELPER_INSTALLS += .././qmlscenegrabber.app
+else: TEST_HELPER_INSTALLS += .././qmlscenegrabber
TESTDATA += ../data
diff --git a/tests/manual/scenegraph_lancelot/scenegraph/tst_scenegraph.cpp b/tests/manual/scenegraph_lancelot/scenegraph/tst_scenegraph.cpp
index 40b17ec2a2..a65bde1002 100644
--- a/tests/manual/scenegraph_lancelot/scenegraph/tst_scenegraph.cpp
+++ b/tests/manual/scenegraph_lancelot/scenegraph/tst_scenegraph.cpp
@@ -69,8 +69,10 @@ private:
quint16 checksumFileOrDir(const QString &path);
QString testSuitePath;
+ QString grabberPath;
int consecutiveErrors; // Not test failures (image mismatches), but system failures (so no image at all)
bool aborted; // This run given up because of too many system failures
+ bool usingRhi;
};
@@ -90,10 +92,37 @@ void tst_Scenegraph::initTestCase()
QSKIP("Test suite data directory missing or unreadable: " + fi.canonicalFilePath().toLatin1());
testSuitePath = fi.canonicalFilePath();
+#if defined(Q_OS_WIN)
+ grabberPath = QFINDTESTDATA("qmlscenegrabber.exe");
+#elif defined(Q_OS_DARWIN)
+ grabberPath = QFINDTESTDATA("qmlscenegrabber.app/Contents/MacOS/qmlscenegrabber");
+#else
+ grabberPath = QFINDTESTDATA("qmlscenegrabber");
+#endif
+ if (grabberPath.isEmpty())
+ grabberPath = QCoreApplication::applicationDirPath() + "/qmlscenegrabber";
+
const char *backendVarName = "QT_QUICK_BACKEND";
const QString backend = qEnvironmentVariable(backendVarName, QString::fromLatin1("default"));
QBaselineTest::addClientProperty(QString::fromLatin1(backendVarName), backend);
+#if defined(Q_OS_WIN)
+ const char *defaultRhiBackend = "d3d11";
+#elif defined(Q_OS_DARWIN)
+ const char *defaultRhiBackend = "metal";
+#else
+ const char *defaultRhiBackend = "opengl";
+#endif
+ usingRhi = qEnvironmentVariableIntValue("QSG_RHI") != 0;
+ QString stack;
+ if (usingRhi) {
+ const QString rhiBackend = qEnvironmentVariable("QSG_RHI_BACKEND", QString::fromLatin1(defaultRhiBackend));
+ stack = QString::fromLatin1("RHI_%1").arg(rhiBackend);
+ } else {
+ stack = qEnvironmentVariable("QT_QUICK_BACKEND", QString::fromLatin1("DirectGL"));
+ }
+ QBaselineTest::addClientProperty(QString::fromLatin1("GraphicsStack"), stack);
+
QByteArray msg;
if (!QBaselineTest::connectToBaselineServer(&msg))
QSKIP(msg);
@@ -201,11 +230,11 @@ bool tst_Scenegraph::renderAndGrab(const QString& qmlFile, const QStringList& ex
{
bool usePipe = true; // Whether to transport the grabbed image using temp. file or pipe. TBD: cmdline option
QProcess grabber;
- QString cmd = QCoreApplication::applicationDirPath() + "/qmlscenegrabber";
+ grabber.setProcessChannelMode(QProcess::ForwardedErrorChannel);
QStringList args = extraArgs;
QString tmpfile = usePipe ? QString("-") : QString("/tmp/qmlscenegrabber-%1-out.ppm").arg(QCoreApplication::applicationPid());
args << qmlFile << "-o" << tmpfile;
- grabber.start(cmd, args, QIODevice::ReadOnly);
+ grabber.start(grabberPath, args, QIODevice::ReadOnly);
grabber.waitForFinished(17000); //### hardcoded, must be larger than the scene timeout in qmlscenegrabber
if (grabber.state() != QProcess::NotRunning) {
grabber.terminate();
diff --git a/tests/manual/tableview/abstracttablemodel/main.qml b/tests/manual/tableview/abstracttablemodel/main.qml
index 4b9158f03c..9d849f2c8f 100644
--- a/tests/manual/tableview/abstracttablemodel/main.qml
+++ b/tests/manual/tableview/abstracttablemodel/main.qml
@@ -52,12 +52,6 @@ Window {
property int selectedX: -1
property int selectedY: -1
- TestTableModel {
- id: tableModel
- rowCount: 200
- columnCount: 200
- }
-
Rectangle {
anchors.fill: parent
anchors.margins: 10
@@ -72,19 +66,19 @@ Window {
spacing: 1
Button {
text: "Add row"
- onClicked: tableModel.insertRows(selectedY, 1)
+ onClicked: tableView.model.insertRows(selectedY, 1)
}
Button {
text: "Remove row"
- onClicked: tableModel.removeRows(selectedY, 1)
+ onClicked: tableView.model.removeRows(selectedY, 1)
}
Button {
text: "Add column"
- onClicked: tableModel.insertColumns(selectedX, 1)
+ onClicked: tableView.model.insertColumns(selectedX, 1)
}
Button {
text: "Remove column"
- onClicked: tableModel.removeColumns(selectedX, 1)
+ onClicked: tableView.model.removeColumns(selectedX, 1)
}
}
diff --git a/tools/qml/main.cpp b/tools/qml/main.cpp
index f7d7b98277..7235c65aff 100644
--- a/tools/qml/main.cpp
+++ b/tools/qml/main.cpp
@@ -597,7 +597,7 @@ int main(int argc, char *argv[])
}
if (files.count() <= 0) {
-#if defined(Q_OS_DARWIN)
+#if defined(Q_OS_DARWIN) && defined(QT_GUI_LIB)
if (applicationType == QmlApplicationTypeGui)
exitTimerId = static_cast<LoaderApplication *>(app.get())->startTimer(FILE_OPEN_EVENT_WAIT_TIME);
else
diff --git a/tools/qml/qml.pro b/tools/qml/qml.pro
index f086b7bff9..5dcbb3567a 100644
--- a/tools/qml/qml.pro
+++ b/tools/qml/qml.pro
@@ -8,7 +8,7 @@ RESOURCES += qml.qrc
QMAKE_TARGET_DESCRIPTION = QML Runtime
-ICON = resources/qml64.png
+ICON = resources/qml-64.png
win32 {
RC_ICONS = resources/qml.ico
}
diff --git a/tools/qmlcachegen/qtquickcompiler.prf b/tools/qmlcachegen/qtquickcompiler.prf
index a31a7f5714..8aac3b9e07 100644
--- a/tools/qmlcachegen/qtquickcompiler.prf
+++ b/tools/qmlcachegen/qtquickcompiler.prf
@@ -27,7 +27,8 @@ defineReplace(qmlCacheResourceFileOutputName) {
}
# Flatten RESOURCES that may contain individual files or objects
-load(resources)
+load(resources_functions)
+qtFlattenResources()
NEWRESOURCES =
QMLCACHE_RESOURCE_FILES =
diff --git a/tools/qmlformat/commentastvisitor.cpp b/tools/qmlformat/commentastvisitor.cpp
new file mode 100644
index 0000000000..8264a6099e
--- /dev/null
+++ b/tools/qmlformat/commentastvisitor.cpp
@@ -0,0 +1,270 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "commentastvisitor.h"
+
+CommentAstVisitor::CommentAstVisitor(QQmlJS::Engine *engine, Node *rootNode) : m_engine(engine)
+{
+ rootNode->accept(this);
+
+ // Look for complete orphans that have not been attached to *any* node
+ QVector<Comment> completeOrphans;
+
+ for (const auto &comment : m_engine->comments()) {
+ if (isCommentAttached(comment))
+ continue;
+
+ bool found_orphan = false;
+ for (const auto &orphanList : orphanComments().values()) {
+ for (const auto &orphan : orphanList) {
+ if (orphan.contains(comment)) {
+ found_orphan = true;
+ break;
+ }
+ }
+
+ if (found_orphan)
+ break;
+ }
+
+ if (found_orphan)
+ continue;
+
+ completeOrphans.append(Comment(m_engine, Comment::Location::Front, {comment}));
+ }
+
+ m_orphanComments[nullptr] = completeOrphans;
+}
+
+QList<SourceLocation> CommentAstVisitor::findCommentsInLine(quint32 line, bool includePrevious) const
+{
+ QList<SourceLocation> results;
+ if (line == 0)
+ return results;
+
+ for (const auto &location : m_engine->comments()) {
+ if (location.startLine != line)
+ continue;
+
+ if (isCommentAttached(location))
+ continue;
+
+ results.append(location);
+
+ if (includePrevious) {
+ // See if we can find any more comments above this one
+ auto previous = findCommentsInLine(line - 1, true);
+
+ // Iterate it in reverse to restore the correct order
+ for (auto it = previous.rbegin(); it != previous.rend(); it++) {
+ results.prepend(*it);
+ }
+ }
+
+ break;
+ }
+
+ return results;
+}
+
+bool CommentAstVisitor::isCommentAttached(const SourceLocation &location) const
+{
+ for (const auto &value : m_attachedComments.values()) {
+ if (value.contains(location))
+ return true;
+ }
+
+ for (const auto &value : m_listItemComments.values()) {
+ if (value.contains(location))
+ return true;
+ }
+
+ // If a comment is already marked as an orphan of a Node that counts as attached too.
+ for (const auto &orphanList : m_orphanComments.values()) {
+ for (const auto &value : orphanList) {
+ if (value.contains(location))
+ return true;
+ }
+ }
+
+ return false;
+}
+
+Comment CommentAstVisitor::findComment(SourceLocation first, SourceLocation last,
+ int locations) const
+{
+ if (locations & Comment::Location::Front) {
+ quint32 searchAt = first.startLine - 1;
+
+ const auto comments = findCommentsInLine(searchAt, true);
+ if (!comments.isEmpty())
+ return Comment(m_engine, Comment::Location::Front, comments);
+ }
+
+ if (locations & Comment::Location::Back_Inline) {
+ quint32 searchAt = last.startLine;
+
+ const auto comments = findCommentsInLine(searchAt);
+ if (!comments.isEmpty())
+ return Comment(m_engine, Comment::Location::Back_Inline, comments);
+ }
+
+ if (locations & Comment::Location::Back) {
+ quint32 searchAt = last.startLine + 1;
+
+ const auto comments = findCommentsInLine(searchAt);
+ if (!comments.isEmpty())
+ return Comment(m_engine, Comment::Location::Back, comments);
+ }
+
+ return Comment();
+
+}
+
+Comment CommentAstVisitor::findComment(Node *node, int locations) const
+{
+ return findComment(node->firstSourceLocation(), node->lastSourceLocation(), locations);
+}
+
+QVector<Comment> CommentAstVisitor::findOrphanComments(Node *node) const
+{
+ QVector<Comment> comments;
+
+ for (auto &comment : m_engine->comments()) {
+ if (isCommentAttached(comment))
+ continue;
+
+ if (comment.begin() <= node->firstSourceLocation().begin()
+ || comment.end() > node->lastSourceLocation().end()) {
+ continue;
+ }
+
+ comments.append(Comment(m_engine, Comment::Location::Front, {comment}));
+ }
+
+ return comments;
+}
+
+void CommentAstVisitor::attachComment(Node *node, int locations)
+{
+ auto comment = findComment(node, locations);
+
+ if (comment.isValid())
+ m_attachedComments[node] = comment;
+}
+
+bool CommentAstVisitor::visit(UiScriptBinding *node)
+{
+ attachComment(node);
+ return true;
+}
+
+bool CommentAstVisitor::visit(StatementList *node)
+{
+ for (auto *item = node; item != nullptr; item = item->next)
+ attachComment(item->statement, Comment::Front | Comment::Back_Inline);
+ return true;
+}
+
+void CommentAstVisitor::endVisit(StatementList *node)
+{
+ m_orphanComments[node] = findOrphanComments(node);
+}
+
+bool CommentAstVisitor::visit(UiObjectBinding *node)
+{
+ attachComment(node, Comment::Front | Comment::Back);
+ return true;
+}
+
+bool CommentAstVisitor::visit(UiObjectDefinition *node)
+{
+ attachComment(node, Comment::Front | Comment::Back);
+ return true;
+}
+
+void CommentAstVisitor::endVisit(UiObjectDefinition *node)
+{
+ m_orphanComments[node] = findOrphanComments(node);
+}
+
+bool CommentAstVisitor::visit(UiArrayBinding *node)
+{
+ attachComment(node);
+ return true;
+}
+
+void CommentAstVisitor::endVisit(UiArrayBinding *node)
+{
+ m_orphanComments[node] = findOrphanComments(node);
+}
+
+bool CommentAstVisitor::visit(UiEnumDeclaration *node)
+{
+ attachComment(node);
+ return true;
+}
+
+void CommentAstVisitor::endVisit(UiEnumDeclaration *node)
+{
+ m_orphanComments[node] = findOrphanComments(node);
+}
+
+bool CommentAstVisitor::visit(UiEnumMemberList *node)
+{
+ for (auto *item = node; item != nullptr; item = item->next) {
+ auto comment = findComment(item->memberToken,
+ item->valueToken.isValid() ? item->valueToken : item->memberToken,
+ Comment::Front | Comment::Back_Inline);
+
+ if (comment.isValid())
+ m_listItemComments[item->memberToken.begin()] = comment;
+ }
+
+ m_orphanComments[node] = findOrphanComments(node);
+
+ return true;
+}
+
+bool CommentAstVisitor::visit(UiPublicMember *node)
+{
+ attachComment(node);
+ return true;
+}
+
+bool CommentAstVisitor::visit(FunctionDeclaration *node)
+{
+ attachComment(node);
+ return true;
+}
+
+bool CommentAstVisitor::visit(UiImport *node)
+{
+ attachComment(node);
+ return true;
+}
diff --git a/tools/qmlformat/commentastvisitor.h b/tools/qmlformat/commentastvisitor.h
new file mode 100644
index 0000000000..369784a5ba
--- /dev/null
+++ b/tools/qmlformat/commentastvisitor.h
@@ -0,0 +1,131 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef COMMENTASTVISITOR_H
+#define COMMENTASTVISITOR_H
+
+#include <QtQml/private/qqmljsastvisitor_p.h>
+#include <QtQml/private/qqmljsast_p.h>
+#include <QtQml/private/qqmljsengine_p.h>
+
+#include <QHash>
+#include <QString>
+#include <QVector>
+
+using namespace QQmlJS::AST;
+
+struct Comment
+{
+ enum Location : int
+ {
+ Front = 1,
+ Back = Front << 1,
+ Back_Inline = Back << 1,
+ DefaultLocations = Front | Back_Inline,
+ AllLocations = Front | Back | Back_Inline
+ } m_location = Front;
+
+ Comment() = default;
+ Comment(const QQmlJS::Engine *engine, Location location, QList<SourceLocation> srcLocations)
+ : m_location(location), m_srcLocations(srcLocations) {
+ for (const auto& srcLoc : srcLocations) {
+ m_text += engine->code().mid(static_cast<int>(srcLoc.begin()),
+ static_cast<int>(srcLoc.end() - srcLoc.begin())) + "\n";
+ }
+
+ m_text.chop(1);
+ }
+
+ QList<SourceLocation> m_srcLocations;
+
+ bool isValid() const { return !m_srcLocations.isEmpty(); }
+ bool isMultiline() const { return m_text.contains("\n"); }
+ bool isSyntheticMultiline() const { return m_srcLocations.size() > 1; }
+
+ bool contains(const SourceLocation& location) const {
+ for (const SourceLocation& srcLoc : m_srcLocations) {
+ if (srcLoc.begin() == location.begin() && srcLoc.end() == location.end())
+ return true;
+ }
+
+ return false;
+ }
+
+ QString m_text;
+};
+
+class CommentAstVisitor : protected Visitor
+{
+public:
+ CommentAstVisitor(QQmlJS::Engine *engine, Node *rootNode);
+
+ void throwRecursionDepthError() override {}
+
+ const QHash<Node *, Comment> attachedComments() const { return m_attachedComments; }
+ const QHash<quint32, Comment> listComments() const { return m_listItemComments; }
+ const QHash<Node *, QVector<Comment>> orphanComments() const { return m_orphanComments; }
+
+ bool visit(UiScriptBinding *node) override;
+ bool visit(UiObjectBinding *node) override;
+
+ bool visit(UiArrayBinding *node) override;
+ void endVisit(UiArrayBinding *node) override;
+
+ bool visit(UiObjectDefinition *node) override;
+ void endVisit(UiObjectDefinition *) override;
+
+ bool visit(UiEnumDeclaration *node) override;
+ void endVisit(UiEnumDeclaration *node) override;
+
+ bool visit(UiEnumMemberList *node) override;
+
+ bool visit(StatementList *node) override;
+ void endVisit(StatementList *node) override;
+
+ bool visit(UiImport *node) override;
+ bool visit(UiPublicMember *node) override;
+ bool visit(FunctionDeclaration *node) override;
+private:
+ bool isCommentAttached(const SourceLocation& location) const;
+
+ QList<SourceLocation> findCommentsInLine(quint32 line, bool includePrevious = false) const;
+
+ Comment findComment(SourceLocation first, SourceLocation last,
+ int locations = Comment::DefaultLocations) const;
+
+ Comment findComment(Node *node, int locations = Comment::DefaultLocations) const;
+ QVector<Comment> findOrphanComments(Node *node) const;
+ void attachComment(Node *node, int locations = Comment::DefaultLocations);
+
+ QQmlJS::Engine *m_engine;
+ QHash<Node *, Comment> m_attachedComments;
+ QHash<quint32, Comment> m_listItemComments;
+ QHash<Node *, QVector<Comment>> m_orphanComments;
+};
+
+#endif // COMMENTASTVISITOR_H
diff --git a/tools/qmlformat/dumpastvisitor.cpp b/tools/qmlformat/dumpastvisitor.cpp
new file mode 100644
index 0000000000..716be0a9a7
--- /dev/null
+++ b/tools/qmlformat/dumpastvisitor.cpp
@@ -0,0 +1,986 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "dumpastvisitor.h"
+
+DumpAstVisitor::DumpAstVisitor(Node *rootNode, CommentAstVisitor *comment): m_comment(comment)
+{
+ // Add all completely orphaned comments
+ m_result += getOrphanedComments(nullptr);
+
+ rootNode->accept(this);
+
+ // We need to get rid of one new-line so our output doesn't append an empty line
+ m_result.chop(1);
+}
+
+static QString parseUiQualifiedId(UiQualifiedId *id)
+{
+ QString name = id->name.toString();
+ for (auto *item = id->next; item != nullptr; item = item->next) {
+ name += "." + item->name;
+ }
+
+ return name;
+}
+
+static QString operatorToString(int op)
+{
+ switch (op)
+ {
+ case QSOperator::Add: return "+";
+ case QSOperator::And: return "&&";
+ case QSOperator::InplaceAnd: return "&=";
+ case QSOperator::Assign: return "=";
+ case QSOperator::BitAnd: return "&";
+ case QSOperator::BitOr: return "|";
+ case QSOperator::BitXor: return "^";
+ case QSOperator::InplaceSub: return "-=";
+ case QSOperator::Div: return "/";
+ case QSOperator::InplaceDiv: return "/=";
+ case QSOperator::Equal: return "==";
+ case QSOperator::Exp: return "**";
+ case QSOperator::InplaceExp: return "**=";
+ case QSOperator::Ge: return ">=";
+ case QSOperator::Gt: return ">";
+ case QSOperator::In: return "in";
+ case QSOperator::InplaceAdd: return "+=";
+ case QSOperator::InstanceOf: return "instanceof";
+ case QSOperator::Le: return "<=";
+ case QSOperator::LShift: return "<<";
+ case QSOperator::InplaceLeftShift: return "<<=";
+ case QSOperator::Lt: return "<";
+ case QSOperator::Mod: return "%";
+ case QSOperator::InplaceMod: return "%=";
+ case QSOperator::Mul: return "*";
+ case QSOperator::InplaceMul: return "*=";
+ case QSOperator::NotEqual: return "!=";
+ case QSOperator::Or: return "||";
+ case QSOperator::InplaceOr: return "|=";
+ case QSOperator::RShift: return ">>";
+ case QSOperator::InplaceRightShift: return ">>=";
+ case QSOperator::StrictEqual: return "===";
+ case QSOperator::StrictNotEqual: return "!==";
+ case QSOperator::Sub: return "-";
+ case QSOperator::URShift: return ">>>";
+ case QSOperator::InplaceURightShift: return ">>>=";
+ case QSOperator::InplaceXor: return "^=";
+ case QSOperator::As: return "as";
+ case QSOperator::Coalesce: return "??";
+ case QSOperator::Invalid:
+ default:
+ return "INVALID";
+ }
+}
+
+QString DumpAstVisitor::formatComment(const Comment &comment) const
+{
+ QString result;
+
+ bool useMultilineComment = comment.isMultiline() && !comment.isSyntheticMultiline();
+
+ if (useMultilineComment)
+ result += "/*";
+ else
+ result += "//";
+
+ result += comment.m_text;
+
+ if (comment.isSyntheticMultiline())
+ result = result.replace("\n","\n" + formatLine("//", false));
+
+ if (comment.m_location == Comment::Location::Back_Inline)
+ result.prepend(" ");
+
+ if (useMultilineComment)
+ result += "*/";
+
+ return result;
+}
+
+QString DumpAstVisitor::getComment(Node *node, Comment::Location location) const
+{
+ const auto& comments = m_comment->attachedComments();
+ if (!comments.contains(node))
+ return "";
+
+ auto comment = comments[node];
+
+ if (comment.m_location != location)
+ return "";
+
+ return formatComment(comment);
+}
+
+QString DumpAstVisitor::getListItemComment(SourceLocation srcLocation,
+ Comment::Location location) const {
+ const auto& comments = m_comment->listComments();
+
+ if (!comments.contains(srcLocation.begin()))
+ return "";
+
+ auto comment = comments[srcLocation.begin()];
+
+ if (comment.m_location != location)
+ return "";
+
+ return formatComment(comment);
+}
+
+QString DumpAstVisitor::getOrphanedComments(Node *node) const {
+ const auto& orphans = m_comment->orphanComments()[node];
+
+ if (orphans.size() == 0)
+ return "";
+
+ QString result = "";
+
+ for (const Comment& orphan : orphans) {
+ result += formatLine(formatComment(orphan));
+ }
+
+ result += "\n";
+
+ return result;
+}
+
+QString DumpAstVisitor::parseArgumentList(ArgumentList *list)
+{
+ QString result = "";
+
+ for (auto *item = list; item != nullptr; item = item->next)
+ result += parseExpression(item->expression) + (item->next != nullptr ? ", " : "");
+
+ return result;
+}
+
+QString DumpAstVisitor::parseUiParameterList(UiParameterList *list) {
+ QString result = "";
+
+ for (auto *item = list; item != nullptr; item = item->next)
+ result += item->type->name + " " + item->name + (item->next != nullptr ? ", " : "");
+
+ return result;
+}
+
+QString DumpAstVisitor::parsePatternElement(PatternElement *element, bool scope)
+{
+ switch (element->type)
+ {
+ case PatternElement::Literal:
+ return parseExpression(element->initializer);
+ case PatternElement::Binding: {
+ QString result = "";
+ QString expr = parseExpression(element->initializer);
+
+ if (scope) {
+ switch (element->scope) {
+ case VariableScope::NoScope:
+ break;
+ case VariableScope::Let:
+ result = "let ";
+ break;
+ case VariableScope::Const:
+ result = "const ";
+ break;
+ case VariableScope::Var:
+ result = "var ";
+ break;
+ }
+ }
+
+ result += element->bindingIdentifier.toString();
+
+ if (!expr.isEmpty())
+ result += " = "+expr;
+
+ return result;
+ }
+ default:
+ return "pe_unknown";
+ }
+}
+
+QString escapeString(QString string)
+{
+ // Escape \r, \n and \t
+ string = string.replace("\r", "\\r").replace("\n", "\\n").replace("\t", "\\t");
+
+ // Escape "
+ string = string.replace("\"", "\\\"");
+
+ return "\"" + string + "\"";
+}
+
+QString DumpAstVisitor::parsePatternElementList(PatternElementList *list)
+{
+ QString result = "";
+
+ for (auto *item = list; item != nullptr; item = item->next)
+ result += parsePatternElement(item->element) + (item->next != nullptr ? ", " : "");
+
+ return result;
+}
+
+QString DumpAstVisitor::parseFormalParameterList(FormalParameterList *list)
+{
+ QString result = "";
+
+ for (auto *item = list; item != nullptr; item = item->next)
+ result += parsePatternElement(item->element) + (item->next != nullptr ? ", " : "");
+
+ return result;
+}
+
+QString DumpAstVisitor::parseExpression(ExpressionNode *expression)
+{
+ if (expression == nullptr)
+ return "";
+
+ switch (expression->kind)
+ {
+ case Node::Kind_ArrayPattern:
+ return "["+parsePatternElementList(cast<ArrayPattern *>(expression)->elements)+"]";
+ case Node::Kind_IdentifierExpression:
+ return cast<IdentifierExpression*>(expression)->name.toString();
+ case Node::Kind_FieldMemberExpression: {
+ auto *fieldMemberExpr = cast<FieldMemberExpression *>(expression);
+ return parseExpression(fieldMemberExpr->base) + "." + fieldMemberExpr->name.toString();
+ }
+ case Node::Kind_ArrayMemberExpression: {
+ auto *arrayMemberExpr = cast<ArrayMemberExpression *>(expression);
+ return parseExpression(arrayMemberExpr->base)
+ + "[" + parseExpression(arrayMemberExpr->expression) + "]";
+ }
+ case Node::Kind_NestedExpression:
+ return "("+parseExpression(cast<NestedExpression *>(expression)->expression)+")";
+ case Node::Kind_TrueLiteral:
+ return "true";
+ case Node::Kind_FalseLiteral:
+ return "false";
+ case Node::Kind_FunctionExpression:
+ {
+ auto *functExpr = cast<FunctionExpression *>(expression);
+
+ m_indentLevel++;
+ QString result = "function";
+
+ if (!functExpr->name.isEmpty())
+ result += " " + functExpr->name;
+
+ result += "("+parseFormalParameterList(functExpr->formals)+") {\n"
+ + parseStatementList(functExpr->body);
+
+ m_indentLevel--;
+
+ result += formatLine("}", false);
+
+ return result;
+ }
+ case Node::Kind_NullExpression:
+ return "null";
+ case Node::Kind_PostIncrementExpression:
+ return parseExpression(cast<PostIncrementExpression *>(expression)->base)+"++";
+ case Node::Kind_PreIncrementExpression:
+ return "++"+parseExpression(cast<PreIncrementExpression *>(expression)->expression);
+ case Node::Kind_PostDecrementExpression:
+ return parseExpression(cast<PostDecrementExpression *>(expression)->base)+"--";
+ case Node::Kind_PreDecrementExpression:
+ return "--"+parseExpression(cast<PreDecrementExpression *>(expression)->expression);
+ case Node::Kind_NumericLiteral:
+ return QString::number(cast<NumericLiteral *>(expression)->value);
+ case Node::Kind_StringLiteral:
+ return escapeString(cast<StringLiteral *>(expression)->value.toString());
+ case Node::Kind_BinaryExpression: {
+ auto *binExpr = expression->binaryExpressionCast();
+ return parseExpression(binExpr->left) + " " + operatorToString(binExpr->op)
+ + " " + parseExpression(binExpr->right);
+ }
+ case Node::Kind_CallExpression: {
+ auto *callExpr = cast<CallExpression *>(expression);
+
+ return parseExpression(callExpr->base) + "(" + parseArgumentList(callExpr->arguments) + ")";
+ }
+ case Node::Kind_NewExpression:
+ return "new "+parseExpression(cast<NewExpression *>(expression)->expression);
+ case Node::Kind_NewMemberExpression: {
+ auto *newMemberExpression = cast<NewMemberExpression *>(expression);
+ return "new "+parseExpression(newMemberExpression->base)
+ + "(" +parseArgumentList(newMemberExpression->arguments)+")";
+ }
+ case Node::Kind_DeleteExpression:
+ return "delete " + parseExpression(cast<DeleteExpression *>(expression)->expression);
+ case Node::Kind_VoidExpression:
+ return "void " + parseExpression(cast<VoidExpression *>(expression)->expression);
+ case Node::Kind_TypeOfExpression:
+ return "typeof " + parseExpression(cast<TypeOfExpression *>(expression)->expression);
+ case Node::Kind_UnaryPlusExpression:
+ return "+" + parseExpression(cast<UnaryPlusExpression *>(expression)->expression);
+ case Node::Kind_UnaryMinusExpression:
+ return "-" + parseExpression(cast<UnaryMinusExpression *>(expression)->expression);
+ case Node::Kind_NotExpression:
+ return "!" + parseExpression(cast<NotExpression *>(expression)->expression);
+ case Node::Kind_TildeExpression:
+ return "~" + parseExpression(cast<TildeExpression *>(expression)->expression);
+ case Node::Kind_ConditionalExpression: {
+ auto *condExpr = cast<ConditionalExpression *>(expression);
+
+ QString result = "";
+
+ result += parseExpression(condExpr->expression) + " ? ";
+ result += parseExpression(condExpr->ok) + " : ";
+ result += parseExpression(condExpr->ko);
+
+ return result;
+ }
+ case Node::Kind_YieldExpression: {
+ auto *yieldExpr = cast<YieldExpression*>(expression);
+
+ QString result = "yield";
+
+ if (yieldExpr->isYieldStar)
+ result += "*";
+
+ if (yieldExpr->expression)
+ result += " " + parseExpression(yieldExpr->expression);
+
+ return result;
+ }
+ default:
+ m_error = true;
+ return "unknown_expression_"+QString::number(expression->kind);
+ }
+}
+
+QString DumpAstVisitor::parseVariableDeclarationList(VariableDeclarationList *list)
+{
+ QString result = "";
+
+ for (auto *item = list; item != nullptr; item = item->next) {
+ result += parsePatternElement(item->declaration, (item == list))
+ + (item->next != nullptr ? ", " : "");
+ }
+
+ return result;
+}
+
+QString DumpAstVisitor::parseCaseBlock(CaseBlock *block)
+{
+ QString result = "{\n";
+
+ for (auto *item = block->clauses; item != nullptr; item = item->next) {
+ result += formatLine("case "+parseExpression(item->clause->expression)+":");
+ m_indentLevel++;
+ result += parseStatementList(item->clause->statements);
+ m_indentLevel--;
+ }
+
+ if (block->defaultClause) {
+ result += formatLine("default:");
+ m_indentLevel++;
+ result += parseStatementList(block->defaultClause->statements);
+ m_indentLevel--;
+ }
+
+ result += formatLine("}", false);
+
+ return result;
+}
+
+QString DumpAstVisitor::parseExportSpecifier(ExportSpecifier *specifier)
+{
+ QString result = specifier->identifier.toString();
+
+ if (!specifier->exportedIdentifier.isEmpty())
+ result += " as " + specifier->exportedIdentifier;
+
+ return result;
+}
+
+QString DumpAstVisitor::parseExportsList(ExportsList *list)
+{
+ QString result = "";
+
+ for (auto *item = list; item != nullptr; item = item->next) {
+ result += formatLine(parseExportSpecifier(item->exportSpecifier)
+ + (item->next != nullptr ? "," : ""));
+ }
+
+ return result;
+}
+
+QString DumpAstVisitor::parseBlock(Block *block, bool hasNext, bool allowBraceless)
+{
+ bool hasOneLine = (block->statements == nullptr || block->statements->next == nullptr) && allowBraceless;
+
+ QString result = hasOneLine ? "\n" : "{\n";
+ m_indentLevel++;
+ result += parseStatementList(block->statements);
+ m_indentLevel--;
+
+ if (hasNext)
+ result += formatLine(hasOneLine ? "" : "} ", false);
+
+ if (!hasNext && !hasOneLine)
+ result += formatLine("}", false);
+
+ m_blockNeededBraces |= (block->statements && block->statements->next != nullptr);
+
+ return result;
+}
+
+QString DumpAstVisitor::parseStatement(Statement *statement, bool blockHasNext,
+ bool blockAllowBraceless)
+{
+ if (statement == nullptr)
+ return "";
+
+ switch (statement->kind)
+ {
+ case Node::Kind_EmptyStatement:
+ return "";
+ case Node::Kind_ExpressionStatement:
+ return parseExpression(cast<ExpressionStatement *>(statement)->expression);
+ case Node::Kind_VariableStatement:
+ return parseVariableDeclarationList(cast<VariableStatement *>(statement)->declarations);
+ case Node::Kind_ReturnStatement:
+ return "return "+parseExpression(cast<ReturnStatement *>(statement)->expression);
+ case Node::Kind_ContinueStatement:
+ return "continue";
+ case Node::Kind_BreakStatement:
+ return "break";
+ case Node::Kind_SwitchStatement: {
+ auto *switchStatement = cast<SwitchStatement *>(statement);
+
+ QString result = "switch ("+parseExpression(switchStatement->expression)+") ";
+
+ result += parseCaseBlock(switchStatement->block);
+
+ return result;
+ }
+ case Node::Kind_IfStatement: {
+ auto *ifStatement = cast<IfStatement *>(statement);
+
+ m_blockNeededBraces = false;
+
+ QString ifFalse = parseStatement(ifStatement->ko, false, true);
+ QString ifTrue = parseStatement(ifStatement->ok, !ifFalse.isEmpty(), true);
+
+ bool ifTrueBlock = ifStatement->ok->kind == Node::Kind_Block;
+ bool ifFalseBlock = ifStatement->ko
+ ? (ifStatement->ko->kind == Node::Kind_Block || ifStatement->ko->kind == Node::Kind_IfStatement)
+ : false;
+
+ if (m_blockNeededBraces) {
+ ifFalse = parseStatement(ifStatement->ko, false, false);
+ ifTrue = parseStatement(ifStatement->ok, !ifFalse.isEmpty(), false);
+ }
+
+ QString result = "if (" + parseExpression(ifStatement->expression) + ")";
+
+ if (ifTrueBlock) {
+ result += " " + ifTrue;
+ } else {
+ result += "\n";
+ m_indentLevel++;
+ result += formatLine(ifTrue);
+ m_indentLevel--;
+ }
+
+ if (!ifFalse.isEmpty())
+ {
+ if (ifTrueBlock)
+ result += "else";
+ else
+ result += formatLine("else", false);
+
+ if (ifFalseBlock) {
+ result += " " + ifFalse;
+ } else {
+ result += "\n";
+ m_indentLevel++;
+ result += formatLine(ifFalse, false);
+ m_indentLevel--;
+ }
+ }
+
+ return result;
+ }
+ case Node::Kind_ForStatement: {
+ auto *forStatement = cast<ForStatement *>(statement);
+
+ QString expr = parseExpression(forStatement->expression);
+ QString result = "for (";
+
+ result += parseVariableDeclarationList(forStatement->declarations);
+
+ result += "; ";
+
+ result += parseExpression(forStatement->condition) + "; ";
+ result += parseExpression(forStatement->expression)+") ";
+
+ result += parseStatement(forStatement->statement);
+
+
+ return result;
+ }
+ case Node::Kind_ForEachStatement: {
+ auto *forEachStatement = cast<ForEachStatement *>(statement);
+
+ QString result = "for (";
+
+ PatternElement *patternElement = cast<PatternElement *>(forEachStatement->lhs);
+
+ if (patternElement != nullptr)
+ result += parsePatternElement(patternElement);
+ else
+ result += parseExpression(forEachStatement->lhs->expressionCast());
+
+ switch (forEachStatement->type)
+ {
+ case ForEachType::In:
+ result += " in ";
+ break;
+ case ForEachType::Of:
+ result += " of ";
+ break;
+ }
+
+ result += parseExpression(forEachStatement->expression) + ") ";
+
+ result += parseStatement(forEachStatement->statement);
+
+ return result;
+ }
+ case Node::Kind_WhileStatement: {
+ auto *whileStatement = cast<WhileStatement *>(statement);
+
+ m_blockNeededBraces = false;
+
+ auto statement = parseStatement(whileStatement->statement, false, true);
+
+ return "while ("+parseExpression(whileStatement->expression) + ")"
+ + (m_blockNeededBraces ? " " : "")
+ + statement;
+ }
+ case Node::Kind_DoWhileStatement: {
+ auto *doWhileStatement = cast<DoWhileStatement *>(statement);
+ return "do " + parseBlock(cast<Block *>(doWhileStatement->statement), true, false)
+ + "while (" + parseExpression(doWhileStatement->expression) + ")";
+ }
+ case Node::Kind_TryStatement: {
+ auto *tryStatement = cast<TryStatement *>(statement);
+
+ Catch *catchExpr = tryStatement->catchExpression;
+ Finally *finallyExpr = tryStatement->finallyExpression;
+
+ QString result;
+
+ result += "try " + parseBlock(cast<Block *>(tryStatement->statement), true, false);
+
+ result += "catch (" + parsePatternElement(catchExpr->patternElement, false) + ") "
+ + parseBlock(cast<Block *>(catchExpr->statement), finallyExpr, false);
+
+ if (finallyExpr) {
+ result += "finally " + parseBlock(cast<Block *>(tryStatement->statement), false, false);
+ }
+
+ return result;
+ }
+ case Node::Kind_Block: {
+ return parseBlock(cast<Block *>(statement), blockHasNext, blockAllowBraceless);
+ }
+ case Node::Kind_ThrowStatement:
+ return "throw "+parseExpression(cast<ThrowStatement *>(statement)->expression);
+ case Node::Kind_LabelledStatement: {
+ auto *labelledStatement = cast<LabelledStatement *>(statement);
+ QString result = labelledStatement->label+":\n";
+ result += formatLine(parseStatement(labelledStatement->statement), false);
+
+ return result;
+ }
+ case Node::Kind_WithStatement: {
+ auto *withStatement = cast<WithStatement *>(statement);
+ return "with (" + parseExpression(withStatement->expression) + ") "
+ + parseStatement(withStatement->statement);
+ }
+ case Node::Kind_DebuggerStatement: {
+ return "debugger";
+ }
+ case Node::Kind_ExportDeclaration:
+ m_error = true;
+ return "export_decl_unsupported";
+ case Node::Kind_ImportDeclaration:
+ m_error = true;
+ return "import_decl_unsupported";
+ default:
+ m_error = true;
+ return "unknown_statement_"+QString::number(statement->kind);
+ }
+}
+
+bool needsSemicolon(int kind)
+{
+ switch (kind)
+ {
+ case Node::Kind_ForStatement:
+ case Node::Kind_ForEachStatement:
+ case Node::Kind_IfStatement:
+ case Node::Kind_SwitchStatement:
+ case Node::Kind_WhileStatement:
+ case Node::Kind_DoWhileStatement:
+ case Node::Kind_TryStatement:
+ case Node::Kind_WithStatement:
+ return false;
+ default:
+ return true;
+ }
+}
+
+QString DumpAstVisitor::parseStatementList(StatementList *list)
+{
+ QString result = "";
+
+ result += getOrphanedComments(list);
+
+ for (auto *item = list; item != nullptr; item = item->next) {
+ QString statement = parseStatement(item->statement->statementCast());
+ if (statement.isEmpty())
+ continue;
+
+ QString commentFront = getComment(item->statement, Comment::Location::Front);
+ QString commentBackInline = getComment(item->statement, Comment::Location::Back_Inline);
+
+ if (!commentFront.isEmpty())
+ result += formatLine(commentFront);
+
+ result += formatLine(statement + (needsSemicolon(item->statement->kind) ? ";" : "")
+ + commentBackInline);
+ }
+
+ return result;
+}
+
+bool DumpAstVisitor::visit(UiPublicMember *node) {
+ addLine(getComment(node, Comment::Location::Front));
+
+ QString commentBackInline = getComment(node, Comment::Location::Back_Inline);
+
+ switch (node->type)
+ {
+ case UiPublicMember::Signal:
+ if (m_firstSignal) {
+ if (m_firstOfAll)
+ m_firstOfAll = false;
+ else
+ addNewLine();
+
+ m_firstSignal = false;
+ }
+
+ addLine("signal "+node->name.toString()+"("+parseUiParameterList(node->parameters) + ")"
+ + commentBackInline);
+ break;
+ case UiPublicMember::Property: {
+ if (m_firstProperty) {
+ if (m_firstOfAll)
+ m_firstOfAll = false;
+ else
+ addNewLine();
+
+ m_firstProperty = false;
+ }
+
+ const bool is_required = node->requiredToken.isValid();
+ const bool is_default = node->defaultToken.isValid();
+ const bool is_readonly = node->readonlyToken.isValid();
+
+ QString prefix = "";
+ QString statement = parseStatement(node->statement);
+
+ if (!statement.isEmpty())
+ statement.prepend(": ");
+
+ if (is_required)
+ prefix += "required ";
+
+ if (is_default)
+ prefix += "default ";
+
+ if (is_readonly)
+ prefix += "readonly ";
+
+ addLine(prefix + "property " + node->memberType->name + " "
+ + node->name+statement + commentBackInline);
+ break;
+ }
+ }
+
+ return true;
+}
+
+QString DumpAstVisitor::generateIndent() const {
+ constexpr int IDENT_WIDTH = 4;
+
+ QString indent = "";
+ for (int i = 0; i < IDENT_WIDTH*m_indentLevel; i++)
+ indent += " ";
+
+ return indent;
+}
+
+QString DumpAstVisitor::formatLine(QString line, bool newline) const {
+ QString result = generateIndent() + line;
+ if (newline)
+ result += "\n";
+
+ return result;
+}
+
+void DumpAstVisitor::addNewLine(bool always) {
+ if (!always && m_result.endsWith("\n\n"))
+ return;
+
+ m_result += "\n";
+}
+
+void DumpAstVisitor::addLine(QString line) {
+ // addLine does not support empty lines, use addNewLine(true) for that
+ if (line.isEmpty())
+ return;
+
+ m_result += formatLine(line);
+}
+
+bool DumpAstVisitor::visit(UiObjectDefinition *node) {
+ if (m_firstObject) {
+ if (m_firstOfAll)
+ m_firstOfAll = false;
+ else
+ addNewLine();
+
+ m_firstObject = false;
+ }
+
+ addLine(getComment(node, Comment::Location::Front));
+ addLine(node->qualifiedTypeNameId->name+" {");
+
+ m_indentLevel++;
+
+ m_firstProperty = true;
+ m_firstSignal = true;
+ m_firstBinding = true;
+ m_firstObject = true;
+ m_firstOfAll = true;
+
+ m_result += getOrphanedComments(node);
+
+ return true;
+}
+
+void DumpAstVisitor::endVisit(UiObjectDefinition *node) {
+ m_indentLevel--;
+ addLine(m_inArrayBinding && m_lastInArrayBinding != node ? "}," : "}");
+ addLine(getComment(node, Comment::Location::Back));
+ if (!m_inArrayBinding)
+ addNewLine();
+}
+
+bool DumpAstVisitor::visit(UiEnumDeclaration *node) {
+
+ addNewLine();
+
+ addLine(getComment(node, Comment::Location::Front));
+ addLine("enum " + node->name + " {");
+ m_indentLevel++;
+ m_result += getOrphanedComments(node);
+
+ return true;
+}
+
+void DumpAstVisitor::endVisit(UiEnumDeclaration *) {
+ m_indentLevel--;
+ addLine("}");
+
+ addNewLine();
+}
+
+bool DumpAstVisitor::visit(UiEnumMemberList *node) {
+ for (auto *members = node; members != nullptr; members = members->next) {
+
+ addLine(getListItemComment(members->memberToken, Comment::Location::Front));
+
+ QString line = members->member.toString();
+
+ if (members->valueToken.isValid())
+ line += " = "+QString::number(members->value);
+
+ if (members->next != nullptr)
+ line += ",";
+
+ line += getListItemComment(members->memberToken, Comment::Location::Back_Inline);
+
+ addLine(line);
+ }
+
+ return true;
+}
+
+bool DumpAstVisitor::visit(UiScriptBinding *node) {
+ if (m_firstBinding) {
+ if (m_firstOfAll)
+ m_firstOfAll = false;
+ else
+ addNewLine();
+
+ if (parseUiQualifiedId(node->qualifiedId) != "id")
+ m_firstBinding = false;
+ }
+
+ addLine(getComment(node, Comment::Location::Front));
+ addLine(parseUiQualifiedId(node->qualifiedId)+ ": " + parseStatement(node->statement)
+ + getComment(node, Comment::Location::Back_Inline));
+ return true;
+}
+
+bool DumpAstVisitor::visit(UiArrayBinding *node) {
+ if (m_firstBinding) {
+ if (m_firstOfAll)
+ m_firstOfAll = false;
+ else
+ addNewLine();
+
+ m_firstBinding = false;
+ }
+
+ addLine(getComment(node, Comment::Location::Front));
+ addLine(parseUiQualifiedId(node->qualifiedId)+ ": [");
+
+ m_indentLevel++;
+ m_inArrayBinding = true;
+
+ m_firstOfAll = true;
+ m_firstObject = true;
+ m_firstSignal = true;
+ m_firstBinding = true;
+ m_firstProperty = true;
+
+ for (auto *item = node->members; item != nullptr; item = item->next) {
+ if (item->next == nullptr)
+ m_lastInArrayBinding = item->member;
+ }
+
+ m_result += getOrphanedComments(node);
+
+ return true;
+}
+
+void DumpAstVisitor::endVisit(UiArrayBinding *) {
+ m_indentLevel--;
+ m_inArrayBinding = false;
+ m_lastInArrayBinding = nullptr;
+ addLine("]");
+}
+
+bool DumpAstVisitor::visit(FunctionDeclaration *node) {
+
+ addNewLine();
+
+ addLine(getComment(node, Comment::Location::Front));
+ addLine("function "+node->name+"("+parseFormalParameterList(node->formals)+") {");
+ m_indentLevel++;
+ m_result += parseStatementList(node->body);
+ m_indentLevel--;
+ addLine("}");
+
+ addNewLine();
+
+ return true;
+}
+
+bool DumpAstVisitor::visit(UiObjectBinding *node) {
+ if (m_firstObject) {
+ if (m_firstOfAll)
+ m_firstOfAll = false;
+ else
+ addNewLine();
+
+ m_firstObject = false;
+ }
+
+ QString name = parseUiQualifiedId(node->qualifiedTypeNameId);
+
+ QString result = name;
+
+ if (node->hasOnToken)
+ result += " on "+parseUiQualifiedId(node->qualifiedId);
+ else
+ result.prepend(parseUiQualifiedId(node->qualifiedId) + ": ");
+
+ addNewLine();
+ addLine(getComment(node, Comment::Location::Front));
+ addLine(result+" {");
+
+ m_indentLevel++;
+
+ return true;
+}
+
+void DumpAstVisitor::endVisit(UiObjectBinding *node) {
+ m_indentLevel--;
+ addLine("}");
+ addLine(getComment(node, Comment::Location::Back));
+
+ addNewLine();
+}
+
+bool DumpAstVisitor::visit(UiImport *node) {
+ addLine(getComment(node, Comment::Location::Front));
+
+ QString result = "import ";
+
+ if (!node->fileName.isEmpty())
+ result += escapeString(node->fileName.toString());
+ else
+ result += parseUiQualifiedId(node->importUri);
+
+ if (node->version) {
+ result += " " + QString::number(node->version->majorVersion) + "."
+ + QString::number(node->version->minorVersion);
+ }
+
+ if (node->asToken.isValid()) {
+ result +=" as " + node->importId;
+ }
+
+ result += getComment(node, Comment::Location::Back_Inline);
+
+ addLine(result);
+
+ return true;
+}
diff --git a/tools/qmlformat/dumpastvisitor.h b/tools/qmlformat/dumpastvisitor.h
new file mode 100644
index 0000000000..e73a7b628f
--- /dev/null
+++ b/tools/qmlformat/dumpastvisitor.h
@@ -0,0 +1,123 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef DUMPAST_H
+#define DUMPAST_H
+
+#include <QtQml/private/qqmljsastvisitor_p.h>
+#include <QtQml/private/qqmljsast_p.h>
+
+#include "commentastvisitor.h"
+
+using namespace QQmlJS::AST;
+
+class DumpAstVisitor : protected Visitor
+{
+public:
+ DumpAstVisitor(Node *rootNode, CommentAstVisitor *comment);
+
+ QString toString() const { return m_result; }
+
+ bool visit(UiScriptBinding *node) override;
+
+ bool visit(UiArrayBinding *node) override;
+ void endVisit(UiArrayBinding *node) override;
+
+ bool visit(UiObjectBinding *node) override;
+ void endVisit(UiObjectBinding *node) override;
+
+ bool visit(FunctionDeclaration *node) override;
+
+ bool visit(UiObjectDefinition *node) override;
+ void endVisit(UiObjectDefinition *node) override;
+
+ bool visit(UiEnumDeclaration *node) override;
+ void endVisit(UiEnumDeclaration *node) override;
+
+ bool visit(UiEnumMemberList *node) override;
+ bool visit(UiPublicMember *node) override;
+ bool visit(UiImport *node) override;
+
+ void throwRecursionDepthError() override {}
+
+ bool error() const { return m_error; }
+private:
+ QString generateIndent() const;
+ QString formatLine(QString line, bool newline = true) const;
+
+ QString formatComment(const Comment &comment) const;
+
+ QString getComment(Node *node, Comment::Location location) const;
+ QString getListItemComment(SourceLocation srcLocation, Comment::Location location) const;
+
+ void addNewLine(bool always = false);
+ void addLine(QString line);
+
+ QString getOrphanedComments(Node *node) const;
+
+ QString parseStatement(Statement *statement, bool blockHasNext = false,
+ bool blockAllowBraceless = false);
+ QString parseStatementList(StatementList *list);
+
+ QString parseExpression(ExpressionNode *expression);
+
+ QString parsePatternElement(PatternElement *element, bool scope = true);
+ QString parsePatternElementList(PatternElementList *element);
+
+ QString parseArgumentList(ArgumentList *list);
+
+ QString parseUiParameterList(UiParameterList *list);
+
+ QString parseVariableDeclarationList(VariableDeclarationList *list);
+
+ QString parseCaseBlock(CaseBlock *block);
+ QString parseBlock(Block *block, bool hasNext, bool allowBraceless);
+
+ QString parseExportsList(ExportsList *list);
+ QString parseExportSpecifier(ExportSpecifier *specifier);
+
+ QString parseFormalParameterList(FormalParameterList *list);
+
+ int m_indentLevel = 0;
+
+ bool m_error = false;
+ bool m_blockNeededBraces = false;
+ bool m_inArrayBinding = false;
+
+ bool m_firstOfAll = false;
+ bool m_firstSignal = false;
+ bool m_firstProperty = false;
+ bool m_firstBinding = false;
+ bool m_firstObject = true;
+
+ UiObjectMember* m_lastInArrayBinding = nullptr;
+ QString m_result = "";
+ CommentAstVisitor *m_comment;
+};
+
+#endif // DUMPAST_H
diff --git a/tools/qmlformat/main.cpp b/tools/qmlformat/main.cpp
new file mode 100644
index 0000000000..bca788d316
--- /dev/null
+++ b/tools/qmlformat/main.cpp
@@ -0,0 +1,164 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QCoreApplication>
+#include <QFile>
+
+#include <QtQml/private/qqmljslexer_p.h>
+#include <QtQml/private/qqmljsparser_p.h>
+#include <QtQml/private/qqmljsengine_p.h>
+#include <QtQml/private/qqmljsastvisitor_p.h>
+#include <QtQml/private/qqmljsast_p.h>
+
+#if QT_CONFIG(commandlineparser)
+#include <QCommandLineParser>
+#endif
+
+#include "commentastvisitor.h"
+#include "dumpastvisitor.h"
+#include "restructureastvisitor.h"
+
+bool parseFile(const QString& filename, bool inplace, bool verbose, bool sortImports)
+{
+ QFile file(filename);
+
+ if (!file.open(QIODevice::Text | QIODevice::ReadOnly)) {
+ qWarning().noquote() << "Failed to open" << filename << "for reading.";
+ return false;
+ }
+
+ QString code = QString::fromUtf8(file.readAll());
+ file.close();
+
+ QQmlJS::Engine engine;
+ QQmlJS::Lexer lexer(&engine);
+
+ lexer.setCode(code, 1, true);
+ QQmlJS::Parser parser(&engine);
+
+ bool success = parser.parse();
+
+ if (!success) {
+ const auto diagnosticMessages = parser.diagnosticMessages();
+ for (const QQmlJS::DiagnosticMessage &m : diagnosticMessages) {
+ qWarning().noquote() << QString::fromLatin1("%1:%2 : %3")
+ .arg(filename).arg(m.line).arg(m.message);
+ }
+
+ qWarning().noquote() << "Failed to parse" << filename;
+ return false;
+ }
+
+ // Try to attach comments to AST nodes
+ CommentAstVisitor comment(&engine, parser.rootNode());
+
+ if (verbose)
+ qWarning().noquote() << comment.attachedComments().size() << "comment(s) attached.";
+
+ if (verbose) {
+ int orphaned = 0;
+
+ for (const auto& orphanList : comment.orphanComments().values())
+ orphaned += orphanList.size();
+
+ qWarning().noquote() << orphaned << "comments are orphans.";
+ }
+
+ if (verbose && sortImports)
+ qWarning().noquote() << "Sorting imports";
+
+ // Do the actual restructuring
+ RestructureAstVisitor restructure(parser.rootNode(), sortImports);
+
+ // Turn AST back into source code
+ if (verbose)
+ qWarning().noquote() << "Dumping" << filename;
+
+ DumpAstVisitor dump(parser.rootNode(), &comment);
+
+ if (dump.error())
+ qWarning().noquote() << "An error has occurred. The output may not be reliable.";
+
+ if (inplace) {
+ if (verbose)
+ qWarning().noquote() << "Writing to file" << filename;
+
+ if (!file.open(QIODevice::Text | QIODevice::WriteOnly))
+ {
+ qWarning().noquote() << "Failed to open" << filename << "for writing";
+ return false;
+ }
+
+ file.write(dump.toString().toUtf8());
+ file.close();
+ } else {
+ QTextStream(stdout) << dump.toString();
+ }
+
+ return true;
+}
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication app(argc, argv);
+ QCoreApplication::setApplicationName("qmlformat");
+ QCoreApplication::setApplicationVersion("1.0");
+
+ bool success = true;
+#if QT_CONFIG(commandlineparser)
+ QCommandLineParser parser;
+ parser.setApplicationDescription("Formats QML files according to the QML Coding Conventions.");
+ parser.addHelpOption();
+ parser.addVersionOption();
+
+ parser.addOption(QCommandLineOption({"V", "verbose"},
+ QStringLiteral("Verbose mode. Outputs more detailed information.")));
+
+ parser.addOption(QCommandLineOption({"n", "no-sort"},
+ QStringLiteral("Do not sort imports.")));
+
+ parser.addOption(QCommandLineOption({"i", "inplace"},
+ QStringLiteral("Edit file in-place instead of outputting to stdout.")));
+
+ parser.addPositionalArgument("filenames", "files to be processed by qmlformat");
+
+ parser.process(app);
+
+ const auto positionalArguments = parser.positionalArguments();
+
+ if (positionalArguments.isEmpty())
+ parser.showHelp(-1);
+
+ for (const QString& file: parser.positionalArguments()) {
+ if (!parseFile(file, parser.isSet("inplace"), parser.isSet("verbose"), !parser.isSet("no-sort")))
+ success = false;
+ }
+#endif
+
+ return success ? 0 : 1;
+}
diff --git a/tools/qmlformat/qmlformat.pro b/tools/qmlformat/qmlformat.pro
new file mode 100644
index 0000000000..c8e74a4b55
--- /dev/null
+++ b/tools/qmlformat/qmlformat.pro
@@ -0,0 +1,17 @@
+option(host_build)
+
+QT = core qmldevtools-private
+
+SOURCES += main.cpp \
+ commentastvisitor.cpp \
+ dumpastvisitor.cpp \
+ restructureastvisitor.cpp
+
+QMAKE_TARGET_DESCRIPTION = QML Formatter
+
+HEADERS += \
+ commentastvisitor.h \
+ dumpastvisitor.h \
+ restructureastvisitor.h
+
+load(qt_tool)
diff --git a/tools/qmlformat/restructureastvisitor.cpp b/tools/qmlformat/restructureastvisitor.cpp
new file mode 100644
index 0000000000..f9ac2a20c2
--- /dev/null
+++ b/tools/qmlformat/restructureastvisitor.cpp
@@ -0,0 +1,178 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "restructureastvisitor.h"
+
+#include <QList>
+
+RestructureAstVisitor::RestructureAstVisitor(Node *rootNode, bool sortImports) : m_sortImports(sortImports)
+{
+ rootNode->accept(this);
+}
+
+template<typename T>
+static QList<T *> findKind(UiObjectMemberList *list)
+{
+ QList<T *> members;
+ for (auto *item = list; item != nullptr; item = item->next) {
+ if (cast<T *>(item->member) != nullptr)
+ members.append(cast<T *>(item->member));
+ }
+
+ return members;
+}
+
+template<typename T>
+static QList<T *> findKind(UiHeaderItemList *list)
+{
+ QList<T *> members;
+ for (auto *item = list; item != nullptr; item = item->next) {
+ if (cast<T *>(item->headerItem) != nullptr)
+ members.append(cast<T *>(item->headerItem));
+ }
+
+ return members;
+}
+
+static QString parseUiQualifiedId(UiQualifiedId *id)
+{
+ QString name = id->name.toString();
+ for (auto *item = id->next; item != nullptr; item = item->next) {
+ name += "." + item->name;
+ }
+
+ return name;
+}
+
+void RestructureAstVisitor::endVisit(UiHeaderItemList *node)
+{
+ QList<Node *> correctOrder;
+
+ auto imports = findKind<UiImport>(node);
+
+ if (!m_sortImports)
+ return;
+
+ // Sort imports
+ std::sort(imports.begin(), imports.end(), [](UiImport *a, UiImport *b)
+ {
+ auto nameA = a->fileName.isEmpty() ? parseUiQualifiedId(a->importUri)
+ : a->fileName.toString();
+ auto nameB = b->fileName.isEmpty() ? parseUiQualifiedId(b->importUri)
+ : b->fileName.toString();
+
+ return nameA < nameB;
+ });
+
+ // Add imports
+ for (auto *import : imports)
+ correctOrder.append(import);
+
+ // Add all the other items
+ for (auto *item = node; item != nullptr; item = item->next) {
+ if (!correctOrder.contains(item->headerItem))
+ correctOrder.append(item->headerItem);
+ }
+
+ // Rebuild member list from correctOrder
+ for (auto *item = node; item != nullptr; item = item->next) {
+ item->headerItem = correctOrder.front();
+ correctOrder.pop_front();
+ }
+}
+
+void RestructureAstVisitor::endVisit(UiObjectMemberList *node)
+{
+ QList<UiObjectMember*> correctOrder;
+
+ auto enumDeclarations = findKind<UiEnumDeclaration>(node);
+ auto scriptBindings = findKind<UiScriptBinding>(node);
+ auto arrayBindings = findKind<UiArrayBinding>(node);
+ auto publicMembers = findKind<UiPublicMember>(node);
+ auto sourceElements = findKind<UiSourceElement>(node);
+ auto objectDefinitions = findKind<UiObjectDefinition>(node);
+
+ // This structure is based on https://doc.qt.io/qt-5/qml-codingconventions.html
+
+ // 1st id
+ for (auto *binding : scriptBindings) {
+ if (binding->qualifiedId->name == "id") {
+ correctOrder.append(binding);
+
+ scriptBindings.removeOne(binding);
+ break;
+ }
+ }
+
+ // 2nd enums
+ for (auto *enumDeclaration : enumDeclarations)
+ correctOrder.append(enumDeclaration);
+
+ // 3rd property declarations
+ for (auto *publicMember : publicMembers) {
+ if (publicMember->type != UiPublicMember::Property)
+ continue;
+
+ correctOrder.append(publicMember);
+ }
+
+ // 4th signals
+ for (auto *publicMember : publicMembers) {
+ if (publicMember->type != UiPublicMember::Signal)
+ continue;
+
+ correctOrder.append(publicMember);
+ }
+
+ // 5th functions
+ for (auto *source : sourceElements)
+ correctOrder.append(source);
+
+ // 6th properties
+ for (auto *binding : scriptBindings)
+ correctOrder.append(binding);
+
+ for (auto *binding : arrayBindings)
+ correctOrder.append(binding);
+
+ // 7th child objects
+ for (auto *objectDefinition : objectDefinitions)
+ correctOrder.append(objectDefinition);
+
+ // 8th all the rest
+ for (auto *item = node; item != nullptr; item = item->next) {
+ if (!correctOrder.contains(item->member))
+ correctOrder.append(item->member);
+ }
+
+ // Rebuild member list from correctOrder
+ for (auto *item = node; item != nullptr; item = item->next) {
+ item->member = correctOrder.front();
+ correctOrder.pop_front();
+ }
+}
diff --git a/tools/qmlformat/restructureastvisitor.h b/tools/qmlformat/restructureastvisitor.h
new file mode 100644
index 0000000000..a2195c8c2e
--- /dev/null
+++ b/tools/qmlformat/restructureastvisitor.h
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef RESTRUCTUREASTVISITOR_H
+#define RESTRUCTUREASTVISITOR_H
+
+#include <QtQml/private/qqmljsastvisitor_p.h>
+#include <QtQml/private/qqmljsast_p.h>
+
+using namespace QQmlJS::AST;
+
+class RestructureAstVisitor : protected Visitor
+{
+public:
+ RestructureAstVisitor(Node *rootNode, bool sortImports);
+
+ void throwRecursionDepthError() override {}
+
+ void endVisit(UiObjectMemberList *node) override;
+ void endVisit(UiHeaderItemList *node) override;
+private:
+ bool m_sortImports = false;
+};
+
+#endif // RESTRUCTUREASTVISITOR_H
diff --git a/tools/qmllint/componentversion.cpp b/tools/qmllint/componentversion.cpp
index 3dc4ac37d0..e5047b8302 100644
--- a/tools/qmllint/componentversion.cpp
+++ b/tools/qmllint/componentversion.cpp
@@ -27,67 +27,24 @@
****************************************************************************/
#include "componentversion.h"
-
-#include <QString>
-#include <QCryptographicHash>
-
-#include <limits>
-
-using namespace LanguageUtils;
-
-const int ComponentVersion::NoVersion = -1;
-const int ComponentVersion::MaxVersion = std::numeric_limits<int>::max();
-
-ComponentVersion::ComponentVersion()
- : _major(NoVersion), _minor(NoVersion)
-{
-}
-
-ComponentVersion::ComponentVersion(int major, int minor)
- : _major(major), _minor(minor)
-{
-}
+#include <QtCore/qstring.h>
ComponentVersion::ComponentVersion(const QString &versionString)
- : _major(NoVersion), _minor(NoVersion)
{
- int dotIdx = versionString.indexOf(QLatin1Char('.'));
+ const int dotIdx = versionString.indexOf(QLatin1Char('.'));
if (dotIdx == -1)
return;
bool ok = false;
- int maybeMajor = versionString.leftRef(dotIdx).toInt(&ok);
+ const int maybeMajor = versionString.leftRef(dotIdx).toInt(&ok);
if (!ok)
return;
- int maybeMinor = versionString.midRef(dotIdx + 1).toInt(&ok);
+ const int maybeMinor = versionString.midRef(dotIdx + 1).toInt(&ok);
if (!ok)
return;
- _major = maybeMajor;
- _minor = maybeMinor;
-}
-
-ComponentVersion::~ComponentVersion()
-{
+ m_major = maybeMajor;
+ m_minor = maybeMinor;
}
-bool ComponentVersion::isValid() const
-{
- return _major >= 0 && _minor >= 0;
-}
-
-QString ComponentVersion::toString() const
-{
- return QString::fromLatin1("%1.%2").arg(QString::number(_major),
- QString::number(_minor));
-}
-
-void ComponentVersion::addToHash(QCryptographicHash &hash) const
-{
- hash.addData(reinterpret_cast<const char *>(&_major), sizeof(_major));
- hash.addData(reinterpret_cast<const char *>(&_minor), sizeof(_minor));
-}
-
-namespace LanguageUtils {
-
bool operator<(const ComponentVersion &lhs, const ComponentVersion &rhs)
{
return lhs.majorVersion() < rhs.majorVersion()
@@ -97,7 +54,8 @@ bool operator<(const ComponentVersion &lhs, const ComponentVersion &rhs)
bool operator<=(const ComponentVersion &lhs, const ComponentVersion &rhs)
{
return lhs.majorVersion() < rhs.majorVersion()
- || (lhs.majorVersion() == rhs.majorVersion() && lhs.minorVersion() <= rhs.minorVersion());
+ || (lhs.majorVersion() == rhs.majorVersion()
+ && lhs.minorVersion() <= rhs.minorVersion());
}
bool operator>(const ComponentVersion &lhs, const ComponentVersion &rhs)
@@ -112,12 +70,11 @@ bool operator>=(const ComponentVersion &lhs, const ComponentVersion &rhs)
bool operator==(const ComponentVersion &lhs, const ComponentVersion &rhs)
{
- return lhs.majorVersion() == rhs.majorVersion() && lhs.minorVersion() == rhs.minorVersion();
+ return lhs.majorVersion() == rhs.majorVersion()
+ && lhs.minorVersion() == rhs.minorVersion();
}
bool operator!=(const ComponentVersion &lhs, const ComponentVersion &rhs)
{
return !(lhs == rhs);
}
-
-}
diff --git a/tools/qmllint/componentversion.h b/tools/qmllint/componentversion.h
index 9d079f1d30..9c4604b9a3 100644
--- a/tools/qmllint/componentversion.h
+++ b/tools/qmllint/componentversion.h
@@ -29,36 +29,35 @@
#ifndef COMPONENTVERSION_H
#define COMPONENTVERSION_H
-#include <qglobal.h>
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
-QT_BEGIN_NAMESPACE
-class QCryptographicHash;
-QT_END_NAMESPACE
-
-namespace LanguageUtils {
+#include <QtCore/qglobal.h>
class ComponentVersion
{
- int _major;
- int _minor;
-
public:
- static const int NoVersion;
- static const int MaxVersion;
+ static const int NoVersion = -1;
- ComponentVersion();
- ComponentVersion(int major, int minor);
+ ComponentVersion() = default;
+ ComponentVersion(int major, int minor) : m_major(major), m_minor(minor) {}
explicit ComponentVersion(const QString &versionString);
- ~ComponentVersion();
- int majorVersion() const
- { return _major; }
- int minorVersion() const
- { return _minor; }
+ int majorVersion() const { return m_major; }
+ int minorVersion() const { return m_minor; }
- bool isValid() const;
- QString toString() const;
- void addToHash(QCryptographicHash &hash) const;
+ bool isValid() const { return m_major >= 0 && m_minor >= 0; }
+
+private:
+ int m_major = NoVersion;
+ int m_minor = NoVersion;
};
bool operator<(const ComponentVersion &lhs, const ComponentVersion &rhs);
@@ -68,6 +67,4 @@ bool operator>=(const ComponentVersion &lhs, const ComponentVersion &rhs);
bool operator==(const ComponentVersion &lhs, const ComponentVersion &rhs);
bool operator!=(const ComponentVersion &lhs, const ComponentVersion &rhs);
-} // namespace LanguageUtils
-
#endif // COMPONENTVERSION_H
diff --git a/tools/qmllint/fakemetaobject.cpp b/tools/qmllint/fakemetaobject.cpp
deleted file mode 100644
index 8319ae6713..0000000000
--- a/tools/qmllint/fakemetaobject.cpp
+++ /dev/null
@@ -1,594 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2019 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "fakemetaobject.h"
-#include <QCryptographicHash>
-
-using namespace LanguageUtils;
-
-FakeMetaEnum::FakeMetaEnum()
-{}
-
-FakeMetaEnum::FakeMetaEnum(const QString &name)
- : m_name(name)
-{}
-
-bool FakeMetaEnum::isValid() const
-{ return !m_name.isEmpty(); }
-
-QString FakeMetaEnum::name() const
-{ return m_name; }
-
-void FakeMetaEnum::setName(const QString &name)
-{ m_name = name; }
-
-void FakeMetaEnum::addKey(const QString &key)
-{ m_keys.append(key); }
-
-QString FakeMetaEnum::key(int index) const
-{ return m_keys.at(index); }
-
-int FakeMetaEnum::keyCount() const
-{ return m_keys.size(); }
-
-QStringList FakeMetaEnum::keys() const
-{ return m_keys; }
-
-bool FakeMetaEnum::hasKey(const QString &key) const
-{ return m_keys.contains(key); }
-
-void FakeMetaEnum::addToHash(QCryptographicHash &hash) const
-{
- int len = m_name.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- hash.addData(reinterpret_cast<const char *>(m_name.constData()), len * sizeof(QChar));
- len = m_keys.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- foreach (const QString &key, m_keys) {
- len = key.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- hash.addData(reinterpret_cast<const char *>(key.constData()), len * sizeof(QChar));
- }
-}
-
-QString FakeMetaEnum::describe(int baseIndent) const
-{
- QString newLine = QString::fromLatin1("\n") + QString::fromLatin1(" ").repeated(baseIndent);
- QString res = QLatin1String("Enum ");
- res += name();
- res += QLatin1String(": [");
- for (int i = 0; i < keyCount(); ++i) {
- res += newLine;
- res += QLatin1String(" ");
- res += key(i);
- }
- res += newLine;
- res += QLatin1Char(']');
- return res;
-}
-
-QString FakeMetaEnum::toString() const
-{
- return describe();
-}
-
-FakeMetaMethod::FakeMetaMethod(const QString &name, const QString &returnType)
- : m_name(name)
- , m_returnType(returnType)
- , m_methodTy(FakeMetaMethod::Method)
- , m_methodAccess(FakeMetaMethod::Public)
- , m_revision(0)
-{}
-
-FakeMetaMethod::FakeMetaMethod()
- : m_methodTy(FakeMetaMethod::Method)
- , m_methodAccess(FakeMetaMethod::Public)
- , m_revision(0)
-{}
-
-QString FakeMetaMethod::methodName() const
-{ return m_name; }
-
-void FakeMetaMethod::setMethodName(const QString &name)
-{ m_name = name; }
-
-void FakeMetaMethod::setReturnType(const QString &type)
-{ m_returnType = type; }
-
-QStringList FakeMetaMethod::parameterNames() const
-{ return m_paramNames; }
-
-QStringList FakeMetaMethod::parameterTypes() const
-{ return m_paramTypes; }
-
-void FakeMetaMethod::addParameter(const QString &name, const QString &type)
-{ m_paramNames.append(name); m_paramTypes.append(type); }
-
-int FakeMetaMethod::methodType() const
-{ return m_methodTy; }
-
-void FakeMetaMethod::setMethodType(int methodType)
-{ m_methodTy = methodType; }
-
-int FakeMetaMethod::access() const
-{ return m_methodAccess; }
-
-int FakeMetaMethod::revision() const
-{ return m_revision; }
-
-void FakeMetaMethod::setRevision(int r)
-{ m_revision = r; }
-
-void FakeMetaMethod::addToHash(QCryptographicHash &hash) const
-{
- int len = m_name.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- hash.addData(reinterpret_cast<const char *>(m_name.constData()), len * sizeof(QChar));
- hash.addData(reinterpret_cast<const char *>(&m_methodAccess), sizeof(m_methodAccess));
- hash.addData(reinterpret_cast<const char *>(&m_methodTy), sizeof(m_methodTy));
- hash.addData(reinterpret_cast<const char *>(&m_revision), sizeof(m_revision));
- len = m_paramNames.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- foreach (const QString &pName, m_paramNames) {
- len = pName.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- hash.addData(reinterpret_cast<const char *>(pName.constData()), len * sizeof(QChar));
- }
- len = m_paramTypes.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- foreach (const QString &pType, m_paramTypes) {
- len = pType.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- hash.addData(reinterpret_cast<const char *>(pType.constData()), len * sizeof(QChar));
- }
- len = m_returnType.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- hash.addData(reinterpret_cast<const char *>(m_returnType.constData()), len * sizeof(QChar));
-}
-
-QString FakeMetaMethod::describe(int baseIndent) const
-{
- QString newLine = QString::fromLatin1("\n") + QString::fromLatin1(" ").repeated(baseIndent);
- QString res = QLatin1String("Method {");
- res += newLine;
- res += QLatin1String(" methodName:");
- res += methodName();
- res += newLine;
- res += QLatin1String(" methodType:");
- res += methodType();
- res += newLine;
- res += QLatin1String(" parameterNames:[");
- foreach (const QString &pName, parameterNames()) {
- res += newLine;
- res += QLatin1String(" ");
- res += pName;
- }
- res += QLatin1Char(']');
- res += newLine;
- res += QLatin1String(" parameterTypes:[");
- foreach (const QString &pType, parameterTypes()) {
- res += newLine;
- res += QLatin1String(" ");
- res += pType;
- }
- res += QLatin1Char(']');
- res += newLine;
- res += QLatin1Char('}');
- return res;
-}
-
-QString FakeMetaMethod::toString() const
-{
- return describe();
-}
-
-
-FakeMetaProperty::FakeMetaProperty(const QString &name, const QString &type, bool isList,
- bool isWritable, bool isPointer, int revision)
- : m_propertyName(name)
- , m_type(type)
- , m_isList(isList)
- , m_isWritable(isWritable)
- , m_isPointer(isPointer)
- , m_revision(revision)
-{}
-
-QString FakeMetaProperty::name() const
-{ return m_propertyName; }
-
-QString FakeMetaProperty::typeName() const
-{ return m_type; }
-
-bool FakeMetaProperty::isList() const
-{ return m_isList; }
-
-bool FakeMetaProperty::isWritable() const
-{ return m_isWritable; }
-
-bool FakeMetaProperty::isPointer() const
-{ return m_isPointer; }
-
-int FakeMetaProperty::revision() const
-{ return m_revision; }
-
-void FakeMetaProperty::addToHash(QCryptographicHash &hash) const
-{
- int len = m_propertyName.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- hash.addData(reinterpret_cast<const char *>(m_propertyName.constData()), len * sizeof(QChar));
- hash.addData(reinterpret_cast<const char *>(&m_revision), sizeof(m_revision));
- int flags = (m_isList ? (1 << 0) : 0)
- + (m_isPointer ? (1 << 1) : 0)
- + (m_isWritable ? (1 << 2) : 0);
- hash.addData(reinterpret_cast<const char *>(&flags), sizeof(flags));
- len = m_type.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- hash.addData(reinterpret_cast<const char *>(m_type.constData()), len * sizeof(QChar));
-}
-
-QString FakeMetaProperty::describe(int baseIndent) const
-{
- auto boolStr = [] (bool v) { return v ? QLatin1String("true") : QLatin1String("false"); };
- QString newLine = QString::fromLatin1("\n") + QString::fromLatin1(" ").repeated(baseIndent);
- QString res = QLatin1String("Property {");
- res += newLine;
- res += QLatin1String(" name:");
- res += name();
- res += newLine;
- res += QLatin1String(" typeName:");
- res += typeName();
- res += newLine;
- res += QLatin1String(" typeName:");
- res += QString::number(revision());
- res += newLine;
- res += QLatin1String(" isList:");
- res += boolStr(isList());
- res += newLine;
- res += QLatin1String(" isPointer:");
- res += boolStr(isPointer());
- res += newLine;
- res += QLatin1String(" isWritable:");
- res += boolStr(isWritable());
- res += newLine;
- res += QLatin1Char('}');
- return res;
-}
-
-QString FakeMetaProperty::toString() const
-{
- return describe();
-}
-
-
-FakeMetaObject::FakeMetaObject() : m_isSingleton(false), m_isCreatable(true), m_isComposite(false)
-{
-}
-
-QString FakeMetaObject::className() const
-{ return m_className; }
-void FakeMetaObject::setClassName(const QString &name)
-{ m_className = name; }
-
-void FakeMetaObject::addExport(const QString &name, const QString &package, ComponentVersion version)
-{
- Export exp;
- exp.type = name;
- exp.package = package;
- exp.version = version;
- m_exports.append(exp);
-}
-
-void FakeMetaObject::setExportMetaObjectRevision(int exportIndex, int metaObjectRevision)
-{
- m_exports[exportIndex].metaObjectRevision = metaObjectRevision;
-}
-
-QList<FakeMetaObject::Export> FakeMetaObject::exports() const
-{ return m_exports; }
-FakeMetaObject::Export FakeMetaObject::exportInPackage(const QString &package) const
-{
- foreach (const Export &exp, m_exports) {
- if (exp.package == package)
- return exp;
- }
- return Export();
-}
-
-void FakeMetaObject::setSuperclassName(const QString &superclass)
-{ m_superName = superclass; }
-QString FakeMetaObject::superclassName() const
-{ return m_superName; }
-
-void FakeMetaObject::addEnum(const FakeMetaEnum &fakeEnum)
-{ m_enumNameToIndex.insert(fakeEnum.name(), m_enums.size()); m_enums.append(fakeEnum); }
-int FakeMetaObject::enumeratorCount() const
-{ return m_enums.size(); }
-int FakeMetaObject::enumeratorOffset() const
-{ return 0; }
-FakeMetaEnum FakeMetaObject::enumerator(int index) const
-{ return m_enums.at(index); }
-int FakeMetaObject::enumeratorIndex(const QString &name) const
-{ return m_enumNameToIndex.value(name, -1); }
-
-void FakeMetaObject::addProperty(const FakeMetaProperty &property)
-{ m_propNameToIdx.insert(property.name(), m_props.size()); m_props.append(property); }
-int FakeMetaObject::propertyCount() const
-{ return m_props.size(); }
-int FakeMetaObject::propertyOffset() const
-{ return 0; }
-FakeMetaProperty FakeMetaObject::property(int index) const
-{ return m_props.at(index); }
-int FakeMetaObject::propertyIndex(const QString &name) const
-{ return m_propNameToIdx.value(name, -1); }
-
-void FakeMetaObject::addMethod(const FakeMetaMethod &method)
-{ m_methods.append(method); }
-int FakeMetaObject::methodCount() const
-{ return m_methods.size(); }
-int FakeMetaObject::methodOffset() const
-{ return 0; }
-FakeMetaMethod FakeMetaObject::method(int index) const
-{ return m_methods.at(index); }
-int FakeMetaObject::methodIndex(const QString &name) const //If performances becomes an issue, just use a nameToIdx hash
-{
- for (int i=0; i<m_methods.count(); i++)
- if (m_methods[i].methodName() == name)
- return i;
- return -1;
-}
-
-QString FakeMetaObject::defaultPropertyName() const
-{ return m_defaultPropertyName; }
-void FakeMetaObject::setDefaultPropertyName(const QString &defaultPropertyName)
-{ m_defaultPropertyName = defaultPropertyName; }
-
-QString FakeMetaObject::attachedTypeName() const
-{ return m_attachedTypeName; }
-void FakeMetaObject::setAttachedTypeName(const QString &name)
-{ m_attachedTypeName = name; }
-
-QByteArray FakeMetaObject::calculateFingerprint() const
-{
- QCryptographicHash hash(QCryptographicHash::Sha1);
- int len = m_className.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- hash.addData(reinterpret_cast<const char *>(m_className.constData()), len * sizeof(QChar));
- len = m_attachedTypeName.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- hash.addData(reinterpret_cast<const char *>(m_attachedTypeName.constData()), len * sizeof(QChar));
- len = m_defaultPropertyName.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- hash.addData(reinterpret_cast<const char *>(m_defaultPropertyName.constData()), len * sizeof(QChar));
- len = m_enumNameToIndex.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- {
- QStringList keys(m_enumNameToIndex.keys());
- keys.sort();
- foreach (const QString &key, keys) {
- len = key.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- hash.addData(reinterpret_cast<const char *>(key.constData()), len * sizeof(QChar));
- int value = m_enumNameToIndex.value(key);
- hash.addData(reinterpret_cast<const char *>(&value), sizeof(value)); // avoid? this adds order dependency to fingerprint...
- m_enums.at(value).addToHash(hash);
- }
- }
- len = m_exports.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- foreach (const Export &e, m_exports)
- e.addToHash(hash); // normalize order?
- len = m_exports.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- foreach (const FakeMetaMethod &m, m_methods)
- m.addToHash(hash); // normalize order?
- {
- QStringList keys(m_propNameToIdx.keys());
- keys.sort();
- foreach (const QString &key, keys) {
- len = key.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- hash.addData(reinterpret_cast<const char *>(key.constData()), len * sizeof(QChar));
- int value = m_propNameToIdx.value(key);
- hash.addData(reinterpret_cast<const char *>(&value), sizeof(value)); // avoid? this adds order dependency to fingerprint...
- m_props.at(value).addToHash(hash);
- }
- }
- len = m_superName.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- hash.addData(reinterpret_cast<const char *>(m_superName.constData()), len * sizeof(QChar));
-
- QByteArray res = hash.result();
- res.append('F');
- return res;
-}
-
-void FakeMetaObject::updateFingerprint()
-{
- m_fingerprint = calculateFingerprint();
-}
-
-QByteArray FakeMetaObject::fingerprint() const
-{
- return m_fingerprint;
-}
-
-bool FakeMetaObject::isSingleton() const
-{
- return m_isSingleton;
-}
-
-bool FakeMetaObject::isCreatable() const
-{
- return m_isCreatable;
-}
-
-bool FakeMetaObject::isComposite() const
-{
- return m_isComposite;
-}
-
-void FakeMetaObject::setIsSingleton(bool value)
-{
- m_isSingleton = value;
-}
-
-void FakeMetaObject::setIsCreatable(bool value)
-{
- m_isCreatable = value;
-}
-
-void FakeMetaObject::setIsComposite(bool value)
-{
- m_isSingleton = value;
-}
-
-QString FakeMetaObject::toString() const
-{
- return describe();
-}
-
-QString FakeMetaObject::describe(bool printDetails, int baseIndent) const
-{
- QString res = QString::fromLatin1("FakeMetaObject@%1")
- .arg((quintptr)(void *)this, 0, 16);
- if (!printDetails)
- return res;
- auto boolStr = [] (bool v) { return v ? QLatin1String("true") : QLatin1String("false"); };
- QString newLine = QString::fromLatin1("\n") + QString::fromLatin1(" ").repeated(baseIndent);
- res += QLatin1Char('{');
- res += newLine;
- res += QLatin1String("className:");
- res += className();
- res += newLine;
- res += QLatin1String("superClassName:");
- res += superclassName();
- res += newLine;
- res += QLatin1String("isSingleton:");
- res += boolStr(isSingleton());
- res += newLine;
- res += QLatin1String("isCreatable:");
- res += boolStr(isCreatable());
- res += newLine;
- res += QLatin1String("isComposite:");
- res += boolStr(isComposite());
- res += newLine;
- res += QLatin1String("defaultPropertyName:");
- res += defaultPropertyName();
- res += newLine;
- res += QLatin1String("attachedTypeName:");
- res += attachedTypeName();
- res += newLine;
- res += QLatin1String("fingerprint:");
- res += QString::fromUtf8(fingerprint());
-
- res += newLine;
- res += QLatin1String("exports:[");
- foreach (const Export &e, exports()) {
- res += newLine;
- res += QLatin1String(" ");
- res += e.describe(baseIndent + 2);
- }
- res += QLatin1Char(']');
-
- res += newLine;
- res += QLatin1String("enums:[");
- for (int iEnum = 0; iEnum < enumeratorCount() ; ++ iEnum) {
- FakeMetaEnum e = enumerator(enumeratorOffset() + iEnum);
- res += newLine;
- res += QLatin1String(" ");
- res += e.describe(baseIndent + 2);
- }
- res += QLatin1Char(']');
-
- res += newLine;
- res += QLatin1String("properties:[");
- for (int iProp = 0; iProp < propertyCount() ; ++ iProp) {
- FakeMetaProperty prop = property(propertyOffset() + iProp);
- res += newLine;
- res += QLatin1String(" ");
- res += prop.describe(baseIndent + 2);
- }
- res += QLatin1Char(']');
- res += QLatin1String("methods:[");
- for (int iMethod = 0; iMethod < methodOffset() ; ++ iMethod) {
- FakeMetaMethod m = method(methodOffset() + iMethod);
- res += newLine;
- res += QLatin1String(" ");
- m.describe(baseIndent + 2);
- }
- res += QLatin1Char(']');
- res += newLine;
- res += QLatin1Char('}');
- return res;
-}
-
-FakeMetaObject::Export::Export()
- : metaObjectRevision(0)
-{}
-bool FakeMetaObject::Export::isValid() const
-{ return version.isValid() || !package.isEmpty() || !type.isEmpty(); }
-
-void FakeMetaObject::Export::addToHash(QCryptographicHash &hash) const
-{
- int len = package.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- hash.addData(reinterpret_cast<const char *>(package.constData()), len * sizeof(QChar));
- len = type.size();
- hash.addData(reinterpret_cast<const char *>(&len), sizeof(len));
- hash.addData(reinterpret_cast<const char *>(type.constData()), len * sizeof(QChar));
- version.addToHash(hash);
- hash.addData(reinterpret_cast<const char *>(&metaObjectRevision), sizeof(metaObjectRevision));
-}
-
-QString FakeMetaObject::Export::describe(int baseIndent) const
-{
- QString newLine = QString::fromLatin1("\n") + QString::fromLatin1(" ").repeated(baseIndent);
- QString res = QLatin1String("Export {");
- res += newLine;
- res += QLatin1String(" package:");
- res += package;
- res += newLine;
- res += QLatin1String(" type:");
- res += type;
- res += newLine;
- res += QLatin1String(" version:");
- res += version.toString();
- res += newLine;
- res += QLatin1String(" metaObjectRevision:");
- res += QString::number(metaObjectRevision);
- res += newLine;
- res += QLatin1String(" isValid:");
- res += QString::number(isValid());
- res += newLine;
- res += QLatin1Char('}');
- return res;
-}
-
-QString FakeMetaObject::Export::toString() const
-{
- return describe();
-}
diff --git a/tools/qmllint/fakemetaobject.h b/tools/qmllint/fakemetaobject.h
deleted file mode 100644
index ae76596343..0000000000
--- a/tools/qmllint/fakemetaobject.h
+++ /dev/null
@@ -1,235 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2019 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef FAKEMETAOBJECT_H
-#define FAKEMETAOBJECT_H
-
-#include <QString>
-#include <QStringList>
-#include <QList>
-#include <QHash>
-#include <QSharedPointer>
-
-#include "componentversion.h"
-
-QT_BEGIN_NAMESPACE
-class QCryptographicHash;
-QT_END_NAMESPACE
-
-namespace LanguageUtils {
-
-class FakeMetaEnum {
- QString m_name;
- QStringList m_keys;
-
-public:
- FakeMetaEnum();
- explicit FakeMetaEnum(const QString &name);
-
- bool isValid() const;
-
- QString name() const;
- void setName(const QString &name);
-
- void addKey(const QString &key);
- QString key(int index) const;
- int keyCount() const;
- QStringList keys() const;
- bool hasKey(const QString &key) const;
- void addToHash(QCryptographicHash &hash) const;
-
- QString describe(int baseIndent = 0) const;
- QString toString() const;
-};
-
-class FakeMetaMethod {
-public:
- enum {
- Signal,
- Slot,
- Method
- };
-
- enum {
- Private,
- Protected,
- Public
- };
-
-public:
- FakeMetaMethod();
- explicit FakeMetaMethod(const QString &name, const QString &returnType = QString());
-
- QString methodName() const;
- void setMethodName(const QString &name);
-
- void setReturnType(const QString &type);
-
- QStringList parameterNames() const;
- QStringList parameterTypes() const;
- void addParameter(const QString &name, const QString &type);
-
- int methodType() const;
- void setMethodType(int methodType);
-
- int access() const;
-
- int revision() const;
- void setRevision(int r);
- void addToHash(QCryptographicHash &hash) const;
-
- QString describe(int baseIndent = 0) const;
- QString toString() const;
-private:
- QString m_name;
- QString m_returnType;
- QStringList m_paramNames;
- QStringList m_paramTypes;
- int m_methodTy;
- int m_methodAccess;
- int m_revision;
-};
-
-class FakeMetaProperty {
- QString m_propertyName;
- QString m_type;
- bool m_isList;
- bool m_isWritable;
- bool m_isPointer;
- int m_revision;
-
-public:
- FakeMetaProperty(const QString &name, const QString &type, bool isList, bool isWritable, bool isPointer, int revision);
-
- QString name() const;
- QString typeName() const;
-
- bool isList() const;
- bool isWritable() const;
- bool isPointer() const;
- int revision() const;
- void addToHash(QCryptographicHash &hash) const;
-
- QString describe(int baseIndent = 0) const;
- QString toString() const;
-};
-
-class FakeMetaObject {
- Q_DISABLE_COPY(FakeMetaObject);
-
-public:
- typedef QSharedPointer<FakeMetaObject> Ptr;
- typedef QSharedPointer<const FakeMetaObject> ConstPtr;
-
- class Export {
- public:
- Export();
-
- QString package;
- QString type;
- ComponentVersion version;
- int metaObjectRevision;
-
- bool isValid() const;
- void addToHash(QCryptographicHash &hash) const;
-
- QString describe(int baseIndent = 0) const;
- QString toString() const;
- };
-
-private:
- QString m_className;
- QList<Export> m_exports;
- QString m_superName;
- QList<FakeMetaEnum> m_enums;
- QHash<QString, int> m_enumNameToIndex;
- QList<FakeMetaProperty> m_props;
- QHash<QString, int> m_propNameToIdx;
- QList<FakeMetaMethod> m_methods;
- QString m_defaultPropertyName;
- QString m_attachedTypeName;
- QByteArray m_fingerprint;
- bool m_isSingleton;
- bool m_isCreatable;
- bool m_isComposite;
-
-public:
- FakeMetaObject();
-
- QString className() const;
- void setClassName(const QString &name);
-
- void addExport(const QString &name, const QString &package, ComponentVersion version);
- void setExportMetaObjectRevision(int exportIndex, int metaObjectRevision);
- QList<Export> exports() const;
- Export exportInPackage(const QString &package) const;
-
- void setSuperclassName(const QString &superclass);
- QString superclassName() const;
-
- void addEnum(const FakeMetaEnum &fakeEnum);
- int enumeratorCount() const;
- int enumeratorOffset() const;
- FakeMetaEnum enumerator(int index) const;
- int enumeratorIndex(const QString &name) const;
-
- void addProperty(const FakeMetaProperty &property);
- int propertyCount() const;
- int propertyOffset() const;
- FakeMetaProperty property(int index) const;
- int propertyIndex(const QString &name) const;
-
- void addMethod(const FakeMetaMethod &method);
- int methodCount() const;
- int methodOffset() const;
- FakeMetaMethod method(int index) const;
- int methodIndex(const QString &name) const; // Note: Returns any method with that name in case of overloads
-
- QString defaultPropertyName() const;
- void setDefaultPropertyName(const QString &defaultPropertyName);
-
- QString attachedTypeName() const;
- void setAttachedTypeName(const QString &name);
- QByteArray calculateFingerprint() const;
- void updateFingerprint();
- QByteArray fingerprint() const;
-
- bool isSingleton() const;
- bool isCreatable() const;
- bool isComposite() const;
- void setIsSingleton(bool value);
- void setIsCreatable(bool value);
- void setIsComposite(bool value);
-
- QString describe(bool printDetails = true, int baseIndent = 0) const;
- QString toString() const;
-};
-
-} // namespace LanguageUtils
-
-#endif // FAKEMETAOBJECT_H
diff --git a/tools/qmllint/findunqualified.cpp b/tools/qmllint/findunqualified.cpp
index d72f02b94a..807110c3c1 100644
--- a/tools/qmllint/findunqualified.cpp
+++ b/tools/qmllint/findunqualified.cpp
@@ -27,19 +27,24 @@
****************************************************************************/
#include "findunqualified.h"
+#include "importedmembersvisitor.h"
#include "scopetree.h"
+#include "typedescriptionreader.h"
-#include "qmljstypedescriptionreader.h"
+#include <QtQml/private/qqmljsast_p.h>
+#include <QtQml/private/qqmljslexer_p.h>
+#include <QtQml/private/qqmljsparser_p.h>
+#include <QtQml/private/qv4codegen_p.h>
+#include <QtQml/private/qqmldirparser_p.h>
-#include <QFile>
-#include <QDirIterator>
-#include <QScopedValueRollback>
+#include <QtCore/qfile.h>
+#include <QtCore/qdiriterator.h>
+#include <QtCore/qscopedvaluerollback.h>
-#include <private/qqmljsast_p.h>
-#include <private/qqmljslexer_p.h>
-#include <private/qqmljsparser_p.h>
-#include <private/qv4codegen_p.h>
-#include <private/qqmldirparser_p.h>
+static const QString prefixedName(const QString &prefix, const QString &name)
+{
+ return prefix.isEmpty() ? name : (prefix + QLatin1Char('.') + name);
+}
static QQmlDirParser createQmldirParserForFile(const QString &filename)
{
@@ -50,17 +55,17 @@ static QQmlDirParser createQmldirParserForFile(const QString &filename)
return parser;
}
-static QQmlJS::TypeDescriptionReader createQmltypesReaderForFile(QString const &filename)
+static TypeDescriptionReader createQmltypesReaderForFile(const QString &filename)
{
QFile f(filename);
f.open(QFile::ReadOnly);
- QQmlJS::TypeDescriptionReader reader { filename, f.readAll() };
+ TypeDescriptionReader reader { filename, f.readAll() };
return reader;
}
-void FindUnqualifiedIDVisitor::enterEnvironment(ScopeType type, QString name)
+void FindUnqualifiedIDVisitor::enterEnvironment(ScopeType type, const QString &name)
{
- m_currentScope = m_currentScope->createNewChildScope(type, name);
+ m_currentScope = m_currentScope->createNewChildScope(type, name).get();
}
void FindUnqualifiedIDVisitor::leaveEnvironment()
@@ -68,9 +73,53 @@ void FindUnqualifiedIDVisitor::leaveEnvironment()
m_currentScope = m_currentScope->parentScope();
}
+void FindUnqualifiedIDVisitor::parseHeaders(QQmlJS::AST::UiHeaderItemList *header)
+{
+ using namespace QQmlJS::AST;
+
+ while (header) {
+ if (auto import = cast<UiImport *>(header->headerItem)) {
+ if (import->version) {
+ QString path;
+ auto uri = import->importUri;
+ while (uri) {
+ path.append(uri->name);
+ path.append("/");
+ uri = uri->next;
+ }
+ path.chop(1);
+ QString prefix = QLatin1String("");
+ if (import->asToken.isValid()) {
+ prefix += import->importId + QLatin1Char('.');
+ }
+ importHelper(path, prefix, import->version->majorVersion,
+ import->version->minorVersion);
+ }
+ }
+ header = header->next;
+ }
+}
+
+ScopeTree *FindUnqualifiedIDVisitor::parseProgram(QQmlJS::AST::Program *program,
+ const QString &name)
+{
+ using namespace QQmlJS::AST;
+ ScopeTree *result = new ScopeTree(ScopeType::JSLexicalScope, name);
+ for (auto *statement = program->statements; statement; statement = statement->next) {
+ if (auto *function = cast<FunctionDeclaration *>(statement->statement)) {
+ MetaMethod method(function->name.toString());
+ method.setMethodType(MetaMethod::Method);
+ for (auto *parameters = function->formals; parameters; parameters = parameters->next)
+ method.addParameter(parameters->element->bindingIdentifier.toString(), "");
+ result->addMethod(method);
+ }
+ }
+ return result;
+}
+
enum ImportVersion { FullyVersioned, PartiallyVersioned, Unversioned, BasePath };
-QStringList completeImportPaths(const QString &uri, const QStringList &basePaths, int vmaj, int vmin)
+QStringList completeImportPaths(const QString &uri, const QString &basePath, int vmaj, int vmin)
{
static const QLatin1Char Slash('/');
static const QLatin1Char Backslash('\\');
@@ -79,21 +128,22 @@ QStringList completeImportPaths(const QString &uri, const QStringList &basePaths
QStringList qmlDirPathsPaths;
// fully & partially versioned parts + 1 unversioned for each base path
- qmlDirPathsPaths.reserve(basePaths.count() * (2 * parts.count() + 1));
+ qmlDirPathsPaths.reserve(2 * parts.count() + 1);
auto versionString = [](int vmaj, int vmin, ImportVersion version)
{
if (version == FullyVersioned) {
// extension with fully encoded version number (eg. MyModule.3.2)
- return QString::asprintf(".%d.%d", vmaj, vmin);
- } else if (version == PartiallyVersioned) {
+ return QString::fromLatin1(".%1.%2").arg(vmaj).arg(vmin);
+ }
+ if (version == PartiallyVersioned) {
// extension with encoded version major (eg. MyModule.3)
- return QString::asprintf(".%d", vmaj);
- } // else extension without version number (eg. MyModule)
+ return QString::fromLatin1(".%1").arg(vmaj);
+ }
+ // else extension without version number (eg. MyModule)
return QString();
};
- auto joinStringRefs = [](const QVector<QStringRef> &refs, const QChar &sep)
- {
+ auto joinStringRefs = [](const QVector<QStringRef> &refs, const QChar &sep) {
QString str;
for (auto it = refs.cbegin(); it != refs.cend(); ++it) {
if (it != refs.cbegin())
@@ -103,292 +153,242 @@ QStringList completeImportPaths(const QString &uri, const QStringList &basePaths
return str;
};
- for (int version = FullyVersioned; version <= BasePath; ++version) {
+ const ImportVersion initial = (vmin >= 0)
+ ? FullyVersioned
+ : (vmaj >= 0 ? PartiallyVersioned : Unversioned);
+ for (int version = initial; version <= BasePath; ++version) {
const QString ver = versionString(vmaj, vmin, static_cast<ImportVersion>(version));
- for (const QString &path : basePaths) {
- QString dir = path;
- if (!dir.endsWith(Slash) && !dir.endsWith(Backslash))
- dir += Slash;
+ QString dir = basePath;
+ if (!dir.endsWith(Slash) && !dir.endsWith(Backslash))
+ dir += Slash;
- if (version == BasePath) {
- qmlDirPathsPaths += dir;
- } else {
- // append to the end
- qmlDirPathsPaths += dir + joinStringRefs(parts, Slash) + ver;
- }
+ if (version == BasePath) {
+ qmlDirPathsPaths += dir;
+ } else {
+ // append to the end
+ qmlDirPathsPaths += dir + joinStringRefs(parts, Slash) + ver;
+ }
- if (version < Unversioned) {
- // insert in the middle
- for (int index = parts.count() - 2; index >= 0; --index) {
- qmlDirPathsPaths += dir + joinStringRefs(parts.mid(0, index + 1), Slash)
- + ver + Slash
- + joinStringRefs(parts.mid(index + 1), Slash);
- }
+ if (version < Unversioned) {
+ // insert in the middle
+ for (int index = parts.count() - 2; index >= 0; --index) {
+ qmlDirPathsPaths += dir + joinStringRefs(parts.mid(0, index + 1), Slash)
+ + ver + Slash
+ + joinStringRefs(parts.mid(index + 1), Slash);
}
}
}
return qmlDirPathsPaths;
}
-void FindUnqualifiedIDVisitor::importHelper(QString id, QString prefix, int major, int minor)
-{
- QPair<QString, QString> importId { id, prefix };
- if (m_alreadySeenImports.contains(importId)) {
- return;
- } else {
- m_alreadySeenImports.insert(importId);
- }
- id = id.replace(QLatin1String("/"), QLatin1String("."));
- auto qmltypesPaths = completeImportPaths(id, m_qmltypeDirs, major, minor);
+static const QLatin1String SlashQmldir = QLatin1String("/qmldir");
+static const QLatin1String SlashAppDotQmltypes = QLatin1String("/app.qmltypes");
+static const QLatin1String SlashLibDotQmltypes = QLatin1String("/lib.qmltypes");
+static const QLatin1String SlashPluginsDotQmltypes = QLatin1String("/plugins.qmltypes");
- QHash<QString, LanguageUtils::FakeMetaObject::ConstPtr> objects;
- QList<QQmlJS::ModuleApiInfo> moduleApis;
- QStringList dependencies;
- static const QLatin1String SlashPluginsDotQmltypes("/plugins.qmltypes");
- static const QLatin1String SlashQmldir("/qmldir");
- for (auto const &qmltypesPath : qmltypesPaths) {
- if (QFile::exists(qmltypesPath + SlashQmldir)) {
- auto reader = createQmldirParserForFile(qmltypesPath + SlashQmldir);
- const auto imports = reader.imports();
- for (const QString &import : imports)
- importHelper(import, prefix, major, minor);
-
- QHash<QString, LanguageUtils::FakeMetaObject *> qmlComponents;
- const auto components = reader.components();
- for (auto it = components.begin(), end = components.end(); it != end; ++it) {
- const QString filePath = qmltypesPath + QLatin1Char('/') + it->fileName;
- if (!QFile::exists(filePath)) {
- m_colorOut.write(QLatin1String("warning: "), Warning);
- m_colorOut.write(it->fileName + QLatin1String(" is listed as component in ")
- + qmltypesPath + SlashQmldir
- + QLatin1String(" but does not exist.\n"));
- continue;
- }
+void FindUnqualifiedIDVisitor::readQmltypes(const QString &filename,
+ FindUnqualifiedIDVisitor::Import &result)
+{
+ auto reader = createQmltypesReaderForFile(filename);
+ auto succ = reader(&result.objects, &result.moduleApis, &result.dependencies);
+ if (!succ)
+ m_colorOut.writeUncolored(reader.errorMessage());
+}
- auto mo = qmlComponents.find(it.key());
- if (mo == qmlComponents.end())
- mo = qmlComponents.insert(it.key(), localQmlFile2FakeMetaObject(filePath));
+FindUnqualifiedIDVisitor::Import FindUnqualifiedIDVisitor::readQmldir(const QString &path)
+{
+ Import result;
+ auto reader = createQmldirParserForFile(path + SlashQmldir);
+ const auto imports = reader.imports();
+ for (const QString &import : imports)
+ result.dependencies.append(import);
- (*mo)->addExport(
- it.key(), reader.typeNamespace(),
- LanguageUtils::ComponentVersion(it->majorVersion, it->minorVersion));
- }
- for (auto it = qmlComponents.begin(), end = qmlComponents.end(); it != end; ++it) {
- objects.insert(it.key(),
- QSharedPointer<const LanguageUtils::FakeMetaObject>(it.value()));
- }
- }
- if (QFile::exists(qmltypesPath + SlashPluginsDotQmltypes)) {
- auto reader = createQmltypesReaderForFile(qmltypesPath + SlashPluginsDotQmltypes);
- auto succ = reader(&objects, &moduleApis, &dependencies);
- if (!succ)
- m_colorOut.writeUncolored(reader.errorMessage());
+ QHash<QString, ScopeTree *> qmlComponents;
+ const auto components = reader.components();
+ for (auto it = components.begin(), end = components.end(); it != end; ++it) {
+ const QString filePath = path + QLatin1Char('/') + it->fileName;
+ if (!QFile::exists(filePath)) {
+ m_colorOut.write(QLatin1String("warning: "), Warning);
+ m_colorOut.write(it->fileName + QLatin1String(" is listed as component in ")
+ + path + SlashQmldir
+ + QLatin1String(" but does not exist.\n"));
+ continue;
}
+
+ auto mo = qmlComponents.find(it.key());
+ if (mo == qmlComponents.end())
+ mo = qmlComponents.insert(it.key(), localFile2ScopeTree(filePath));
+
+ (*mo)->addExport(
+ it.key(), reader.typeNamespace(),
+ ComponentVersion(it->majorVersion, it->minorVersion));
}
- for (auto const &dependency : qAsConst(dependencies)) {
+ for (auto it = qmlComponents.begin(), end = qmlComponents.end(); it != end; ++it)
+ result.objects.insert( it.key(), ScopeTree::ConstPtr(it.value()));
+
+ if (!reader.plugins().isEmpty() && QFile::exists(path + SlashPluginsDotQmltypes))
+ readQmltypes(path + SlashPluginsDotQmltypes, result);
+
+ return result;
+}
+
+void FindUnqualifiedIDVisitor::processImport(const QString &prefix, const FindUnqualifiedIDVisitor::Import &import)
+{
+ for (auto const &dependency : qAsConst(import.dependencies)) {
auto const split = dependency.split(" ");
- auto const id = split.at(0);
- auto const major = split.at(1).split('.').at(0).toInt();
- auto const minor = split.at(1).split('.').at(1).toInt();
- importHelper(id, QString(), major, minor);
+ auto const &id = split.at(0);
+ if (split.length() > 1) {
+ const auto version = split.at(1).split('.');
+ importHelper(id, QString(),
+ version.at(0).toInt(),
+ version.length() > 1 ? version.at(1).toInt() : -1);
+ } else {
+ importHelper(id, QString(), -1, -1);
+ }
+
+
}
+
// add objects
- for (auto ob_it = objects.begin(); ob_it != objects.end(); ++ob_it) {
- auto val = ob_it.value();
- m_exportedName2MetaObject[prefix + val->className()] = val;
- for (auto export_ : val->exports()) {
- m_exportedName2MetaObject[prefix + export_.type] = val;
- }
- for (auto enumCount = 0; enumCount < val->enumeratorCount(); ++enumCount) {
- m_currentScope->insertQMLIdentifier(val->enumerator(enumCount).name());
+ for (auto it = import.objects.begin(); it != import.objects.end(); ++it) {
+ const auto &val = it.value();
+ m_types[it.key()] = val;
+ m_exportedName2Scope.insert(prefixedName(prefix, val->className()), val);
+
+ const auto exports = val->exports();
+ for (const auto &valExport : exports)
+ m_exportedName2Scope.insert(prefixedName(prefix, valExport.type()), val);
+
+ const auto enums = val->enums();
+ for (const auto &valEnum : enums)
+ m_currentScope->addEnum(valEnum);
+ }
+}
+
+void FindUnqualifiedIDVisitor::importHelper(const QString &module, const QString &prefix,
+ int major, int minor)
+{
+ const QString id = QString(module).replace(QLatin1Char('/'), QLatin1Char('.'));
+ QPair<QString, QString> importId { id, prefix };
+ if (m_alreadySeenImports.contains(importId))
+ return;
+ m_alreadySeenImports.insert(importId);
+
+ for (const QString &qmltypeDir : m_qmltypeDirs) {
+ auto qmltypesPaths = completeImportPaths(id, qmltypeDir, major, minor);
+
+ for (auto const &qmltypesPath : qmltypesPaths) {
+ if (QFile::exists(qmltypesPath + SlashQmldir)) {
+ processImport(prefix, readQmldir(qmltypesPath));
+
+ // break so that we don't import unversioned qml components
+ // in addition to versioned ones
+ break;
+ }
+
+ Import result;
+ if (QFile::exists(qmltypesPath + SlashAppDotQmltypes))
+ readQmltypes(qmltypesPath + SlashAppDotQmltypes, result);
+ else if (QFile::exists(qmltypesPath + SlashLibDotQmltypes))
+ readQmltypes(qmltypesPath + SlashLibDotQmltypes, result);
+ else
+ continue;
+ processImport(prefix, result);
}
}
}
-LanguageUtils::FakeMetaObject *
-FindUnqualifiedIDVisitor::localQmlFile2FakeMetaObject(QString filePath)
+ScopeTree *FindUnqualifiedIDVisitor::localFile2ScopeTree(const QString &filePath)
{
using namespace QQmlJS::AST;
- auto fake = new LanguageUtils::FakeMetaObject;
- QString baseName = QFileInfo { filePath }.baseName();
- fake->setClassName(baseName.endsWith(".ui") ? baseName.chopped(3) : baseName);
+ const QFileInfo info { filePath };
+ QString baseName = info.baseName();
+ const QString scopeName = baseName.endsWith(".ui") ? baseName.chopped(3) : baseName;
+
+ QQmlJS::Engine engine;
+ QQmlJS::Lexer lexer(&engine);
+
+ const QString lowerSuffix = info.suffix().toLower();
+ const bool isESModule = lowerSuffix == QLatin1String("mjs");
+ const bool isJavaScript = isESModule || lowerSuffix == QLatin1String("js");
+
QFile file(filePath);
if (!file.open(QFile::ReadOnly)) {
- return fake;
+ return new ScopeTree(isJavaScript ? ScopeType::JSLexicalScope : ScopeType::QMLScope,
+ scopeName);
}
+
QString code = file.readAll();
file.close();
- QQmlJS::Engine engine;
- QQmlJS::Lexer lexer(&engine);
-
- lexer.setCode(code, 1, true);
+ lexer.setCode(code, /*line = */ 1, /*qmlMode=*/ !isJavaScript);
QQmlJS::Parser parser(&engine);
- if (!parser.parse()) {
- return fake;
- }
- QQmlJS::AST::UiProgram *program = parser.ast();
- auto header = program->headers;
- while (header) {
- if (auto import = cast<UiImport *>(header->headerItem)) {
- if (import->version) {
- QString path;
- auto uri = import->importUri;
- while (uri) {
- path.append(uri->name);
- path.append("/");
- uri = uri->next;
- }
- path.chop(1);
- QString prefix = QLatin1String("");
- if (import->asToken.isValid()) {
- prefix += import->importId + QLatin1Char('.');
- }
- importHelper(path, prefix, import->version->majorVersion, import->version->minorVersion);
- }
- }
- header = header->next;
- }
- auto member = program->members;
- // member should be the sole element
- Q_ASSERT(!member->next);
- Q_ASSERT(member && member->member->kind == UiObjectMember::Kind_UiObjectDefinition);
- auto definition = static_cast<UiObjectDefinition *>(member->member);
- auto qualifiedId = definition->qualifiedTypeNameId;
- while (qualifiedId && qualifiedId->next) {
- qualifiedId = qualifiedId->next;
+
+ const bool success = isJavaScript ? (isESModule ? parser.parseModule()
+ : parser.parseProgram())
+ : parser.parse();
+ if (!success) {
+ return new ScopeTree(isJavaScript ? ScopeType::JSLexicalScope : ScopeType::QMLScope,
+ scopeName);
}
- fake->setSuperclassName(qualifiedId->name.toString());
- UiObjectMemberList *initMembers = definition->initializer->members;
- while (initMembers) {
- switch (initMembers->member->kind) {
- case UiObjectMember::Kind_UiArrayBinding: {
- // nothing to do
- break;
- }
- case UiObjectMember::Kind_UiEnumDeclaration: {
- // nothing to do
- break;
- }
- case UiObjectMember::Kind_UiObjectBinding: {
- // nothing to do
- break;
- }
- case UiObjectMember::Kind_UiObjectDefinition: {
- // creates nothing accessible
- break;
- }
- case UiObjectMember::Kind_UiPublicMember: {
- auto publicMember = static_cast<UiPublicMember *>(initMembers->member);
- switch (publicMember->type) {
- case UiPublicMember::Signal: {
- UiParameterList *param = publicMember->parameters;
- LanguageUtils::FakeMetaMethod method;
- method.setMethodType(LanguageUtils::FakeMetaMethod::Signal);
- method.setMethodName(publicMember->name.toString());
- while (param) {
- method.addParameter(param->name.toString(), param->type->name.toString());
- param = param->next;
- }
- fake->addMethod(method);
- break;
- }
- case UiPublicMember::Property: {
- LanguageUtils::FakeMetaProperty fakeprop { publicMember->name.toString(),
- publicMember->typeModifier.toString(),
- false,
- false,
- false,
- 0 };
- fake->addProperty(fakeprop);
- break;
- }
- }
- break;
- }
- case UiObjectMember::Kind_UiScriptBinding: {
- // does not create anything new, ignore
- break;
- }
- case UiObjectMember::Kind_UiSourceElement: {
- auto sourceElement = static_cast<UiSourceElement *>(initMembers->member);
- if (FunctionExpression *fexpr = sourceElement->sourceElement->asFunctionDefinition()) {
- LanguageUtils::FakeMetaMethod method;
- method.setMethodName(fexpr->name.toString());
- method.setMethodType(LanguageUtils::FakeMetaMethod::Method);
- FormalParameterList *parameters = fexpr->formals;
- while (parameters) {
- method.addParameter(parameters->element->bindingIdentifier.toString(),
- "");
- parameters = parameters->next;
- }
- fake->addMethod(method);
- } else if (ClassExpression *clexpr =
- sourceElement->sourceElement->asClassDefinition()) {
- LanguageUtils::FakeMetaProperty prop {
- clexpr->name.toString(), "", false, false, false, 1
- };
- fake->addProperty(prop);
- } else if (cast<VariableStatement *>(sourceElement->sourceElement)) {
- // nothing to do
- } else {
- const auto loc = sourceElement->firstSourceLocation();
- m_colorOut.writeUncolored(
- "unsupportedd sourceElement at "
- + QString::fromLatin1("%1:%2: ").arg(loc.startLine).arg(loc.startColumn)
- + QString::number(sourceElement->sourceElement->kind));
- }
- break;
- }
- default: {
- m_colorOut.writeUncolored("unsupported element of kind "
- + QString::number(initMembers->member->kind));
- }
- }
- initMembers = initMembers->next;
+
+ if (!isJavaScript) {
+ QQmlJS::AST::UiProgram *program = parser.ast();
+ parseHeaders(program->headers);
+ ImportedMembersVisitor membersVisitor(&m_colorOut);
+ program->members->accept(&membersVisitor);
+ return membersVisitor.result(scopeName);
}
- return fake;
+
+ // TODO: Anything special to do with ES modules here?
+ return parseProgram(QQmlJS::AST::cast<QQmlJS::AST::Program *>(parser.rootNode()), scopeName);
}
-void FindUnqualifiedIDVisitor::importDirectory(const QString &directory, const QString &prefix)
+void FindUnqualifiedIDVisitor::importFileOrDirectory(const QString &fileOrDirectory,
+ const QString &prefix)
{
- QString dirname = directory;
- QFileInfo info { dirname };
- if (info.isRelative())
- dirname = QDir(QFileInfo { m_filePath }.path()).filePath(dirname);
+ QString name = fileOrDirectory;
+
+ if (QFileInfo(name).isRelative())
+ name = QDir(QFileInfo { m_filePath }.path()).filePath(name);
+
+ if (QFileInfo(name).isFile()) {
+ m_exportedName2Scope.insert(prefix, ScopeTree::ConstPtr(localFile2ScopeTree(name)));
+ return;
+ }
- QDirIterator it { dirname, QStringList() << QLatin1String("*.qml"), QDir::NoFilter };
+ QDirIterator it { name, QStringList() << QLatin1String("*.qml"), QDir::NoFilter };
while (it.hasNext()) {
- LanguageUtils::FakeMetaObject *fake = localQmlFile2FakeMetaObject(it.next());
- m_exportedName2MetaObject.insert(
- prefix + fake->className(),
- QSharedPointer<const LanguageUtils::FakeMetaObject>(fake));
+ ScopeTree::ConstPtr scope(localFile2ScopeTree(it.next()));
+ if (!scope->className().isEmpty())
+ m_exportedName2Scope.insert(prefixedName(prefix, scope->className()), scope);
}
}
-void FindUnqualifiedIDVisitor::importExportedNames(QStringRef prefix, QString name)
+void FindUnqualifiedIDVisitor::importExportedNames(const QStringRef &prefix, QString name)
{
for (;;) {
- auto metaObject = m_exportedName2MetaObject[m_exportedName2MetaObject.contains(name)
- ? name
- : prefix + QLatin1Char('.') + name];
- if (metaObject) {
- auto propertyCount = metaObject->propertyCount();
- for (auto i = 0; i < propertyCount; ++i) {
- m_currentScope->insertPropertyIdentifier(metaObject->property(i).name());
+ ScopeTree::ConstPtr scope = m_exportedName2Scope.value(m_exportedName2Scope.contains(name)
+ ? name
+ : prefix + QLatin1Char('.') + name);
+ if (scope) {
+ const auto properties = scope->properties();
+ for (auto property : properties) {
+ property.setType(m_exportedName2Scope.value(property.typeName()).get());
+ m_currentScope->insertPropertyIdentifier(property);
}
- m_currentScope->addMethodsFromMetaObject(metaObject);
-
- name = metaObject->superclassName();
- if (name.isEmpty() || name == QLatin1String("QObject")) {
+ m_currentScope->addMethods(scope->methods());
+ name = scope->superclassName();
+ if (name.isEmpty() || name == QLatin1String("QObject"))
break;
- }
} else {
m_colorOut.write(QLatin1String("warning: "), Warning);
- m_colorOut.write(name + QLatin1String(" was not found. Did you add all import paths?\n"));
+ m_colorOut.write(name + QLatin1String(" was not found."
+ " Did you add all import paths?\n"));
m_unknownImports.insert(name);
+ m_visitFailed = true;
break;
}
}
@@ -404,8 +404,8 @@ void FindUnqualifiedIDVisitor::throwRecursionDepthError()
bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::UiProgram *)
{
enterEnvironment(ScopeType::QMLScope, "program");
- QHash<QString, LanguageUtils::FakeMetaObject::ConstPtr> objects;
- QList<QQmlJS::ModuleApiInfo> moduleApis;
+ QHash<QString, ScopeTree::ConstPtr> objects;
+ QList<ModuleApiInfo> moduleApis;
QStringList dependencies;
for (auto const &dir : m_qmltypeDirs) {
QDirIterator it { dir, QStringList() << QLatin1String("builtins.qmltypes"), QDir::NoFilter,
@@ -418,29 +418,23 @@ bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::UiProgram *)
}
}
// add builtins
- for (auto ob_it = objects.begin(); ob_it != objects.end(); ++ob_it) {
- auto val = ob_it.value();
- for (auto export_ : val->exports()) {
- m_exportedName2MetaObject[export_.type] = val;
- }
- for (auto enumCount = 0; enumCount < val->enumeratorCount(); ++enumCount) {
- m_currentScope->insertQMLIdentifier(val->enumerator(enumCount).name());
- }
- }
- // add "self" (as we only ever check the first part of a qualified identifier, we get away with
- // using an empty FakeMetaObject
- m_exportedName2MetaObject[QFileInfo { m_filePath }.baseName()] = {};
+ for (auto objectIt = objects.begin(); objectIt != objects.end(); ++objectIt) {
+ auto val = objectIt.value();
+ m_types[objectIt.key()] = val;
- // add QML builtins
- m_exportedName2MetaObject["QtObject"] = {}; // QtObject contains nothing of interest
+ const auto exports = val->exports();
+ for (const auto &valExport : exports)
+ m_exportedName2Scope.insert(valExport.type(), val);
- LanguageUtils::FakeMetaObject *meta = new LanguageUtils::FakeMetaObject{};
- meta->addProperty(LanguageUtils::FakeMetaProperty {"enabled", "bool", false, false, false, 0});
- meta->addProperty(LanguageUtils::FakeMetaProperty {"ignoreUnknownSignals", "bool", false, false, false, 0});
- meta->addProperty(LanguageUtils::FakeMetaProperty {"target", "QObject", false, false, false, 0});
- m_exportedName2MetaObject["Connections"] = LanguageUtils::FakeMetaObject::ConstPtr { meta };
+ const auto enums = val->enums();
+ for (const auto &valEnum : enums)
+ m_currentScope->addEnum(valEnum);
+ }
+ // add "self" (as we only ever check the first part of a qualified identifier, we get away with
+ // using an empty ScopeTree
+ m_exportedName2Scope.insert(QFileInfo { m_filePath }.baseName(), {});
- importDirectory(".", QString());
+ importFileOrDirectory(".", QString());
return true;
}
@@ -518,7 +512,8 @@ void FindUnqualifiedIDVisitor::endVisit(QQmlJS::AST::CaseBlock *)
bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::Catch *catchStatement)
{
enterEnvironment(ScopeType::JSLexicalScope, "catch");
- m_currentScope->insertJSIdentifier(catchStatement->patternElement->bindingIdentifier.toString(), QQmlJS::AST::VariableScope::Let);
+ m_currentScope->insertJSIdentifier(catchStatement->patternElement->bindingIdentifier.toString(),
+ QQmlJS::AST::VariableScope::Let);
return true;
}
@@ -529,8 +524,13 @@ void FindUnqualifiedIDVisitor::endVisit(QQmlJS::AST::Catch *)
bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::WithStatement *withStatement)
{
- m_colorOut.write(QString::asprintf("Warning: "), Warning);
- m_colorOut.write(QString::asprintf("%d:%d: with statements are strongly discouraged in QML and might cause false positives when analysing unqalified identifiers\n", withStatement->firstSourceLocation().startLine, withStatement->firstSourceLocation().startColumn), Normal);
+ m_colorOut.write(QString::fromLatin1("Warning: "), Warning);
+ m_colorOut.write(QString::fromLatin1(
+ "%1:%2: with statements are strongly discouraged in QML "
+ "and might cause false positives when analysing unqalified identifiers\n")
+ .arg(withStatement->firstSourceLocation().startLine)
+ .arg(withStatement->firstSourceLocation().startColumn),
+ Normal);
enterEnvironment(ScopeType::JSLexicalScope, "with");
return true;
}
@@ -540,12 +540,12 @@ void FindUnqualifiedIDVisitor::endVisit(QQmlJS::AST::WithStatement *)
leaveEnvironment();
}
-static QString signalName(const QStringRef &handlerName)
+static QString signalName(QStringView handlerName)
{
- if (handlerName.startsWith("on") && handlerName.size() > 2) {
+ if (handlerName.startsWith(u"on") && handlerName.size() > 2) {
QString signal = handlerName.mid(2).toString();
for (int i = 0; i < signal.length(); ++i) {
- QCharRef ch = signal[i];
+ QChar &ch = signal[i];
if (ch.isLower())
return QString();
if (ch.isUpper()) {
@@ -563,13 +563,12 @@ bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::UiScriptBinding *uisb)
auto name = uisb->qualifiedId->name;
if (name == QLatin1String("id")) {
// found id
- auto expstat = static_cast<ExpressionStatement *>(uisb->statement);
- auto identexp = static_cast<IdentifierExpression *>(expstat->expression);
+ auto expstat = cast<ExpressionStatement *>(uisb->statement);
+ auto identexp = cast<IdentifierExpression *>(expstat->expression);
QString elementName = m_currentScope->name();
- m_qmlid2meta.insert(identexp->name.toString(), m_exportedName2MetaObject[elementName]);
- if (m_currentScope->isVisualRootScope()) {
+ m_qmlid2scope.insert(identexp->name.toString(), m_currentScope);
+ if (m_currentScope->isVisualRootScope())
m_rootId = identexp->name.toString();
- }
} else {
const QString signal = signalName(name);
if (signal.isEmpty())
@@ -582,7 +581,7 @@ bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::UiScriptBinding *uisb)
const auto statement = uisb->statement;
if (statement->kind == Node::Kind::Kind_ExpressionStatement) {
- if (static_cast<ExpressionStatement *>(statement)->expression->asFunctionDefinition()) {
+ if (cast<ExpressionStatement *>(statement)->expression->asFunctionDefinition()) {
// functions are already handled
// they do not get names inserted according to the signal, but access their formal
// parameters
@@ -607,37 +606,44 @@ bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::UiPublicMember *uipm)
{
// property bool inactive: !active
// extract name inactive
- m_currentScope->insertPropertyIdentifier(uipm->name.toString());
+ MetaProperty property(
+ uipm->name.toString(),
+ // TODO: signals, complex types etc.
+ uipm->memberType ? uipm->memberType->name.toString() : QString(),
+ uipm->typeModifier == QLatin1String("list"),
+ !uipm->isReadonlyMember,
+ false,
+ uipm->memberType ? (uipm->memberType->name == QLatin1String("alias")) : false,
+ 0);
+ property.setType(m_exportedName2Scope.value(property.typeName()).get());
+ m_currentScope->insertPropertyIdentifier(property);
return true;
}
bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::IdentifierExpression *idexp)
{
auto name = idexp->name;
- if (!m_exportedName2MetaObject.contains(name.toString())) {
- m_currentScope->addIdToAccssedIfNotInParentScopes(
- { name.toString(), idexp->firstSourceLocation() }, m_unknownImports);
- }
+ m_currentScope->addIdToAccessed(name.toString(), idexp->firstSourceLocation());
+ m_fieldMemberBase = idexp;
return true;
}
-FindUnqualifiedIDVisitor::FindUnqualifiedIDVisitor(QStringList const &qmltypeDirs,
- const QString &code, const QString &fileName,
- bool silent)
+FindUnqualifiedIDVisitor::FindUnqualifiedIDVisitor(QStringList qmltypeDirs, QString code,
+ QString fileName, bool silent)
: m_rootScope(new ScopeTree { ScopeType::JSFunctionScope, "global" }),
m_currentScope(m_rootScope.get()),
- m_qmltypeDirs(qmltypeDirs),
- m_code(code),
+ m_qmltypeDirs(std::move(qmltypeDirs)),
+ m_code(std::move(code)),
m_rootId(QLatin1String("<id>")),
- m_filePath(fileName),
+ m_filePath(std::move(fileName)),
m_colorOut(silent)
{
// setup color output
- m_colorOut.insertColorMapping(Error, ColorOutput::RedForeground);
- m_colorOut.insertColorMapping(Warning, ColorOutput::PurpleForeground);
- m_colorOut.insertColorMapping(Info, ColorOutput::BlueForeground);
- m_colorOut.insertColorMapping(Normal, ColorOutput::DefaultColor);
- m_colorOut.insertColorMapping(Hint, ColorOutput::GreenForeground);
+ m_colorOut.insertMapping(Error, ColorOutput::RedForeground);
+ m_colorOut.insertMapping(Warning, ColorOutput::PurpleForeground);
+ m_colorOut.insertMapping(Info, ColorOutput::BlueForeground);
+ m_colorOut.insertMapping(Normal, ColorOutput::DefaultColor);
+ m_colorOut.insertMapping(Hint, ColorOutput::GreenForeground);
QLatin1String jsGlobVars[] = {
/* Not listed on the MDN page; browser and QML extensions: */
// console/debug api
@@ -645,32 +651,36 @@ FindUnqualifiedIDVisitor::FindUnqualifiedIDVisitor(QStringList const &qmltypeDir
// garbage collector
QLatin1String("gc"),
// i18n
- QLatin1String("qsTr"), QLatin1String("qsTrId"), QLatin1String("QT_TR_NOOP"), QLatin1String("QT_TRANSLATE_NOOP"), QLatin1String("QT_TRID_NOOP"),
+ QLatin1String("qsTr"), QLatin1String("qsTrId"), QLatin1String("QT_TR_NOOP"),
+ QLatin1String("QT_TRANSLATE_NOOP"), QLatin1String("QT_TRID_NOOP"),
// XMLHttpRequest
QLatin1String("XMLHttpRequest")
};
- for (const char **globalName = QV4::Compiler::Codegen::s_globalNames; *globalName != nullptr; ++globalName) {
- m_currentScope->insertJSIdentifier(QString::fromLatin1(*globalName), QQmlJS::AST::VariableScope::Const);
+ for (const char **globalName = QV4::Compiler::Codegen::s_globalNames;
+ *globalName != nullptr;
+ ++globalName) {
+ m_currentScope->insertJSIdentifier(QString::fromLatin1(*globalName),
+ QQmlJS::AST::VariableScope::Const);
}
for (const auto& jsGlobVar: jsGlobVars)
m_currentScope->insertJSIdentifier(jsGlobVar, QQmlJS::AST::VariableScope::Const);
}
-FindUnqualifiedIDVisitor::~FindUnqualifiedIDVisitor() = default;
-
bool FindUnqualifiedIDVisitor::check()
{
if (m_visitFailed)
return false;
// now that all ids are known, revisit any Connections whose target were perviously unknown
- for (auto const& outstandingConnection: m_outstandingConnections) {
- auto metaObject = m_qmlid2meta[outstandingConnection.targetName];
- outstandingConnection.scope->addMethodsFromMetaObject(metaObject);
+ for (auto const &outstandingConnection: m_outstandingConnections) {
+ auto targetScope = m_qmlid2scope[outstandingConnection.targetName];
+ if (outstandingConnection.scope)
+ outstandingConnection.scope->addMethods(targetScope->methods());
QScopedValueRollback<ScopeTree*> rollback(m_currentScope, outstandingConnection.scope);
outstandingConnection.uiod->initializer->accept(this);
}
- return m_rootScope->recheckIdentifiers(m_code, m_qmlid2meta, m_rootScope.get(), m_rootId, m_colorOut);
+ return m_rootScope->recheckIdentifiers(m_code, m_qmlid2scope, m_exportedName2Scope,
+ m_rootScope.get(), m_rootId, m_colorOut);
}
bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::VariableDeclarationList *vdl)
@@ -686,18 +696,16 @@ bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::VariableDeclarationList *vdl)
void FindUnqualifiedIDVisitor::visitFunctionExpressionHelper(QQmlJS::AST::FunctionExpression *fexpr)
{
using namespace QQmlJS::AST;
- if (!fexpr->name.isEmpty()) {
- auto name = fexpr->name.toString();
- if (m_currentScope->scopeType() == ScopeType::QMLScope) {
- m_currentScope->insertQMLIdentifier(name);
- } else {
+ auto name = fexpr->name.toString();
+ if (!name.isEmpty()) {
+ if (m_currentScope->scopeType() == ScopeType::QMLScope)
+ m_currentScope->addMethod(MetaMethod(name, QLatin1String("void")));
+ else
m_currentScope->insertJSIdentifier(name, VariableScope::Const);
- }
+ enterEnvironment(ScopeType::JSFunctionScope, name);
+ } else {
+ enterEnvironment(ScopeType::JSFunctionScope, QLatin1String("<anon>"));
}
- QString name = fexpr->name.toString();
- if (name.isEmpty())
- name = "<anon>";
- enterEnvironment(ScopeType::JSFunctionScope, name);
}
bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::FunctionExpression *fexpr)
@@ -735,15 +743,17 @@ bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::UiImport *import)
// construct path
QString prefix = QLatin1String("");
if (import->asToken.isValid()) {
- prefix += import->importId + QLatin1Char('.');
+ prefix += import->importId;
}
auto dirname = import->fileName.toString();
if (!dirname.isEmpty())
- importDirectory(dirname, prefix);
+ importFileOrDirectory(dirname, prefix);
QString path {};
if (!import->importId.isEmpty()) {
- m_qmlid2meta.insert(import->importId.toString(), {}); // TODO: do not put imported ids into the same space as qml IDs
+ // TODO: do not put imported ids into the same space as qml IDs
+ const QString importId = import->importId.toString();
+ m_qmlid2scope.insert(importId, m_exportedName2Scope.value(importId).get());
}
if (import->version) {
auto uri = import->importUri;
@@ -761,14 +771,17 @@ bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::UiImport *import)
bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::UiEnumDeclaration *uied)
{
- m_currentScope->insertQMLIdentifier(uied->name.toString());
+ MetaEnum qmlEnum(uied->name.toString());
+ for (const auto *member = uied->members; member; member = member->next)
+ qmlEnum.addKey(member->member.toString());
+ m_currentScope->addEnum(qmlEnum);
return true;
}
bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::UiObjectBinding *uiob)
{
// property QtObject __styleData: QtObject {...}
- m_currentScope->insertPropertyIdentifier(uiob->qualifiedId->name.toString());
+
QString name {};
auto id = uiob->qualifiedTypeNameId;
QStringRef prefix = uiob->qualifiedTypeNameId->name;
@@ -777,20 +790,34 @@ bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::UiObjectBinding *uiob)
id = id->next;
}
name.chop(1);
+
+ MetaProperty prop(uiob->qualifiedId->name.toString(), name, false, true, true,
+ name == QLatin1String("alias"), 0);
+ prop.setType(m_exportedName2Scope.value(uiob->qualifiedTypeNameId->name.toString()).get());
+ m_currentScope->addProperty(prop);
+
enterEnvironment(ScopeType::QMLScope, name);
- if (name == QLatin1String("Component") || name == QLatin1String("QtObject")) // there is no typeinfo for Component and QtObject, but they also have no interesting properties
- return true;
importExportedNames(prefix, name);
return true;
}
-void FindUnqualifiedIDVisitor::endVisit(QQmlJS::AST::UiObjectBinding *)
+void FindUnqualifiedIDVisitor::endVisit(QQmlJS::AST::UiObjectBinding *uiob)
{
+ const auto childScope = m_currentScope;
leaveEnvironment();
+ MetaProperty property(uiob->qualifiedId->name.toString(),
+ uiob->qualifiedTypeNameId->name.toString(),
+ false, true, true,
+ uiob->qualifiedTypeNameId->name == QLatin1String("alias"),
+ 0);
+ property.setType(childScope);
+ m_currentScope->addProperty(property);
}
bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::UiObjectDefinition *uiod)
{
+ using namespace QQmlJS::AST;
+
QString name {};
auto id = uiod->qualifiedTypeNameId;
QStringRef prefix = uiod->qualifiedTypeNameId->name;
@@ -802,8 +829,7 @@ bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::UiObjectDefinition *uiod)
enterEnvironment(ScopeType::QMLScope, name);
if (name.isLower())
return false; // Ignore grouped properties for now
- if (name == QLatin1String("Component") || name == QLatin1String("QtObject")) // there is no typeinfo for Component
- return true;
+
importExportedNames(prefix, name);
if (name.endsWith("Connections")) {
QString target;
@@ -825,25 +851,26 @@ bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::UiObjectDefinition *uiod)
}
member = member->next;
}
- LanguageUtils::FakeMetaObject::ConstPtr metaObject {};
+ const ScopeTree *targetScope;
if (target.isEmpty()) {
// no target set, connection comes from parentF
ScopeTree* scope = m_currentScope;
do {
scope = scope->parentScope(); // TODO: rename method
} while (scope->scopeType() != ScopeType::QMLScope);
- auto metaObject = m_exportedName2MetaObject[scope->name()];
+ targetScope = m_exportedName2Scope.value(scope->name()).get();
} else {
// there was a target, check if we already can find it
- auto metaObjectIt = m_qmlid2meta.find(target);
- if (metaObjectIt != m_qmlid2meta.end()) {
- metaObject = *metaObjectIt;
+ auto scopeIt = m_qmlid2scope.find(target);
+ if (scopeIt != m_qmlid2scope.end()) {
+ targetScope = *scopeIt;
} else {
m_outstandingConnections.push_back({target, m_currentScope, uiod});
return false; // visit children later once target is known
}
}
- m_currentScope->addMethodsFromMetaObject(metaObject);
+ if (targetScope)
+ m_currentScope->addMethods(targetScope->methods());
}
return true;
}
@@ -862,5 +889,49 @@ bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::PatternElement *element)
void FindUnqualifiedIDVisitor::endVisit(QQmlJS::AST::UiObjectDefinition *)
{
+ auto childScope = m_currentScope;
leaveEnvironment();
+ childScope->updateParentProperty(m_currentScope);
+}
+
+bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::FieldMemberExpression *)
+{
+ return true;
+}
+
+void FindUnqualifiedIDVisitor::endVisit(QQmlJS::AST::FieldMemberExpression *fieldMember)
+{
+ using namespace QQmlJS::AST;
+ ExpressionNode *base = fieldMember->base;
+ while (auto *nested = cast<NestedExpression *>(base))
+ base = nested->expression;
+
+ if (m_fieldMemberBase == base) {
+ QString type;
+ if (auto *binary = cast<BinaryExpression *>(base)) {
+ if (binary->op == QSOperator::As) {
+ if (auto *right = cast<IdentifierExpression *>(binary->right))
+ type = right->name.toString();
+ }
+ }
+ m_currentScope->accessMember(fieldMember->name.toString(),
+ type,
+ fieldMember->identifierToken);
+ m_fieldMemberBase = fieldMember;
+ } else {
+ m_fieldMemberBase = nullptr;
+ }
+}
+
+bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::BinaryExpression *)
+{
+ return true;
+}
+
+void FindUnqualifiedIDVisitor::endVisit(QQmlJS::AST::BinaryExpression *binExp)
+{
+ if (binExp->op == QSOperator::As && m_fieldMemberBase == binExp->left)
+ m_fieldMemberBase = binExp;
+ else
+ m_fieldMemberBase = nullptr;
}
diff --git a/tools/qmllint/findunqualified.h b/tools/qmllint/findunqualified.h
index 80413bd402..6668b53b08 100644
--- a/tools/qmllint/findunqualified.h
+++ b/tools/qmllint/findunqualified.h
@@ -29,32 +29,49 @@
#ifndef FINDUNQUALIFIED_H
#define FINDUNQUALIFIED_H
-#include "qmljstypedescriptionreader.h"
-#include "qcoloroutput_p.h"
-
-#include <private/qqmljsastvisitor_p.h>
-#include <private/qqmljsast_p.h>
-
-#include <QScopedPointer>
-
-class ScopeTree;
-enum class ScopeType;
-
-class FindUnqualifiedIDVisitor : public QQmlJS::AST::Visitor {
-
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+
+#include "typedescriptionreader.h"
+#include "scopetree.h"
+#include "qcoloroutput.h"
+
+#include <QtQml/private/qqmljsastvisitor_p.h>
+#include <QtQml/private/qqmljsast_p.h>
+
+#include <QtCore/qscopedpointer.h>
+
+class FindUnqualifiedIDVisitor : public QQmlJS::AST::Visitor
+{
+ Q_DISABLE_COPY_MOVE(FindUnqualifiedIDVisitor)
public:
- explicit FindUnqualifiedIDVisitor(QStringList const &qmltypeDirs, const QString& code,
- const QString& fileName, bool silent);
- ~FindUnqualifiedIDVisitor() override;
+ explicit FindUnqualifiedIDVisitor(QStringList qmltypeDirs, QString code,
+ QString fileName, bool silent);
+ ~FindUnqualifiedIDVisitor() override = default;
bool check();
private:
+ struct Import {
+ QHash<QString, ScopeTree::ConstPtr> objects;
+ QList<ModuleApiInfo> moduleApis;
+ QStringList dependencies;
+ };
+
QScopedPointer<ScopeTree> m_rootScope;
ScopeTree *m_currentScope;
- QHash<QString, LanguageUtils::FakeMetaObject::ConstPtr> m_exportedName2MetaObject;
+ QQmlJS::AST::ExpressionNode *m_fieldMemberBase = nullptr;
+ QHash<QString, ScopeTree::ConstPtr> m_types;
+ QHash<QString, ScopeTree::ConstPtr> m_exportedName2Scope;
QStringList m_qmltypeDirs;
- const QString& m_code;
- QHash<QString, LanguageUtils::FakeMetaObject::ConstPtr> m_qmlid2meta;
+ QString m_code;
+ QHash<QString, const ScopeTree *> m_qmlid2scope;
QString m_rootId;
QString m_filePath;
QSet<QPair<QString, QString>> m_alreadySeenImports;
@@ -62,17 +79,31 @@ private:
ColorOutput m_colorOut;
bool m_visitFailed = false;
- struct OutstandingConnection {QString targetName; ScopeTree *scope; QQmlJS::AST::UiObjectDefinition *uiod;};
+ struct OutstandingConnection
+ {
+ QString targetName;
+ ScopeTree *scope;
+ QQmlJS::AST::UiObjectDefinition *uiod;
+ };
QVarLengthArray<OutstandingConnection, 3> m_outstandingConnections; // Connections whose target we have not encountered
- void enterEnvironment(ScopeType type, QString name);
+ void enterEnvironment(ScopeType type, const QString &name);
void leaveEnvironment();
- void importHelper(QString id, QString prefix, int major, int minor);
- LanguageUtils::FakeMetaObject* localQmlFile2FakeMetaObject(QString filePath);
+ void importHelper(const QString &module, const QString &prefix = QString(),
+ int major = -1, int minor = -1);
- void importDirectory(const QString &directory, const QString &prefix);
- void importExportedNames(QStringRef prefix, QString name);
+ void readQmltypes(const QString &filename, Import &result);
+ Import readQmldir(const QString &dirname);
+ void processImport(const QString &prefix, const Import &import);
+
+ ScopeTree *localFile2ScopeTree(const QString &filePath);
+
+ void importFileOrDirectory(const QString &directory, const QString &prefix);
+ void importExportedNames(const QStringRef &prefix, QString name);
+
+ void parseHeaders(QQmlJS::AST::UiHeaderItemList *headers);
+ ScopeTree *parseProgram(QQmlJS::AST::Program *program, const QString &name);
void throwRecursionDepthError() override;
@@ -128,7 +159,11 @@ private:
bool visit(QQmlJS::AST::IdentifierExpression *idexp) override;
bool visit(QQmlJS::AST::PatternElement *) override;
-};
+ bool visit(QQmlJS::AST::FieldMemberExpression *idprop) override;
+ void endVisit(QQmlJS::AST::FieldMemberExpression *) override;
+ bool visit(QQmlJS::AST::BinaryExpression *) override;
+ void endVisit(QQmlJS::AST::BinaryExpression *) override;
+};
#endif // FINDUNQUALIFIED_H
diff --git a/tools/qmllint/importedmembersvisitor.cpp b/tools/qmllint/importedmembersvisitor.cpp
new file mode 100644
index 0000000000..676903d135
--- /dev/null
+++ b/tools/qmllint/importedmembersvisitor.cpp
@@ -0,0 +1,155 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "importedmembersvisitor.h"
+#include "scopetree.h"
+
+using namespace QQmlJS::AST;
+
+ScopeTree *ImportedMembersVisitor::result(const QString &scopeName) const
+{
+ ScopeTree *result = new ScopeTree(ScopeType::QMLScope);
+ result->setClassName(scopeName);
+ result->setSuperclassName(m_rootObject->superclassName());
+ const auto properties = m_rootObject->properties();
+ for (auto property : properties) {
+ if (property.isAlias()) {
+ const auto it = m_objects.find(property.typeName());
+ if (it != m_objects.end())
+ property.setType(it->get());
+ result->addProperty(property);
+ } else {
+ result->addProperty(property);
+ }
+ }
+
+ for (const auto &method : m_rootObject->methods())
+ result->addMethod(method);
+
+ return result;
+}
+
+bool ImportedMembersVisitor::visit(UiObjectDefinition *definition)
+{
+ ScopeTree::Ptr scope(new ScopeTree(ScopeType::QMLScope));
+ auto qualifiedId = definition->qualifiedTypeNameId;
+ while (qualifiedId && qualifiedId->next)
+ qualifiedId = qualifiedId->next;
+ scope->setSuperclassName(qualifiedId->name.toString());
+ if (!m_rootObject)
+ m_rootObject = scope;
+ m_currentObjects.append(scope);
+ return true;
+}
+
+void ImportedMembersVisitor::endVisit(UiObjectDefinition *)
+{
+ m_currentObjects.pop_back();
+}
+
+bool ImportedMembersVisitor::visit(UiPublicMember *publicMember)
+{
+ switch (publicMember->type) {
+ case UiPublicMember::Signal: {
+ UiParameterList *param = publicMember->parameters;
+ MetaMethod method;
+ method.setMethodType(MetaMethod::Signal);
+ method.setMethodName(publicMember->name.toString());
+ while (param) {
+ method.addParameter(param->name.toString(), param->type->name.toString());
+ param = param->next;
+ }
+ currentObject()->addMethod(method);
+ break;
+ }
+ case UiPublicMember::Property: {
+ auto typeName = publicMember->memberType->name;
+ const bool isAlias = (typeName == QLatin1String("alias"));
+ if (isAlias) {
+ const auto expression = cast<ExpressionStatement *>(publicMember->statement);
+ if (const auto idExpression = cast<IdentifierExpression *>(expression->expression))
+ typeName = idExpression->name;
+ }
+ MetaProperty prop {
+ publicMember->name.toString(),
+ typeName.toString(),
+ false,
+ false,
+ false,
+ isAlias,
+ 0
+ };
+ currentObject()->addProperty(prop);
+ break;
+ }
+ }
+ return true;
+}
+
+bool ImportedMembersVisitor::visit(UiSourceElement *sourceElement)
+{
+ if (FunctionExpression *fexpr = sourceElement->sourceElement->asFunctionDefinition()) {
+ MetaMethod method;
+ method.setMethodName(fexpr->name.toString());
+ method.setMethodType(MetaMethod::Method);
+ FormalParameterList *parameters = fexpr->formals;
+ while (parameters) {
+ method.addParameter(parameters->element->bindingIdentifier.toString(), "");
+ parameters = parameters->next;
+ }
+ currentObject()->addMethod(method);
+ } else if (ClassExpression *clexpr = sourceElement->sourceElement->asClassDefinition()) {
+ MetaProperty prop { clexpr->name.toString(), "", false, false, false, false, 1 };
+ currentObject()->addProperty(prop);
+ } else if (cast<VariableStatement *>(sourceElement->sourceElement)) {
+ // nothing to do
+ } else {
+ const auto loc = sourceElement->firstSourceLocation();
+ m_colorOut->writeUncolored(
+ "unsupportedd sourceElement at "
+ + QString::fromLatin1("%1:%2: ").arg(loc.startLine).arg(loc.startColumn)
+ + QString::number(sourceElement->sourceElement->kind));
+ }
+ return true;
+}
+
+bool ImportedMembersVisitor::visit(UiScriptBinding *scriptBinding)
+{
+ if (scriptBinding->qualifiedId->name == QLatin1String("id")) {
+ const auto *statement = cast<ExpressionStatement *>(scriptBinding->statement);
+ const auto *idExprension = cast<IdentifierExpression *>(statement->expression);
+ m_objects.insert(idExprension->name.toString(), currentObject());
+ }
+ return true;
+}
+
+void ImportedMembersVisitor::throwRecursionDepthError()
+{
+ m_colorOut->write(QStringLiteral("Error"), Error);
+ m_colorOut->write(QStringLiteral("Maximum statement or expression depth exceeded"), Error);
+}
diff --git a/src/quick/util/qquickutilmodule_p.h b/tools/qmllint/importedmembersvisitor.h
index b03eeddede..793ff18dcc 100644
--- a/src/quick/util/qquickutilmodule_p.h
+++ b/tools/qmllint/importedmembersvisitor.h
@@ -1,11 +1,11 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
-** This file is part of the QtQuick module of the Qt Toolkit.
+** This file is part of the tools applications of the Qt Toolkit.
**
-** $QT_BEGIN_LICENSE:LGPL$
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
@@ -14,31 +14,20 @@
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
-#ifndef QQUICKUTILMODULE_H
-#define QQUICKUTILMODULE_H
+#ifndef IMPORTEDMEMBERSVISITOR_H
+#define IMPORTEDMEMBERSVISITOR_H
//
// W A R N I N G
@@ -49,18 +38,36 @@
// version without notice, or even be removed.
//
// We mean it.
-//
-#include <qqml.h>
+#include "scopetree.h"
+#include "qcoloroutput.h"
-QT_BEGIN_NAMESPACE
+#include <private/qqmljsast_p.h>
-class QQuickUtilModule
+class ImportedMembersVisitor : public QQmlJS::AST::Visitor
{
public:
- static void defineModule();
-};
+ ImportedMembersVisitor(ColorOutput *colorOut) :
+ m_colorOut(colorOut)
+ {}
-QT_END_NAMESPACE
+ ScopeTree *result(const QString &scopeName) const;
+
+private:
+ bool visit(QQmlJS::AST::UiObjectDefinition *) override;
+ void endVisit(QQmlJS::AST::UiObjectDefinition *) override;
+ bool visit(QQmlJS::AST::UiPublicMember *) override;
+ bool visit(QQmlJS::AST::UiSourceElement *) override;
+ bool visit(QQmlJS::AST::UiScriptBinding *) override;
+ void throwRecursionDepthError() override;
+
+ ScopeTree::Ptr currentObject() const { return m_currentObjects.back(); }
+
+ QVector<ScopeTree::Ptr> m_currentObjects;
+ ScopeTree::ConstPtr m_rootObject;
+ QHash<QString, ScopeTree::Ptr> m_objects;
+
+ ColorOutput *m_colorOut = nullptr;
+};
-#endif // QQUICKUTILMODULE_H
+#endif // IMPORTEDMEMBERSVISITOR_H
diff --git a/tools/qmllint/main.cpp b/tools/qmllint/main.cpp
index 232b31934e..0a0e669e94 100644
--- a/tools/qmllint/main.cpp
+++ b/tools/qmllint/main.cpp
@@ -26,27 +26,29 @@
**
****************************************************************************/
-#include <QDebug>
-#include <QFile>
-#include <QFileInfo>
+#include "findunqualified.h"
+
+#include <QtQml/private/qqmljslexer_p.h>
+#include <QtQml/private/qqmljsparser_p.h>
+#include <QtQml/private/qqmljsengine_p.h>
+#include <QtQml/private/qqmljsastvisitor_p.h>
+#include <QtQml/private/qqmljsast_p.h>
+
+#include <QtCore/qdebug.h>
+#include <QtCore/qfile.h>
+#include <QtCore/qfileinfo.h>
+#include <QtCore/qcoreapplication.h>
+
#if QT_CONFIG(commandlineparser)
-#include <QCommandLineParser>
+#include <QtCore/qcommandlineparser.h>
#endif
-#include <QCoreApplication>
#ifndef QT_BOOTSTRAPPED
-#include <QLibraryInfo>
+#include <QtCore/qlibraryinfo.h>
#endif
-#include <private/qqmljslexer_p.h>
-#include <private/qqmljsparser_p.h>
-#include <private/qqmljsengine_p.h>
-#include <private/qqmljsastvisitor_p.h>
-#include <private/qqmljsast_p.h>
-
-#include "findunqualified.h"
-
-static bool lint_file(const QString &filename, const bool silent, const bool warnUnqualied, QStringList const &qmltypeDirs)
+static bool lint_file(const QString &filename, const bool silent, const bool warnUnqualied,
+ const QStringList &qmltypeDirs)
{
QFile file(filename);
if (!file.open(QFile::ReadOnly)) {
@@ -63,17 +65,20 @@ static bool lint_file(const QString &filename, const bool silent, const bool war
QFileInfo info(filename);
const QString lowerSuffix = info.suffix().toLower();
- const bool isJavaScript = (lowerSuffix == QLatin1String("js") || lowerSuffix == QLatin1String("mjs"));
const bool isESModule = lowerSuffix == QLatin1String("mjs");
- lexer.setCode(code, /*line = */ 1, /*qmlMode=*/ !isJavaScript);
+ const bool isJavaScript = isESModule || lowerSuffix == QLatin1String("js");
+
+ lexer.setCode(code, /*lineno = */ 1, /*qmlMode=*/ !isJavaScript);
QQmlJS::Parser parser(&engine);
- bool success = isJavaScript ? (isESModule ? parser.parseModule() : parser.parseProgram()) : parser.parse();
+ bool success = isJavaScript ? (isESModule ? parser.parseModule() : parser.parseProgram())
+ : parser.parse();
if (!success && !silent) {
const auto diagnosticMessages = parser.diagnosticMessages();
for (const QQmlJS::DiagnosticMessage &m : diagnosticMessages) {
- qWarning("%s:%d : %s", qPrintable(filename), m.line, qPrintable(m.message));
+ qWarning().noquote() << QString::fromLatin1("%1:%2 : %3")
+ .arg(filename).arg(m.line).arg(m.message);
}
}
@@ -98,10 +103,12 @@ int main(int argv, char *argc[])
parser.addHelpOption();
parser.addVersionOption();
- QCommandLineOption silentOption(QStringList() << "s" << "silent", QLatin1String("Don't output syntax errors"));
+ QCommandLineOption silentOption(QStringList() << "s" << "silent",
+ QLatin1String("Don't output syntax errors"));
parser.addOption(silentOption);
- QCommandLineOption checkUnqualified(QStringList() << "U" << "check-unqualified", QLatin1String("Warn about unqualified identifiers"));
+ QCommandLineOption checkUnqualified(QStringList() << "U" << "check-unqualified",
+ QLatin1String("Warn about unqualified identifiers"));
parser.addOption(checkUnqualified);
QCommandLineOption qmltypesDirsOption(
@@ -111,7 +118,8 @@ int main(int argv, char *argc[])
QLatin1String("directory"));
parser.addOption(qmltypesDirsOption);
- parser.addPositionalArgument(QLatin1String("files"), QLatin1String("list of qml or js files to verify"));
+ parser.addPositionalArgument(QLatin1String("files"),
+ QLatin1String("list of qml or js files to verify"));
parser.process(app);
@@ -123,12 +131,14 @@ int main(int argv, char *argc[])
bool silent = parser.isSet(silentOption);
bool warnUnqualified = parser.isSet(checkUnqualified);
// use host qml import path as a sane default if nothing else has been provided
- QStringList qmltypeDirs = parser.isSet(qmltypesDirsOption) ? parser.values(qmltypesDirsOption)
-#ifndef QT_BOOTSTRAPPED
- : QStringList{QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath), QLatin1String(".")};
-#else
- : QStringList{QLatin1String(".")};
-#endif
+ QStringList qmltypeDirs = parser.isSet(qmltypesDirsOption)
+ ? parser.values(qmltypesDirsOption)
+# ifndef QT_BOOTSTRAPPED
+ : QStringList { QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath),
+ QLatin1String(".") };
+# else
+ : QStringList { QLatin1String(".") };
+# endif
#else
bool silent = false;
bool warnUnqualified = false;
diff --git a/tools/qmllint/metatypes.h b/tools/qmllint/metatypes.h
new file mode 100644
index 0000000000..d67de2edcd
--- /dev/null
+++ b/tools/qmllint/metatypes.h
@@ -0,0 +1,155 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef METATYPES_H
+#define METATYPES_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+
+#include <QtCore/qstring.h>
+#include <QtCore/qstringlist.h>
+
+class MetaEnum
+{
+ QString m_name;
+ QStringList m_keys;
+
+public:
+ MetaEnum() = default;
+ explicit MetaEnum(QString name) : m_name(std::move(name)) {}
+
+ bool isValid() const { return !m_name.isEmpty(); }
+
+ QString name() const { return m_name; }
+ void setName(const QString &name) { m_name = name; }
+
+ void addKey(const QString &key) { m_keys.append(key); }
+ QStringList keys() const { return m_keys; }
+};
+
+class MetaMethod
+{
+public:
+ enum Type {
+ Signal,
+ Slot,
+ Method
+ };
+
+ enum Access {
+ Private,
+ Protected,
+ Public
+ };
+
+ MetaMethod() = default;
+ explicit MetaMethod(QString name, QString returnType = QString())
+ : m_name(std::move(name))
+ , m_returnType(std::move(returnType))
+ , m_methodType(Method)
+ , m_methodAccess(Public)
+ {}
+
+ QString methodName() const { return m_name; }
+ void setMethodName(const QString &name) { m_name = name; }
+
+ void setReturnType(const QString &type) { m_returnType = type; }
+
+ QStringList parameterNames() const { return m_paramNames; }
+ QStringList parameterTypes() const { return m_paramTypes; }
+ void addParameter(const QString &name, const QString &type)
+ {
+ m_paramNames.append(name);
+ m_paramTypes.append(type);
+ }
+
+ int methodType() const { return m_methodType; }
+ void setMethodType(Type methodType) { m_methodType = methodType; }
+
+ Access access() const { return m_methodAccess; }
+
+ int revision() const { return m_revision; }
+ void setRevision(int r) { m_revision = r; }
+
+private:
+ QString m_name;
+ QString m_returnType;
+ QStringList m_paramNames;
+ QStringList m_paramTypes;
+ Type m_methodType = Signal;
+ Access m_methodAccess = Private;
+ int m_revision = 0;
+};
+
+class ScopeTree;
+class MetaProperty
+{
+ QString m_propertyName;
+ QString m_typeName;
+ const ScopeTree *m_type = nullptr;
+ bool m_isList;
+ bool m_isWritable;
+ bool m_isPointer;
+ bool m_isAlias;
+ int m_revision;
+
+public:
+ MetaProperty(QString propertyName, QString typeName,
+ bool isList, bool isWritable, bool isPointer, bool isAlias,
+ int revision)
+ : m_propertyName(std::move(propertyName))
+ , m_typeName(std::move(typeName))
+ , m_isList(isList)
+ , m_isWritable(isWritable)
+ , m_isPointer(isPointer)
+ , m_isAlias(isAlias)
+ , m_revision(revision)
+ {}
+
+ QString propertyName() const { return m_propertyName; }
+ QString typeName() const { return m_typeName; }
+
+ void setType(const ScopeTree *type) { m_type = type; }
+ const ScopeTree *type() const { return m_type; }
+
+ bool isList() const { return m_isList; }
+ bool isWritable() const { return m_isWritable; }
+ bool isPointer() const { return m_isPointer; }
+ bool isAlias() const { return m_isAlias; }
+ int revision() const { return m_revision; }
+};
+
+#endif // METATYPES_H
diff --git a/tools/qmllint/qcoloroutput.cpp b/tools/qmllint/qcoloroutput.cpp
index eb4c721663..84bd22c428 100644
--- a/tools/qmllint/qcoloroutput.cpp
+++ b/tools/qmllint/qcoloroutput.cpp
@@ -26,72 +26,76 @@
**
****************************************************************************/
-#include <QFile>
-#include <QHash>
-#include <QTextCodec>
+#include "qcoloroutput.h"
+
+#include <QtCore/qfile.h>
+#include <QtCore/qhash.h>
+#include <QtCore/qtextcodec.h>
#ifndef Q_OS_WIN
#include <unistd.h>
#endif
-#include "qcoloroutput_p.h"
-
class ColorOutputPrivate
{
public:
- ColorOutputPrivate(bool silent) : currentColorID(-1), silent(silent)
-
+ ColorOutputPrivate(bool silent) : m_currentColorID(-1), m_silent(silent)
{
- /* - QIODevice::Unbuffered because we want it to appear when the user actually calls, performance
- * is considered of lower priority.
+ /* - QIODevice::Unbuffered because we want it to appear when the user actually calls,
+ * performance is considered of lower priority.
*/
m_out.open(stderr, QIODevice::WriteOnly | QIODevice::Unbuffered);
-
- coloringEnabled = isColoringPossible();
+ m_coloringEnabled = isColoringPossible();
}
- ColorOutput::ColorMapping colorMapping;
- int currentColorID;
- bool coloringEnabled;
- bool silent;
-
static const char *const foregrounds[];
static const char *const backgrounds[];
- inline void write(const QString &msg)
- {
- m_out.write(msg.toLocal8Bit());
- }
+ inline void write(const QString &msg) { m_out.write(msg.toLocal8Bit()); }
static QString escapeCode(const QString &in)
{
+ const ushort escapeChar = 0x1B;
QString result;
- result.append(QChar(0x1B));
+ result.append(QChar(escapeChar));
result.append(QLatin1Char('['));
result.append(in);
result.append(QLatin1Char('m'));
return result;
}
+ void insertColor(int id, ColorOutput::ColorCode code) { m_colorMapping.insert(id, code); }
+ ColorOutput::ColorCode color(int id) const { return m_colorMapping.value(id); }
+ bool containsColor(int id) const { return m_colorMapping.contains(id); }
+
+ bool isSilent() const { return m_silent; }
+ void setCurrentColorID(int colorId) { m_currentColorID = colorId; }
+
+ bool coloringEnabled() const { return m_coloringEnabled; }
+
private:
QFile m_out;
+ ColorOutput::ColorMapping m_colorMapping;
+ int m_currentColorID;
+ bool m_coloringEnabled;
+ bool m_silent;
/*!
Returns true if it's suitable to send colored output to \c stderr.
*/
inline bool isColoringPossible() const
{
-# if defined(Q_OS_WIN)
- /* Windows doesn't at all support ANSI escape codes, unless
- * the user install a "device driver". See the Wikipedia links in the
- * class documentation for details. */
- return false;
-# else
- /* We use QFile::handle() to get the file descriptor. It's a bit unsure
- * whether it's 2 on all platforms and in all cases, so hopefully this layer
- * of abstraction helps handle such cases. */
- return isatty(m_out.handle());
-# endif
+#if defined(Q_OS_WIN)
+ /* Windows doesn't at all support ANSI escape codes, unless
+ * the user install a "device driver". See the Wikipedia links in the
+ * class documentation for details. */
+ return false;
+#else
+ /* We use QFile::handle() to get the file descriptor. It's a bit unsure
+ * whether it's 2 on all platforms and in all cases, so hopefully this layer
+ * of abstraction helps handle such cases. */
+ return isatty(m_out.handle());
+#endif
}
};
@@ -128,7 +132,6 @@ const char *const ColorOutputPrivate::backgrounds[] =
/*!
\class ColorOutput
- \since 4.4
\nonreentrant
\brief Outputs colored messages to \c stderr.
\internal
@@ -215,40 +218,17 @@ const char *const ColorOutputPrivate::backgrounds[] =
*/
/*!
- Sets the color mapping to be \a cMapping.
-
- Negative values are disallowed.
-
- \sa colorMapping(), insertMapping()
- */
-void ColorOutput::setColorMapping(const ColorMapping &cMapping)
-{
- d->colorMapping = cMapping;
-}
-
-/*!
- Returns the color mappings in use.
-
- \sa setColorMapping(), insertMapping()
- */
-ColorOutput::ColorMapping ColorOutput::colorMapping() const
-{
- return d->colorMapping;
-}
-
-/*!
Constructs a ColorOutput instance, ready for use.
*/
-ColorOutput::ColorOutput(bool silent) : d(new ColorOutputPrivate(silent))
-{
-}
+ColorOutput::ColorOutput(bool silent) : d(new ColorOutputPrivate(silent)) {}
-ColorOutput::~ColorOutput() = default; // must be here so that QScopedPointer has access to the complete type
+// must be here so that QScopedPointer has access to the complete type
+ColorOutput::~ColorOutput() = default;
/*!
- Sends \a message to \c stderr, using the color looked up in colorMapping() using \a colorID.
+ Sends \a message to \c stderr, using the color looked up in the color mapping using \a colorID.
- If \a color isn't available in colorMapping(), result and behavior is undefined.
+ If \a color isn't available in the color mapping, result and behavior is undefined.
If \a colorID is 0, which is the default value, the previously used coloring is used. ColorOutput
is initialized to not color at all.
@@ -259,7 +239,7 @@ ColorOutput::~ColorOutput() = default; // must be here so that QScopedPointer ha
*/
void ColorOutput::write(const QString &message, int colorID)
{
- if (!d->silent)
+ if (!d->isSilent())
d->write(colorify(message, colorID));
}
@@ -271,7 +251,7 @@ void ColorOutput::write(const QString &message, int colorID)
*/
void ColorOutput::writeUncolored(const QString &message)
{
- if (!d->silent)
+ if (!d->isSilent())
d->write(message + QLatin1Char('\n'));
}
@@ -285,61 +265,56 @@ void ColorOutput::writeUncolored(const QString &message)
*/
QString ColorOutput::colorify(const QString &message, int colorID) const
{
- Q_ASSERT_X(colorID == -1 || d->colorMapping.contains(colorID), Q_FUNC_INFO,
- qPrintable(QString::fromLatin1("There is no color registered by id %1").arg(colorID)));
- Q_ASSERT_X(!message.isEmpty(), Q_FUNC_INFO, "It makes no sense to attempt to print an empty string.");
+ Q_ASSERT_X(colorID == -1 || d->containsColor(colorID), Q_FUNC_INFO,
+ qPrintable(QString::fromLatin1("There is no color registered by id %1")
+ .arg(colorID)));
+ Q_ASSERT_X(!message.isEmpty(), Q_FUNC_INFO,
+ "It makes no sense to attempt to print an empty string.");
if (colorID != -1)
- d->currentColorID = colorID;
+ d->setCurrentColorID(colorID);
- if (d->coloringEnabled && colorID != -1)
- {
- const int color(d->colorMapping.value(colorID));
+ if (d->coloringEnabled() && colorID != -1) {
+ const int color = d->color(colorID);
/* If DefaultColor is set, we don't want to color it. */
if (color & DefaultColor)
return message;
- const int foregroundCode = (int(color) & ForegroundMask) >> ForegroundShift;
- const int backgroundCode = (int(color) & BackgroundMask) >> BackgroundShift;
+ const int foregroundCode = (color & ForegroundMask) >> ForegroundShift;
+ const int backgroundCode = (color & BackgroundMask) >> BackgroundShift;
QString finalMessage;
bool closureNeeded = false;
- if (foregroundCode)
- {
- finalMessage.append(ColorOutputPrivate::escapeCode(QLatin1String(ColorOutputPrivate::foregrounds[foregroundCode - 1])));
+ if (foregroundCode > 0) {
+ finalMessage.append(
+ ColorOutputPrivate::escapeCode(
+ QLatin1String(ColorOutputPrivate::foregrounds[foregroundCode - 1])));
closureNeeded = true;
}
- if (backgroundCode)
- {
- finalMessage.append(ColorOutputPrivate::escapeCode(QLatin1String(ColorOutputPrivate::backgrounds[backgroundCode - 1])));
+ if (backgroundCode > 0) {
+ finalMessage.append(
+ ColorOutputPrivate::escapeCode(
+ QLatin1String(ColorOutputPrivate::backgrounds[backgroundCode - 1])));
closureNeeded = true;
}
finalMessage.append(message);
if (closureNeeded)
- {
- finalMessage.append(QChar(0x1B));
- finalMessage.append(QLatin1String("[0m"));
- }
+ finalMessage.append(ColorOutputPrivate::escapeCode(QLatin1String("0")));
return finalMessage;
}
- else
- return message;
+
+ return message;
}
/*!
Adds a color mapping from \a colorID to \a colorCode, for this ColorOutput instance.
-
- This is a convenience function for creating a ColorOutput::ColorMapping instance and
- calling setColorMapping().
-
- \sa colorMapping(), setColorMapping()
*/
-void ColorOutput::insertColorMapping(int colorID, const ColorCode colorCode)
+void ColorOutput::insertMapping(int colorID, const ColorCode colorCode)
{
- d->colorMapping.insert(colorID, colorCode);
+ d->insertColor(colorID, colorCode);
}
diff --git a/tools/qmllint/qcoloroutput_p.h b/tools/qmllint/qcoloroutput.h
index aefa765a87..92f4b47ff0 100644
--- a/tools/qmllint/qcoloroutput_p.h
+++ b/tools/qmllint/qcoloroutput.h
@@ -26,6 +26,9 @@
**
****************************************************************************/
+#ifndef QCOLOROUTPUT_H
+#define QCOLOROUTPUT_H
+
//
// W A R N I N G
// -------------
@@ -36,12 +39,8 @@
//
// We mean it.
-#ifndef QCOLOROUTPUT_P_H
-#define QCOLOROUTPUT_P_H
-
-#include <QtCore/QtGlobal>
-#include <QtCore/QHash>
-#include <QScopedPointer>
+#include <QtCore/qglobal.h>
+#include <QtCore/qscopedpointer.h>
class ColorOutputPrivate;
@@ -86,15 +85,13 @@ public:
DefaultColor = 1 << SpecialShift
};
- typedef QFlags<ColorCodeComponent> ColorCode;
- typedef QHash<int, ColorCode> ColorMapping;
+ using ColorCode = QFlags<ColorCodeComponent>;
+ using ColorMapping = QHash<int, ColorCode>;
ColorOutput(bool silent);
~ColorOutput();
- void setColorMapping(const ColorMapping &cMapping);
- ColorMapping colorMapping() const;
- void insertColorMapping(int colorID, const ColorCode colorCode);
+ void insertMapping(int colorID, ColorCode colorCode);
void writeUncolored(const QString &message);
void write(const QString &message, int color = -1);
@@ -102,9 +99,9 @@ public:
private:
QScopedPointer<ColorOutputPrivate> d;
- Q_DISABLE_COPY(ColorOutput)
+ Q_DISABLE_COPY_MOVE(ColorOutput)
};
Q_DECLARE_OPERATORS_FOR_FLAGS(ColorOutput::ColorCode)
-#endif
+#endif // QCOLOROUTPUT_H
diff --git a/tools/qmllint/qmljstypedescriptionreader.h b/tools/qmllint/qmljstypedescriptionreader.h
deleted file mode 100644
index df215af8d2..0000000000
--- a/tools/qmllint/qmljstypedescriptionreader.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2019 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QMLJSTYPEDESCRIPTIONREADER_H
-#define QMLJSTYPEDESCRIPTIONREADER_H
-
-#include <private/qqmljsastfwd_p.h>
-#include "fakemetaobject.h"
-
-// for Q_DECLARE_TR_FUNCTIONS
-#include <QCoreApplication>
-
-QT_BEGIN_NAMESPACE
-class QIODevice;
-class QBuffer;
-
-namespace QQmlJS {
-
-class ModuleApiInfo
-{
-public:
- QString uri;
- LanguageUtils::ComponentVersion version;
- QString cppName;
-};
-
-
-class TypeDescriptionReader
-{
- Q_DECLARE_TR_FUNCTIONS(QQmlJS::TypeDescriptionReader)
-
-public:
- explicit TypeDescriptionReader(const QString &fileName, const QString &data);
- ~TypeDescriptionReader();
-
- bool operator()(
- QHash<QString, LanguageUtils::FakeMetaObject::ConstPtr> *objects,
- QList<ModuleApiInfo> *moduleApis,
- QStringList *dependencies);
- QString errorMessage() const;
- QString warningMessage() const;
-
-private:
- void readDocument(AST::UiProgram *ast);
- void readModule(AST::UiObjectDefinition *ast);
- void readDependencies(AST::UiScriptBinding *ast);
- void readComponent(AST::UiObjectDefinition *ast);
- void readModuleApi(AST::UiObjectDefinition *ast);
- void readSignalOrMethod(AST::UiObjectDefinition *ast, bool isMethod, LanguageUtils::FakeMetaObject::Ptr fmo);
- void readProperty(AST::UiObjectDefinition *ast, LanguageUtils::FakeMetaObject::Ptr fmo);
- void readEnum(AST::UiObjectDefinition *ast, LanguageUtils::FakeMetaObject::Ptr fmo);
- void readParameter(AST::UiObjectDefinition *ast, LanguageUtils::FakeMetaMethod *fmm);
-
- QString readStringBinding(AST::UiScriptBinding *ast);
- bool readBoolBinding(AST::UiScriptBinding *ast);
- double readNumericBinding(AST::UiScriptBinding *ast);
- LanguageUtils::ComponentVersion readNumericVersionBinding(AST::UiScriptBinding *ast);
- int readIntBinding(AST::UiScriptBinding *ast);
- void readExports(AST::UiScriptBinding *ast, LanguageUtils::FakeMetaObject::Ptr fmo);
- void readMetaObjectRevisions(AST::UiScriptBinding *ast, LanguageUtils::FakeMetaObject::Ptr fmo);
- void readEnumValues(AST::UiScriptBinding *ast, LanguageUtils::FakeMetaEnum *fme);
-
- void addError(const AST::SourceLocation &loc, const QString &message);
- void addWarning(const AST::SourceLocation &loc, const QString &message);
-
- QString _fileName;
- QString _source;
- QString _errorMessage;
- QString _warningMessage;
- QHash<QString, LanguageUtils::FakeMetaObject::ConstPtr> *_objects;
- QList<ModuleApiInfo> *_moduleApis = nullptr;
- QStringList *_dependencies = nullptr;
-};
-
-} // namespace QQmlJS
-QT_END_NAMESPACE
-
-#endif // QMLJSTYPEDESCRIPTIONREADER_H
diff --git a/tools/qmllint/qmllint.pro b/tools/qmllint/qmllint.pro
index 76363a7cd8..4b7ca947cf 100644
--- a/tools/qmllint/qmllint.pro
+++ b/tools/qmllint/qmllint.pro
@@ -1,14 +1,14 @@
option(host_build)
-QT = core qmldevtools-private
+QT = core-private qmldevtools-private
SOURCES += main.cpp \
componentversion.cpp \
- fakemetaobject.cpp \
findunqualified.cpp \
- qmljstypedescriptionreader.cpp \
+ importedmembersvisitor.cpp \
qcoloroutput.cpp \
- scopetree.cpp
+ scopetree.cpp \
+ typedescriptionreader.cpp
QMAKE_TARGET_DESCRIPTION = QML Syntax Verifier
@@ -16,8 +16,9 @@ load(qt_tool)
HEADERS += \
componentversion.h \
- fakemetaobject.h \
findunqualified.h \
- qmljstypedescriptionreader.h \
- qcoloroutput_p.h \
- scopetree.h
+ importedmembersvisitor.h \
+ metatypes.h \
+ qcoloroutput.h \
+ scopetree.h \
+ typedescriptionreader.h
diff --git a/tools/qmllint/scopetree.cpp b/tools/qmllint/scopetree.cpp
index 1e873cca8f..2ca3ed9a67 100644
--- a/tools/qmllint/scopetree.cpp
+++ b/tools/qmllint/scopetree.cpp
@@ -27,28 +27,27 @@
****************************************************************************/
#include "scopetree.h"
+#include "qcoloroutput.h"
-#include "qcoloroutput_p.h"
+#include <QtCore/qqueue.h>
#include <algorithm>
-#include <QQueue>
-
ScopeTree::ScopeTree(ScopeType type, QString name, ScopeTree *parentScope)
- : m_parentScope(parentScope), m_name(name), m_scopeType(type) {}
+ : m_parentScope(parentScope), m_name(std::move(name)), m_scopeType(type) {}
-ScopeTree *ScopeTree::createNewChildScope(ScopeType type, QString name) {
- Q_ASSERT(type != ScopeType::QMLScope|| !m_parentScope || m_parentScope->m_scopeType == ScopeType::QMLScope || m_parentScope->m_name == "global");
- auto childScope = new ScopeTree{type, name, this};
+ScopeTree::Ptr ScopeTree::createNewChildScope(ScopeType type, const QString &name)
+{
+ Q_ASSERT(type != ScopeType::QMLScope
+ || !m_parentScope
+ || m_parentScope->m_scopeType == ScopeType::QMLScope
+ || m_parentScope->m_name == "global");
+ auto childScope = ScopeTree::Ptr(new ScopeTree{type, name, this});
m_childScopes.push_back(childScope);
return childScope;
}
-ScopeTree *ScopeTree::parentScope() {
- return m_parentScope;
-}
-
-void ScopeTree::insertJSIdentifier(QString id, QQmlJS::AST::VariableScope scope)
+void ScopeTree::insertJSIdentifier(const QString &id, QQmlJS::AST::VariableScope scope)
{
Q_ASSERT(m_scopeType != ScopeType::QMLScope);
if (scope == QQmlJS::AST::VariableScope::Var) {
@@ -56,29 +55,25 @@ void ScopeTree::insertJSIdentifier(QString id, QQmlJS::AST::VariableScope scope)
while (targetScope->scopeType() != ScopeType::JSFunctionScope) {
targetScope = targetScope->m_parentScope;
}
- targetScope->m_currentScopeJSIdentifiers.insert(id);
+ targetScope->m_jsIdentifiers.insert(id);
} else {
- m_currentScopeJSIdentifiers.insert(id);
+ m_jsIdentifiers.insert(id);
}
}
-void ScopeTree::insertQMLIdentifier(QString id)
-{
- Q_ASSERT(m_scopeType == ScopeType::QMLScope);
- m_currentScopeQMLIdentifiers.insert(id);
-}
-
-void ScopeTree::insertSignalIdentifier(QString id, LanguageUtils::FakeMetaMethod method, QQmlJS::AST::SourceLocation loc, bool hasMultilineHandlerBody)
+void ScopeTree::insertSignalIdentifier(const QString &id, const MetaMethod &method,
+ const QQmlJS::AST::SourceLocation &loc,
+ bool hasMultilineHandlerBody)
{
Q_ASSERT(m_scopeType == ScopeType::QMLScope);
m_injectedSignalIdentifiers.insert(id, {method, loc, hasMultilineHandlerBody});
}
-void ScopeTree::insertPropertyIdentifier(QString id)
+void ScopeTree::insertPropertyIdentifier(const MetaProperty &property)
{
- this->insertQMLIdentifier(id);
- LanguageUtils::FakeMetaMethod method( id + QLatin1String("Changed"), "void");
- this->addMethod(method);
+ addProperty(property);
+ MetaMethod method(property.propertyName() + QLatin1String("Changed"), "void");
+ addMethod(method);
}
void ScopeTree::addUnmatchedSignalHandler(const QString &handler,
@@ -92,52 +87,191 @@ bool ScopeTree::isIdInCurrentScope(const QString &id) const
return isIdInCurrentQMlScopes(id) || isIdInCurrentJSScopes(id);
}
-void ScopeTree::addIdToAccssedIfNotInParentScopes(const QPair<QString, QQmlJS::AST::SourceLocation> &id_loc_pair, const QSet<QString>& unknownImports) {
- // also do not add id if it is parent
- // parent is almost always defined valid in QML, and if we could not find a definition for the current QML component
- // not skipping "parent" will lead to many false positives
- // Moreover, if the top level item is Item or inherits from it, it will have a parent property to which we would point the user
- // which makes for a very nonsensical warning
- auto qmlScope = getCurrentQMLScope();
- if (!isIdInCurrentScope(id_loc_pair.first) && !(id_loc_pair.first == QLatin1String("parent") && qmlScope && unknownImports.contains(qmlScope->name()))) {
- m_accessedIdentifiers.push_back(id_loc_pair);
- }
+void ScopeTree::addIdToAccessed(const QString &id, const QQmlJS::AST::SourceLocation &location) {
+ m_currentFieldMember = new FieldMemberList {id, QString(), location, {}};
+ m_accessedIdentifiers.push_back(std::unique_ptr<FieldMemberList>(m_currentFieldMember));
}
-bool ScopeTree::isVisualRootScope() const
+void ScopeTree::accessMember(const QString &name, const QString &parentType,
+ const QQmlJS::AST::SourceLocation &location)
+{
+ Q_ASSERT(m_currentFieldMember);
+ auto *fieldMember = new FieldMemberList {name, parentType, location, {}};
+ m_currentFieldMember->m_child.reset(fieldMember);
+ m_currentFieldMember = fieldMember;
+}
+
+void ScopeTree::resetMemberScope()
{
- return m_parentScope && m_parentScope->m_parentScope && m_parentScope->m_parentScope->m_parentScope == nullptr;
+ m_currentFieldMember = nullptr;
}
-QString ScopeTree::name() const
+bool ScopeTree::isVisualRootScope() const
{
- return m_name;
+ return m_parentScope && m_parentScope->m_parentScope
+ && m_parentScope->m_parentScope->m_parentScope == nullptr;
}
-struct IssueLocationWithContext
+class IssueLocationWithContext
{
- IssueLocationWithContext(const QString& code, QQmlJS::AST::SourceLocation location) {
+public:
+ IssueLocationWithContext(const QString &code, const QQmlJS::AST::SourceLocation &location) {
int before = std::max(0,code.lastIndexOf('\n', location.offset));
- beforeText = code.midRef(before+1, location.offset - (before+1) );
- issueText = code.midRef(location.offset, location.length);
- int after = code.indexOf('\n', location.offset + location.length);
- afterText = code.midRef(location.offset+location.length, after - (location.offset+location.length));
+ m_beforeText = code.midRef(before + 1, int(location.offset - (before + 1)));
+ m_issueText = code.midRef(location.offset, location.length);
+ int after = code.indexOf('\n', int(location.offset + location.length));
+ m_afterText = code.midRef(int(location.offset + location.length),
+ int(after - (location.offset+location.length)));
+ }
+
+ QStringRef beforeText() const { return m_beforeText; }
+ QStringRef issueText() const { return m_issueText; }
+ QStringRef afterText() const { return m_afterText; }
+
+private:
+ QStringRef m_beforeText;
+ QStringRef m_issueText;
+ QStringRef m_afterText;
+};
+
+bool ScopeTree::checkMemberAccess(
+ const QString &code,
+ FieldMemberList *members,
+ const ScopeTree *scope,
+ const QHash<QString, ScopeTree::ConstPtr> &types,
+ ColorOutput& colorOut) const
+{
+ if (!members->m_child)
+ return true;
+
+ Q_ASSERT(scope != nullptr);
+
+ const QString scopeName = scope->name().isEmpty() ? scope->className() : scope->name();
+ const auto &access = members->m_child;
+
+ const auto scopeIt = scope->m_properties.find(access->m_name);
+ if (scopeIt != scope->m_properties.end()) {
+ const QString typeName = access->m_parentType.isEmpty() ? scopeIt->typeName()
+ : access->m_parentType;
+ if (scopeIt->isList() || typeName == QLatin1String("string")) {
+ if (access->m_child && access->m_child->m_name != QLatin1String("length")) {
+ colorOut.write("Warning: ", Warning);
+ colorOut.write(
+ QString::fromLatin1(
+ "\"%1\" is a %2. You cannot access \"%3\" on it at %4:%5\n")
+ .arg(access->m_name)
+ .arg(QLatin1String(scopeIt->isList() ? "list" : "string"))
+ .arg(access->m_child->m_name)
+ .arg(access->m_child->m_location.startLine)
+ .arg(access->m_child->m_location.startColumn), Normal);
+ printContext(colorOut, code, access->m_child->m_location);
+ return false;
+ }
+ return true;
+ }
+ const ScopeTree *type = (scopeIt->type() && access->m_parentType.isEmpty())
+ ? scopeIt->type()
+ : types.value(typeName).get();
+ return checkMemberAccess(code, access.get(), type, types, colorOut);
+ }
+
+ const auto scopeMethodIt = scope->m_methods.find(access->m_name);
+ if (scopeMethodIt != scope->m_methods.end())
+ return true; // Access to property of JS function
+
+ for (const auto enumerator : scope->m_enums) {
+ for (const QString &key : enumerator.keys()) {
+ if (access->m_name != key)
+ continue;
+
+ if (!access->m_child)
+ return true;
+
+ colorOut.write("Warning: ", Warning);
+ colorOut.write(QString::fromLatin1(
+ "\"%1\" is an enum value. You cannot access \"%2\" on it at %3:%4\n")
+ .arg(access->m_name)
+ .arg(access->m_child->m_name)
+ .arg(access->m_child->m_location.startLine)
+ .arg(access->m_child->m_location.startColumn), Normal);
+ printContext(colorOut, code, access->m_child->m_location);
+ return false;
+ }
+ }
+
+ auto type = types.value(scopeName);
+ while (type) {
+ const auto typeIt = type->m_properties.find(access->m_name);
+ if (typeIt != type->m_properties.end()) {
+ const ScopeTree *propType = access->m_parentType.isEmpty()
+ ? typeIt->type()
+ : types.value(access->m_parentType).get();
+ return checkMemberAccess(code, access.get(),
+ propType ? propType : types.value(typeIt->typeName()).get(),
+ types, colorOut);
+ }
+
+ const auto typeMethodIt = type->m_methods.find(access->m_name);
+ if (typeMethodIt != type->m_methods.end()) {
+ if (access->m_child == nullptr)
+ return true;
+
+ colorOut.write("Warning: ", Warning);
+ colorOut.write(QString::fromLatin1(
+ "\"%1\" is a method. You cannot access \"%2\" on it at %3:%4\n")
+ .arg(access->m_name)
+ .arg(access->m_child->m_name)
+ .arg(access->m_child->m_location.startLine)
+ .arg(access->m_child->m_location.startColumn), Normal);
+ printContext(colorOut, code, access->m_child->m_location);
+ return false;
+ }
+
+ type = types.value(type->superclassName());
+ }
+
+ if (access->m_name.front().isUpper() && scope->scopeType() == ScopeType::QMLScope) {
+ // may be an attached type
+ const auto it = types.find(access->m_name);
+ if (it != types.end() && !(*it)->attachedTypeName().isEmpty()) {
+ const auto attached = types.find((*it)->attachedTypeName());
+ if (attached != types.end())
+ return checkMemberAccess(code, access.get(), attached->get(), types, colorOut);
+ }
}
- QStringRef beforeText;
- QStringRef issueText;
- QStringRef afterText;
+ colorOut.write("Warning: ", Warning);
+ colorOut.write(QString::fromLatin1(
+ "Property \"%1\" not found on type \"%2\" at %3:%4\n")
+ .arg(access->m_name)
+ .arg(scopeName)
+ .arg(access->m_location.startLine)
+ .arg(access->m_location.startColumn), Normal);
+ printContext(colorOut, code, access->m_location);
+ return false;
+}
+
+static const QStringList unknownBuiltins = {
+ QStringLiteral("alias"), // TODO: we cannot properly resolve aliases, yet
+ QStringLiteral("QRectF"), // TODO: should be added to builtins.qmltypes
+ QStringLiteral("QJSValue"), // We cannot say anything intelligent about untyped JS values.
+ QStringLiteral("variant"), // Same for generic variants
};
-bool ScopeTree::recheckIdentifiers(const QString& code, const QHash<QString, LanguageUtils::FakeMetaObject::ConstPtr> &qmlIDs, const ScopeTree *root, const QString& rootId, ColorOutput& colorOut) const
+bool ScopeTree::recheckIdentifiers(
+ const QString &code,
+ const QHash<QString, const ScopeTree *> &qmlIDs,
+ const QHash<QString, ScopeTree::ConstPtr> &types,
+ const ScopeTree *root, const QString &rootId,
+ ColorOutput& colorOut) const
{
bool noUnqualifiedIdentifier = true;
// revisit all scopes
- QQueue<const ScopeTree*> workQueue;
+ QQueue<const ScopeTree *> workQueue;
workQueue.enqueue(this);
while (!workQueue.empty()) {
- const ScopeTree* currentScope = workQueue.dequeue();
+ const ScopeTree *currentScope = workQueue.dequeue();
for (const auto &handler : currentScope->m_unmatchedSignalHandlers) {
colorOut.write("Warning: ", Warning);
colorOut.write(QString::fromLatin1(
@@ -147,120 +281,161 @@ bool ScopeTree::recheckIdentifiers(const QString& code, const QHash<QString, Lan
printContext(colorOut, code, handler.second);
}
- for (auto idLocationPair : currentScope->m_accessedIdentifiers) {
- if (qmlIDs.contains(idLocationPair.first))
+ for (const auto &memberAccessTree : qAsConst(currentScope->m_accessedIdentifiers)) {
+ if (currentScope->isIdInCurrentJSScopes(memberAccessTree->m_name))
+ continue;
+
+ auto it = qmlIDs.find(memberAccessTree->m_name);
+ if (it != qmlIDs.end()) {
+ if (!checkMemberAccess(code, memberAccessTree.get(), *it, types, colorOut))
+ noUnqualifiedIdentifier = false;
+ continue;
+ }
+
+ auto qmlScope = currentScope->currentQMLScope();
+ if (qmlScope->methods().contains(memberAccessTree->m_name)) {
+ // a property of a JavaScript function
+ continue;
+ }
+
+ const auto qmlIt = qmlScope->m_properties.find(memberAccessTree->m_name);
+ if (qmlIt != qmlScope->m_properties.end()) {
+ if (!memberAccessTree->m_child || unknownBuiltins.contains(qmlIt->typeName()))
+ continue;
+
+ if (!qmlIt->type()) {
+ colorOut.write("Warning: ", Warning);
+ colorOut.write(QString::fromLatin1(
+ "Type of property \"%2\" not found at %3:%4\n")
+ .arg(memberAccessTree->m_name)
+ .arg(memberAccessTree->m_location.startLine)
+ .arg(memberAccessTree->m_location.startColumn), Normal);
+ printContext(colorOut, code, memberAccessTree->m_location);
+ noUnqualifiedIdentifier = false;
+ } else if (!checkMemberAccess(code, memberAccessTree.get(), qmlIt->type(), types,
+ colorOut)) {
+ noUnqualifiedIdentifier = false;
+ }
+
continue;
- if (currentScope->isIdInCurrentScope(idLocationPair.first)) {
+ }
+
+ // TODO: Lots of builtins are missing
+ if (memberAccessTree->m_name == "Qt")
+ continue;
+
+ const auto typeIt = types.find(memberAccessTree->m_name);
+ if (typeIt != types.end()) {
+ if (!checkMemberAccess(code, memberAccessTree.get(), typeIt->get(), types,
+ colorOut)) {
+ noUnqualifiedIdentifier = false;
+ }
continue;
}
+
noUnqualifiedIdentifier = false;
colorOut.write("Warning: ", Warning);
- auto location = idLocationPair.second;
- colorOut.write(QString::asprintf("unqualified access at %d:%d\n", location.startLine,
- location.startColumn), Normal);
+ auto location = memberAccessTree->m_location;
+ colorOut.write(QString::fromLatin1("unqualified access at %1:%2\n")
+ .arg(location.startLine).arg(location.startColumn),
+ Normal);
printContext(colorOut, code, location);
// root(JS) --> program(qml) --> (first element)
- if (root->m_childScopes[0]->m_childScopes[0]->m_currentScopeQMLIdentifiers.contains(idLocationPair.first)) {
- ScopeTree *parentScope = currentScope->m_parentScope;
- while (parentScope && parentScope->scopeType() != ScopeType::QMLScope) {
- parentScope = parentScope->m_parentScope;
- }
+ const auto firstElement = root->m_childScopes[0]->m_childScopes[0];
+ if (firstElement->m_properties.contains(memberAccessTree->m_name)
+ || firstElement->m_methods.contains(memberAccessTree->m_name)
+ || firstElement->m_enums.contains(memberAccessTree->m_name)) {
colorOut.write("Note: ", Info);
- colorOut.write( idLocationPair.first + QLatin1String(" is a meber of the root element\n"), Normal );
+ colorOut.write(memberAccessTree->m_name + QLatin1String(" is a meber of the root element\n"), Normal );
colorOut.write(QLatin1String(" You can qualify the access with its id to avoid this warning:\n"), Normal);
if (rootId == QLatin1String("<id>")) {
colorOut.write("Note: ", Warning);
colorOut.write(("You first have to give the root element an id\n"));
}
IssueLocationWithContext issueLocationWithContext {code, location};
- colorOut.write(issueLocationWithContext.beforeText.toString(), Normal);
+ colorOut.write(issueLocationWithContext.beforeText().toString(), Normal);
colorOut.write(rootId + QLatin1Char('.'), Hint);
- colorOut.write(issueLocationWithContext.issueText.toString(), Normal);
- colorOut.write(issueLocationWithContext.afterText + QLatin1Char('\n'), Normal);
- } else if (currentScope->isIdInjectedFromSignal(idLocationPair.first)) {
- auto qmlScope = currentScope->getCurrentQMLScope();
- auto methodUsages = qmlScope->m_injectedSignalIdentifiers.values(idLocationPair.first);
- auto location = idLocationPair.second;
+ colorOut.write(issueLocationWithContext.issueText().toString(), Normal);
+ colorOut.write(issueLocationWithContext.afterText() + QLatin1Char('\n'), Normal);
+ } else if (currentScope->isIdInjectedFromSignal(memberAccessTree->m_name)) {
+ auto methodUsages = currentScope->currentQMLScope()->m_injectedSignalIdentifiers
+ .values(memberAccessTree->m_name);
+ auto location = memberAccessTree->m_location;
// sort the list of signal handlers by their occurrence in the source code
// then, we select the first one whose location is after the unqualified id
// and go one step backwards to get the one which we actually need
- std::sort(methodUsages.begin(), methodUsages.end(), [](const MethodUsage m1, const MethodUsage m2) {
- return m1.loc.startLine < m2.loc.startLine || (m1.loc.startLine == m2.loc.startLine && m1.loc.startColumn < m2.loc.startColumn);
+ std::sort(methodUsages.begin(), methodUsages.end(),
+ [](const MethodUsage &m1, const MethodUsage &m2) {
+ return m1.loc.startLine < m2.loc.startLine
+ || (m1.loc.startLine == m2.loc.startLine
+ && m1.loc.startColumn < m2.loc.startColumn);
});
- auto oneBehindIt = std::find_if(methodUsages.begin(), methodUsages.end(), [&location](MethodUsage methodUsage) {
- return location.startLine < methodUsage.loc.startLine || (location.startLine == methodUsage.loc.startLine && location.startColumn < methodUsage.loc.startColumn);
+ auto oneBehindIt = std::find_if(methodUsages.begin(), methodUsages.end(),
+ [&location](const MethodUsage &methodUsage) {
+ return location.startLine < methodUsage.loc.startLine
+ || (location.startLine == methodUsage.loc.startLine
+ && location.startColumn < methodUsage.loc.startColumn);
});
auto methodUsage = *(--oneBehindIt);
colorOut.write("Note:", Info);
- colorOut.write(idLocationPair.first + QString::asprintf(" is accessible in this scope because you are handling a signal at %d:%d\n", methodUsage.loc.startLine, methodUsage.loc.startColumn), Normal);
+ colorOut.write(
+ memberAccessTree->m_name + QString::fromLatin1(
+ " is accessible in this scope because "
+ "you are handling a signal at %1:%2\n")
+ .arg(methodUsage.loc.startLine).arg(methodUsage.loc.startColumn),
+ Normal);
colorOut.write("Consider using a function instead\n", Normal);
IssueLocationWithContext context {code, methodUsage.loc};
- colorOut.write(context.beforeText + QLatin1Char(' '));
+ colorOut.write(context.beforeText() + QLatin1Char(' '));
colorOut.write(methodUsage.hasMultilineHandlerBody ? "function(" : "(", Hint);
const auto parameters = methodUsage.method.parameterNames();
for (int numParams = parameters.size(); numParams > 0; --numParams) {
colorOut.write(parameters.at(parameters.size() - numParams), Hint);
- if (numParams > 1) {
+ if (numParams > 1)
colorOut.write(", ", Hint);
- }
}
colorOut.write(methodUsage.hasMultilineHandlerBody ? ")" : ") => ", Hint);
colorOut.write(" {...", Normal);
}
colorOut.write("\n\n\n", Normal);
}
- for (auto const& childScope: currentScope->m_childScopes) {
- workQueue.enqueue(childScope);
- }
+ for (auto const &childScope: currentScope->m_childScopes)
+ workQueue.enqueue(childScope.get());
}
return noUnqualifiedIdentifier;
}
-QMap<QString, LanguageUtils::FakeMetaMethod>const &ScopeTree::methods() const
+bool ScopeTree::isIdInCurrentQMlScopes(const QString &id) const
{
- return m_methods;
+ const auto *qmlScope = currentQMLScope();
+ return qmlScope->m_properties.contains(id)
+ || qmlScope->m_methods.contains(id)
+ || qmlScope->m_enums.contains(id);
}
-bool ScopeTree::isIdInCurrentQMlScopes(QString id) const
-{
- auto qmlScope = getCurrentQMLScope();
- return qmlScope->m_currentScopeQMLIdentifiers.contains(id) || qmlScope->m_methods.contains(id);
-}
-
-bool ScopeTree::isIdInCurrentJSScopes(QString id) const
+bool ScopeTree::isIdInCurrentJSScopes(const QString &id) const
{
auto jsScope = this;
while (jsScope) {
- if (jsScope->m_scopeType != ScopeType::QMLScope && jsScope->m_currentScopeJSIdentifiers.contains(id))
+ if (jsScope->m_scopeType != ScopeType::QMLScope && jsScope->m_jsIdentifiers.contains(id))
return true;
jsScope = jsScope->m_parentScope;
}
return false;
}
-bool ScopeTree::isIdInjectedFromSignal(QString id) const
+bool ScopeTree::isIdInjectedFromSignal(const QString &id) const
{
- auto qmlScope = getCurrentQMLScope();
- return qmlScope->m_injectedSignalIdentifiers.contains(id);
+ return currentQMLScope()->m_injectedSignalIdentifiers.contains(id);
}
-const ScopeTree *ScopeTree::getCurrentQMLScope() const
+const ScopeTree *ScopeTree::currentQMLScope() const
{
auto qmlScope = this;
- while (qmlScope && qmlScope->m_scopeType != ScopeType::QMLScope) {
+ while (qmlScope && qmlScope->m_scopeType != ScopeType::QMLScope)
qmlScope = qmlScope->m_parentScope;
- }
- return qmlScope;
-}
-
-ScopeTree *ScopeTree::getCurrentQMLScope()
-{
- auto qmlScope = this;
- while (qmlScope && qmlScope->m_scopeType != ScopeType::QMLScope) {
- qmlScope = qmlScope->m_parentScope;
- }
return qmlScope;
}
@@ -268,30 +443,46 @@ void ScopeTree::printContext(ColorOutput &colorOut, const QString &code,
const QQmlJS::AST::SourceLocation &location) const
{
IssueLocationWithContext issueLocationWithContext {code, location};
- colorOut.write(issueLocationWithContext.beforeText.toString(), Normal);
- colorOut.write(issueLocationWithContext.issueText.toString(), Error);
- colorOut.write(issueLocationWithContext.afterText.toString() + QLatin1Char('\n'), Normal);
- int tabCount = issueLocationWithContext.beforeText.count(QLatin1Char('\t'));
- colorOut.write(QString(" ").repeated(issueLocationWithContext.beforeText.length() - tabCount)
+ colorOut.write(issueLocationWithContext.beforeText().toString(), Normal);
+ colorOut.write(issueLocationWithContext.issueText().toString(), Error);
+ colorOut.write(issueLocationWithContext.afterText().toString() + QLatin1Char('\n'), Normal);
+ int tabCount = issueLocationWithContext.beforeText().count(QLatin1Char('\t'));
+ colorOut.write(QString(" ").repeated(issueLocationWithContext.beforeText().length() - tabCount)
+ QString("\t").repeated(tabCount)
+ QString("^").repeated(location.length)
+ QLatin1Char('\n'), Normal);
}
-ScopeType ScopeTree::scopeType() {return m_scopeType;}
+void ScopeTree::addExport(const QString &name, const QString &package,
+ const ComponentVersion &version)
+{
+ m_exports.append(Export(package, name, version, 0));
+}
-void ScopeTree::addMethod(LanguageUtils::FakeMetaMethod method)
+void ScopeTree::setExportMetaObjectRevision(int exportIndex, int metaObjectRevision)
{
- m_methods.insert(method.methodName(), method);
+ m_exports[exportIndex].setMetaObjectRevision(metaObjectRevision);
}
-void ScopeTree::addMethodsFromMetaObject(LanguageUtils::FakeMetaObject::ConstPtr metaObject)
+void ScopeTree::updateParentProperty(const ScopeTree *scope)
{
- if (metaObject) {
- auto methodCount = metaObject->methodCount();
- for (auto i = 0; i < methodCount; ++i) {
- auto method = metaObject->method(i);
- this->addMethod(method);
- }
- }
+ auto it = m_properties.find(QLatin1String("parent"));
+ if (it != m_properties.end()
+ && scope->name() != QLatin1String("Component")
+ && scope->name() != QLatin1String("program"))
+ it->setType(scope);
+}
+
+ScopeTree::Export::Export(QString package, QString type, const ComponentVersion &version,
+ int metaObjectRevision) :
+ m_package(std::move(package)),
+ m_type(std::move(type)),
+ m_version(version),
+ m_metaObjectRevision(metaObjectRevision)
+{
+}
+
+bool ScopeTree::Export::isValid() const
+{
+ return m_version.isValid() || !m_package.isEmpty() || !m_type.isEmpty();
}
diff --git a/tools/qmllint/scopetree.h b/tools/qmllint/scopetree.h
index 52cdc45e96..f5d1155a49 100644
--- a/tools/qmllint/scopetree.h
+++ b/tools/qmllint/scopetree.h
@@ -29,15 +29,28 @@
#ifndef SCOPETREE_H
#define SCOPETREE_H
-#include "fakemetaobject.h"
-#include "private/qqmljsast_p.h"
-#include "private/qqmljssourcelocation_p.h"
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
-#include <QSet>
-#include <QString>
-#include <QMap>
+#include "metatypes.h"
+#include "componentversion.h"
-enum MessageColors{
+#include <QtQml/private/qqmljsast_p.h>
+#include <QtQml/private/qqmljssourcelocation_p.h>
+
+#include <QtCore/qset.h>
+#include <QtCore/qhash.h>
+#include <QtCore/qstring.h>
+
+enum MessageColors
+{
Error,
Warning,
Info,
@@ -54,58 +67,157 @@ enum class ScopeType
struct MethodUsage
{
- LanguageUtils::FakeMetaMethod method;
+ MetaMethod method;
QQmlJS::AST::SourceLocation loc;
bool hasMultilineHandlerBody;
};
class ColorOutput;
-
-class ScopeTree {
+class ScopeTree
+{
+ Q_DISABLE_COPY_MOVE(ScopeTree)
public:
- ScopeTree(ScopeType type, QString name="<none given>", ScopeTree* parentScope=nullptr);
- ~ScopeTree() {qDeleteAll(m_childScopes);}
+ using Ptr = QSharedPointer<ScopeTree>;
+ using ConstPtr = QSharedPointer<const ScopeTree>;
+
+ class Export {
+ public:
+ Export() = default;
+ Export(QString package, QString type, const ComponentVersion &version,
+ int metaObjectRevision);
+
+ bool isValid() const;
+
+ int metaObjectRevision() const { return m_metaObjectRevision; }
+ void setMetaObjectRevision(int metaObjectRevision)
+ {
+ m_metaObjectRevision = metaObjectRevision;
+ }
- ScopeTree* createNewChildScope(ScopeType type, QString name);
- ScopeTree* parentScope();
+ QString package() const { return m_package; }
+ QString type() const { return m_type; }
- void insertJSIdentifier(QString id, QQmlJS::AST::VariableScope scope);
- void insertQMLIdentifier(QString id);
- void insertSignalIdentifier(QString id, LanguageUtils::FakeMetaMethod method, QQmlJS::AST::SourceLocation loc, bool hasMultilineHandlerBody);
- void insertPropertyIdentifier(QString id); // inserts property as qml identifier as well as the corresponding
+ private:
+ QString m_package;
+ QString m_type;
+ ComponentVersion m_version;
+ int m_metaObjectRevision = 0;
+ };
+
+ ScopeTree(ScopeType type, QString name = QString(),
+ ScopeTree *parentScope = nullptr);
+
+ ScopeTree::Ptr createNewChildScope(ScopeType type, const QString &name);
+ ScopeTree *parentScope() const { return m_parentScope; }
+
+ void insertJSIdentifier(const QString &id, QQmlJS::AST::VariableScope scope);
+ void insertSignalIdentifier(const QString &id, const MetaMethod &method,
+ const QQmlJS::AST::SourceLocation &loc, bool hasMultilineHandlerBody);
+ // inserts property as qml identifier as well as the corresponding
+ void insertPropertyIdentifier(const MetaProperty &prop);
void addUnmatchedSignalHandler(const QString &handler,
const QQmlJS::AST::SourceLocation &location);
- bool isIdInCurrentScope(QString const &id) const;
- void addIdToAccssedIfNotInParentScopes(QPair<QString, QQmlJS::AST::SourceLocation> const& id_loc_pair, const QSet<QString>& unknownImports);
+ bool isIdInCurrentScope(const QString &id) const;
+ void addIdToAccessed(const QString &id, const QQmlJS::AST::SourceLocation &location);
+ void accessMember(const QString &name, const QString &parentType,
+ const QQmlJS::AST::SourceLocation &location);
+ void resetMemberScope();
bool isVisualRootScope() const;
- QString name() const;
+ QString name() const { return m_name; }
+
+ bool recheckIdentifiers(
+ const QString &code,
+ const QHash<QString, const ScopeTree *> &qmlIDs,
+ const QHash<QString, ScopeTree::ConstPtr> &types,
+ const ScopeTree *root, const QString& rootId, ColorOutput &colorOut) const;
+
+ ScopeType scopeType() const { return m_scopeType; }
+
+ void addMethods(const QHash<QString, MetaMethod> &methods) { m_methods.insert(methods); }
+ void addMethod(const MetaMethod &method) { m_methods.insert(method.methodName(), method); }
+ QHash<QString, MetaMethod> methods() const { return m_methods; }
+
+ void addEnum(const MetaEnum &fakeEnum) { m_enums.insert(fakeEnum.name(), fakeEnum); }
+ QHash<QString, MetaEnum> enums() const { return m_enums; }
+
+ QString className() const { return m_className; }
+ void setClassName(const QString &name) { m_className = name; }
- bool recheckIdentifiers(const QString &code, const QHash<QString, LanguageUtils::FakeMetaObject::ConstPtr>& qmlIDs, const ScopeTree *root, const QString& rootId, ColorOutput &colorOut) const;
- ScopeType scopeType();
- void addMethod(LanguageUtils::FakeMetaMethod);
- void addMethodsFromMetaObject(LanguageUtils::FakeMetaObject::ConstPtr metaObject);
- QMap<QString, LanguageUtils::FakeMetaMethod>const & methods() const;
+ void addExport(const QString &name, const QString &package, const ComponentVersion &version);
+ void setExportMetaObjectRevision(int exportIndex, int metaObjectRevision);
+ QList<Export> exports() const { return m_exports; }
+
+ void setSuperclassName(const QString &superclass) { m_superName = superclass; }
+ QString superclassName() const { return m_superName; }
+
+ void addProperty(const MetaProperty &prop) { m_properties.insert(prop.propertyName(), prop); }
+ QHash<QString, MetaProperty> properties() const { return m_properties; }
+ void updateParentProperty(const ScopeTree *scope);
+
+ QString defaultPropertyName() const { return m_defaultPropertyName; }
+ void setDefaultPropertyName(const QString &name) { m_defaultPropertyName = name; }
+
+ QString attachedTypeName() const { return m_attachedTypeName; }
+ void setAttachedTypeName(const QString &name) { m_attachedTypeName = name; }
+
+ bool isSingleton() const { return m_isSingleton; }
+ bool isCreatable() const { return m_isCreatable; }
+ bool isComposite() const { return m_isComposite; }
+ void setIsSingleton(bool value) { m_isSingleton = value; }
+ void setIsCreatable(bool value) { m_isCreatable = value; }
+ void setIsComposite(bool value) { m_isSingleton = value; }
private:
- QSet<QString> m_currentScopeJSIdentifiers;
- QSet<QString> m_currentScopeQMLIdentifiers;
+ struct FieldMemberList
+ {
+ QString m_name;
+ QString m_parentType;
+ QQmlJS::AST::SourceLocation m_location;
+ std::unique_ptr<FieldMemberList> m_child;
+ };
+
+ QSet<QString> m_jsIdentifiers;
QMultiHash<QString, MethodUsage> m_injectedSignalIdentifiers;
- QMap<QString, LanguageUtils::FakeMetaMethod> m_methods;
- QVector<QPair<QString, QQmlJS::AST::SourceLocation>> m_accessedIdentifiers;
- QVector<ScopeTree*> m_childScopes;
+
+ QHash<QString, MetaMethod> m_methods;
+ QHash<QString, MetaProperty> m_properties;
+ QHash<QString, MetaEnum> m_enums;
+
+ std::vector<std::unique_ptr<FieldMemberList>> m_accessedIdentifiers;
+ FieldMemberList *m_currentFieldMember = nullptr;
+
+ QVector<QPair<QString, QQmlJS::AST::SourceLocation>> m_unmatchedSignalHandlers;
+
+ QVector<ScopeTree::Ptr> m_childScopes;
ScopeTree *m_parentScope;
+
QString m_name;
- ScopeType m_scopeType;
- QVector<QPair<QString, QQmlJS::AST::SourceLocation>> m_unmatchedSignalHandlers;
+ QString m_className;
+ QString m_superName;
+
+ ScopeType m_scopeType = ScopeType::QMLScope;
+ QList<Export> m_exports;
- bool isIdInCurrentQMlScopes(QString id) const;
- bool isIdInCurrentJSScopes(QString id) const;
- bool isIdInjectedFromSignal(QString id) const;
- const ScopeTree* getCurrentQMLScope() const;
- ScopeTree* getCurrentQMLScope();
- void printContext(ColorOutput& colorOut, const QString &code,
+ QString m_defaultPropertyName;
+ QString m_attachedTypeName;
+ bool m_isSingleton = false;
+ bool m_isCreatable = true;
+ bool m_isComposite = false;
+
+ bool isIdInCurrentQMlScopes(const QString &id) const;
+ bool isIdInCurrentJSScopes(const QString &id) const;
+ bool isIdInjectedFromSignal(const QString &id) const;
+ const ScopeTree *currentQMLScope() const;
+ void printContext(ColorOutput &colorOut, const QString &code,
const QQmlJS::AST::SourceLocation &location) const;
+ bool checkMemberAccess(
+ const QString &code,
+ FieldMemberList *members,
+ const ScopeTree *scope,
+ const QHash<QString, ScopeTree::ConstPtr> &types,
+ ColorOutput& colorOut) const;
};
+
#endif // SCOPETREE_H
diff --git a/tools/qmllint/qmljstypedescriptionreader.cpp b/tools/qmllint/typedescriptionreader.cpp
index b8aecdddb1..3dc87ffc8d 100644
--- a/tools/qmllint/qmljstypedescriptionreader.cpp
+++ b/tools/qmllint/typedescriptionreader.cpp
@@ -26,25 +26,18 @@
**
****************************************************************************/
-#include "qmljstypedescriptionreader.h"
+#include "typedescriptionreader.h"
-#include <private/qqmljsparser_p.h>
-#include <private/qqmljslexer_p.h>
-#include <private/qqmljsengine_p.h>
+#include <QtQml/private/qqmljsparser_p.h>
+#include <QtQml/private/qqmljslexer_p.h>
+#include <QtQml/private/qqmljsengine_p.h>
-#include <QDir>
-
-#define QTC_ASSERT_STRINGIFY_HELPER(x) #x
-#define QTC_ASSERT_STRINGIFY(x) QTC_ASSERT_STRINGIFY_HELPER(x)
-#define QTC_ASSERT_STRING(cond) qDebug() << (\
- "\"" cond"\" in file " __FILE__ ", line " QTC_ASSERT_STRINGIFY(__LINE__))
-#define QTC_ASSERT(cond, action) if (Q_LIKELY(cond)) {} else { QTC_ASSERT_STRING(#cond); action; } do {} while (0)
+#include <QtCore/qdir.h>
using namespace QQmlJS;
using namespace QQmlJS::AST;
-using namespace LanguageUtils;
-QString toString(const AST::UiQualifiedId *qualifiedId, QChar delimiter = QLatin1Char('.'))
+QString toString(const UiQualifiedId *qualifiedId, QChar delimiter = QLatin1Char('.'))
{
QString result;
@@ -58,17 +51,8 @@ QString toString(const AST::UiQualifiedId *qualifiedId, QChar delimiter = QLatin
return result;
}
-TypeDescriptionReader::TypeDescriptionReader(const QString &fileName, const QString &data)
- : _fileName (fileName), _source(data), _objects(0)
-{
-}
-
-TypeDescriptionReader::~TypeDescriptionReader()
-{
-}
-
bool TypeDescriptionReader::operator()(
- QHash<QString, FakeMetaObject::ConstPtr> *objects,
+ QHash<QString, ScopeTree::ConstPtr> *objects,
QList<ModuleApiInfo> *moduleApis,
QStringList *dependencies)
{
@@ -77,32 +61,22 @@ bool TypeDescriptionReader::operator()(
Lexer lexer(&engine);
Parser parser(&engine);
- lexer.setCode(_source, /*line = */ 1, /*qmlMode = */true);
+ lexer.setCode(m_source, /*lineno = */ 1, /*qmlMode = */true);
if (!parser.parse()) {
- _errorMessage = QString::fromLatin1("%1:%2: %3").arg(
+ m_errorMessage = QString::fromLatin1("%1:%2: %3").arg(
QString::number(parser.errorLineNumber()),
QString::number(parser.errorColumnNumber()),
parser.errorMessage());
return false;
}
- _objects = objects;
- _moduleApis = moduleApis;
- _dependencies = dependencies;
+ m_objects = objects;
+ m_moduleApis = moduleApis;
+ m_dependencies = dependencies;
readDocument(parser.ast());
- return _errorMessage.isEmpty();
-}
-
-QString TypeDescriptionReader::errorMessage() const
-{
- return _errorMessage;
-}
-
-QString TypeDescriptionReader::warningMessage() const
-{
- return _warningMessage;
+ return m_errorMessage.isEmpty();
}
void TypeDescriptionReader::readDocument(UiProgram *ast)
@@ -112,12 +86,12 @@ void TypeDescriptionReader::readDocument(UiProgram *ast)
return;
}
- if (!ast->headers || ast->headers->next || !AST::cast<AST::UiImport *>(ast->headers->headerItem)) {
+ if (!ast->headers || ast->headers->next || !cast<UiImport *>(ast->headers->headerItem)) {
addError(SourceLocation(), tr("Expected a single import."));
return;
}
- UiImport *import = AST::cast<AST::UiImport *>(ast->headers->headerItem);
+ auto *import = cast<UiImport *>(ast->headers->headerItem);
if (toString(import->importUri) != QLatin1String("QtQuick.tooling")) {
addError(import->importToken, tr("Expected import of QtQuick.tooling."));
return;
@@ -129,7 +103,8 @@ void TypeDescriptionReader::readDocument(UiProgram *ast)
}
if (import->version->majorVersion != 1) {
- addError(import->version->firstSourceLocation(), tr("Major version different from 1 not supported."));
+ addError(import->version->firstSourceLocation(),
+ tr("Major version different from 1 not supported."));
return;
}
@@ -138,7 +113,7 @@ void TypeDescriptionReader::readDocument(UiProgram *ast)
return;
}
- UiObjectDefinition *module = AST::cast<UiObjectDefinition *>(ast->members->member);
+ auto *module = cast<UiObjectDefinition *>(ast->members->member);
if (!module) {
addError(SourceLocation(), tr("Expected document to contain a single object definition."));
return;
@@ -156,9 +131,9 @@ void TypeDescriptionReader::readModule(UiObjectDefinition *ast)
{
for (UiObjectMemberList *it = ast->initializer->members; it; it = it->next) {
UiObjectMember *member = it->member;
- UiObjectDefinition *component = AST::cast<UiObjectDefinition *>(member);
+ auto *component = cast<UiObjectDefinition *>(member);
- UiScriptBinding *script = AST::cast<UiScriptBinding *>(member);
+ auto *script = cast<UiScriptBinding *>(member);
if (script && (toString(script->qualifiedId) == QStringLiteral("dependencies"))) {
readDependencies(script);
continue;
@@ -168,7 +143,8 @@ void TypeDescriptionReader::readModule(UiObjectDefinition *ast)
if (component)
typeName = toString(component->qualifiedTypeNameId);
- if (!component || (typeName != QLatin1String("Component") && typeName != QLatin1String("ModuleApi"))) {
+ if (!component || (typeName != QLatin1String("Component")
+ && typeName != QLatin1String("ModuleApi"))) {
continue;
}
@@ -181,8 +157,8 @@ void TypeDescriptionReader::readModule(UiObjectDefinition *ast)
void TypeDescriptionReader::addError(const SourceLocation &loc, const QString &message)
{
- _errorMessage += QString::fromLatin1("%1:%2:%3: %4\n").arg(
- QDir::toNativeSeparators(_fileName),
+ m_errorMessage += QString::fromLatin1("%1:%2:%3: %4\n").arg(
+ QDir::toNativeSeparators(m_fileName),
QString::number(loc.startLine),
QString::number(loc.startColumn),
message);
@@ -190,8 +166,8 @@ void TypeDescriptionReader::addError(const SourceLocation &loc, const QString &m
void TypeDescriptionReader::addWarning(const SourceLocation &loc, const QString &message)
{
- _warningMessage += QString::fromLatin1("%1:%2:%3: %4\n").arg(
- QDir::toNativeSeparators(_fileName),
+ m_warningMessage += QString::fromLatin1("%1:%2:%3: %4\n").arg(
+ QDir::toNativeSeparators(m_fileName),
QString::number(loc.startLine),
QString::number(loc.startColumn),
message);
@@ -199,83 +175,82 @@ void TypeDescriptionReader::addWarning(const SourceLocation &loc, const QString
void TypeDescriptionReader::readDependencies(UiScriptBinding *ast)
{
- ExpressionStatement *stmt = AST::cast<ExpressionStatement*>(ast->statement);
+ auto *stmt = cast<ExpressionStatement*>(ast->statement);
if (!stmt) {
addError(ast->statement->firstSourceLocation(), tr("Expected dependency definitions"));
return;
}
- ArrayPattern *exp = AST::cast<ArrayPattern *>(stmt->expression);
+ auto *exp = cast<ArrayPattern *>(stmt->expression);
if (!exp) {
addError(stmt->expression->firstSourceLocation(), tr("Expected dependency definitions"));
return;
}
for (PatternElementList *l = exp->elements; l; l = l->next) {
- //StringLiteral *str = AST::cast<StringLiteral *>(l->element->initializer);
- StringLiteral *str = AST::cast<StringLiteral *>(l->element->initializer);
- *_dependencies << str->value.toString();
+ auto *str = cast<StringLiteral *>(l->element->initializer);
+ *m_dependencies << str->value.toString();
}
}
void TypeDescriptionReader::readComponent(UiObjectDefinition *ast)
{
- FakeMetaObject::Ptr fmo(new FakeMetaObject);
+ ScopeTree::Ptr scope(new ScopeTree(ScopeType::QMLScope));
for (UiObjectMemberList *it = ast->initializer->members; it; it = it->next) {
UiObjectMember *member = it->member;
- UiObjectDefinition *component = AST::cast<UiObjectDefinition *>(member);
- UiScriptBinding *script = AST::cast<UiScriptBinding *>(member);
+ auto *component = cast<UiObjectDefinition *>(member);
+ auto *script = cast<UiScriptBinding *>(member);
if (component) {
QString name = toString(component->qualifiedTypeNameId);
if (name == QLatin1String("Property"))
- readProperty(component, fmo);
+ readProperty(component, scope);
else if (name == QLatin1String("Method") || name == QLatin1String("Signal"))
- readSignalOrMethod(component, name == QLatin1String("Method"), fmo);
+ readSignalOrMethod(component, name == QLatin1String("Method"), scope);
else if (name == QLatin1String("Enum"))
- readEnum(component, fmo);
+ readEnum(component, scope);
else
addWarning(component->firstSourceLocation(),
- tr("Expected only Property, Method, Signal and Enum object definitions, not \"%1\".")
- .arg(name));
+ tr("Expected only Property, Method, Signal and Enum object definitions, "
+ "not \"%1\".").arg(name));
} else if (script) {
QString name = toString(script->qualifiedId);
if (name == QLatin1String("name")) {
- fmo->setClassName(readStringBinding(script));
+ scope->setClassName(readStringBinding(script));
} else if (name == QLatin1String("prototype")) {
- fmo->setSuperclassName(readStringBinding(script));
+ scope->setSuperclassName(readStringBinding(script));
} else if (name == QLatin1String("defaultProperty")) {
- fmo->setDefaultPropertyName(readStringBinding(script));
+ scope->setDefaultPropertyName(readStringBinding(script));
} else if (name == QLatin1String("exports")) {
- readExports(script, fmo);
+ readExports(script, scope);
} else if (name == QLatin1String("exportMetaObjectRevisions")) {
- readMetaObjectRevisions(script, fmo);
+ readMetaObjectRevisions(script, scope);
} else if (name == QLatin1String("attachedType")) {
- fmo->setAttachedTypeName(readStringBinding(script));
+ scope->setAttachedTypeName(readStringBinding(script));
} else if (name == QLatin1String("isSingleton")) {
- fmo->setIsSingleton(readBoolBinding(script));
+ scope->setIsSingleton(readBoolBinding(script));
} else if (name == QLatin1String("isCreatable")) {
- fmo->setIsCreatable(readBoolBinding(script));
+ scope->setIsCreatable(readBoolBinding(script));
} else if (name == QLatin1String("isComposite")) {
- fmo->setIsComposite(readBoolBinding(script));
+ scope->setIsComposite(readBoolBinding(script));
} else {
addWarning(script->firstSourceLocation(),
- tr("Expected only name, prototype, defaultProperty, attachedType, exports, "
- "isSingleton, isCreatable, isComposite and exportMetaObjectRevisions "
- "script bindings, not \"%1\".").arg(name));
+ tr("Expected only name, prototype, defaultProperty, attachedType, "
+ "exports, isSingleton, isCreatable, isComposite and "
+ "exportMetaObjectRevisions script bindings, not \"%1\".").arg(name));
}
} else {
- addWarning(member->firstSourceLocation(), tr("Expected only script bindings and object definitions."));
+ addWarning(member->firstSourceLocation(),
+ tr("Expected only script bindings and object definitions."));
}
}
- if (fmo->className().isEmpty()) {
+ if (scope->className().isEmpty()) {
addError(ast->firstSourceLocation(), tr("Component definition is missing a name binding."));
return;
}
// ### add implicit export into the package of c++ types
- fmo->addExport(fmo->className(), QStringLiteral("<cpp>"), ComponentVersion());
- fmo->updateFingerprint();
- _objects->insert(fmo->className(), fmo);
+ scope->addExport(scope->className(), QStringLiteral("<cpp>"), ComponentVersion());
+ m_objects->insert(scope->className(), scope);
}
void TypeDescriptionReader::readModuleApi(UiObjectDefinition *ast)
@@ -284,7 +259,7 @@ void TypeDescriptionReader::readModuleApi(UiObjectDefinition *ast)
for (UiObjectMemberList *it = ast->initializer->members; it; it = it->next) {
UiObjectMember *member = it->member;
- UiScriptBinding *script = AST::cast<UiScriptBinding *>(member);
+ auto *script = cast<UiScriptBinding *>(member);
if (script) {
const QString name = toString(script->qualifiedId);
@@ -304,58 +279,65 @@ void TypeDescriptionReader::readModuleApi(UiObjectDefinition *ast)
}
if (!apiInfo.version.isValid()) {
- addError(ast->firstSourceLocation(), tr("ModuleApi definition has no or invalid version binding."));
+ addError(ast->firstSourceLocation(),
+ tr("ModuleApi definition has no or invalid version binding."));
return;
}
- if (_moduleApis)
- _moduleApis->append(apiInfo);
+ if (m_moduleApis)
+ m_moduleApis->append(apiInfo);
}
-void TypeDescriptionReader::readSignalOrMethod(UiObjectDefinition *ast, bool isMethod, FakeMetaObject::Ptr fmo)
+void TypeDescriptionReader::readSignalOrMethod(UiObjectDefinition *ast, bool isMethod,
+ const ScopeTree::Ptr &scope)
{
- FakeMetaMethod fmm;
+ MetaMethod metaMethod;
// ### confusion between Method and Slot. Method should be removed.
if (isMethod)
- fmm.setMethodType(FakeMetaMethod::Slot);
+ metaMethod.setMethodType(MetaMethod::Slot);
else
- fmm.setMethodType(FakeMetaMethod::Signal);
+ metaMethod.setMethodType(MetaMethod::Signal);
for (UiObjectMemberList *it = ast->initializer->members; it; it = it->next) {
UiObjectMember *member = it->member;
- UiObjectDefinition *component = AST::cast<UiObjectDefinition *>(member);
- UiScriptBinding *script = AST::cast<UiScriptBinding *>(member);
+ auto *component = cast<UiObjectDefinition *>(member);
+ auto *script = cast<UiScriptBinding *>(member);
if (component) {
QString name = toString(component->qualifiedTypeNameId);
- if (name == QLatin1String("Parameter"))
- readParameter(component, &fmm);
- else
- addWarning(component->firstSourceLocation(), tr("Expected only Parameter object definitions."));
+ if (name == QLatin1String("Parameter")) {
+ readParameter(component, &metaMethod);
+ } else {
+ addWarning(component->firstSourceLocation(),
+ tr("Expected only Parameter object definitions."));
+ }
} else if (script) {
QString name = toString(script->qualifiedId);
- if (name == QLatin1String("name"))
- fmm.setMethodName(readStringBinding(script));
- else if (name == QLatin1String("type"))
- fmm.setReturnType(readStringBinding(script));
- else if (name == QLatin1String("revision"))
- fmm.setRevision(readIntBinding(script));
- else
- addWarning(script->firstSourceLocation(), tr("Expected only name and type script bindings."));
-
+ if (name == QLatin1String("name")) {
+ metaMethod.setMethodName(readStringBinding(script));
+ } else if (name == QLatin1String("type")) {
+ metaMethod.setReturnType(readStringBinding(script));
+ } else if (name == QLatin1String("revision")) {
+ metaMethod.setRevision(readIntBinding(script));
+ } else {
+ addWarning(script->firstSourceLocation(),
+ tr("Expected only name and type script bindings."));
+ }
} else {
- addWarning(member->firstSourceLocation(), tr("Expected only script bindings and object definitions."));
+ addWarning(member->firstSourceLocation(),
+ tr("Expected only script bindings and object definitions."));
}
}
- if (fmm.methodName().isEmpty()) {
- addError(ast->firstSourceLocation(), tr("Method or signal is missing a name script binding."));
+ if (metaMethod.methodName().isEmpty()) {
+ addError(ast->firstSourceLocation(),
+ tr("Method or signal is missing a name script binding."));
return;
}
- fmo->addMethod(fmm);
+ scope->addMethod(metaMethod);
}
-void TypeDescriptionReader::readProperty(UiObjectDefinition *ast, FakeMetaObject::Ptr fmo)
+void TypeDescriptionReader::readProperty(UiObjectDefinition *ast, const ScopeTree::Ptr &scope)
{
QString name;
QString type;
@@ -366,69 +348,75 @@ void TypeDescriptionReader::readProperty(UiObjectDefinition *ast, FakeMetaObject
for (UiObjectMemberList *it = ast->initializer->members; it; it = it->next) {
UiObjectMember *member = it->member;
- UiScriptBinding *script = AST::cast<UiScriptBinding *>(member);
+ auto *script = cast<UiScriptBinding *>(member);
if (!script) {
addWarning(member->firstSourceLocation(), tr("Expected script binding."));
continue;
}
QString id = toString(script->qualifiedId);
- if (id == QLatin1String("name"))
+ if (id == QLatin1String("name")) {
name = readStringBinding(script);
- else if (id == QLatin1String("type"))
+ } else if (id == QLatin1String("type")) {
type = readStringBinding(script);
- else if (id == QLatin1String("isPointer"))
+ } else if (id == QLatin1String("isPointer")) {
isPointer = readBoolBinding(script);
- else if (id == QLatin1String("isReadonly"))
+ } else if (id == QLatin1String("isReadonly")) {
isReadonly = readBoolBinding(script);
- else if (id == QLatin1String("isList"))
+ } else if (id == QLatin1String("isList")) {
isList = readBoolBinding(script);
- else if (id == QLatin1String("revision"))
+ } else if (id == QLatin1String("revision")) {
revision = readIntBinding(script);
- else
- addWarning(script->firstSourceLocation(), tr("Expected only type, name, revision, isPointer, isReadonly and isList script bindings."));
+ } else {
+ addWarning(script->firstSourceLocation(),
+ tr("Expected only type, name, revision, isPointer, isReadonly and"
+ " isList script bindings."));
+ }
}
if (name.isEmpty() || type.isEmpty()) {
- addError(ast->firstSourceLocation(), tr("Property object is missing a name or type script binding."));
+ addError(ast->firstSourceLocation(),
+ tr("Property object is missing a name or type script binding."));
return;
}
- fmo->addProperty(FakeMetaProperty(name, type, isList, !isReadonly, isPointer, revision));
+ scope->addProperty(MetaProperty(name, type, isList, !isReadonly, isPointer, false, revision));
}
-void TypeDescriptionReader::readEnum(UiObjectDefinition *ast, FakeMetaObject::Ptr fmo)
+void TypeDescriptionReader::readEnum(UiObjectDefinition *ast, const ScopeTree::Ptr &scope)
{
- FakeMetaEnum fme;
+ MetaEnum metaEnum;
for (UiObjectMemberList *it = ast->initializer->members; it; it = it->next) {
UiObjectMember *member = it->member;
- UiScriptBinding *script = AST::cast<UiScriptBinding *>(member);
+ auto *script = cast<UiScriptBinding *>(member);
if (!script) {
addWarning(member->firstSourceLocation(), tr("Expected script binding."));
continue;
}
QString name = toString(script->qualifiedId);
- if (name == QLatin1String("name"))
- fme.setName(readStringBinding(script));
- else if (name == QLatin1String("values"))
- readEnumValues(script, &fme);
- else
- addWarning(script->firstSourceLocation(), tr("Expected only name and values script bindings."));
+ if (name == QLatin1String("name")) {
+ metaEnum.setName(readStringBinding(script));
+ } else if (name == QLatin1String("values")) {
+ readEnumValues(script, &metaEnum);
+ } else {
+ addWarning(script->firstSourceLocation(),
+ tr("Expected only name and values script bindings."));
+ }
}
- fmo->addEnum(fme);
+ scope->addEnum(metaEnum);
}
-void TypeDescriptionReader::readParameter(UiObjectDefinition *ast, FakeMetaMethod *fmm)
+void TypeDescriptionReader::readParameter(UiObjectDefinition *ast, MetaMethod *metaMethod)
{
QString name;
QString type;
for (UiObjectMemberList *it = ast->initializer->members; it; it = it->next) {
UiObjectMember *member = it->member;
- UiScriptBinding *script = AST::cast<UiScriptBinding *>(member);
+ auto *script = cast<UiScriptBinding *>(member);
if (!script) {
addWarning(member->firstSourceLocation(), tr("Expected script binding."));
continue;
@@ -446,29 +434,30 @@ void TypeDescriptionReader::readParameter(UiObjectDefinition *ast, FakeMetaMetho
} else if (id == QLatin1String("isList")) {
// ### unhandled
} else {
- addWarning(script->firstSourceLocation(), tr("Expected only name and type script bindings."));
+ addWarning(script->firstSourceLocation(),
+ tr("Expected only name and type script bindings."));
}
}
- fmm->addParameter(name, type);
+ metaMethod->addParameter(name, type);
}
QString TypeDescriptionReader::readStringBinding(UiScriptBinding *ast)
{
- QTC_ASSERT(ast, return QString());
+ Q_ASSERT(ast);
if (!ast->statement) {
addError(ast->colonToken, tr("Expected string after colon."));
return QString();
}
- ExpressionStatement *expStmt = AST::cast<ExpressionStatement *>(ast->statement);
+ auto *expStmt = cast<ExpressionStatement *>(ast->statement);
if (!expStmt) {
addError(ast->statement->firstSourceLocation(), tr("Expected string after colon."));
return QString();
}
- StringLiteral *stringLit = AST::cast<StringLiteral *>(expStmt->expression);
+ auto *stringLit = cast<StringLiteral *>(expStmt->expression);
if (!stringLit) {
addError(expStmt->firstSourceLocation(), tr("Expected string after colon."));
return QString();
@@ -477,23 +466,23 @@ QString TypeDescriptionReader::readStringBinding(UiScriptBinding *ast)
return stringLit->value.toString();
}
-bool TypeDescriptionReader::readBoolBinding(AST::UiScriptBinding *ast)
+bool TypeDescriptionReader::readBoolBinding(UiScriptBinding *ast)
{
- QTC_ASSERT(ast, return false);
+ Q_ASSERT(ast);
if (!ast->statement) {
addError(ast->colonToken, tr("Expected boolean after colon."));
return false;
}
- ExpressionStatement *expStmt = AST::cast<ExpressionStatement *>(ast->statement);
+ auto *expStmt = cast<ExpressionStatement *>(ast->statement);
if (!expStmt) {
addError(ast->statement->firstSourceLocation(), tr("Expected boolean after colon."));
return false;
}
- TrueLiteral *trueLit = AST::cast<TrueLiteral *>(expStmt->expression);
- FalseLiteral *falseLit = AST::cast<FalseLiteral *>(expStmt->expression);
+ auto *trueLit = cast<TrueLiteral *>(expStmt->expression);
+ auto *falseLit = cast<FalseLiteral *>(expStmt->expression);
if (!trueLit && !falseLit) {
addError(expStmt->firstSourceLocation(), tr("Expected true or false after colon."));
return false;
@@ -502,22 +491,23 @@ bool TypeDescriptionReader::readBoolBinding(AST::UiScriptBinding *ast)
return trueLit;
}
-double TypeDescriptionReader::readNumericBinding(AST::UiScriptBinding *ast)
+double TypeDescriptionReader::readNumericBinding(UiScriptBinding *ast)
{
- QTC_ASSERT(ast, return qQNaN());
+ Q_ASSERT(ast);
if (!ast->statement) {
addError(ast->colonToken, tr("Expected numeric literal after colon."));
return 0;
}
- ExpressionStatement *expStmt = AST::cast<ExpressionStatement *>(ast->statement);
+ auto *expStmt = cast<ExpressionStatement *>(ast->statement);
if (!expStmt) {
- addError(ast->statement->firstSourceLocation(), tr("Expected numeric literal after colon."));
+ addError(ast->statement->firstSourceLocation(),
+ tr("Expected numeric literal after colon."));
return 0;
}
- NumericLiteral *numericLit = AST::cast<NumericLiteral *>(expStmt->expression);
+ auto *numericLit = cast<NumericLiteral *>(expStmt->expression);
if (!numericLit) {
addError(expStmt->firstSourceLocation(), tr("Expected numeric literal after colon."));
return 0;
@@ -531,26 +521,29 @@ ComponentVersion TypeDescriptionReader::readNumericVersionBinding(UiScriptBindin
ComponentVersion invalidVersion;
if (!ast || !ast->statement) {
- addError((ast ? ast->colonToken : SourceLocation()), tr("Expected numeric literal after colon."));
+ addError((ast ? ast->colonToken : SourceLocation()),
+ tr("Expected numeric literal after colon."));
return invalidVersion;
}
- ExpressionStatement *expStmt = AST::cast<ExpressionStatement *>(ast->statement);
+ auto *expStmt = cast<ExpressionStatement *>(ast->statement);
if (!expStmt) {
- addError(ast->statement->firstSourceLocation(), tr("Expected numeric literal after colon."));
+ addError(ast->statement->firstSourceLocation(),
+ tr("Expected numeric literal after colon."));
return invalidVersion;
}
- NumericLiteral *numericLit = AST::cast<NumericLiteral *>(expStmt->expression);
+ auto *numericLit = cast<NumericLiteral *>(expStmt->expression);
if (!numericLit) {
addError(expStmt->firstSourceLocation(), tr("Expected numeric literal after colon."));
return invalidVersion;
}
- return ComponentVersion(_source.mid(numericLit->literalToken.begin(), numericLit->literalToken.length));
+ return ComponentVersion(m_source.mid(numericLit->literalToken.begin(),
+ numericLit->literalToken.length));
}
-int TypeDescriptionReader::readIntBinding(AST::UiScriptBinding *ast)
+int TypeDescriptionReader::readIntBinding(UiScriptBinding *ast)
{
double v = readNumericBinding(ast);
int i = static_cast<int>(v);
@@ -563,31 +556,33 @@ int TypeDescriptionReader::readIntBinding(AST::UiScriptBinding *ast)
return i;
}
-void TypeDescriptionReader::readExports(UiScriptBinding *ast, FakeMetaObject::Ptr fmo)
+void TypeDescriptionReader::readExports(UiScriptBinding *ast, const ScopeTree::Ptr &scope)
{
- QTC_ASSERT(ast, return);
+ Q_ASSERT(ast);
if (!ast->statement) {
addError(ast->colonToken, tr("Expected array of strings after colon."));
return;
}
- ExpressionStatement *expStmt = AST::cast<ExpressionStatement *>(ast->statement);
+ auto *expStmt = cast<ExpressionStatement *>(ast->statement);
if (!expStmt) {
- addError(ast->statement->firstSourceLocation(), tr("Expected array of strings after colon."));
+ addError(ast->statement->firstSourceLocation(),
+ tr("Expected array of strings after colon."));
return;
}
- ArrayPattern *arrayLit = AST::cast<ArrayPattern *>(expStmt->expression);
+ auto *arrayLit = cast<ArrayPattern *>(expStmt->expression);
if (!arrayLit) {
addError(expStmt->firstSourceLocation(), tr("Expected array of strings after colon."));
return;
}
for (PatternElementList *it = arrayLit->elements; it; it = it->next) {
- StringLiteral *stringLit = AST::cast<StringLiteral *>(it->element->initializer);
+ auto *stringLit = cast<StringLiteral *>(it->element->initializer);
if (!stringLit) {
- addError(arrayLit->firstSourceLocation(), tr("Expected array literal with only string literal members."));
+ addError(arrayLit->firstSourceLocation(),
+ tr("Expected array literal with only string literal members."));
return;
}
QString exp = stringLit->value.toString();
@@ -596,7 +591,9 @@ void TypeDescriptionReader::readExports(UiScriptBinding *ast, FakeMetaObject::Pt
ComponentVersion version(exp.mid(spaceIdx + 1));
if (spaceIdx == -1 || !version.isValid()) {
- addError(stringLit->firstSourceLocation(), tr("Expected string literal to contain 'Package/Name major.minor' or 'Name major.minor'."));
+ addError(stringLit->firstSourceLocation(),
+ tr("Expected string literal to contain 'Package/Name major.minor' "
+ "or 'Name major.minor'."));
continue;
}
QString package;
@@ -605,42 +602,46 @@ void TypeDescriptionReader::readExports(UiScriptBinding *ast, FakeMetaObject::Pt
QString name = exp.mid(slashIdx + 1, spaceIdx - (slashIdx+1));
// ### relocatable exports where package is empty?
- fmo->addExport(name, package, version);
+ scope->addExport(name, package, version);
}
}
-void TypeDescriptionReader::readMetaObjectRevisions(UiScriptBinding *ast, FakeMetaObject::Ptr fmo)
+void TypeDescriptionReader::readMetaObjectRevisions(UiScriptBinding *ast,
+ const ScopeTree::Ptr &scope)
{
- QTC_ASSERT(ast, return);
+ Q_ASSERT(ast);
if (!ast->statement) {
addError(ast->colonToken, tr("Expected array of numbers after colon."));
return;
}
- ExpressionStatement *expStmt = AST::cast<ExpressionStatement *>(ast->statement);
+ auto *expStmt = cast<ExpressionStatement *>(ast->statement);
if (!expStmt) {
- addError(ast->statement->firstSourceLocation(), tr("Expected array of numbers after colon."));
+ addError(ast->statement->firstSourceLocation(),
+ tr("Expected array of numbers after colon."));
return;
}
- ArrayPattern *arrayLit = AST::cast<ArrayPattern *>(expStmt->expression);
+ auto *arrayLit = cast<ArrayPattern *>(expStmt->expression);
if (!arrayLit) {
addError(expStmt->firstSourceLocation(), tr("Expected array of numbers after colon."));
return;
}
int exportIndex = 0;
- const int exportCount = fmo->exports().size();
+ const int exportCount = scope->exports().size();
for (PatternElementList *it = arrayLit->elements; it; it = it->next, ++exportIndex) {
- NumericLiteral *numberLit = cast<NumericLiteral *>(it->element->initializer);
+ auto *numberLit = cast<NumericLiteral *>(it->element->initializer);
if (!numberLit) {
- addError(arrayLit->firstSourceLocation(), tr("Expected array literal with only number literal members."));
+ addError(arrayLit->firstSourceLocation(),
+ tr("Expected array literal with only number literal members."));
return;
}
if (exportIndex >= exportCount) {
- addError(numberLit->firstSourceLocation(), tr("Meta object revision without matching export."));
+ addError(numberLit->firstSourceLocation(),
+ tr("Meta object revision without matching export."));
return;
}
@@ -651,11 +652,11 @@ void TypeDescriptionReader::readMetaObjectRevisions(UiScriptBinding *ast, FakeMe
return;
}
- fmo->setExportMetaObjectRevision(exportIndex, metaObjectRevision);
+ scope->setExportMetaObjectRevision(exportIndex, metaObjectRevision);
}
}
-void TypeDescriptionReader::readEnumValues(AST::UiScriptBinding *ast, LanguageUtils::FakeMetaEnum *fme)
+void TypeDescriptionReader::readEnumValues(UiScriptBinding *ast, MetaEnum *metaEnum)
{
if (!ast)
return;
@@ -664,27 +665,27 @@ void TypeDescriptionReader::readEnumValues(AST::UiScriptBinding *ast, LanguageUt
return;
}
- auto *expStmt = AST::cast<ExpressionStatement *>(ast->statement);
+ auto *expStmt = cast<ExpressionStatement *>(ast->statement);
if (!expStmt) {
addError(ast->statement->firstSourceLocation(), tr("Expected expression after colon."));
return;
}
- if (auto *objectLit = AST::cast<ObjectPattern *>(expStmt->expression)) {
+ if (auto *objectLit = cast<ObjectPattern *>(expStmt->expression)) {
for (PatternPropertyList *it = objectLit->properties; it; it = it->next) {
if (PatternProperty *assignement = it->property) {
- if (auto *name = AST::cast<StringLiteralPropertyName *>(assignement->name)) {
- fme->addKey(name->id.toString());
+ if (auto *name = cast<StringLiteralPropertyName *>(assignement->name)) {
+ metaEnum->addKey(name->id.toString());
continue;
}
}
addError(it->firstSourceLocation(), tr("Expected strings as enum keys."));
}
- } else if (auto *arrayLit = AST::cast<ArrayPattern *>(expStmt->expression)) {
+ } else if (auto *arrayLit = cast<ArrayPattern *>(expStmt->expression)) {
for (PatternElementList *it = arrayLit->elements; it; it = it->next) {
if (PatternElement *element = it->element) {
- if (auto *name = AST::cast<StringLiteral *>(element->initializer)) {
- fme->addKey(name->value.toString());
+ if (auto *name = cast<StringLiteral *>(element->initializer)) {
+ metaEnum->addKey(name->value.toString());
continue;
}
}
diff --git a/tools/qmllint/typedescriptionreader.h b/tools/qmllint/typedescriptionreader.h
new file mode 100644
index 0000000000..5fcbe3abc9
--- /dev/null
+++ b/tools/qmllint/typedescriptionreader.h
@@ -0,0 +1,105 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** 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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef TYPEDESCRIPTIONREADER_H
+#define TYPEDESCRIPTIONREADER_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+
+#include "scopetree.h"
+
+#include <QtQml/private/qqmljsastfwd_p.h>
+
+// for Q_DECLARE_TR_FUNCTIONS
+#include <QtCore/qcoreapplication.h>
+
+struct ModuleApiInfo
+{
+ QString uri;
+ ComponentVersion version;
+ QString cppName;
+};
+
+class TypeDescriptionReader
+{
+ Q_DECLARE_TR_FUNCTIONS(TypeDescriptionReader)
+public:
+ TypeDescriptionReader() = default;
+ explicit TypeDescriptionReader(QString fileName, QString data)
+ : m_fileName(std::move(fileName)), m_source(std::move(data)) {}
+
+ bool operator()(
+ QHash<QString, ScopeTree::ConstPtr> *objects,
+ QList<ModuleApiInfo> *moduleApis,
+ QStringList *dependencies);
+
+ QString errorMessage() const { return m_errorMessage; }
+ QString warningMessage() const { return m_warningMessage; }
+
+private:
+ void readDocument(QQmlJS::AST::UiProgram *ast);
+ void readModule(QQmlJS::AST::UiObjectDefinition *ast);
+ void readDependencies(QQmlJS::AST::UiScriptBinding *ast);
+ void readComponent(QQmlJS::AST::UiObjectDefinition *ast);
+ void readModuleApi(QQmlJS::AST::UiObjectDefinition *ast);
+ void readSignalOrMethod(QQmlJS::AST::UiObjectDefinition *ast, bool isMethod,
+ const ScopeTree::Ptr &scope);
+ void readProperty(QQmlJS::AST::UiObjectDefinition *ast, const ScopeTree::Ptr &scope);
+ void readEnum(QQmlJS::AST::UiObjectDefinition *ast, const ScopeTree::Ptr &scope);
+ void readParameter(QQmlJS::AST::UiObjectDefinition *ast, MetaMethod *metaMethod);
+
+ QString readStringBinding(QQmlJS::AST::UiScriptBinding *ast);
+ bool readBoolBinding(QQmlJS::AST::UiScriptBinding *ast);
+ double readNumericBinding(QQmlJS::AST::UiScriptBinding *ast);
+ ComponentVersion readNumericVersionBinding(QQmlJS::AST::UiScriptBinding *ast);
+ int readIntBinding(QQmlJS::AST::UiScriptBinding *ast);
+ void readExports(QQmlJS::AST::UiScriptBinding *ast, const ScopeTree::Ptr &scope);
+ void readMetaObjectRevisions(QQmlJS::AST::UiScriptBinding *ast, const ScopeTree::Ptr &scope);
+ void readEnumValues(QQmlJS::AST::UiScriptBinding *ast, MetaEnum *metaEnum);
+
+ void addError(const QQmlJS::AST::SourceLocation &loc, const QString &message);
+ void addWarning(const QQmlJS::AST::SourceLocation &loc, const QString &message);
+
+ QString m_fileName;
+ QString m_source;
+ QString m_errorMessage;
+ QString m_warningMessage;
+ QHash<QString, ScopeTree::ConstPtr> *m_objects = nullptr;
+ QList<ModuleApiInfo> *m_moduleApis = nullptr;
+ QStringList *m_dependencies = nullptr;
+};
+
+#endif // TYPEDESCRIPTIONREADER_H
diff --git a/tools/qmlmin/main.cpp b/tools/qmlmin/main.cpp
deleted file mode 100644
index 3c9b3c7251..0000000000
--- a/tools/qmlmin/main.cpp
+++ /dev/null
@@ -1,700 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQml module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <private/qqmljsengine_p.h>
-#include <private/qqmljslexer_p.h>
-#include <private/qqmljsparser_p.h>
-#include <QtCore/QCoreApplication>
-#include <QtCore/QStringList>
-#include <QtCore/QFile>
-#include <QtCore/QFileInfo>
-#include <QtCore/QDir>
-#include <iostream>
-#include <cstdlib>
-
-QT_BEGIN_NAMESPACE
-
-//
-// QML/JS minifier
-//
-namespace QQmlJS {
-
-enum RegExpFlag {
- Global = 0x01,
- IgnoreCase = 0x02,
- Multiline = 0x04
-};
-
-
-class QmlminLexer: protected Lexer, public Directives
-{
- QQmlJS::Engine _engine;
- QString _fileName;
- QString _directives;
-
-protected:
- QVector<int> _stateStack;
- QList<int> _tokens;
- QList<QString> _tokenStrings;
- int yytoken = -1;
- QString yytokentext;
-
- void lex() {
- if (_tokens.isEmpty()) {
- _tokens.append(Lexer::lex());
- _tokenStrings.append(tokenText());
- }
-
- yytoken = _tokens.takeFirst();
- yytokentext = _tokenStrings.takeFirst();
- }
-
- int lookaheadToken()
- {
- if (yytoken < 0)
- lex();
- return yytoken;
- }
-
- void pushToken(int token)
- {
- _tokens.prepend(yytoken);
- _tokenStrings.prepend(yytokentext);
- yytoken = token;
- yytokentext = QString();
- }
-
-public:
- QmlminLexer()
- : Lexer(&_engine), _stateStack(128) {}
- virtual ~QmlminLexer() {}
-
- QString fileName() const { return _fileName; }
-
- bool operator()(const QString &fileName, const QString &code)
- {
- int startToken = T_FEED_JS_SCRIPT;
- const QFileInfo fileInfo(fileName);
- if (fileInfo.suffix().toLower() == QLatin1String("qml"))
- startToken = T_FEED_UI_PROGRAM;
- setCode(code, /*line = */ 1, /*qmlMode = */ startToken == T_FEED_UI_PROGRAM);
- _fileName = fileName;
- _directives.clear();
- return parse(startToken);
- }
-
- QString directives()
- {
- return _directives;
- }
-
- //
- // Handle the .pragma/.import directives
- //
- void pragmaLibrary() override
- {
- _directives += QLatin1String(".pragma library\n");
- }
-
- void importFile(const QString &jsfile, const QString &module, int line, int column) override
- {
- _directives += QLatin1String(".import");
- _directives += QLatin1Char('"');
- _directives += quote(jsfile);
- _directives += QLatin1Char('"');
- _directives += QLatin1String("as ");
- _directives += module;
- _directives += QLatin1Char('\n');
- Q_UNUSED(line);
- Q_UNUSED(column);
- }
-
- void importModule(const QString &uri, const QString &version, const QString &module, int line, int column) override
- {
- _directives += QLatin1String(".import ");
- _directives += uri;
- _directives += QLatin1Char(' ');
- _directives += version;
- _directives += QLatin1String(" as ");
- _directives += module;
- _directives += QLatin1Char('\n');
- Q_UNUSED(line);
- Q_UNUSED(column);
- }
-
-protected:
- virtual bool parse(int startToken) = 0;
-
- static QString quote(const QString &string)
- {
- QString quotedString;
- for (const QChar &ch : string) {
- if (ch == QLatin1Char('"'))
- quotedString += QLatin1String("\\\"");
- else {
- if (ch == QLatin1Char('\\')) quotedString += QLatin1String("\\\\");
- else if (ch == QLatin1Char('\"')) quotedString += QLatin1String("\\\"");
- else if (ch == QLatin1Char('\b')) quotedString += QLatin1String("\\b");
- else if (ch == QLatin1Char('\f')) quotedString += QLatin1String("\\f");
- else if (ch == QLatin1Char('\n')) quotedString += QLatin1String("\\n");
- else if (ch == QLatin1Char('\r')) quotedString += QLatin1String("\\r");
- else if (ch == QLatin1Char('\t')) quotedString += QLatin1String("\\t");
- else if (ch == QLatin1Char('\v')) quotedString += QLatin1String("\\v");
- else if (ch == QLatin1Char('\0')) quotedString += QLatin1String("\\0");
- else quotedString += ch;
- }
- }
- return quotedString;
- }
-
- bool isIdentChar(const QChar &ch) const
- {
- if (ch.isLetterOrNumber())
- return true;
- else if (ch == QLatin1Char('_') || ch == QLatin1Char('$'))
- return true;
- return false;
- }
-
- bool isRegExpRule(int ruleno) const
- {
- return ruleno == J_SCRIPT_REGEXPLITERAL_RULE1 ||
- ruleno == J_SCRIPT_REGEXPLITERAL_RULE2;
- }
-
- void handleLookaheads(int ruleno) {
- if (ruleno == J_SCRIPT_EXPRESSIONSTATEMENTLOOKAHEAD_RULE) {
- int token = lookaheadToken();
- if (token == T_LBRACE)
- pushToken(T_FORCE_BLOCK);
- else if (token == T_FUNCTION || token == T_CLASS || token == T_LET || token == T_CONST)
- pushToken(T_FORCE_DECLARATION);
- } else if (ruleno == J_SCRIPT_CONCISEBODYLOOKAHEAD_RULE) {
- int token = lookaheadToken();
- if (token == T_LBRACE)
- pushToken(T_FORCE_BLOCK);
- } else if (ruleno == J_SCRIPT_EXPORTDECLARATIONLOOKAHEAD_RULE) {
- int token = lookaheadToken();
- if (token == T_FUNCTION || token == T_CLASS)
- pushToken(T_FORCE_DECLARATION);
- }
- }
-
- bool scanRestOfRegExp(int ruleno, QString *restOfRegExp)
- {
- if (! scanRegExp(ruleno == J_SCRIPT_REGEXPLITERAL_RULE1 ? Lexer::NoPrefix : Lexer::EqualPrefix))
- return false;
-
- *restOfRegExp = regExpPattern();
- if (ruleno == J_SCRIPT_REGEXPLITERAL_RULE2) {
- Q_ASSERT(! restOfRegExp->isEmpty());
- Q_ASSERT(restOfRegExp->at(0) == QLatin1Char('='));
- *restOfRegExp = restOfRegExp->mid(1); // strip the prefix
- }
- *restOfRegExp += QLatin1Char('/');
- const RegExpFlag flags = (RegExpFlag) regExpFlags();
- if (flags & Global)
- *restOfRegExp += QLatin1Char('g');
- if (flags & IgnoreCase)
- *restOfRegExp += QLatin1Char('i');
- if (flags & Multiline)
- *restOfRegExp += QLatin1Char('m');
-
- if (regExpFlags() == 0) {
- // Add an extra space after the regexp literal delimiter (aka '/').
- // This will avoid possible problems when pasting tokens like `instanceof'
- // after the regexp literal.
- *restOfRegExp += QLatin1Char(' ');
- }
- return true;
- }
-};
-
-
-class Minify: public QmlminLexer
-{
- QString _minifiedCode;
- int _maxWidth;
- int _width;
-
-public:
- Minify(int maxWidth);
-
- QString minifiedCode() const;
-
-protected:
- void append(const QString &s);
- bool parse(int startToken) override;
- void escape(const QChar &ch, QString *out);
-};
-
-Minify::Minify(int maxWidth)
- : _maxWidth(maxWidth), _width(0)
-{
-}
-
-QString Minify::minifiedCode() const
-{
- return _minifiedCode;
-}
-
-void Minify::append(const QString &s)
-{
- if (!s.isEmpty()) {
- if (_maxWidth) {
- // Prefer not to exceed the maximum chars per line (but don't break up segments)
- int segmentLength = s.count();
- if (_width && ((_width + segmentLength) > _maxWidth)) {
- _minifiedCode.append(QLatin1Char('\n'));
- _width = 0;
- }
-
- _width += segmentLength;
- }
-
- _minifiedCode.append(s);
- }
-}
-
-void Minify::escape(const QChar &ch, QString *out)
-{
- out->append(QLatin1String("\\u"));
- const QString hx = QString::number(ch.unicode(), 16);
- switch (hx.length()) {
- case 1: out->append(QLatin1String("000")); break;
- case 2: out->append(QLatin1String("00")); break;
- case 3: out->append(QLatin1Char('0')); break;
- case 4: break;
- default: Q_ASSERT(!"unreachable");
- }
- out->append(hx);
-}
-
-bool Minify::parse(int startToken)
-{
- int yyaction = 0;
- int yytos = -1;
- QString assembled;
-
- _minifiedCode.clear();
- _tokens.append(startToken);
- _tokenStrings.append(QString());
-
- if (startToken == T_FEED_JS_SCRIPT) {
- // parse optional pragma directive
- DiagnosticMessage error;
- if (scanDirectives(this, &error)) {
- // append the scanned directives to the minifier code.
- append(directives());
-
- _tokens.append(tokenKind());
- _tokenStrings.append(tokenText());
- } else {
- std::cerr << qPrintable(fileName()) << ':' << tokenStartLine() << ':'
- << tokenStartColumn() << ": syntax error" << std::endl;
- return false;
- }
- }
-
- do {
- if (++yytos == _stateStack.size())
- _stateStack.resize(_stateStack.size() * 2);
-
- _stateStack[yytos] = yyaction;
-
- again:
- if (yytoken == -1 && action_index[yyaction] != -TERMINAL_COUNT)
- lex();
-
- yyaction = t_action(yyaction, yytoken);
- if (yyaction > 0) {
- if (yyaction == ACCEPT_STATE) {
- --yytos;
- if (!assembled.isEmpty())
- append(assembled);
- return true;
- }
-
- const QChar lastChar = assembled.isEmpty() ? (_minifiedCode.isEmpty() ? QChar()
- : _minifiedCode.at(_minifiedCode.length() - 1))
- : assembled.at(assembled.length() - 1);
-
- if (yytoken == T_SEMICOLON) {
- assembled += QLatin1Char(';');
-
- append(assembled);
- assembled.clear();
-
- } else if (yytoken == T_PLUS || yytoken == T_MINUS || yytoken == T_PLUS_PLUS || yytoken == T_MINUS_MINUS) {
- if (lastChar == QLatin1Char(spell[yytoken][0])) {
- // don't merge unary signs, additive expressions and postfix/prefix increments.
- assembled += QLatin1Char(' ');
- }
-
- assembled += QLatin1String(spell[yytoken]);
-
- } else if (yytoken == T_NUMERIC_LITERAL) {
- if (isIdentChar(lastChar))
- assembled += QLatin1Char(' ');
-
- if (yytokentext.startsWith('.'))
- assembled += QLatin1Char('0');
-
- assembled += yytokentext;
-
- if (assembled.endsWith(QLatin1Char('.')))
- assembled += QLatin1Char('0');
-
- } else if (yytoken == T_IDENTIFIER) {
- QString identifier = yytokentext;
-
- if (classify(identifier.constData(), identifier.size(), qmlMode()) != T_IDENTIFIER) {
- // the unescaped identifier is a keyword. In this case just replace
- // the last character of the identifier with it escape sequence.
- const QChar ch = identifier.at(identifier.length() - 1);
- identifier.chop(1);
- escape(ch, &identifier);
- }
-
- if (isIdentChar(lastChar))
- assembled += QLatin1Char(' ');
-
- assembled += identifier;
-
- } else if (yytoken == T_STRING_LITERAL || yytoken == T_MULTILINE_STRING_LITERAL) {
- assembled += QLatin1Char('"');
- assembled += quote(yytokentext);
- assembled += QLatin1Char('"');
- } else {
- if (isIdentChar(lastChar)) {
- if (! yytokentext.isEmpty()) {
- const QChar ch = yytokentext.at(0);
- if (isIdentChar(ch))
- assembled += QLatin1Char(' ');
- }
- }
- assembled += yytokentext;
- }
- yytoken = -1;
- } else if (yyaction < 0) {
- const int ruleno = -yyaction - 1;
- yytos -= rhs[ruleno];
-
- handleLookaheads(ruleno);
-
- if (isRegExpRule(ruleno)) {
- QString restOfRegExp;
-
- if (! scanRestOfRegExp(ruleno, &restOfRegExp))
- break; // break the loop, it wil report a syntax error
-
- assembled += restOfRegExp;
- }
- yyaction = nt_action(_stateStack[yytos], lhs[ruleno] - TERMINAL_COUNT);
- }
- } while (yyaction);
-
- const int yyerrorstate = _stateStack[yytos];
-
- // automatic insertion of `;'
- if (yytoken != -1 && ((t_action(yyerrorstate, T_AUTOMATIC_SEMICOLON) && canInsertAutomaticSemicolon(yytoken))
- || t_action(yyerrorstate, T_COMPATIBILITY_SEMICOLON))) {
- _tokens.prepend(yytoken);
- _tokenStrings.prepend(yytokentext);
- yyaction = yyerrorstate;
- yytoken = T_SEMICOLON;
- goto again;
- }
-
- std::cerr << qPrintable(fileName()) << ':' << tokenStartLine() << ':' << tokenStartColumn()
- << ": syntax error" << std::endl;
- return false;
-}
-
-
-class Tokenize: public QmlminLexer
-{
- QStringList _minifiedCode;
-
-public:
- Tokenize() {}
-
- QStringList tokenStream() const;
-
-protected:
- bool parse(int startToken) override;
-};
-
-QStringList Tokenize::tokenStream() const
-{
- return _minifiedCode;
-}
-
-bool Tokenize::parse(int startToken)
-{
- int yyaction = 0;
- int yytos = -1;
-
- _minifiedCode.clear();
- _tokens.append(startToken);
- _tokenStrings.append(QString());
-
- if (startToken == T_FEED_JS_SCRIPT) {
- // parse optional pragma directive
- DiagnosticMessage error;
- if (scanDirectives(this, &error)) {
- // append the scanned directives as one token to
- // the token stream.
- _minifiedCode.append(directives());
-
- _tokens.append(tokenKind());
- _tokenStrings.append(tokenText());
- } else {
- std::cerr << qPrintable(fileName()) << ':' << tokenStartLine() << ':'
- << tokenStartColumn() << ": syntax error" << std::endl;
- return false;
- }
- }
-
- do {
- if (++yytos == _stateStack.size())
- _stateStack.resize(_stateStack.size() * 2);
-
- _stateStack[yytos] = yyaction;
-
- again:
- if (yytoken == -1 && action_index[yyaction] != -TERMINAL_COUNT)
- lex();
-
- yyaction = t_action(yyaction, yytoken);
- if (yyaction > 0) {
- if (yyaction == ACCEPT_STATE) {
- --yytos;
- return true;
- }
-
- if (yytoken == T_SEMICOLON)
- _minifiedCode += QLatin1String(";");
- else
- _minifiedCode += yytokentext;
-
- yytoken = -1;
- } else if (yyaction < 0) {
- const int ruleno = -yyaction - 1;
- yytos -= rhs[ruleno];
-
- handleLookaheads(ruleno);
-
- if (isRegExpRule(ruleno)) {
- QString restOfRegExp;
-
- if (! scanRestOfRegExp(ruleno, &restOfRegExp))
- break; // break the loop, it wil report a syntax error
-
- _minifiedCode.last().append(restOfRegExp);
- }
-
- yyaction = nt_action(_stateStack[yytos], lhs[ruleno] - TERMINAL_COUNT);
- }
- } while (yyaction);
-
- const int yyerrorstate = _stateStack[yytos];
-
- // automatic insertion of `;'
- if (yytoken != -1 && ((t_action(yyerrorstate, T_AUTOMATIC_SEMICOLON) && canInsertAutomaticSemicolon(yytoken))
- || t_action(yyerrorstate, T_COMPATIBILITY_SEMICOLON))) {
- _tokens.prepend(yytoken);
- _tokenStrings.prepend(yytokentext);
- yyaction = yyerrorstate;
- yytoken = T_SEMICOLON;
- goto again;
- }
-
- std::cerr << qPrintable(fileName()) << ':' << tokenStartLine() << ':'
- << tokenStartColumn() << ": syntax error" << std::endl;
- return false;
-}
-
-} // end of QQmlJS namespace
-
-static void usage(bool showHelp = false)
-{
- std::cerr << "Usage: qmlmin [options] file" << std::endl;
-
- if (showHelp) {
- std::cerr << " Removes comments and layout characters" << std::endl
- << " The options are:" << std::endl
- << " -o<file> write output to file rather than stdout" << std::endl
- << " -v --verify-only just run the verifier, no output" << std::endl
- << " -w<width> restrict line characters to width" << std::endl
- << " -h display this output" << std::endl;
- }
-}
-
-int runQmlmin(int argc, char *argv[])
-{
- QCoreApplication app(argc, argv);
- QCoreApplication::setApplicationVersion(QLatin1String(QT_VERSION_STR));
-
- const QStringList args = app.arguments();
-
- QString fileName;
- QString outputFile;
- bool verifyOnly = false;
-
- // By default ensure the output character width is less than 16-bits (pass 0 to disable)
- int width = USHRT_MAX;
-
- int index = 1;
- while (index < args.size()) {
- const QString arg = args.at(index++);
- const QString next = index < args.size() ? args.at(index) : QString();
-
- if (arg == QLatin1String("-h") || arg == QLatin1String("--help")) {
- usage(/*showHelp*/ true);
- return 0;
- } else if (arg == QLatin1String("-v") || arg == QLatin1String("--verify-only")) {
- verifyOnly = true;
- } else if (arg == QLatin1String("-o")) {
- if (next.isEmpty()) {
- std::cerr << "qmlmin: argument to '-o' is missing" << std::endl;
- return EXIT_FAILURE;
- } else {
- outputFile = next;
- ++index; // consume the next argument
- }
- } else if (arg.startsWith(QLatin1String("-o"))) {
- outputFile = arg.mid(2);
-
- if (outputFile.isEmpty()) {
- std::cerr << "qmlmin: argument to '-o' is missing" << std::endl;
- return EXIT_FAILURE;
- }
- } else if (arg == QLatin1String("-w")) {
- if (next.isEmpty()) {
- std::cerr << "qmlmin: argument to '-w' is missing" << std::endl;
- return EXIT_FAILURE;
- } else {
- bool ok;
- width = next.toInt(&ok);
-
- if (!ok) {
- std::cerr << "qmlmin: argument to '-w' is invalid" << std::endl;
- return EXIT_FAILURE;
- }
-
- ++index; // consume the next argument
- }
- } else if (arg.startsWith(QLatin1String("-w"))) {
- bool ok;
- width = arg.midRef(2).toInt(&ok);
-
- if (!ok) {
- std::cerr << "qmlmin: argument to '-w' is invalid" << std::endl;
- return EXIT_FAILURE;
- }
- } else {
- const bool isInvalidOpt = arg.startsWith(QLatin1Char('-'));
- if (! isInvalidOpt && fileName.isEmpty())
- fileName = arg;
- else {
- usage(/*show help*/ isInvalidOpt);
- if (isInvalidOpt)
- std::cerr << "qmlmin: invalid option '" << qPrintable(arg) << '\'' << std::endl;
- else
- std::cerr << "qmlmin: too many input files specified" << std::endl;
- return EXIT_FAILURE;
- }
- }
- }
-
- if (fileName.isEmpty()) {
- usage();
- return 0;
- }
-
- std::cerr << "qmlmin: This tool is deprecated and will be removed in Qt 6. It is not needed anymore due to QtQml's built-in caching." << std::endl;
-
- QFile file(fileName);
- if (! file.open(QFile::ReadOnly)) {
- std::cerr << "qmlmin: '" << qPrintable(fileName) << "' no such file or directory" << std::endl;
- return EXIT_FAILURE;
- }
-
- const QString code = QString::fromUtf8(file.readAll()); // QML files are UTF-8 encoded.
- file.close();
-
- QQmlJS::Minify minify(width);
- if (! minify(fileName, code)) {
- std::cerr << "qmlmin: cannot minify '" << qPrintable(fileName) << "' (not a valid QML/JS file)" << std::endl;
- return EXIT_FAILURE;
- }
-
- //
- // verify the output
- //
- QQmlJS::Minify secondMinify(width);
- if (! secondMinify(fileName, minify.minifiedCode()) || secondMinify.minifiedCode() != minify.minifiedCode()) {
- std::cerr << "qmlmin: cannot minify '" << qPrintable(fileName) << '\'' << std::endl;
- return EXIT_FAILURE;
- }
-
- QQmlJS::Tokenize originalTokens, minimizedTokens;
- originalTokens(fileName, code);
- minimizedTokens(fileName, minify.minifiedCode());
-
- if (originalTokens.tokenStream().size() != minimizedTokens.tokenStream().size()) {
- std::cerr << "qmlmin: cannot minify '" << qPrintable(fileName) << '\'' << std::endl;
- return EXIT_FAILURE;
- }
-
- if (! verifyOnly) {
- if (outputFile.isEmpty()) {
- const QByteArray chars = minify.minifiedCode().toUtf8();
- std::cout << chars.constData();
- } else {
- QFile file(outputFile);
- if (! file.open(QFile::WriteOnly)) {
- std::cerr << "qmlmin: cannot minify '" << qPrintable(fileName) << "' (permission denied)" << std::endl;
- return EXIT_FAILURE;
- }
-
- file.write(minify.minifiedCode().toUtf8());
- file.close();
- }
- }
-
- return 0;
-}
-
-QT_END_NAMESPACE
-
-int main(int argc, char **argv)
-{
- return QT_PREPEND_NAMESPACE(runQmlmin(argc, argv));
-}
diff --git a/tools/qmlmin/qmlmin.pro b/tools/qmlmin/qmlmin.pro
deleted file mode 100644
index 32d9e3343b..0000000000
--- a/tools/qmlmin/qmlmin.pro
+++ /dev/null
@@ -1,7 +0,0 @@
-option(host_build)
-QT = core qmldevtools-private
-SOURCES += main.cpp
-
-QMAKE_TARGET_DESCRIPTION = QML/JS Minifier
-
-load(qt_tool)
diff --git a/tools/qmlplugindump/main.cpp b/tools/qmlplugindump/main.cpp
index 1556718471..947b5dff27 100644
--- a/tools/qmlplugindump/main.cpp
+++ b/tools/qmlplugindump/main.cpp
@@ -179,15 +179,6 @@ void collectReachableMetaObjects(QQmlEnginePrivate *engine, const QQmlType &ty,
}
}
-/* We want to add the MetaObject for 'Qt' to the list, this is a
- simple way to access it.
-*/
-class FriendlyQObject: public QObject
-{
-public:
- static const QMetaObject *qtMeta() { return &staticQtMetaObject; }
-};
-
/* When we dump a QMetaObject, we want to list all the types it is exported as.
To do this, we need to find the QQmlTypes associated with this
QMetaObject.
@@ -258,7 +249,7 @@ QSet<const QMetaObject *> collectReachableMetaObjects(QQmlEngine *engine,
)
{
QSet<const QMetaObject *> metas;
- metas.insert(FriendlyQObject::qtMeta());
+ metas.insert(&Qt::staticMetaObject);
const auto qmlTypes = QQmlMetaType::qmlTypes();
for (const QQmlType &ty : qmlTypes) {
diff --git a/tools/tools.pro b/tools/tools.pro
index 25ed760903..d16f78071c 100644
--- a/tools/tools.pro
+++ b/tools/tools.pro
@@ -4,15 +4,14 @@ QT_FOR_CONFIG += qml-private
qtConfig(qml-devtools) {
SUBDIRS += \
qmllint \
- qmlmin \
- qmlimportscanner
+ qmlimportscanner \
+ qmlformat
qtConfig(commandlineparser):qtConfig(xmlstreamwriter): SUBDIRS += qmlcachegen
}
qtConfig(thread):!android|android_app:!wasm:!rtems {
- SUBDIRS += \
- qml
+ qtConfig(commandlineparser): SUBDIRS += qml
qtConfig(qml-profiler): SUBDIRS += qmlprofiler
qtConfig(qml-preview): SUBDIRS += qmlpreview
@@ -45,7 +44,7 @@ qtConfig(qml-devtools) {
qmleasing.depends = qmlimportscanner
}
-# qmlmin, qmlimportscanner & qmlcachegen are build tools.
+# qmlimportscanner & qmlcachegen are build tools.
# qmlscene is needed by the autotests.
# qmltestrunner may be useful for manual testing.
# qmlplugindump cannot be a build tool, because it loads target plugins.