Подклассный Quiloader и переиздание функции Createwidget его
-
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 *>();
.
Здесь вы идете, ваши виджеты содержит список всех компонентов формы ..