Russian Qt Forum

Qt => Вопросы новичков => Тема начата: grig_p от Май 17, 2021, 09:57



Название: Наследование ui
Отправлено: grig_p от Май 17, 2021, 09:57
Здравствуйте, уважаемые коллеги!
Недавно начал использовать Qt, до этого довольно долго работал на Delphi и Object Pascal.
Появился такой вопрос.
Есть подкласс от QWidget, который содержит заголовок .h, код .cpp и форму .ui:
Код:
class MySuperClass : public QWidget
{
...
}
На форме имеются некоторые виджеты, относящиеся к MySuperClass.
Есть также подкласс, который также содержит заголовок .h, код .cpp и форму .ui:
Код:
class MySubClass : public MySuperClass
{
...
}
На форме также имеются некоторые виджеты, относящиеся к MySubClass.

Как правильно это реализовать с помощью Qt?
В Delphi на форме наследнике имеются те же элементы, что и на форме - предке, которые можно изменять, вставлять что-то новое и т.д.
В Qt. форма подкласса пустая. Я могу расположить на ней виджеты, но они появляются в непонятных местах.
Как их добавить так, чтобы они появлялись в нужных местах формы суперкласса?


Название: Re: Наследование ui
Отправлено: tux от Май 18, 2021, 15:00
Вы хотите смешать два интерфейса? Зачем?
Если вы хотите сделать просто класс-интерфейс и из наследуемого класса иметь доступ к UI-виджетам, то проще в вашем суперклассе сделать сеттеры/геттеры и вызывать именно их.


Название: Re: Наследование ui
Отправлено: Racheengel от Май 25, 2021, 13:52
Здесь есть только 2 решения.

1. Делать весь гуй кодом, без дизайнера. Соответственно переопределить нужные методы в наследнике.
2. Сделать базовую форму в дизайнере, но оставить в ней виджеты-плейсхолдеры, на которые наследники смогут паковать свой контент. Как - см. пункт 1.


Название: Re: Наследование ui
Отправлено: grig_p от Май 26, 2021, 13:32
Спасибо большое. Я так примерно и представлял, но думал, что есть какое-то специфичное решение, о котором я не знал.