Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > поместить один лэй-аут в другой


Автор: sergey_85 16.12.2009, 22:34
Привет!

История моего вопроса такая, у меня есть виджет, его создают в дизайнере бросают контролы, добавляют лей-аут.
Далее моя прога грузит этот виджет из ui файла и здесь мне надо переместить стандартный лей-аут(заданный в дизайнере) в мой новый.

Все получается, только вот глюки отрисовки идут.
Код

    //загрузим виджет из ui файла, виджет уже имеет свой лей-аут
    QFormBuilder builder;
    QFile file("c:/wgt.ui");
    file.open(QFile::ReadOnly);
    QWidget *myWidget = builder.load(&file, 0);
    file.close();

    //сохраним старый лей-аут
    QLayout *oldLayout = myWidget->layout();

    //создадим новый grid лей-аут, внутри него будет лежат старый
    QGridLayout *newLayout = new QGridLayout();
    
    //теперь добавим в новый grid лей-аут менюбар и тулбар
    QMenuBar *menuBar = new QMenuBar(myWidget);
    QMenu *menuFile   = new QMenu(tr("File"));
    menuBar->addMenu(menuFile);
    newLayout->setMenuBar(menuBar);
    
    QToolBar *toolBar = new QToolBar(myWidget);
    toolBar->addAction("dsd",0,"");
    newLayout->addWidget(toolBar,0,0);
    
    //поместим старый лей-аут в в новый
    newLayout->addLayout(oldLayout,1,0);
    myWidget->setLayout(newLayout);

    //this->ui.mdiArea->addSubWindow(myWidget);
    myWidget->show();


Все добавляется, только коряво, на рисунке показан результат выполнения кода.


Автор: SABROG 16.12.2009, 23:19
Компилируемый пример есть?

Автор: sergey_85 17.12.2009, 08:51
Да есть под MSVS 2005 + Qt 4.4.3

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)