-
取消系统变量中的
Qt_INCLUDEPATH_
。 -
C:\Users\octob\AppData\Local\QtMsBuild
中添加qt4.natvis.xml
,qt4.natvis for visual studio 2015 for qt4 I verified QString, QVector, QList, QPolygon, QVariant, QHash, QMap,... (github.com)。 -
Qt VS Tools中添加487版本。
-
新建Qt项目,选择487。
-
使用的是Vs2019的Qt VS Tools插件,和487有兼容性问题,对moc和rcc的一些选项不支持:
-
Qt Resource Compiler
rcc:移除
Initialization Function Name=%(Filename)
-
Qt Meta-Object Compiler
moc:移除
Prepend Include
中的stdafx.h
-
-
修改代码,简单讲就是把
QtWidgets
改成QtGui
-
stdafx.h
#include <Qt/QtGui>
-
QtWidgetsApp_487.h
#include <QtGui/QMainWindow>
-
main.cpp
#include <QtGui/QApplication>
-
-
Qt Resource Compiler
rcc:移除
Initialization Function Name=%(Filename)
natis
文件
vscode-qt-tools/qt.natvis.xml at develop · tonka3000/vscode-qt-tools (github.com)
VisualStudio-Snippets/Qt4.natvis at master · NobodysNightmare/VisualStudio-Snippets (github.com)
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="QPoint">
<AlternativeType Name="QPointF"/>
<DisplayString>{{ x = {xp}, y = {yp} }}</DisplayString>
<Expand>
<Item Name="[x]">xp</Item>
<Item Name="[y]">yp</Item>
</Expand>
</Type>
<Type Name="QRect">
<DisplayString>{{ x = {x1}, y = {y1}, width = {x2 - x1 + 1}, height = {y2 - y1 + 1} }}</DisplayString>
<Expand>
<Item Name="[x]">x1</Item>
<Item Name="[y]">y1</Item>
<Item Name="[width]">x2 - x1 + 1</Item>
<Item Name="[height]">y2 - y1 + 1</Item>
</Expand>
</Type>
<Type Name="QRectF">
<DisplayString>{{ x = {xp}, y = {yp}, width = {w}, height = {h} }}</DisplayString>
<Expand>
<Item Name="[x]">xp</Item>
<Item Name="[y]">yp</Item>
<Item Name="[width]">w</Item>
<Item Name="[height]">h</Item>
</Expand>
</Type>
<Type Name="QSize">
<AlternativeType Name="QSizeF"/>
<DisplayString>{{ width = {wd}, height = {ht} }}</DisplayString>
<Expand>
<Item Name="[width]">wd</Item>
<Item Name="[height]">ht</Item>
</Expand>
</Type>
<Type Name="QLine">
<AlternativeType Name="QLineF"/>
<DisplayString>{{ start point = {pt1}, end point = {pt2} }}</DisplayString>
<Expand>
<Synthetic Name="[start point]">
<DisplayString>{pt1}</DisplayString>
<Expand>
<ExpandedItem>pt1</ExpandedItem>
</Expand>
</Synthetic>
<Synthetic Name="[end point]">
<DisplayString>{pt2}</DisplayString>
<Expand>
<ExpandedItem>pt2</ExpandedItem>
</Expand>
</Synthetic>
</Expand>
</Type>
<Type Name="QPolygon">
<DisplayString>{{ size = {d->size} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d->ref._q_value</Item>
<ArrayItems>
<Size>d->size</Size>
<ValuePointer>(QPoint*)(reinterpret_cast<char*>(p->array))</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name ="QMatrix">
<DisplayString>
{{ m11 = {_m11}, m12 = {_m12}, m21 = {_m21}, m22 = {_m22}, ... }}
</DisplayString>
<Expand>
<Item Name="[m11]">_m11</Item>
<Item Name="[m12]">_m12</Item>
<Item Name="[m21]">_m21</Item>
<Item Name="[m22]">_m22</Item>
<Item Name="[dx]">_dx</Item>
<Item Name="[dy]">_dy</Item>
</Expand>
</Type>
<Type Name="QSizePolicy">
<DisplayString>
{{ horizontal = {static_cast<Policy>(bits.horPolicy)}, vertical = {static_cast<Policy>(bits.verPolicy)}, type = {ControlType(1 << bits.ctype)} }}
</DisplayString>
<Expand>
<Synthetic Name="[vertical policy]">
<DisplayString>QSizePolicy::Policy::{static_cast<Policy>(bits.verPolicy)}</DisplayString>
</Synthetic>
<Synthetic Name="[horizontal policy]">
<DisplayString>QSizePolicy::Policy::{static_cast<Policy>(bits.horPolicy)}</DisplayString>
</Synthetic>
<Synthetic Name="[control type]">
<DisplayString>QSizePolicy::ControlType::{ControlType(1 << bits.ctype)}</DisplayString>
</Synthetic>
<Synthetic Name="[expanding directions]">
<DisplayString
Condition="(static_cast<Policy>(bits.verPolicy) & ExpandFlag)">
Qt::Vertical (2)
</DisplayString>
<DisplayString
Condition="(static_cast<Policy>(bits.horPolicy) & ExpandFlag)">
Qt::Horizontal (1)
</DisplayString>
</Synthetic>
<Item Name="[vertical stretch]">static_cast<int>(bits.verStretch)</Item>
<Item Name="[horizontal stretch]">static_cast<int>(bits.horStretch)</Item>
<Item Name="[has height for width]">bits.hfw == 1</Item>
<Item Name="[has width for height]">bits.wfh == 1</Item>
</Expand>
</Type>
<Type Name="QChar">
<DisplayString>{ucs,c}</DisplayString>
<StringView>ucs,c</StringView>
<Expand>
<Item Name="[latin 1]">ucs > 0xff ? '\0' : char(ucs),c</Item>
<Item Name="[unicode]">ucs,c</Item>
</Expand>
</Type>
<Type Name="QString">
<DisplayString>{d->data,sub}</DisplayString>
<StringView>d->data,sub</StringView>
<Expand>
<Item Name="[size]">d->size</Item>
<Item Name="[referenced]">d->ref._q_value</Item>
<ArrayItems>
<Size>d->size</Size>
<ValuePointer>d->data,c</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<!--<Type Name="QByteArray">
--><!--<DisplayString>{((reinterpret_cast<char*>(d)) + d->data),sb}</DisplayString>
<StringView>((reinterpret_cast<char*>(d)) + d->data),sb</StringView>--><!--
<Expand>
<Item Name="[size]">d->size</Item>
<Item Name="[referenced]">d->ref._q_value</Item>
--><!--<ArrayItems>
<Size>d->size</Size>
<ValuePointer>((reinterpret_cast<char*>(d)) + d->data),c</ValuePointer>
</ArrayItems>--><!--
</Expand>
</Type>-->
<!--<Type Name="QBitArray">
<DisplayString>{{ size = {(d.d->size << 3) - *((reinterpret_cast<char*>(d.d)) + d.d->offset)} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d.d->ref._q_value</Item>
<IndexListItems>
<Size>(d.d->size << 3) - *((reinterpret_cast<char*>(d.d)) + d.d->offset)</Size>
<ValueNode>
(*(reinterpret_cast<const unsigned char*>((reinterpret_cast<char*>(d.d)) + d.d->offset) + 1
+ ($i >> 3)) & (1 << ($i & 7))) != 0
</ValueNode>
</IndexListItems>
</Expand>
</Type>-->
<Type Name="QVarLengthArray<*>">
<AlternativeType Name="QVarLengthArray<*, int>"/>
<DisplayString>{{ size = {s} }}</DisplayString>
<Expand>
<Item Name="[capacity]">a</Item>
<ArrayItems>
<Size>s</Size>
<ValuePointer>ptr</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="QDate">
<DisplayString Condition="jd == 0">Invalid</DisplayString>
<DisplayString>{ 100 * ( ( 4 * ( jd + 68569) / 146097 ) - 49 ) + ( ( 4000 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) + 1 ) ) / 1461001 ) + ( ( ( 80 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) - ( 1461 * ( ( 4000 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) + 1 ) ) / 1461001 ) ) / 4 + 31 ) / 2447 ) / 11 )) }-{ ( ( 80 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) - ( 1461 * ( ( 4000 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) + 1 ) ) / 1461001 ) ) / 4 + 31 ) / 2447 ) + 2 - ( 12 * ( ( ( 80 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) - ( 1461 * ( ( 4000 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) + 1 ) ) / 1461001 ) ) / 4 + 31 ) / 2447 ) / 11 ) ) ) ) }-{ ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) - ( 1461 * ( ( 4000 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) + 1 ) ) / 1461001 ) ) / 4 + 31 ) - ( 2447 * ( ( 80 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) - ( 1461 * ( ( 4000 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) + 1 ) ) / 1461001 ) ) / 4 + 31 ) / 2447 ) ) / 80 ) }</DisplayString>
<Expand>
<Item Name="[julianDay]">jd, d</Item>
<Item Name="[Day]">( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) - ( 1461 * ( ( 4000 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) + 1 ) ) / 1461001 ) ) / 4 + 31 ) - ( 2447 * ( ( 80 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) - ( 1461 * ( ( 4000 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) + 1 ) ) / 1461001 ) ) / 4 + 31 ) / 2447 ) ) / 80 )</Item>
<Item Name="[Month]">( ( 80 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) - ( 1461 * ( ( 4000 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) + 1 ) ) / 1461001 ) ) / 4 + 31 ) / 2447 ) + 2 - ( 12 * ( ( ( 80 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) - ( 1461 * ( ( 4000 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) + 1 ) ) / 1461001 ) ) / 4 + 31 ) / 2447 ) / 11 ) ) ) )</Item>
<Item Name="[Year]">100 * ( ( 4 * ( jd + 68569) / 146097 ) - 49 ) + ( ( 4000 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) + 1 ) ) / 1461001 ) + ( ( ( 80 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) - ( 1461 * ( ( 4000 * ( ( jd + 68569 - ( 146097 * ( 4 * ( jd + 68569) / 146097 ) + 3 ) / 4 ) + 1 ) ) / 1461001 ) ) / 4 + 31 ) / 2447 ) / 11 ))</Item>
</Expand>
</Type>
<Type Name="QTime">
<DisplayString Condition="mds == -1">Invalid</DisplayString>
<DisplayString>{mds / 3600000}:{(mds % 3600000) / 60000}:{(mds / 1000) % 60}.{mds % 1000}</DisplayString>
<Expand>
<Item Name="[hour]"
Condition="(mds / 3600000) == 1">mds / 3600000, d</Item>
<Item Name="[hours]"
Condition="(mds / 3600000) != 1">mds / 3600000, d</Item>
<Item Name="[minute]"
Condition="((mds % 3600000) / 60000) == 1">(mds % 3600000) / 60000, d</Item>
<Item Name="[minutes]"
Condition="((mds % 3600000) / 60000) != 1">(mds % 3600000) / 60000, d</Item>
<Item Name="[second]"
Condition="((mds / 1000) % 60) == 1">(mds / 1000) % 60, d</Item>
<Item Name="[seconds]"
Condition="((mds / 1000) % 60) != 1">(mds / 1000) % 60, d</Item>
<Item Name="[millisecond]"
Condition="(mds % 1000) == 1">mds % 1000, d</Item>
<Item Name="[milliseconds]"
Condition="(mds % 1000) != 1">mds % 1000, d</Item>
</Expand>
</Type>
<Type Name="QDateTime">
<DisplayString Condition="d->time.mds == -1">Invalid</DisplayString>
<DisplayString Condition="d->utcOffset == 0">{d->date} {d->time} UTC</DisplayString>
<DisplayString Condition="d->utcOffset > 0">{d->date} {d->time} UTC+{d->utcOffset}</DisplayString>
<DisplayString Condition="d->utcOffset < 0">{d->date} {d->time} UTC{d->utcOffset}</DisplayString>
<Expand>
<Item Name="[Date]">d->date</Item>
<Item Name="[Time]">d->time</Item>
<Item Name="[spec]">d->spec</Item>
<Item Name="[offset]">d->utcOffset</Item>
</Expand>
</Type>
<!-- Doesn't work d_ptr->data has no address -->
<!--
<Type Name="QFileInfo">
<DisplayString>d_ptr->data->fileName</DisplayString>
<Expand>
<Item Name="[Path]">d_ptr->data->fileName</Item>
<Item Name="[cTime]">d_ptr->data->fileTimes[0]</Item>
<Item Name="[mTime]">d_ptr->data->fileTimes[1]</Item>
<Item Name="[aTime]">d_ptr->data->fileTimes[2]</Item>
</Expand>
</Type>
-->
<Type Name="QRegularExpression">
<DisplayString>{d.pattern}</DisplayString>
</Type>
<Type Name="QSharedData">
<Expand>
<Item Name="[referenced]">ref._q_value</Item>
</Expand>
</Type>
<Type Name="QSharedPointer<*>">
<DisplayString>strong reference to shared pointer of type {"$T1"}</DisplayString>
<Expand>
<Item Name="[is null]">value == 0</Item>
<Item Name="[weak referenced]">d->weakref._q_value</Item>
<Item Name="[strong referenced]">d->strongref._q_value</Item>
</Expand>
</Type>
<Type Name="QSharedDataPointer<*>">
<DisplayString>pointer to implicit shared object of type {"$T1"}</DisplayString>
<Expand>
<ExpandedItem>d</ExpandedItem>
</Expand>
</Type>
<Type Name="QExplicitlySharedDataPointer<*>">
<DisplayString>pointer to explicit shared object of type {"$T1"}</DisplayString>
<Expand>
<ExpandedItem>d</ExpandedItem>
</Expand>
</Type>
<Type Name="QPointer<*>">
<DisplayString>guarded pointer to subclass of QObject of type {"$T1"}</DisplayString>
<Expand>
<Item Name="[is null]">wp.d == 0 || wp.d->strongref._q_value == 0 || wp.value == 0</Item>
</Expand>
</Type>
<Type Name="QWeakPointer<*>">
<DisplayString>weak reference to shared pointer of type {"$T1"}</DisplayString>
<Expand>
<Item Name="[is null]">d == 0 || d->strongref._q_value == 0 || value == 0</Item>
<Item Name="[weak referenced]">d->weakref._q_value</Item>
<Item Name="[strong referenced]">d->strongref._q_value</Item>
</Expand>
</Type>
<Type Name="QScopedPointer<*>">
<DisplayString>scoped pointer to a dynamically allocated object of type {"$T1"}</DisplayString>
<Expand>
<Item Name="[is null]">!d</Item>
</Expand>
</Type>
<Type Name="QScopedArrayPointer<*>">
<DisplayString>scoped pointer to dynamically allocated array of objects of type {"$T1"}</DisplayString>
<Expand>
<Item Name="[is null]">!d</Item>
</Expand>
</Type>
<Type Name="QPair<*,*>">
<DisplayString>({first}, {second})</DisplayString>
<Expand>
<Item Name="[first]">first</Item>
<Item Name="[second]">second</Item>
</Expand>
</Type>
<Type Name="QVector<*>">
<AlternativeType Name="QStack<*>"></AlternativeType>
<DisplayString>{{ size = {d->size} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d->ref._q_value</Item>
<Item Name="[size]">d->size</Item>
<Item Name="[capacity]">d->capacity</Item>
<ArrayItems>
<Size>d->size</Size>
<ValuePointer>($T1*)(reinterpret_cast<char*>(p->array))</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="QList<*>">
<AlternativeType Name="QStringList"></AlternativeType>
<AlternativeType Name="QQueue<*>"></AlternativeType>
<DisplayString>{{ size = {d->end - d->begin} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d->ref._q_value</Item>
<IndexListItems>
<Size>d->end - d->begin</Size>
<ValueNode>*reinterpret_cast<$T1*>((sizeof($T1) > sizeof(void*))
? reinterpret_cast<Node*>(d->array + d->begin + $i)->v
: reinterpret_cast<$T1*>(d->array + d->begin + $i))
</ValueNode>
</IndexListItems>
</Expand>
</Type>
<Type Name="QLinkedList<*>">
<DisplayString>{{ size = {d->size} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d->ref._q_value</Item>
<LinkedListItems>
<Size>d->size</Size>
<HeadPointer>d->n</HeadPointer>
<NextPointer>n</NextPointer>
<ValueNode>(*(QLinkedListNode<$T1>*)this).t</ValueNode>
</LinkedListItems>
</Expand>
</Type>
<Type Name="QMapNode<*,*>">
<DisplayString>({key}, {value})</DisplayString>
<Expand>
<Item Name="[key]">key</Item>
<Item Name="[value]">value</Item>
</Expand>
</Type>
<Type Name="QMap<*,*>">
<AlternativeType Name="QMultiMap<*,*>"/>
<DisplayString>{{ size = {d->size} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d->ref._q_value</Item>
<LinkedListItems>
<Size>d->size</Size>
<HeadPointer>d->forward[0]</HeadPointer>
<NextPointer>forward[0]</NextPointer>
<ValueNode>(QMapNode<$T1,$T2>*)(((char*)this) - (sizeof(QMapPayloadNode<$T1,$T2>) - sizeof(QMapData::Node*)))</ValueNode>
</LinkedListItems>
</Expand>
</Type>
<Type Name="QHashNode<*,*>">
<DisplayString Condition="next == 0">(empty)</DisplayString>
<DisplayString Condition="next != 0">({key}, {value})</DisplayString>
<Expand>
<Item Name="[key]" Condition="next != 0">key</Item>
<Item Name="[value]" Condition="next != 0">value</Item>
</Expand>
</Type>
<Type Name="QHash<*,*>">
<AlternativeType Name="QMultiHash<*,*>"/>
<DisplayString>{{ size = {d->size} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d->ref._q_value</Item>
<!--
<IndexListItems>
<Size>d->numBuckets</Size>
<ValueNode>*((QHashNode<$T1,$T2>*)d->buckets[$i])</ValueNode>
</IndexListItems>
-->
<LinkedListItems>
<Size>d->size</Size>
<HeadPointer>*(d->buckets)</HeadPointer>
<NextPointer>next</NextPointer>
<ValueNode>*((QHashNode<$T1,$T2>*)this)</ValueNode>
</LinkedListItems>
</Expand>
</Type>
<Type Name="QHashNode<*,QHashDummyValue>">
<DisplayString Condition="next == 0">(empty)</DisplayString>
<DisplayString Condition="next != 0">({key})</DisplayString>
<Expand>
<Item Name="[key]" Condition="next != 0">key</Item>
</Expand>
</Type>
<Type Name="QSet<*>">
<DisplayString>{{ size = {q_hash.d->size} }}</DisplayString>
<Expand>
<ExpandedItem>q_hash</ExpandedItem>
</Expand>
</Type>
<Type Name="QCache<*,*>::Node">
<DisplayString>({*keyPtr}, {*t})</DisplayString>
<Expand>
<Item Name="[key]">*keyPtr</Item>
<Item Name="[value]">*t</Item>
</Expand>
</Type>
<Type Name="QCache<*,*>">
<DisplayString>{{ size = {hash.d->size} }}</DisplayString>
<Expand>
<Item Name="[max coast]">mx</Item>
<Item Name="[total coast]">total</Item>
<Item Name="[referenced]">hash.d->ref._q_value</Item>
<LinkedListItems>
<Size>hash.d->size</Size>
<HeadPointer>f</HeadPointer>
<NextPointer>n</NextPointer>
<ValueNode>*((Node*)this)</ValueNode>
</LinkedListItems>
</Expand>
</Type>
<Type Name="QVariant">
<!--Region DisplayString QVariant-->
<DisplayString Condition="d.type == QMetaType::Bool">{d.data.b}</DisplayString>
<DisplayString Condition="d.type == QMetaType::Int">{d.data.i}</DisplayString>
<DisplayString Condition="d.type == QMetaType::UInt">{d.data.u}</DisplayString>
<DisplayString Condition="d.type == QMetaType::LongLong">{d.data.ll}</DisplayString>
<DisplayString Condition="d.type == QMetaType::ULongLong">{d.data.ull}</DisplayString>
<DisplayString Condition="d.type == QMetaType::Double">{d.data.d}</DisplayString>
<DisplayString Condition="d.type == QMetaType::QChar">{d.data.c}</DisplayString>
<DisplayString Condition="d.type == QMetaType::QVariantMap">
{*((QMap<QString,QVariant>*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QVariantList">
{*((QList<QVariant>*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QString">
{*((QString*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QStringList">
{*((QStringList*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QByteArray">
{*((QByteArray*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QBitArray">
{*((QBitArray*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QDate">
{*((QDate*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QTime">
{*((QTime*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QDateTime">DateTime</DisplayString>
<DisplayString Condition="d.type == QMetaType::QUrl">Url</DisplayString>
<DisplayString Condition="d.type == QMetaType::QLocale">Locale</DisplayString>
<DisplayString Condition="d.type == QMetaType::QRect">
{*((QRect*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QRectF">
{*((QRectF*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QSize">
{*((QSize*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QSizeF">
{*((QSizeF*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QLine">
{*((QLine*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QLineF">
{*((QLineF*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPoint">
{*((QPoint*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPointF">
{*((QPointF*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QRegExp">RegExp</DisplayString>
<DisplayString Condition="d.type == QMetaType::QVariantHash">
{*((QHash<QString,QVariant>*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QFont">Font</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPixmap">Pixmap</DisplayString>
<DisplayString Condition="d.type == QMetaType::QBrush">Brush</DisplayString>
<DisplayString Condition="d.type == QMetaType::QColor">Color</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPalette">Palette</DisplayString>
<DisplayString Condition="d.type == QMetaType::QImage">Image</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPolygon">Polygon</DisplayString>
<DisplayString Condition="d.type == QMetaType::QRegion">Region</DisplayString>
<DisplayString Condition="d.type == QMetaType::QBitmap">Bitmap</DisplayString>
<DisplayString Condition="d.type == QMetaType::QCursor">Cursor</DisplayString>
<DisplayString Condition="d.type == QMetaType::QKeySequence">KeySequence</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPen">Pen</DisplayString>
<DisplayString Condition="d.type == QMetaType::QTextLength">TextLength</DisplayString>
<DisplayString Condition="d.type == QMetaType::QTextFormat">TextFormat</DisplayString>
<DisplayString Condition="d.type == QMetaType::QMatrix">Matrix</DisplayString>
<DisplayString Condition="d.type == QMetaType::QTransform">Transform</DisplayString>
<DisplayString Condition="d.type == QMetaType::QIcon">Icon</DisplayString>
<DisplayString Condition="d.type == QMetaType::QSizePolicy">SizePolicy</DisplayString>
<DisplayString Condition="d.type == QMetaType::User">UserType</DisplayString>
<DisplayString Condition="d.type == 0xffffffff">LastType</DisplayString>
<!--End region DisplayString QVariant-->
<!--Region DisplayView QVariant-->
<StringView Condition="d.type == QMetaType::QChar">d.data.c</StringView>
<StringView Condition="d.type == QMetaType::QString">
*((QString*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))
</StringView>
<StringView Condition="d.type == QMetaType::QByteArray">
*((QByteArray*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))
</StringView>
<!--End region DisplayView QVariant-->
<!--Region Expand QVariant-->
<Expand>
<ExpandedItem Condition="d.type == QMetaType::QVariantMap">
*((QMap<QString,QVariant>*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QVariantList">
*((QList<QVariant>*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QString">
*((QString*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QStringList">
*((QStringList*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QByteArray">
*((QByteArray*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QBitArray">
*((QBitArray*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QDate">
*((QDate*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QTime">
*((QTime*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QRect">
*((QRect*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QRectF">
*((QRectF*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QSize">
*((QSize*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QSizeF">
*((QSizeF*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QLine">
*((QLine*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QLineF">
*((QLineF*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QPoint">
*((QPoint*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QPointF">
*((QPointF*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QVariantHash">
*((QHash<QString,QVariant>*)(d.is_shared ? d.data.shared->ptr
: reinterpret_cast<const void *>(&d.data.ptr)))
</ExpandedItem>
</Expand>
<!--End region Expand QVariant-->
</Type>
<Type Name="QUrl">
<StringView Condition="d.stateFalgs == 0">{d}</StringView>
<StringView>{d->scheme}{d->host}{d->path}</StringView>
<Expand>
<Item Name="scheme">d->sheme</Item>
<Item Name="host">d->host</Item>
<Item Name="path">d->path</Item>
<Item Name="username">d->username</Item>
<Item Name="password">d->password</Item>
<Item Name="encodedOriginal">d->encodedOriginal</Item>
<Item Name="query">d->query</Item>
<Item Name="fragment">d->fragment</Item>
</Expand>
</Type>
</AutoVisualizer>
标签:gt,VS2019,lt,-&,使用,shared,Qt4.8,data,ptr
From: https://www.cnblogs.com/octoberkey/p/16935616.html