Здесь речь идёт не про кастить, а про конвертировать. А сконвертить можно, т.к. у СMyType есть конструктор СMyType(const QString &).
В исходниках canConvert ЖЕСТКО зашито что к чему можно конвертить. Для решения этой проблемы я написал свои функции canConvert и convert.
Кастить было написано в Вашем первом посте.
Кроме того - ИМХО, нет средств языка, позволяющих
конвертировать тип к другому типу, основываясь на некоем конструкторе. Есть
неявное приведение типа (или как там оно называется), если конструктор с одним параметром объявлен не
explicit, например, в Вашем случае сработает вот такая конструкция
// если конструктор не explicitC++ (Qt)
CMyType(const QString &){}
// где-то в кодеC++ (Qt)
CMyType mt = QString("blah");
но убей бог мою душу лаптем, если я понимаю, как это можно использовать в автоматической конвертации.
Приведите свою реализацию canConvert и convert.