string.toAscii().data();
пишет что не может присвоить char* to char[128]
Имя массива - это указатель, который "привязан" к области памяти (константный указатель) и его нельзя менять (по-моему так). Да и тем более здесь бы получилась утечка памяти (массиву память выделили, а потом про нее "забыли", поменяв значение указателя). Здесь надо скопировать данные в массив.
В общем, как-то так:
C++ (Qt)
...
QString source;
...
int size = 128;
char str[size];
qstrncpy(str, source.toAscii().constData(), size-1);
...
size-1 для того, чтобы последний байт оставить под '\0' (хотя может и попутал
)