Qual è la differenza tra QMainWindow, QWidget e QDialog?Qual è la differenza tra QMainWindow, QWidget e QDialog?
79
A
risposta
81
A QWidget
è la classe base per tutte le classi disegnabili in Qt. Qualsiasi classe basata su QWidget
può essere mostrata come una finestra mostrandola quando non ha un genitore.
A QDialog
è basato su QWidget
, ma progettato per essere visualizzato come una finestra. Apparirà sempre in una finestra e ha funzioni per farlo funzionare bene con i pulsanti comuni nelle finestre di dialogo (accettare, rifiutare, ecc.).
QMainWindow
è progettato in base alle esigenze comuni di una finestra principale. Dispone di posizioni predefinite per una barra dei menu, una barra di stato, una barra degli strumenti e altri widget. Non ha alcuna tolleranza incorporata per pulsanti come QDialog
.
Ho cercato questa domanda ma non è proprio la risposta che stavo aspettando. In QtDesigner, utilizzando QMainWindow, sono disponibili una barra dei menu e una barra di stato. Quando scrivi il codice tu stesso e usi QMainWindow non hai questo. O stai dicendo che puoi fare qualcosa come window.addToolBar ("Barra degli strumenti"); e lo posizionerà in un posto predefinito senza altri mal di testa? –
@MoraruLilian: In realtà non utilizzo QMainWindow, quindi non conosco i particolari. Come ho detto nella mia risposta, so che ha posti per loro, quindi farlo in codice potrebbe essere semplice come si afferma. –
@Caleb_Huitt Fa quello che sto dicendo. Volevo solo chiarire se è quello che stai cercando di dire. In ogni caso, raccomanderei sempre di usare QWidget al posto di QMainWindow. È possibile entrare nei problemi, ad esempio con l'impostazione di un altro layout. Se si desidera impostare un nuovo layout in QMainWindow, è necessario creare un QWidget e impostarlo come un widget centrale per QMainWin e solo in QWidget è possibile impostareLayout (QLayout *). Mentre è possibile evitare ulteriori mal di testa solo usando QWidget. Certo, QMainWindow offre una facile configurazione di ToolBar e StatusBar ma puoi farlo tu stesso in QWidget ... –