Es ist mir nicht klar, ob Sie beibehalten möchten, der widget und legen Sie es irgendwo anders, oder wenn Sie wollen, zerstören Sie das widget.
Die Zerstörung der widget:, Wenn Sie können
einen Zeiger auf das widget, können Sie
es einfach zu löschen. Der splitter wird
sicher werden benachrichtigt, dass Ihr Kind ist
gelöscht und werde es entfernen
aus sich selbst.
Erhaltung der widget:, Wenn Sie greifen
der pointer auf das widget, können Sie
einfach seine Eltern zu einigen anderen
widget und fügen Sie es zu einem anderen
widget-layout und es wird sich zeigen
es. Dies ist sicher, weil Sie
QSplitter werden benachrichtigt, dass eine
von seinen Kindern ist sein reparented.
Wenn Sie möchten, um die Eltern zu NULL (cjhuitt Antwort) werden Sie sich bewusst, dass Sie sind jetzt verantwortlich für die Reinigung, die Speicher, da die widgets nicht mehr über ein Elternteil.
Beachten Sie, dass, wenn Sie die parent-NULL-widget wird ein Hauptfenster... (es sei denn, Sie verstecken es zuerst.)
Ich mag Tuminoid Antwort. Aber wenn du unbedingt es entfernt, versuchen Sie das widget, das Sie entfernen möchten, und rufen Sie setParent( NULL ) auf das widget. Das ist meine beste Vermutung.
Wenn Sie einen Zeiger auf das widget, dann löschen Sie es einfach, oder verwenden Sie deleteLater (), wenn Sie wollen, um auf der sicheren Seite.
Wenn Sie nicht das widget pointer, verwenden Sie QSplitter::widget(int index) Funktion. Anschließend können Sie aufrufen deleteLater () - slot.
Wenn Sie nicht über das widget auf dem index, aber Sie kennen noch das widget objectName(), dann QObject::findChild() ist die einzige Weg, um die widget-Zeiger.
Ich lief in das gleiche problem. In Qt 4.8 zeitlich verstecken von die widget-ein QSplitter ich einfach ausblenden. Es ist jedoch nicht genug, wie die splitter der Griff ist noch vorhanden, sich zu bewegen. Aber das handle zugegriffen werden kann und auch versteckt:
frameA->setVisible(conditionA);
frameB->setVisible(conditionB);if(!(conditionA && conditionB))//if only 1 frame is visible{
splitter->handle(0)->setVisible(false);}
Einen anderen einfachen Weg um zu verhindern, dass das Kind-widget von immer gelöscht schützen, ist die Verwendung QSplitter.takeWidget(Kind). Dies ist auch der empfohlene Weg, entfernen Sie das widget aus einem splitter. (Qt-Dokumentation)
einen link zu doc für takeWidget. Es gibt keine solche Sache wie QSplitter.takeWidget.
Viele Dinge, die in Qt nicht "traditionell" entfernt. Stattdessen rufen hide() auf und zerstören es. Von QSplitter Dokumentation:
InformationsquelleAutor Tuminoid
Es ist mir nicht klar, ob Sie beibehalten möchten, der widget und legen Sie es irgendwo anders, oder wenn Sie wollen, zerstören Sie das widget.
Die Zerstörung der widget:, Wenn Sie können
einen Zeiger auf das widget, können Sie
es einfach zu löschen. Der splitter wird
sicher werden benachrichtigt, dass Ihr Kind ist
gelöscht und werde es entfernen
aus sich selbst.
Erhaltung der widget:, Wenn Sie greifen
der pointer auf das widget, können Sie
einfach seine Eltern zu einigen anderen
widget und fügen Sie es zu einem anderen
widget-layout und es wird sich zeigen
es. Dies ist sicher, weil Sie
QSplitter werden benachrichtigt, dass eine
von seinen Kindern ist sein reparented.
Wenn Sie möchten, um die Eltern zu NULL (cjhuitt Antwort) werden Sie sich bewusst, dass Sie sind jetzt verantwortlich für die Reinigung, die Speicher, da die widgets nicht mehr über ein Elternteil.
InformationsquelleAutor Michael Bishop
Ich mag Tuminoid Antwort. Aber wenn du unbedingt es entfernt, versuchen Sie das widget, das Sie entfernen möchten, und rufen Sie
setParent( NULL )
auf das widget. Das ist meine beste Vermutung.InformationsquelleAutor Caleb Huitt - cjhuitt
Wenn Sie einen Zeiger auf das widget, dann löschen Sie es einfach, oder verwenden Sie deleteLater (), wenn Sie wollen, um auf der sicheren Seite.
Wenn Sie nicht das widget pointer, verwenden Sie QSplitter::widget(int index) Funktion. Anschließend können Sie aufrufen deleteLater () - slot.
Wenn Sie nicht über das widget auf dem index, aber Sie kennen noch das widget objectName(), dann QObject::findChild() ist die einzige Weg, um die widget-Zeiger.
InformationsquelleAutor Ariya Hidayat
Ich lief in das gleiche problem. In Qt 4.8 zeitlich verstecken von die widget-ein QSplitter ich einfach ausblenden. Es ist jedoch nicht genug, wie die splitter der Griff ist noch vorhanden, sich zu bewegen. Aber das handle zugegriffen werden kann und auch versteckt:
InformationsquelleAutor thrichard
Einen anderen einfachen Weg um zu verhindern, dass das Kind-widget von immer gelöscht schützen, ist die Verwendung QSplitter.takeWidget(Kind). Dies ist auch der empfohlene Weg, entfernen Sie das widget aus einem splitter. (Qt-Dokumentation)
Es gibt keine solche Sache wie
QSplitter.takeWidget
.InformationsquelleAutor Mathias Helminger