Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Firzen 14 Června 2008, 15:52:53

Název: GTK a proměnná v textu [vyřešeno]
Přispěvatel: Firzen 14 Června 2008, 15:52:53
Dobrý den :)

začínám v GTK a chci aby se na tlačítko(nebo do textu) vypsala proměnná nebo obsah pole, problém je, že nevím jak to provést - na tisíci stránkách knihy "Mistrovství v C++" je totiž popsán pouze objekt cout a cerr, kde se to dělá takto:
Kód: [Vybrat]
cout << "blabla" << promenna_nebo_pole << "dalsi bla bla";jenže něco ve smyslu:
Kód: [Vybrat]
button = gtk_button_new_with_label ("Text na tlacitku cislo " << cislo);v GTK prostě nefunguje... Nevíte někdo, jak to udělat? Moc bych to potřeboval.
Název: Re: GTK a proměnná v textu...
Přispěvatel: Martin - ViPEr*CZ* 14 Června 2008, 16:17:12
Dobrý den :)

začínám v GTK a chci aby se na tlačítko(nebo do textu) vypsala proměnná nebo obsah pole, problém je, že nevím jak to provést - na tisíci stránkách knihy "Mistrovství v C++" je totiž popsán pouze objekt cout a cerr, kde se to dělá takto:
Kód: [Vybrat]
cout << "blabla" << promenna_nebo_pole << "dalsi bla bla";jenže něco ve smyslu:
Kód: [Vybrat]
button = gtk_button_new_with_label ("Text na tlacitku cislo " << cislo);v GTK prostě nefunguje... Nevíte někdo, jak to udělat? Moc bych to potřeboval.
No budete mít objekt na tu určitou komponentu (TextBox, Button) a ten object bude mít zajisté nějakou metodu něco jako SetText a parametr bude object řetězce ;)
Název: Re: GTK a proměnná v textu...
Přispěvatel: Firzen 15 Června 2008, 18:00:00
Omlouvám se, ale moc jsem to nepochopil; nebyl by nějaký příklad? (z toho to pochopím nejlépe..)
Název: Re: GTK a proměnná v textu...
Přispěvatel: Tomáš Jančík 15 Června 2008, 21:10:12
button = gtk_button_new_with_label ("Text na tlacitku cislo " + cislo)

tohle by nefungovalo?
Název: Re: GTK a proměnná v textu...
Přispěvatel: Firzen 16 Června 2008, 18:59:47
Citace
button = gtk_button_new_with_label ("Text na tlacitku cislo " + cislo)

tohle by nefungovalo?
No, funguje to, ale dělá to něco jiného, než jsem chtěl :D  Tohle totiž skryje od začátku tlačítka takový počet písmen(na něm napsaných), kolik určuje proměnná(třeba to "cislo").. pěkné, ale já potřebuji, aby když dám hodnotu třeba int cislo=4;, tak abych mohl určit kam se na tlačítko hodnota proměnné "cislo" vypíše a na tlačítku by potom bylo třeba "Linux 4ever", chápete ne? (to právě nevím jak ::))
Název: Re: GTK a proměnná v textu...
Přispěvatel: shaman 16 Června 2008, 20:22:59
No, pokud by to nemuselo být C++, ale jenom C, taky by mohlo zabrat něco jako:
Kód: [Vybrat]
button = gtk_button_new_with_label(g_strdup_printf("text na tlačítku - %d", cislo));
Název: Re: GTK a proměnná v textu...
Přispěvatel: Tomáš Jančík 16 Června 2008, 21:24:09
tak jeste udelat dalsi promenou, nazvanou treba popisek
popisek = "Text na tlacitku" + cislo
button = gtk_button_new_with_label (popisek)
Název: Re: GTK a proměnná v textu...
Přispěvatel: Firzen 17 Června 2008, 18:41:27
Citace
No, pokud by to nemuselo být C++, ale jenom C, taky by mohlo zabrat něco jako:
Kód: [Vybrat]
button = gtk_button_new_with_label(g_strdup_printf("text na tlačítku - %d", cislo));
Super :) tohle vážně funguje, nikde v dokumentaci jsem to nenašel(nechápu, jak mohli zapomenout na tak základní věc..) díky moc ;)

Citace
tak jeste udelat dalsi promenou, nazvanou treba popisek
popisek = "Text na tlacitku" + cislo
button = gtk_button_new_with_label (popisek)
Tohle se bohužel kompilátoru nelíbí..
Název: Re: GTK a proměnná v textu...
Přispěvatel: Tomáš Jančík 17 Června 2008, 22:19:50
Citace
tak jeste udelat dalsi promenou, nazvanou treba popisek
popisek = "Text na tlacitku" + cislo
button = gtk_button_new_with_label (popisek)
Tohle se bohužel kompilátoru nelíbí..
[/quote]

tipuju, že to bude tím, že jedna z těch proměnejch je textová a druhá číselná... musíš to číslo nějak převýst na text...
Název: Re: GTK a proměnná v textu...
Přispěvatel: Firzen 18 Června 2008, 19:23:16
Pro převod čísel na text už jsem si dávno napsal hlavičkovej soubor.. jenže kompilátor to nedovolí ani když je všechno jen text.., ale to nevadí - řešení už mám  :) (samozřejmě děkuji za pomoc ;))
Název: Re: GTK a proměnná v textu
Přispěvatel: Tomáš Jančík 18 Června 2008, 20:25:42
tak sem napiš jak sji to vyřešil... pro případné další zájemce se stejným problémem ;)
Název: Re: GTK a proměnná v textu
Přispěvatel: Firzen 19 Června 2008, 14:24:25
No vyřešil jsem to následovně:

Kód: [Vybrat]
int cislo=7;
button = gtk_button_new_with_label(g_strdup_printf("Tlačítko - %d", cislo));
--> Tím dostaneme na tlačítku text: Tlačítko - 7  (za %d se dosadí proměnná za čárkou, zde proměnná cislo)

a ještě jsem pokusem zjistil, že %s (napadlo mě, že to bude zkratka String) do textu dovede vložit i text z pole:
Kód: [Vybrat]
char text[]="je super";
button = gtk_button_new_with_label(g_strdup_printf("Linux %s OS", text));
--> Toto nám na tlačítko vypíše: Linux je super OS

Jinak to samozřejmě neplatí jen pro tlačítka ale i pro normální texty např. v dialogových oknech apt..  :)
Název: Re: GTK a proměnná v textu [vyřešeno]
Přispěvatel: shaman 19 Června 2008, 19:09:57
Pokud to nechceš všechno hledat metodou pokus ‒ omyl, tak všechny formátovací volby se dají získat příkazem man 3 printf ;) (vyžaduje balík manpages-dev).