Как загрузить форму пользовательского интерфейса 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 в свой фрейм и продвигать этот виджет вместо фрейма.

Другие вопросы по тегам