Wpis z mikrobloga

@arkadiusz97: Musisz stworzyć nowy obiekt (np QWidget) i wywołać na nim show. Oczywiście to w skrócie, potem trzeba się go pozbyć, np poprzez ustawienie flagi setAttribute(Qt::WA_DeleteOnClose); żeby się sam usunął po zamknięciu, albo wykonanie metody deleteLater() by go natychmiast (możliwie szybko) usunąć.
Jeżeli chcesz przechowywać wskaźniki na takie obiekty, które się same usuwają to używaj QPointer zamiast nagiego wskaźnika.
  • Odpowiedz
@tell_me_more: @lionbest: Ok, udało mi się z tym uporać. Zapomniałem wspomnieć, że używam QtCreatora i wystarczyło zrobić nową klasę okna z szablonu. Mam tylko jeszcze jeden problem. Nie wiem co zrobić, aby np. przyciskiem z dodatkowego okna oddziaływać na coś w drugim oknie. Tzn. aby po wciśnięciu przycisku w oknie x, pojawiło się okno y i żeby okno y mogło oddziaływać na obiekty w oknie x.
  • Odpowiedz
@arkadiusz97: sygnałami?

w momencie tworzenia oknaY robisz connecta między sygnałami oknaY i slotami w dzieciach oknaX. OknoY łączy sygnały swoich dzieci z sygnałami wysyłąnymi przez same oknoY. OknoX w slotach robi co trzeba. Na usunięcie oknaY najpierw rozłączasz oknoY i oknoY. Coś w tym stylu:

dzieciOknaX <-connect-> oknoX <- connect na czas istnienia oknaY -> oknoY <-connect-> dzieciOknaY

Można też inaczej (np przekazując w konstruktorze oknaY referencję do oknaX), ale sygnałami
  • Odpowiedz
@tell_me_more: Wywołanie okna y działa, tylko co zrobić, aby np. wciśnięcie przycisku w oknie y np. zmieniało napis na przycisku na oknie X, gdy klasy okien stworzyłem kreatorem do klasy formularza? Wydaje mi się, że musiałbym zrobić connecta między sygnałem z przycisku w oknie y ze slotem w przycisku w oknie x, ale okno y nie ma dostępu do okna y.
  • Odpowiedz