Kodowanie znaków w Qt

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:

problemr.png

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 :slight_smile:

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 :slight_smile: