Wykonywanie się metody przy starcie aplikacji

0

Mam problem z tym, że zapisałem w konstruktorze pewnego okna (to okno nie jest głównym oknem aplikacji) wykonanie się pewnej metody z klasy dajmy na to Message_Box.
I problem jest taki, że ten Message_Box dajmy na to Message_Box("Hello World"); powinien się wykonać przy otwarciu okna trzeciego z kolei (dopiero wtedy) a nie przy momentalnym uruchomieniu aplikacji, jeszcze pierwsze/główne okno się nie pojawia, a Hello World już jest..

Jakie mogą być przyczyny tego, że metoda wykonuje się od razu mimo, że chcę ją wykonać później po wejściu w konkretne okno..?

Dodam, że klasa Message_Box'a to Singleton

0

parę:
a) To singelton i gdzieś w sofcie indziej wołasz tak metodę,
b) tworzysz sobie okno ale go jeszcze nie wyświetlasz ale już je zbudowano

wrzuć jakieś kawąłki kodu. btw. Singelton to nie najlepszy wzorzec projektowy, rozważ coś innego.

0

@revcorey: dzięki za odpowiedź, dlaczego uważasz Singleton za nie najlepszy wzorzec? I jaki inny wzorzec sugerujesz tak by był tylko 1 obiekt stworzony.

To prawda, że "tworzę" obiekt kilka razy w kodzie ale to nie uniknione jest w nim akurat.

0

Po pierwsze po co 30 plików? Mi by się nawet tych 30 plików nie chciało, dwa napisałem debbuger, trzy napisz sobie uml może to ci to pomoże. "

Wolałbym czysto teoretyczne podejście "

? Masz logikę jakąś tam ja naprawdę nie wiem co ty w tym programie masz. Jak byś poszedł do dermatologa i mówisz mu że ci wyskoczyła wysypka ale mu jej nie pokażesz.

kiedy mam w kilku miejscach: Dupa* dupa; to nie chce mieć zrobionych tony dup tylko odwoływać się do 1

To conajmniej słaby powód.

A UT są?

0

Prawdopodobnie chodzi o kolejność wywoływania show(). Przykładowo taka kolejność:

Init okno1
->Init okno2
->->Init okno3
->->->Messagebox razem z show
->->okno3.show()
->okno2.show()
okno1.show()

spowoduje że pierwszy pojawi się MsgBox.

Prostym aczkolwiek kiepskim rozwiozaniem byłoby Qtimer::singleShot z zerowym czasem.

EDIT:
Dodatkowym problemem może być również brak rodzica MsgBoxa, ale bez kodu ciężko określić

1 użytkowników online, w tym zalogowanych: 0, gości: 1