U
Undergiven01 грудня 2020 р. 03:37

Qt наследование и виджеты

qt

Приветствую, любимый форум! =)
Очень нужен совет, куда копать, как сделать...

Есть mainwindow, на котором размещен комбобокс (с вариантами выбора А1, А2, B1, B2) и фрейм для виджета.
В зависимости от выбора в комбобоксе - в фрейм добавляется один из виджетов.

Виджеты представлены базовыми классами: A, B.
Эти базовые классы наследуются от QWidget-а.

Но от этих базовых классов A,B наследуются дочерние A1, A2, B1, B2.

у комбобокса описан слот

on_combobox_activated(int index){
    QLayoutItem *item;
    while((item = layout->takeAt(0)) != 0){
        delete item->widget();
        delete item;
    }

    QWidget *tmpWidget = nullptr;
    if(ui->comboBox_moduleType->itemData(index, Qt::UserRole) == "A1") tmpWidget = new A1();
    else if(ui->comboBox_moduleType->itemData(index, Qt::UserRole) == "B2") tmpWidget = new B2();

    if(tmpWidget != nullptr){
        layout->addWidget(tmpWidget);
    }
}

Виджеты добавляются нормально, но я не понимаю, как вызвать методы этих классов A1, B2 и тд...
Подскажите, как организовать эту архитектуру?

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

1
U
  • 01 грудня 2020 р. 03:47
  • (відредаговано)

Наверное нужно написать класс-интерфейс IBasic
и потом попробовать
IBasic *b = qobject_cast (tmpWidget);

?

Но у меня в базовых классах A,B - формы... Получается, что A,B должны будут наследоваться от QWidget-а и от IBasic?

    Коментарі

    Only authorized users can post comments.
    Please, Log in or Sign up
    sf

    C++ - Тест 004. Указатели, Массивы и Циклы

    • Результат:90бали,
    • Рейтинг балів8
    МВ

    Qt - Тест 001. Сигналы и слоты

    • Результат:68бали,
    • Рейтинг балів-1
    ЛС

    C++ - Тест 001. Первая программа и типы данных

    • Результат:53бали,
    • Рейтинг балів-4
    Останні коментарі
    A
    ALO1ZE19 жовтня 2024 р. 05:19
    Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
    ИМ
    Игорь Максимов05 жовтня 2024 р. 04:51
    Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
    d
    dblas505 липня 2024 р. 08:02
    QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
    k
    kmssr08 лютого 2024 р. 15:43
    Qt Linux - Урок 001. Автозапуск програми Qt під Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
    АК
    Анатолий Кононенко04 лютого 2024 р. 22:50
    Qt WinAPI - Урок 007. Робота з ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
    Тепер обговоріть на форумі
    J
    JacobFib17 жовтня 2024 р. 00:27
    добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
    ИМ
    Игорь Максимов03 жовтня 2024 р. 01:05
    Реализация навигации по разделам Спасибо Евгений!
    JW
    Jhon Wick01 жовтня 2024 р. 12:52
    Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
    КГ
    Кирилл Гусарев27 вересня 2024 р. 06:09
    Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
    F
    Fynjy22 липня 2024 р. 01:15
    при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

    Слідкуйте за нами в соціальних мережах