Название: Компоновка виджетов внутри центрального виджета Отправлено: ambrase от Январь 21, 2015, 22:07 Есть QMainWindow, в котором есть скомпонованные таким вот образом отдельные виджеты, когда экран не растянут, то
выглядит так: (http://i60.tinypic.com/qzghon.jpg) когда растянут так: (http://i62.tinypic.com/xoh5d0.jpg) У MyWidget есть minSizeHint, который он в итоге и занимает по высоте, хотя спокойно растягивается по горизонтали. Проблема в том, что почему-то черная область не накрывает зеленую. Как это исправить? QWidget * centralView = new MyWidget; centralView->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); QPalette Pal; Pal.setColor(QPalette::Background, Qt::black); QPalette PalYellow; PalYellow.setColor(QPalette::Background, Qt::yellow); QPalette PalGreen; PalGreen.setColor(QPalette::Background, Qt::green); centralView->setAutoFillBackground(true); centralView->setPalette(Pal); QWidget * data = new QWidget; data->setPalette(PalYellow); data->setAutoFillBackground(true); data->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); QPushButton * but = new QPushButton("Тест Кнопка"); QVBoxLayout* phbxLayout = new QVBoxLayout; phbxLayout->addWidget(but,Qt::AlignTop); data->setLayout(phbxLayout); layout->addWidget(centralView, 0,0,Qt::AlignBottom); layout->addWidget(data, 1,0,Qt::AlignBottom); QWidget* empty = new QWidget; empty->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum); empty->setLayout(layout); empty->setPalette(PalGreen); empty->setAutoFillBackground(true); setCentralWidget(empty); Название: Re: Компоновка виджетов внутри центрального виджета Отправлено: kambala от Январь 21, 2015, 23:55 попробуй черному задать QSizePolicy::Maximum по вертикали
Название: Re: Компоновка виджетов внутри центрального виджета Отправлено: ambrase от Январь 22, 2015, 06:37 Не помогло
Название: Re: Компоновка виджетов внутри центрального виджета Отправлено: Bepec от Январь 22, 2015, 11:09 Ответ - ошибка в настройках size policy.
Совет - выкладывайте проект с проблемой, мб я поиграюсь и вам настрою. Название: Re: Компоновка виджетов внутри центрального виджета Отправлено: ambrase от Январь 22, 2015, 21:53 https://drive.google.com/file/d/0BwJmfE_cdZJ-NlAzU3VhMVdId0U/view?usp=sharing
Вот. Я вообще чайник и честно говоря думал, что у меня ошибка именно в концепции как это надо было скомпоновывать средствами qt... Название: Re: Компоновка виджетов внутри центрального виджета Отправлено: __Heaven__ от Январь 23, 2015, 09:40 Вот решение.
Код Этот виджет грабастает себе пространство. Название: Re: Компоновка виджетов внутри центрального виджета Отправлено: ambrase от Январь 23, 2015, 13:06 У меня там Minimum, попробовал поставить maximum - не помогло.
Название: Re: Компоновка виджетов внутри центрального виджета Отправлено: PimenS от Январь 23, 2015, 13:45 Скорее всего не нужно в layout->addWidget использовать выравнивание, или использовать его по другому.
Попробовал повторить код, но не нашел определения layout, использовал QVBoxLayout Код: QWidget *centralView = new QWidget; Попробуй так Название: Re: Компоновка виджетов внутри центрального виджета Отправлено: __Heaven__ от Январь 23, 2015, 13:53 У меня там Minimum, попробовал поставить maximum - не помогло. Да, забыл ещё написатьКод
Название: Re: Компоновка виджетов внутри центрального виджета Отправлено: ambrase от Январь 23, 2015, 20:10 Сделал-таки.
Надо было так: QGridLayout * layout = new QGridLayout; layout->addWidget(centralView, 0,0); layout->addWidget(data, 1,0, Qt::AlignBottom); Короче говоря убрать один align из двух(только один!) и все будет как я хочу :) Теперь растет только черное окно, зеленое и желтое минимальны. |