• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Nazwa obiektu jako zmienna

Object Storage Arubacloud
0 głosów
1,126 wizyt
pytanie zadane 27 kwietnia 2015 w C i C++ przez st4chuu Nowicjusz (210 p.)
Cześć

Robie w QT pewną aplikację i chciałbym hurtowo z pliku wczytyć treści do Labeli i do Buttonów.

normalnie robię to
ui->label1->setText("tekst");

i czy można potraktować nazwę label1 jako zmienną? Tak by w pliku były zapisane wszystkie nazwy labeli i buttonów i program odczytywał by i nazwę i treść.

Z góry dziękuję za wszelką pomoc ;)

5 odpowiedzi

0 głosów
odpowiedź 27 kwietnia 2015 przez Buby Pasjonat (19,590 p.)

A nie możesz zrobić tablicy obiektów? I potem pętlą iterować.

 

Np.

std::string Tekst;
for( int i = 0; i < Rozmiar; ++i )
{
   std::getline( Plik, Tekst );
   ui->label[i]->setText( Tekst );
}


W pliku miałbyś zapisane teksty linia po linii.

 

Albo np. taka wersja, gdzie w pierwszej linii pliku miałbyś ilość obiektów, a w kolejnych liniach tytuły.

komentarz 27 kwietnia 2015 przez st4chuu Nowicjusz (210 p.)
To nie bylo by glupie rozwiązanie, jednak wymagalo by zbudowania praktycznie całego programu od nowa, tam jest już łącznie koło 100 labeli i buttonów. A pozatym Label[1] label[2] mówi nie wiele, podobnie z buttonami. Gdyby to było możliwe wolał bym zostawić z nazwami własnymi. Tzn np startButton itp
komentarz 27 kwietnia 2015 przez Buby Pasjonat (19,590 p.)

To może zaproponję Ci wykorzystać dziedziczenie i stowrzyć własną klasę na bazie labela. Stworzyłbyś w niej składową z nazwą. Wiem, że to tona roboty, więc mam świadomość, że to dość kiepskie rozwiązanie, biorąc pod uwagę potrzebę modyfikacji całego kodu.

P.S nie miałem w życiu styczności z Qt, ale muszę kiedyś przetestować - aplikacje okienkowe pisałem w WinApi, Gtk+, a aktualnie piłuję Gtkmm i piszę własny kurs, jeszcze z tydzień i zacznę wrzucać na bloga. [taka tam reklama devil]

0 głosów
odpowiedź 27 kwietnia 2015 przez hit02 Nałogowiec (33,970 p.)

Nazw nie możesz traktować jako zmiennych. Możesz użyć wskaźników, ale pamiętaj, że adresy mogą się zmienić po restarcie komputera, węc nie zapisuj ich do pliku. smiley Możesz chyba stworzyć tablice Buttonów i wczytywać po kolei do karzdego. W tedy dane nie powinny się pogubić.

komentarz 27 kwietnia 2015 przez st4chuu Nowicjusz (210 p.)
Mam plik csv w którym zapisuje nazwę wszystkich butonów labeli itd oraz to co ma być w nich wyświetlone.
Chciałem przy uruchomieniu odpalić funkcję która dla danej nazwy buttonu/labela wczytała by konkretną treść. Od biedy, można zrobić to na piechotę, liczyłem jednak, że znajdzie się jakieś wygodne rozwiązanie :P
komentarz 27 kwietnia 2015 przez hit02 Nałogowiec (33,970 p.)
C++ nie umieszcza nazw w binarce. Możesz zrobić jakieś strukturki przechowujące nazwy i funcję zwracającą adres po podaniu jej nazwy, tylko po co? Program bardzo się skomplikuje, spowolni i zajmie więcej pamięci.
0 głosów
odpowiedź 27 kwietnia 2015 przez jeremus Maniak (59,720 p.)
teoretycznie powinno to byc możliwe przy użyciu preprocesora ( #DEFINE )

ale lepiej posłuchaj rad kolegów - tablice obiektów to bardziej eleganckie rozwiązanie
komentarz 27 kwietnia 2015 przez st4chuu Nowicjusz (210 p.)
ok a pozwolę sobie zapytać. Jak zrobić taką tabicę? Pytanie może głupie, jednak dotychczas po prostu przesuwałem kontrolki z toolboxa i nie przejmowałem się tym jak one się implementują, a tutaj jak to przerobić do tabeli?

Dziekuję za wszelką pomoc
0 głosów
odpowiedź 28 kwietnia 2015 przez st4chuu Nowicjusz (210 p.)
A co myslicie o rozwiązaniu takim, że do wszystkich buttonów labeli itp zrobił bym tablice która była by wskaźnikami do konkretnych obiektów? Tzn na widoku były by przyciski z nazwami a na potrzeby podmiany treści zmieniana było by ona za pośrednictwem wskaźników, każdemu z elementów przypisać wskaźnik z tablicy. Z pliku CSV oczytywany byl by nr ID labela czy tezButtona  a następnie z kolejnej kolumny wczytywana tresć np. label[ID]->setText("tresc")

 

przepraszam za ewentualne błędy w nazewnictwie
0 głosów
odpowiedź 28 kwietnia 2015 przez jeremus Maniak (59,720 p.)

Myśle że to może załatwić temat :

Pętla po obiektach określonego typu.

To  jest co prawda przykład dla C++Borlanda, ale w QT powinno wygladac podobnie.

http://stackoverflow.com/questions/2391325/bcb-how-to-iterate-over-controls-on-a-form

Podobne pytania

+1 głos
4 odpowiedzi 3,959 wizyt
pytanie zadane 16 kwietnia 2015 w C i C++ przez M4tthew Gaduła (4,480 p.)
0 głosów
1 odpowiedź 279 wizyt
pytanie zadane 27 czerwca 2022 w C i C++ przez sushi2021 Nowicjusz (160 p.)
0 głosów
0 odpowiedzi 228 wizyt
pytanie zadane 20 stycznia 2019 w C i C++ przez niezalogowany

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...