2014-09-12 3 views
0

Я создал 2 .ui файлов, один из них - главное окно, а другой - виджет. Дизайнер генерирует файлы 2 .header каждый с QT_BEGIN_NAMESPACE вокруг объявления класса.Открытие виджета, созданного в дизайнере, из главного окна

Проблема в том, что работает при открытии моего главного окна, не работает при открытии второго окна виджета.

Чтобы отобразить мое главное окно, я создал класс, который наследует от моего .ui файла:

class myWindow: public QMainWindow, private Ui::uiClassWindow 
    setupUi(this); 

Это открывает нормально, так что потом, чтобы открыть второе окно виджета, я объявляю общий объект виджета, а затем сохранить он с указателем на мой файл Widget Ui заголовка:

QWidget newWidget; 
    setupUi(newWidget) 

Но setupUi рассасывается в мой основной файл заголовок окна ... Как сказать, чтобы это использовать виджет setupUi?

Есть ли лучший способ сделать это?

+0

Можете ли вы квалифицировать вызов, используя имя класса? То есть 'OtherWidgetUI :: setupUi (newWidget);'? – tmpearce

ответ

0

Насколько я знаю, для setupUi функция определена в пространстве имен Ui. Вы также должны указать область (Ui) для другого виджета.

0

Метод setupUi() создан uic из вашего файла UI, и он отличается для каждого скомпилированного пользовательского интерфейса.

В вашем myWindow, вы наследуете от Ui::uiClassWindow и можете использовать его метод setupUi() без квалификаций. Вам нужен экземпляр другого класса пользовательского интерфейса для newWidget:

auto widget_ui = new Ui::myWidget; 
QWidget newWidget; 
widget_ui->setupUi(newWidget) 

delete Вы можете в widget_ui сразу же, если вы хотите, - но, как правило, вы должны будете держать его для того, чтобы получить доступ к детям он имеет теперь созданный в newWidget.

Смежные вопросы