Sto effettuando il porting di un'applicazione da Qt3 a Qt4 e ho bisogno di una sostituzione Qt4 per QApplication :: mainWidget() che ha utilizzato per restituire il widget di livello superiore in Qt3. Qualcuno sa come farlo in Qt4?Cosa ha fatto QWidget * QApplication :: mainWidget() in Qt4?
risposta
Tecnicamente, qualsiasi widget inizializzato con NULL è un widget di livello superiore, quindi QApplication non dovrebbe presupporre che uno di essi sia migliore di un altro.
Il modo in cui di solito lo faccio è di salvare un puntatore sul widget principale "reale" da qualche parte, anche una variabile globale o un singleton e di riferirlo quando necessario.
Penso che il numero topLevelWidgets() sia il più vicino possibile.
Modifica:
Sì. Qt4 ha aggiunto complessità (e potenza). Non c'è più MainWidget dell'applicazione larga. Molte QMainWindows possono essere create e mostrate, nascoste e mostrate di nuovo. Questa è una buona cosa, però :) Come notato da shoosh, il comportamento QT3 può essere facilmente simulato con una sottoclasse di variabili globali (yuck!) O QApplication.
Penso che quello che stai cercando sia stato sostituito dalla classe QMainWindow, che ti permette di impostare un widget centrale con set e get.
Sì, ho visto questo metodo. Ma sembrava un passo nella direzione sbagliata dal momento che aggiunge complessità. Questo è finora l'unico caso in cui ritengo che il Qt3 sia migliore del Qt4, ed è per questo che ho dovuto chiedere. Lascerò la domanda aperta un po 'più a lungo, ma se nessuno riuscirà a fare qualcosa di meglio accetterò la tua risposta. Grazie .. – Kristian
Bene, puoi sempre tenere traccia del "widget principale" da solo, a seconda della tua app. – Eugene