Przyznam, ze w c++ programowalem ponad 5 lat temu. Korzystam jedynie z C, dlatego klasy troche mnie irytuja w tej chwili.
Mam klase odpowiadajaca za komunikacje po rs232, jest tam fcja odpowiadajaca za odbior danych, po otrzymaniu odpowiednich danych (otrzymuje je, sprawdzilem to) wywoluje f-cje, ktora ma za zadanie zaktualiozowac cos w GUI.
Wyglada to tak:
te dwie linijki sa wykonywane po odebraniu odpowiednich danych. W datetime pojawia sie data. win to klasa mainwindowimpl
datetime = QDateTime::fromString("25-12-2010 12:55:23","dd-MM-yyyy hh:mm:ss");
win.update_gun_dt(datetime);
ustawiam breakpointa w funkcji update_gun_dt i widac, ze program wchodzi do niej, w przekazanej zmiennej jest datetime. Wszystko sie ladnie zgadza.
Nastepnie w niniejszej f-cji wykonywane jest:
void MainWindowImpl::update_gun_dt(QDateTime a)
{
QString b = a.toString("hh:mm:ss");
QString c = a.toString("dd-MM-yyyy");
//gun_t_label->setText("lalab");
//gun_d_label->setText("nacisnalem");
gun_d_label->setText(c);
}
I teraz zaczyna sie problem. W GUI w ogole nie nastepuje aktualizacja tego label`a. Nawet jesli recznie wpisze jakis tekst, tak jak ponizej widac llab czy nacisnalem. Nic sie nie wyswietla. Puste pole.
Najsmieszniejsze jest to, ze obok w klasie win (mainwindowimpl) mam funkcje, ktora z timera (slot) wykonywana jest co 1 s (aktualizuje czas systemowy wyswietlany w gui). Jesli w niej wpisze wywolanie:
gun_d_label->setText("nacisnalem");
Pole sie aktualizuje. Gdzie robie cos nie tak, gdybym mial problem z private/public czesci skladowych klasy to chyba by kompilator krzyczal?
Dodatkowo zauwazylem, ze mam:
zmienna w klasie glownej o nazwie QDateTime akt_time
modyfikuje ja wlasnie w tej funkcji update, po wyjsciu update ta zmienna ma znowu 0. Dlaczego tak sie dzieje?
[QT][C++] Problem z dostepem do zmiennej z innej klasy?
-
- Wytworny Kaczor
- Posty: 352
- Rejestracja: 15 paź 2008, 18:30
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.04
- Środowisko graficzne: KDE Plasma
Odp: [QT][C++] Problem z dostepem do zmiennej z innej klasy?
Do głowy przychodzą mi tylko banalne błędy:
-pomyliłeś nazwę obiektu QLabel
-gdzieś dalej usuwasz to co wpisałeś
-usuń dla pewności plik obiektowy okienka przed kompilacją - czasem zdarza się że qmake nie wykrywa zmian
Nic więcej nie wymyślę bez kodu
-pomyliłeś nazwę obiektu QLabel
-gdzieś dalej usuwasz to co wpisałeś
-usuń dla pewności plik obiektowy okienka przed kompilacją - czasem zdarza się że qmake nie wykrywa zmian
Nic więcej nie wymyślę bez kodu

Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 17 gości