Witam,
Mam drobny problem z Qt. Otóż piszę program odmieniający czasowniki w języku polskim. Wymaga to oczywiście polskich znaków diakrytycznych. To właśnie tutaj zaczynają się schody. O ile zmusiłem Qt do wczytywania odpowiednich form w Unicode i wyświetlania ich, oraz modyfikowania poszczególnych liter przy pomocy QChar, to nie mogę zmusić programu, aby wyświetlił polskie znaki, które wpisuję w kodzie. Wygląda to tak:
A w kodzie:
{
ui-Imperative1-setText("-");
int Perfectiveness = Ciomg.at(6).toInt();
if(Perfectiveness == 0)
{
ui-FutureCompoundTense-setEnabled(true);
ui-PresentTense-setEnabled(true);
ui-FutureSimpleTense-setEnabled(false);
qDebug() Ciomg.at(1).at(Ciomg.at(1).length()-1).unicode();
if(Ciomg.at(1).at(Ciomg.at(1).length()-1) == QChar(0x119))
{
qDebug() "x";
if(Ciomg.at(2).at(Ciomg.at(2).length()-3) == QChar('e'))
{
qDebug() "y";
QString temp = Ciomg.at(1);
temp[temp.length()-1] = QChar(0x105);
ui-PresentTense6-setText(temp);
ui-Imperative6-setText("niech " + temp);
temp = Ciomg.at(2);
temp = temp.remove(temp.length()-3, 3);
temp+="e";
ui-PresentTense3-setText(temp);
ui-Imperative3-setText("niech " + temp);
temp = Ciomg.at(2);
temp.remove(temp.length()-3, 3);
temp+="emy";
ui-PresentTense4-setText(temp);
temp = Ciomg.at(2);
temp.remove(temp.length()-3, 3);
temp+="ecie";
ui-PresentTense5-setText(temp);
}
}
ui-textEdit-setText(Ciomg.at(0));
ui-PresentTense1-setText(Ciomg.at(1));
ui-PresentTense2-setText(Ciomg.at(2));
ui-FutCompoundTense1-setText("będę " + Ciomg.at(4));
Ciomg to jedna linijka z pliku txt, którą potem dzielę na 7 części (w pliku oddzielone średnikami). Plik, z którego wczytuję, jest zapisany w formacie Utf8.
Próbowałem to wygooglać, i nawet użyć trUtf8() czy QString::fromLatin1, ale to pierwsze tylko pogorszyło sprawę, a tego drugiego po prostu nie umiem zaimplementować. Nie będę przecież każdego słowa budował z pojedynczych QCharów… Niestety, jestem lingwistą bardziej niźli programistą i trudno mi się w tym ogarnąć…
Będę bardzo wdzięczny za wszelką pomoc
Pozdrawiam,
WhizzKid
– Dodane 10.03.2010 (Śr) 15:21 –
Dobra, problem rozwiązało użycie trUtf8(), gdyby ktoś inny miał z tym kiedyś problem