Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno 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(...).

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Takže toto pomohlo, samozrejme musel som Qt prinútiť, aby zobralo aj UTF-8. To som dosiahol tak, že…
msx. 11.10.2011 22:47
msx.
A vies vobec co si to urobil? Konvertujes Latin1->Qstring(UTF16)->toASCII->fromUTF8 do QString(UTF16…
MM.. 12.10.2011 19:47
MM..
Á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… poslední
msx. 20.10.2011 20:21
msx.

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.

ui->lblPopis->setText( QString::fromUtf8( str.sprintf( "%d. deň v roku", 1 ).toAscii() ) );

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.

Zpět do poradny Odpovědět na původní otázku Nahoru