(utilizzo Qt 4.7, Windows 7, 64 bit).Informazioni sull'eliminazione, rimozione di widget e layout in Qt 4
Ho creato un tavolo personalizzato. Ogni riga è un layout orizzontale con widget. Le file sono mantenute in una lista Q per un facile accesso e anche per i bambini. Le righe vengono anche aggiunte all'interno del widget principale.
Se ridimensiono il widget padre, calcolo le nuove dimensioni, elimina tutto e lo ricrei di nuovo.
Il mio problema è che non voglio cancellare nessun widget. Solo quando cancello il tavolo, lo faccio.
Dato che ho i widget all'interno di una QList e all'interno dei layout principali, come posso rimuovere tutti i widget in ogni riga, eliminare tutti i layout e aggiungerli a nuovi layout?
Se lo faccio: takeAt (0) per ogni elemento all'interno di ogni layout, ho un oggetto QLayoutItem con un widget all'interno ... Come posso cancellare il layoutItem senza eliminare il widget? .... Come rimuovo il widget senza ucciderlo, non importa se è nel genitore o nel bambino? Perché ci sono molti metodi per eliminare: removeItem, removeWidget ... in un layout, ma non takeWidget ... solo takeAt() e dà un Qlayoutitem.
Ho provato diversi modi, ma vedo ancora i widget, non importa cosa gli sia successo.
Domande su questo:
Quando parte un widget vengono eliminati? Se prendoWidget (indice) da un layout, viene cancellato un po 'di tempo da solo? succede se ho un puntatore ad esso in un'altra lista?
removeAt (index) esegue il metodo di eliminazione di un widget?
layout() -> removeAt (widget); esiste SOLO per QGraphicsLayout. Quello che intendi è probabilmente layout() -> removeWidget (widget); – Bim
Questo è anche ciò che puoi fare per rimuovere un widget da un layout SENZA cancellarlo.Se non si dispone del puntatore del widget, effettuare le seguenti operazioni: QLayoutItem * item = layout-> itemAt (0); QWidget * widget = oggetto-> widget(); if (widget! = NULL) { layout-> removeWidget (widget); // se si desidera eliminare il widget, fare: widget -> setParent (NULL); elimina widget; (la formattazione non funziona, ma si ottiene l'idea ...) – Bim
FYI: Questo non è valido in Python poiché si deve occuparsi anche dell'oggetto C++ interno. – darkgaze