Fórum Root.cz
Hlavní témata => Software => Téma založeno: Pavel Šlechta 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.
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"
-
Ještě jsem zjistil, že z nějakého důvodu (srcf == dstf).
-
Tak už jsem na to přišel.
"The pointer remains valid as long as the byte array isn't reallocated or destroyed."
-
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
-
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.
-
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.