Я пытаюсь загрузить файл ui, содержащий пользовательские виджеты, с помощью QUiLoader.QUiLoader создает только базовые классы пользовательских виджетов
Мои пользовательские виджеты (называемые CustomButton) наследуют от QPushButton. Файл ui загружается и помещается в мой основной макет, но все пользовательские кнопки - это только QPushButtons. Кажется, что QUiLoader создает все мои собственные виджеты в качестве экземпляров их базовых классов.
Это то, что я делаю:
QUILoader loader;
loader.addPluginPath(MY_PLUGIN_PATH);
QStringList availableWidgets = loader.availableWidgets();
//fail if "CustomButton" is not available
if (!availableWidgets.contains("CustomButton")) {
return false;
}
//here I see that availableWidgets contain my "CustomButton"!
QString qFileName(MY_UI_FILE_PATH);
QFile file(qFileName);
file.open(QFile::ReadOnly);
//"mainFrame" is a QFrame in my main ui
QWidget *customWidget = loader.load(&file, mainframe);
file.close();
//layout
mainframe->layout()->addWidget(customWidget);
//Note: There are no QPushButtons in my ui file! There are only CustomButtons!
//Now I try to find my custom buttons
QList<QPushButton*> list1 = customWidget->findChildren<QPushButton *>(); //all my CustomButtons are listed here
QList<CustomButton*> list2 = customWidget->findChildren<CustomButton *>(); //this list is empty
// У меня также есть точки останова в конструкторе моего CustomButton, который никогда не попал.
Что я делаю неправильно?
Что такое 'GUILoader'? Вы проверили свой файл .ui? –
Просто опечатка. Это должен быть QUiLoader. – courtjester199
@SaZ, мой .ui файл правильный. '' –
courtjester199