ich nutze in meiner Applikation ein QSqlRelationalTableModel zusammen mit einer QTableView. Das Editieren erfolgt direkt über die TableView. Gespeichert wird manuell über einen Button, mit submitAll(). So weit funktioniert das alles.
Nun hab ich den speziellen Fall auf dem MAC, dass Umlaute nicht mitgespeichert werden. Wenn ich in der Tabelle ein Feld mit dem Wert "aaaökkkkk" fülle, und auf speichern drücke, wird nur "aaa" gespeichert. Das Problem besteht unter Linux und Windows nicht.
Die MySQL Datenbank ist auf UTF-8 gestellt, und direkt nach dem öffnen der Datenbankverbindungen im Code führe ich dies aus:
Code: Alles auswählen
QSqlQuery qEncoding("SET NAMES 'utf8';");
qEncoding.exec();Code: Alles auswählen
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); Bei einem anderen Element meiner Applikation wird ein Text aus einem QTextEdit Objekt in die MySQL Datenbank geschrieben. Dort hatte ich das gleiche Problem mit den Umlauten, und auch nur auf dem MAC, nicht unter Linux oder Windows. Dort konnte ich das umgehen, indem ich der Sql Query nicht textEdit->toHtml() übergeben habe, sondern textEdit->toHtml().toUft8(). Dies kann ich im o. g. Fall mit der Tabelle nicht, da ich nicht auf die QStrings der einzelnen Felder zugreife, sondern das Model nur per submitAll() speichere.
Hat jemand eine Idee was da helfen könnte?