J'ai un quand je clique sur le J'ai essayé de le faire avec ce code: p> qhboxlayout code> avec un
qtreewidget code> à gauche, un séparateur sur le milieu et un widget à droite.
Qtreewidget code>, je veux modifier le widget sur la droite pour modifier le
qtreewidgetem code> p>
def new_rendez_vous(self):
self.ui.horizontalLayout_4.removeWidget(self.ui.editionFormWidget)
del self.ui.editionFormWidget
self.ui.editionFormWidget = RendezVousManagerDialog(self.parent)
self.ui.editionFormWidget.show()
self.ui.horizontalLayout_4.addWidget(self.ui.editionFormWidget)
self.connect(self.ui.editionFormWidget, QtCore.SIGNAL('saved'), self.scheduleTreeWidget.updateData)
def edit(self, category, rendez_vous):
self.ui.horizontalLayout_4.removeWidget(self.ui.editionFormWidget)
del self.ui.editionFormWidget
self.ui.editionFormWidget = RendezVousManagerDialog(self.parent, category, rendez_vous)
self.ui.editionFormWidget.show()
self.ui.horizontalLayout_4.addWidget(self.ui.editionFormWidget)
self.connect(self.ui.editionFormWidget, QtCore.SIGNAL('saved'), self.scheduleTreeWidget.updateData)
def edit_category(self, category):
self.ui.horizontalLayout_4.removeWidget(self.ui.editionFormWidget)
del self.ui.editionFormWidget
self.ui.editionFormWidget = CategoryManagerDialog(self.parent, category)
self.ui.editionFormWidget.show()
self.ui.horizontalLayout_4.addWidget(self.ui.editionFormWidget)
self.connect(self.ui.editionFormWidget, QtCore.SIGNAL('saved'), self.scheduleTreeWidget.updateData)
3 Réponses :
La solution la plus courante consiste à utiliser qstactactedwidget code> a > et mettre tous les widgets possibles dans la pile. Lors de la sélection d'un élément, appelez simplement
setCurrentWidget code> pour afficher celui que vous voulez. P>
Nice, je vais essayer. Merci
J'ai la même question que Natiime.
Le Qstackedwidget est une solution pour une mise en page préréglée. Il agit comme la chose flippeuse dans un vieux dîner pour une boîte à musique. (X-quantité d'albums dans la Jukebox, retourner dans les albums installés). P>
Cependant, cela ne résout pas la question. p>
Par exemple, j'ai un code je suis prototypage avec une mise en page d'interface utilisateur, mais je souhaite remplacer certains des widgets qui agissent en tant que porte-locaux avec les widgets appropriés codés lors de l'exécution du script principal, ou est créé de manière dynamique. p>
Je suis sûr qu'il existe une procédure simple ou une mise en garde de manière à supprimer / remplacer correctement un widget. p>
Le code que j'ai a un widget TextEdit de base dans un disposition de la grille. Je souhaite coder une version personnalisée de ce widget pour glisser-déposer, puis échangez-le avec le texte par défaut. P>
Comme Natiman, le code semble logiquement sonner, mais les widgets sont emballés de manière logique dans le La mise en page comme dumping un sac à main. P>
J'espère pouvoir comprendre l'astuce à cela et republier la mise en garde. P>
solution: p>
voilà !! Trouvé quelque chose qui fait certainement l'affaire. Fermez votre widget p> J'ai supprimé le widget de la mise en page, puis fermé le widget. À ce stade, la variable que j'utilise est ouverte pour créer mon widget personnalisé / modifié, puis la réinserner dans la mise en page P> Oui, une autre élégance est nécessaire pour traiter des mises en page plus compliquées, mais la base Besoin de détruire un widget afin de remplacer est dans la méthode .Close () P> acclamations .. J'espère que cela aide.
B p> p>
Merci beaucoup mate enfin une solution qui fonctionne réellement
En réalité, comme pour Qt5 fort> au moins, il existe une alternative plus compacte à la solution de B4ADLE7 utilisant Qlayout's REMPLACEMENTWIDGET : containing_layout = placeholder.parent().layout()
containing_layout.replaceWidget(placeholder, new_widget)
Oui! Travaillé pour moi! Rapide et simple comme cela pourrait être!