Подклассный Quiloader и переиздание функции Createwidget его

StackOverflow https://stackoverflow.com//questions/22070866

  •  23-12-2019
  •  | 
  •  

Вопрос

Мне нужно было прочитать классные имена виджетов, имена и т. Д. От GUI, загруженных через Quiloader. И я получил ответ здесь, что мне нужно было подклассировать QuiLoader и переизмерять его метод.

У меня есть MainWindow, а через меню / панель инструментов я загружаю файл и покажу его.И когда я загружаю, я хочу знать, какие элементы в этом GUI работают дальше с ними. Код, который я получил от пользователя здесь:

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

Я использовал UILOADER, чтобы загрузить мой файл.И это работает.

Мой вопрос сейчас - это то, как я перехват Createwidget перед возвратом виджета, я хочу получить список виджетов, а затем возвращать виджеты. Я не знаю, как какой эффективный способ создать список так же просто, как этот: 0=> Текстовое поле, 1=> кнопка, ... Мне действительно не волнует структуру, мне просто нужно знать, какой из них поначалу и что это такое.

Спасибо.

Это было полезно?

Решение

Я бы даже не погрузил класс погрузчика.

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

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

Здесь вы идете, ваши виджеты содержит список всех компонентов формы ..

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top