U
Жел. 1, 2020, 2:37 Т.Қ.

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

qt

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

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

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

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

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

  1. on_combobox_activated(int index){
  2. QLayoutItem *item;
  3. while((item = layout->takeAt(0)) != 0){
  4. delete item->widget();
  5. delete item;
  6. }
  7.  
  8. QWidget *tmpWidget = nullptr;
  9. if(ui->comboBox_moduleType->itemData(index, Qt::UserRole) == "A1") tmpWidget = new A1();
  10. else if(ui->comboBox_moduleType->itemData(index, Qt::UserRole) == "B2") tmpWidget = new B2();
  11.  
  12. if(tmpWidget != nullptr){
  13. layout->addWidget(tmpWidget);
  14. }
  15. }

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

1

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

1
U
  • Жел. 1, 2020, 2:47 Т.Қ.
  • (өңделген)

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

?

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

    Пікірлер

    Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
    Кіріңіз немесе Тіркеліңіз