Как загрузить форму пользовательского интерфейса QtDesigner в QFrame другой формы пользовательского интерфейса?
Я разработал QWidget
основанный на QtDesigner пользовательский интерфейс. Давайте назовем это Form1. Я добавил несколько кнопок и ярлыков. Теперь я разработал другую QWidget основанную на Qt UI конструктор форму. Пусть она называется Form2. У меня есть QFrame в форме 2, в которой я хотел бы загрузить Form1.
Я немного почитал и обнаружил, что могу щелкнуть правой кнопкой мыши QFrame и выбрать повышение до. Я поставил базовый класс как QFrame. Повышенное имя класса как Form1. Заголовочный файл как form1.h.
Теперь я получаю ошибки, говоря:
Form1 has no member named 'setFrameShape'
Form1 has no member named 'setFrameShadow'
Я изменил базовый класс как QWidget
, И это все еще не загрузило Form1 в QFrame Form2
Любая помощь приветствуется.
РЕДАКТИРОВАТЬ:
Я использовал базовый класс как QFrame
и я закомментировал следующие строки в ui_form2.h, и это сработало frame->setFrameShape()
а также frame->setFrameShadow()
и это сработало.
Если есть лучший способ сделать это, пожалуйста, дайте мне знать
1 ответ
Продвижение виджета в дизайнере - это просто способ сказать: "Я знаю, что это похоже на <Стандартный виджет>, но когда вы генерируете код, я на самом деле хочу, чтобы вы вместо этого создали <Более специализированный виджет>". Виджет, который вы продвигаете (и базовый класс для продвижения), должен относиться к типу, который является предком того типа, который вы продвигаете.
В вашем конкретном случае основой для вашего продвигаемого виджета должен быть QWidget (вместо QFrame), потому что это тип Form1. Вы должны поместить простой QWidget в свой фрейм и продвигать этот виджет вместо фрейма.