Question

J'ai besoin de lire les noms de classe Widget, les noms, etc. de l'interface graphique chargée via quiloader. Et j'ai répondu ici que j'avais besoin de sous-classement Quiloader et de réilembler sa méthode.

J'ai MainWindow et via Menu / Barre d'outils, je charge le fichier et montrez-le.Et quand je charge, je veux savoir quels éléments sont dans cette interface graphique de travailler plus loin avec eux. Le code que j'ai reçu d'un utilisateur ici:

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;
}
};

J'ai utilisé Uiloader pour charger mon fichier.Et ça marche.

Ma question est la suivante: comment j'intercepte Createwidget avant de retourner widget, je souhaite obtenir la liste de widget puis retourner les widgets. Je ne sais pas comment quel est le moyen efficace de créer une liste aussi simple que celle-ci: 0=> Textbox, 1=> bouton, ... Je ne me soucie vraiment pas de la structure que j'ai juste besoin de savoir lequel vient en premier et de ce que c'est.

merci.

Était-ce utile?

La solution

Je ne voudrais pas réimplément que le chargeur de classe honnêtement .. Peut être que si vous devez «injecter» quelque chose dans le code existant qui utilisent beaucoup de quiloader .. Mais en général, seule chose dont vous avez besoin:

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

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

Vous allez ici, vos widgets contiennent une liste de tous les composants de formulaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top