

C++ - Pretypovanie v Qt
Problém je ten, že ak napíšem niečo takéto, síce to prejde, ale nemám zobrazené znaky s diakritikou:
str = QString::fromUtf8("Deň");
Toto mi odmieta skompilovať:
QString str;
str = QString::fromUtf8((const char *)str.sprintf("%d. deň v roku", den));
Nefunguje to ani takto:
str = QString::fromUtf8(str.sprintf("%d. deň v roku", den));
Túto premennú potom vkladám do QLabel:
ui->lblPopis->setText(str);
Predpokladám, že je problém iba v pretypovaní, ale netuším čo s tým. Mohli by ste mi poradiť ako to správne pretypovať? Prípadne, ak by ste mi mohli poradiť, ako to vložiť celé do jedného riadku ui->lblPopis->setText(...).
Takže toto pomohlo, samozrejme musel som Qt prinútiť, aby zobralo aj UTF-8. To som dosiahol tak, že som vymazal súbor *.pro.user.
A vies vobec co si to urobil? Konvertujes Latin1->Qstring(UTF16)->toASCII->fromUTF8 do QString(UTF16)
Sa divim ze z compileru nevyskocil pri kompilovani boxer :)
P.S. najlepsie je pouzivat .arg priamo pri inicializacii QStringu, tak jak napisal hvezd vyssie priklad (a k tomu asi by bol dobry UTF8 editor alebo mozno u8 pred ten string). potom sa to ale NErobi vsetko v jednom riadku ale v dvoch - najprv inicializujes QString a potom ho niekam priradis.
Áno, neskôr som zistil, že ani to nie je ideálne riešenie a prešiel som na arg(). Musím uznať, s tým to funguje tak ako má.
Doplnené: sprintf() protestoval, ak som okrem int chcel dať ďalší parameter QString. S arg() žiadny problém nebol, len som zistil, že miestami je dokumentácia poslabšia a musel som skúšať metódou pokus omyl. Ale možno sa mýlim a v dokumentácii to je. Nevedel som nájsť čo znamená ktorý znak pre formátovanie reálnych čísel. Pokusmi som zistil, že 'e' je exponent, 'f' je zobrazenie podľa určeného formátovania a 'g' je zobrazenie čísla bez akejkoľvek straty pri desatinných hodnotách.