设置请参考这篇帖子: http://blog.csdn.net/ayang1986/article/details/78206177
// autoexp.dat
QVariant{
preview(
#if ($e.d.type == 1) (
#("bool = ", [$e.d.data.b])
) #elif ($e.d.type == 2) (
#("int = ", [$e.d.data.i])
) #elif ($e.d.type == 3) (
#("usigned int = ", [$e.d.data.u])
) #elif ($e.d.type == 4) (
#("long long = ", [$e.d.data.ll])
) #elif ($e.d.type == 5) (
#("unsigned long long = ", [$e.d.data.ull])
) #elif ($e.d.type == 6) (
#("double = ", [$e.d.data.d])
) #elif ($e.d.type == 7) (
#("char = ", [$e.d.data.c])
) #elif ($e.d.type == 8) (
#("QMap = ", [(QMap) $e.d.data.ptr])
) #elif ($e.d.type == 10) (
#("QString = ", [(QString) $e.d.data.ptr])
) #elif ($e.d.type == 11) (
#("QStringList = ", [(QStringList) $e.d.data.ptr])
) #elif ($e.d.type == 17) (
#("QUrl = ", [(QUrl) $e.d.data.ptr])
) #else (
#("type = ", [$e.d.type])
)
)
children
(
#if ($e.d.type == 1) (
$c.d.data.b
) #elif ($e.d.type == 2) (
#(value : $c.d.data.i)
) #elif ($e.d.type == 3) (
$c.d.data.u
) #elif ($e.d.type == 4) (
$c.d.data.ll
) #elif ($e.d.type == 5) (
$c.d.data.ull
) #elif ($e.d.type == 6) (
$c.d.data.d
) #elif ($e.d.type == 7) (
$c.d.data.c
) #elif ($e.d.type == 8) (
#(
raw data: [$c,!],
map data: [(QMap<QString,QVariant>) $e.d.data.ptr,!],
#tree
(
head : ( (QMap<QString,QVariant>) $e.d.data.ptr ).d->forward[0],
skip : ( (QMap<QString,QVariant>) $e.d.data.ptr ).d,
size : ( (QMap<QString,QVariant>) $e.d.data.ptr ).d->size,
left : backward,
right : forward
) : ( (QMapNode<QString,QVariant>*)((char*)&$e - (sizeof(QMapPayloadNode<QString,QVariant>) - sizeof(QMapData::Node*))) )
)
) #elif ($e.d.type == 10) (
#(
[size]: ((QString) $c.d.data.ptr).d->size
)
) #elif ($e.d.type == 11) (
#if ((((QStringList) $e.d.data.ptr).d->end - ((QStringList) $e.d.data.ptr).d->begin) <= 10) (
#array
(
expr: (QString)((((QStringList) $e.d.data.ptr).d->array + ((QStringList) $e.d.data.ptr).d->begin)[$i]),
size: ((QStringList) $e.d.data.ptr).d->end-((QStringList) $e.d.data.ptr).d->begin
)
) #else (
#array
(
expr: (QString)((((QStringList) $e.d.data.ptr).d->array + ((QStringList) $e.d.data.ptr).d->begin)[$i]),
size: 10
)
)
) #elif ($e.d.type == 17) (
#(
scheme: ((QUrl) $e.d.data.ptr).d->scheme,
host: ((QUrl) $e.d.data.ptr).d->host,
path: ((QUrl) $e.d.data.ptr).d->path,
username: ((QUrl) $e.d.data.ptr).d->userName,
password: ((QUrl) $e.d.data.ptr).d->password,
encodedOriginal: ((QUrl) $e.d.data.ptr).d->encodedOriginal,
query: ((QUrl) $e.d.data.ptr).d->query,
fragment: ((QUrl) $e.d.data.ptr).d->fragment
)
) #else (
#("type = ", [$e.d.type])
)
)
}
//==============================================================================================================
// 另一种方案
QVariant{
preview
(
#if ($e.d.type == 1) (
#("bool = ", [$e.d.data.b])
) #elif ($e.d.type == 2) (
#("int = ", [$e.d.data.i])
) #elif ($e.d.type == 3) (
#("usigned int = ", [$e.d.data.u])
) #elif ($e.d.type == 4) (
#("long long = ", [$e.d.data.ll])
) #elif ($e.d.type == 5) (
#("unsigned long long = ", [$e.d.data.ull])
) #elif ($e.d.type == 6) (
#("double = ", [$e.d.data.d])
) #elif ($e.d.type == 7) (
#("char = ", [$e.d.data.c])
) #elif ($e.d.type == 8) (
#("QMap = ", [(QMap) $e.d.data.ptr])
) #elif ($e.d.type == 10) (
#("QString = ", [(QString) $e.d.data.ptr])
) #elif ($e.d.type == 11) (
#("QStringList = ", [(QStringList) $e.d.data.ptr])
) #elif ($e.d.type == 17) (
#("QUrl = ", [(QUrl) $e.d.data.ptr])
) #else (
#("type = ", [$e.d.type])
)
)
children
(
#if ($e.d.type == 1) (
$c.d.data.b
) #elif ($e.d.type == 2) (
#(value : $c.d.data.i)
) #elif ($e.d.type == 3) (
$c.d.data.u
) #elif ($e.d.type == 4) (
$c.d.data.ll
) #elif ($e.d.type == 5) (
$c.d.data.ull
) #elif ($e.d.type == 6) (
$c.d.data.d
) #elif ($e.d.type == 7) (
$c.d.data.c
) #elif ($e.d.type == 8) (
#(
raw data: [$c,!],
map data : (QMap<QString,QVariant>) $e.d.data.ptr)
)
) #elif ($e.d.type == 10) (
#(
[size]: ((QString) $c.d.data.ptr).d->size
)
) #elif ($e.d.type == 11) (
#if ((((QStringList) $e.d.data.ptr).d->end - ((QStringList) $e.d.data.ptr).d->begin) <= 10) (
#array
(
expr: (QString)((((QStringList) $e.d.data.ptr).d->array + ((QStringList) $e.d.data.ptr).d->begin)[$i]),
size: ((QStringList) $e.d.data.ptr).d->end-((QStringList) $e.d.data.ptr).d->begin
)
) #else (
#array
(
expr: (QString)((((QStringList) $e.d.data.ptr).d->array + ((QStringList) $e.d.data.ptr).d->begin)[$i]),
size: 10
)
)
) #elif ($e.d.type == 17) (
#(
scheme: ((QUrl) $e.d.data.ptr).d->scheme,
host: ((QUrl) $e.d.data.ptr).d->host,
path: ((QUrl) $e.d.data.ptr).d->path,
username: ((QUrl) $e.d.data.ptr).d->userName,
password: ((QUrl) $e.d.data.ptr).d->password,
encodedOriginal: ((QUrl) $e.d.data.ptr).d->encodedOriginal,
query: ((QUrl) $e.d.data.ptr).d->query,
fragment: ((QUrl) $e.d.data.ptr).d->fragment
)
) #else (
#("type = ", [$e.d.type])
)
)
}
QMap<QString,QVariant>{
preview
(
#("[",$e.d->size,"]",[$e,!])
)
stringview
(
(QString)[$e,!]
)
children
(
#(
#tree
(
head : $c.d->forward[0],
skip : $c.d,
size : $c.d->size,
left : backward,
right : forward
) : ( (QMapNode<QString,QVariant>*)((char*)&$e - (sizeof(QMapPayloadNode<QString,QVariant>) - sizeof(QMapData::Node*))) )
)
)
}