diff -ur src/moc/moc.y src/moc/moc.y --- src/moc/moc.y 2011-08-23 02:50:57.000000000 -0500 +++ src/moc/moc.y 2011-08-24 01:46:17.000000000 -0500 @@ -3422,8 +3422,8 @@ else if ( type == "Q_ULLONG" ) fprintf( out, "v->asULongLong()" ); else if ( isVariantType( type ) ) { - if ( type[0] == 'Q' ) - type = type.mid(1); + if (( type[0] == 'T' ) && ( type[1] == 'Q' )) + type = type.mid(2); else type[0] = toupper( type[0] ); fprintf( out, "v->as%s()", type.data() ); diff -ur src/moc/moc_yacc.cpp src/moc/moc_yacc.cpp --- src/moc/moc_yacc.cpp 2011-08-23 02:03:46.000000000 -0500 +++ src/moc/moc_yacc.cpp 2011-08-24 01:46:45.000000000 -0500 @@ -3462,8 +3462,8 @@ else if ( type == "Q_ULLONG" ) fprintf( out, "v->asULongLong()" ); else if ( isVariantType( type ) ) { - if ( type[0] == 'Q' ) - type = type.mid(1); + if (( type[0] == 'T' ) && ( type[1] == 'Q' )) + type = type.mid(2); else type[0] = toupper( type[0] ); fprintf( out, "v->as%s()", type.data() );