QLineEdit - podivné chování

QLineEdit - podivné chování
« kdy: 01. 05. 2012, 18:58:58 »
Dobrý den, začínám s Qt, a narazil jsem na následující problém:
Mám 2 QLineEdit widgety. Nastavím prvnímu text "aaaaa", druhemu "bbbbb". Vše se na formuláři zobrazí v pořádku. Pak si načtu text z těchto prvků zpět pomocí gettru text() a převedu na obyčejný řetězec v C (const char *). Dám printf, a oba řetězce vytisknu. Bohužel dostanu "bbbbb" a "bbbbb".
Jenže to první má být "aaaaa". Na formuláři je pořád vše jak má být a svítí tam "aaaaa" a "bbbbb".

Nemohu přijít na to proč. Asi je to úplná blbost, ale já to nevidím. Děkuji.

Kód: [Vybrat]
        srcFilename->setText(QString("aaaaa"));
dstFilename->setText(QString("bbbbb"));

const char *srcf = (srcFilename->text().toUtf8().constData());
const char *dstf = (dstFilename->text().toUtf8().constData());
printf("srcFilename: %s\n", srcf); // vytiskne "bbbbb"
printf("dstFilename: %s\n", dstf); // vytiskne "bbbbb"

« Poslední změna: 02. 05. 2012, 10:35:38 od Petr Krčmář »


Re:QLineEdit - podivne chovani
« Odpověď #1 kdy: 01. 05. 2012, 19:09:43 »
Ještě jsem zjistil, že z nějakého důvodu (srcf == dstf).

Re:QLineEdit - podivne chovani
« Odpověď #2 kdy: 01. 05. 2012, 19:16:10 »
Tak už jsem na to přišel.
"The pointer remains valid as long as the byte array isn't reallocated or destroyed."

boleq

Re:QLineEdit - podivne chovani
« Odpověď #3 kdy: 01. 05. 2012, 19:31:24 »
Asi už jdu s křížkem po funuse, ale třeba to někoho bude zajímat:
http://qt-project.org/faq/answer/how_can_i_convert_a_qstring_to_char_and_vice_versa

Re:QLineEdit - podivne chovani
« Odpověď #4 kdy: 01. 05. 2012, 21:44:20 »
Asi už jdu s křížkem po funuse, ale třeba to někoho bude zajímat:
http://qt-project.org/faq/answer/how_can_i_convert_a_qstring_to_char_and_vice_versa

Každopádně děkuji za užitečný odkaz.


Ivan

Offtopic
« Odpověď #5 kdy: 02. 05. 2012, 12:25:35 »
Jo tohle chovani QTcka je fakt peklo pro nekoho kdo potrebuje casto komunikovat s externima knihovnama pres char*.
Me se podarilo v nasem projektu ostranit spoustu takovych bugu pomoci MSVC. Debug Build na Microsoftim kompilatoru okamzite prepisuje uvolnenou pamet (i na zasobniku) nejakym bordelem. Takze to co na Linuxu jakz-takz funguje, na Woknach okamzite spadne a ta chyba je reprodukovatelna.