[QT][C++] Problem z dostepem do zmiennej z innej klasy?
: 14 gru 2010, 18:38
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?
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?