Ich portiere eine Anwendung von Qt3 nach Qt4 und benötige eine Qt4-Ersetzung für QApplication :: mainWidget(), die verwendet wurde, um das Top-Level-Widget in Qt3 zurückzugeben. Kann jemand das in Qt4 machen?Was wurde QWidget * QApplication :: mainWidget() in Qt4?
Antwort
Technisch gesehen ist jedes mit NULL initialisierte Widget ein Top-Level-Widget, so dass QApplication nicht davon ausgehen sollte, dass einer von ihnen besser ist als ein anderer.
Die Art, wie ich es normalerweise mache, ist es, irgendwo einen Zeiger auf das "echte" Haupt-Widget zu speichern, sogar auf eine globale Variable oder ein Singleton, und es bei Bedarf zu referenzieren.
Ich denke, topLevelWidgets() ist so nah dran sein kann.
Bearbeiten:
Yup. Qt4 fügte Komplexität (und Macht) hinzu. Es gibt kein anwendungsweites MainWidget mehr. Viele QMainWindows können erstellt und angezeigt, ausgeblendet und erneut angezeigt werden. Das ist eine gute Sache, aber :) Wie shoosh bemerkt, QT3 Verhalten kann leicht mit globalen Variable (yuck!) Oder QApplication Subklasse simuliert werden.
Ich denke, was Sie suchen, wurde durch die QMainWindow Klasse ersetzt, die Sie ein set und get ein zentrales Widget festlegen können.
Ja, ich sah diese Methode. Aber es fühlte sich wie ein Schritt in die falsche Richtung an, da es Komplexität hinzufügt. Dies ist bisher der einzige Fall, in dem ich das Gefühl habe, dass Qt3 besser als Qt4 ist, und deshalb musste ich fragen. Ich werde die Frage ein wenig länger offen lassen, aber wenn niemand etwas besser findet, werde ich Ihre Antwort akzeptieren. Danke .. – Kristian
Nun, Sie können immer "Haupt-Widget" selbst verfolgen, abhängig von Ihrer App. – Eugene