char* increases the risk of pointing to a invalid reference. Qt had to use a static variable as retainer to workaround.