[c++][QT]Dziedziczenie UI w qt przez wątek

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
none
Sędziwy Jeż
Sędziwy Jeż
Posty: 60
Rejestracja: 12 wrz 2007, 18:11
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: LXDE

[SOLVED][c++][QT]Dziedziczenie UI w qt przez wątek

Post autor: none »

Mam problem ponieważ stworzyłem wątek przez QThread o nazwie klasy
QWatek w funkcji run() opisałem co ma sie dziać po jej wykonaniu po
wykonaniu po wydaniu polecenia QWatek.start(); wszystko działa jednak
jest jeden problem chciałbym aby ten wątek modyfikował nazwę jednego
przycisku i jak mam zadeklarować Ui próbowałem przez

Kod: Zaznacz cały

MainWindow::Ui::przycisk->setText("cos");
ale nie działa dodam, że
pracuje w QtCreator.
Pozdrawiam.
%55%62%75%6E%74%75%20%26%20%44%65%62%69%61%6E%20%75%73%65%72%2C%20%6D%79%20%67%67%3A%31%30%30%33%30%39%38%38
mikolajs
Wytworny Kaczor
Wytworny Kaczor
Posty: 352
Rejestracja: 15 paź 2008, 18:30
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma

Odp: [c++][QT]Dziedziczenie UI w qt przez wątek

Post autor: mikolajs »

Rozumiem, że przycisk jest w klasie MainWindow, czy tak?
Jeżeli tak to nie możesz się do niej odwołać tak jak piszesz bo nie jest to metoda statyczna. Najlepiej chyba będzie przekazać wskaźnik lub referencję do tej klasy w konstruktorze QWanek.
adrian5632
Przyjaciel
Przyjaciel
Posty: 259
Rejestracja: 17 gru 2006, 16:07
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma

Odp: [c++][QT]Dziedziczenie UI w qt przez wątek

Post autor: adrian5632 »

A bez przekazywania wskaźników można użyć sygnałów i slotów, bo po to głównie są.
[IMG]http://www.ubudsl.com/media/UbuDSL.png[/IMG]
Masz problem z UbuDSL? Nie zapomnij wygenerować i załączyć loga do postu!
mikolajs
Wytworny Kaczor
Wytworny Kaczor
Posty: 352
Rejestracja: 15 paź 2008, 18:30
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma

Odp: [c++][QT]Dziedziczenie UI w qt przez wątek

Post autor: mikolajs »

adrian5632 pisze:A bez przekazywania wskaźników można użyć sygnałów i slotów, bo po to głównie są.
Tak, tylko używając connect() należy podać wskaźnik do klasy ze slotem, stąd wynika, że i tak należy w jakiś sposób przekazać ten wskaźnik do wspomnianej klasy QWatek (a w wtedy zbędne jest wykorzystanie slotu)
adrian5632
Przyjaciel
Przyjaciel
Posty: 259
Rejestracja: 17 gru 2006, 16:07
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma

Odp: [c++][QT]Dziedziczenie UI w qt przez wątek

Post autor: adrian5632 »

Chyba ekonomiczniej jest wykorzystywać sygnały i sloty, bo jak potrzebujesz dokonać operacji np. na 10 widgetach, to będziesz rozbudowywał klasę wątku tak, by przyjmowała 10 wskaźników? A używając connect nie podajesz wskaźnika do klasy, tylko do obiektu (wiem, o co ci chodziło, jednak to, co napisałeś było nielogiczne). Poza tym używanie sygnałów i slotów jest prostrze do ogarnięcia, tym bardziej, jeśli masz zamiar rozbudowywać klasę bez jej przebudowywania.
[IMG]http://www.ubudsl.com/media/UbuDSL.png[/IMG]
Masz problem z UbuDSL? Nie zapomnij wygenerować i załączyć loga do postu!
mikolajs
Wytworny Kaczor
Wytworny Kaczor
Posty: 352
Rejestracja: 15 paź 2008, 18:30
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma

Odp: [c++][QT]Dziedziczenie UI w qt przez wątek

Post autor: mikolajs »

Ok, może i faktycznie bardziej elegancko jest podłączyć statyczną metodą connect(), ale akurat dla przycisku (zakładam, że autor postu miał na myśli wskaźnik do obiektu QPushButton) metoda setText() nie jest slotem więc i tak trzeba napisać slot dla MainWindow
A używając connect nie podajesz wskaźnika do klasy, tylko do obiektu (wiem, o co ci chodziło, jednak to, co napisałeś było nielogiczne).
W kodzie klasy nie ma jeszcze, żadnych obiektów, dopiero jednemu obiektowi przekazuje wskaźnik do drugiego obiektu. Nie wiem po co się czepiać, skoro oboje rozumiemy o co chodzi.
Awatar użytkownika
none
Sędziwy Jeż
Sędziwy Jeż
Posty: 60
Rejestracja: 12 wrz 2007, 18:11
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: LXDE

Odp: [c++][QT]Dziedziczenie UI w qt przez wątek

Post autor: none »

Ok już wszytko zrobiłem zastosowałem tak jak adrian napisał sloty i funkcje. Wszystko sprowadzało się do wywołąnia za pomocą emit danego sygnału.
%55%62%75%6E%74%75%20%26%20%44%65%62%69%61%6E%20%75%73%65%72%2C%20%6D%79%20%67%67%3A%31%30%30%33%30%39%38%38
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

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