Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Максим от Август 19, 2016, 13:50



Название: Правильно скомпоновать контролы через Layout
Отправлено: Максим от Август 19, 2016, 13:50
Доброго времени суток.
Борюсь с компоновкой элементов окна.
Есть окно, унаследованное от QMdiSubWindow. На нём размещаю несколько QLCDNumber. Пытался скомпоновать ПКМ на виджете окна -> скомпоновать по сетке. В конструкторе нормально компонуется, при запуске всё скомкано в кучу в левом-верхнем углу, а компилятор выдаёт предупреждение:
QLayout: Attempting to add QLayout "" to CurrentParams "CurrentParams", which already has a layout
Прошёлся дебагером. Предупреждение получаю на этапе конструктора ui дочернего окна:
Код:
void setupUi(QWidget *CurrentParams)
    {
        if (CurrentParams->objectName().isEmpty())
            CurrentParams->setObjectName(QStringLiteral("CurrentParams"));
        CurrentParams->resize(563, 420);
        gridLayout_2 = new QGridLayout(CurrentParams); // на этом месте получаю предупреждение
...

Что я делаю не так?


Название: Re: Правильно скомпоновать контролы через Layout
Отправлено: gil9red от Август 19, 2016, 23:03
setupUi один раз вызывается?


Название: Re: Правильно скомпоновать контролы через Layout
Отправлено: Old от Август 20, 2016, 02:54
Не надо наследоваться от QMdiSubWindow, это окно контейнер для пользовательского виджета, со своим layout. Пользовательский виджет должен устанавливаться методом setWidget.
В документации же все расписано с примерами.