Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: antoshib от Октябрь 30, 2012, 10:15



Название: растягивание QBoxLayout
Отправлено: antoshib от Октябрь 30, 2012, 10:15
Здравствуйте, подскажите способ как растянуть QBoxLayout до размеров родительского виджета?
В частности, хочется разместить этот лэйаут в QWidget, расположенный на вкладке QTabWidget
или в ячейке таблицы QTableWidget.


Название: Re: растягивание QBoxLayout
Отправлено: spirits25 от Октябрь 30, 2012, 10:30
То есть у вас код
Код:
myLayout = new QVBoxLayout(parentWidget);
не растягивает myLayout по всему parentWidget'у? Дайте код и описание проблемы поточнее.


Название: Re: растягивание QBoxLayout
Отправлено: antoshib от Ноябрь 01, 2012, 13:18
Нужного эффекта в дизайнере добился, но в коде не до конца разобрался.
Если в дизайнере на форму выложить QWidget и в него QVBoxLayout вставить,
то этот QVBoxLayout сам по себе не растянется, а надо выполнить
команду "Компановка/Скомпоновать по горизонтали". Никак не пойму - в
коде как это достигается?


Название: Re: растягивание QBoxLayout
Отправлено: kambala от Ноябрь 01, 2012, 14:02
Код
C++ (Qt)
QWidget *w = new QWidget;
QVBoxLayout *layout = new QVBoxLayout(w); // обрати внимание на параметр конструктора


Название: Re: растягивание QBoxLayout
Отправлено: antoshib от Ноябрь 01, 2012, 14:24
заметил, но дизайнер в обоих случаях генерит код, где у лэйаута в параметре указан виджет.
вот вижу разницу в том, что какой-то вспомогательный лэйаут присутствует.
Код:
        widget = new QWidget(Dialog);
        widget->setObjectName(QString::fromUtf8("widget"));
        widget->setGeometry(QRect(60, 40, 211, 151));
        horizontalLayoutWidget = new QWidget(widget);
        horizontalLayoutWidget->setObjectName(QString::fromUtf8("horizontalLayoutWidget"));
        horizontalLayoutWidget->setGeometry(QRect(10, 30, 160, 80));
        horizontalLayout = new QHBoxLayout(horizontalLayoutWidget);
        horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
        horizontalLayout->setContentsMargins(0, 0, 0, 0);
после команды "скомпоновать горизонтально"
Код:
        widget = new QWidget(Dialog);
        widget->setObjectName(QString::fromUtf8("widget"));
        widget->setGeometry(QRect(60, 40, 131, 121));
        horizontalLayout_2 = new QHBoxLayout(widget);
        horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2"));
        horizontalLayout = new QHBoxLayout();
        horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));

        horizontalLayout_2->addLayout(horizontalLayout);