Domanda

Avevo bisogno di leggere i classnam portatili, i nomi ecc. Dalla GUI caricata tramite Quiloader. E ho ricevuto risposta qui che avevo bisogno di sottoclasse Quiloader e reimplementare il suo metodo.

Ho Mainwindow, e tramite menu / barra degli strumenti Carico il file e mostralo.E quando carico voglio sapere quali elementi sono in quella GUI per lavorare ulteriormente con loro. Il codice che ho ricevuto da un utente qui:

class UiLoader : public QUiLoader
{
    Q_OBJECT
public:
QStringList *wlist;
UiLoader(QObject *parent = 0) : QUiLoader(parent) {}

virtual QWidget* createWidget(const QString &className, QWidget *parent =0, const   QString &name = QString())
{
    QWidget* widget = QUiLoader::createWidget(className, parent, name);
    //here do my stuff with className, parent, name
    return widget;
}
};
.

Ho usato uiloader per caricare il mio file.E sta funzionando.

La mia domanda ora è come intercetto CreateWidget Prima di restituire il widget, voglio ottenere l'elenco dei widget e quindi restituire i widget. Non so come è il modo efficiente per creare un elenco semplice come questo: 0=> TextBox, 1=> Pulsante, ... Non mi interessa davvero la struttura che ho solo bisogno di sapere quale viene prima e cos'è.

Grazie.

È stato utile?

Soluzione

Non sarei reimplement il caricatore della classe a tutto onestamente .. potrebbe essere solo se è necessario "iniettare" qualcosa nel codice esistente che usa il Quiloader molto .. ma in generale solo la cosa di cui hai bisogno:

 pWidget = ...->createWidget(...);

 QList<QWidget *> widgets = pWidget->findChildren<QWidget *>();
.

Qui vai, i tuoi widget contiene elenco di tutti i componenti del modulo ..

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top