crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Изменение размера распорки в QGridLayout
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Andrewshkovskii Дата 19.10.2009, 10:57
  Размер меняет, но до определенному уровня..это что, ограничения лейаута?ибо у меня в ячейке над спейсером лежит лейбл, и по всей видимости, именно размер верхней ячейки не дает уменьшить спейсер до минимума?
SABROG Дата 19.10.2009, 8:28
  Вот так у меня работает. Увеличиваю высоту распорки на 10 пикселей.

        QSpacerItem *spacer = ui->verticalSpacer;
        const QSize size = spacer->sizeHint();
        spacer->changeSize(size.width(), size.height() + 10);
        //spacer->invalidate();


В документации написано, что нужно делать invalidate, что бы это не значило, но работает и без него. Пробовал не с QGridLayout, а с QVBoxLayout.
Andrewshkovskii Дата 19.10.2009, 1:42
  Есть распорочка, создается вот так вот :
    spacer = new QSpacerItem(1, 10, QSizePolicy::Minimum, QSizePolicy::Preferred);


есть QGridLayout,
создается вот так вот, и добавление распорки:

 thresholdCloseLayout = new QGridLayout();
thresholdCloseLayout->addItem(this->spacer,1,0,1,1);
thresholdCloseLayout->addWidget(this->thresholdCloseLabel,0, 0, 1, 1);
thresholdCloseLayout->addWidget(this->thresholdCloseSpinBox,0, 1, 1, 1);
thresholdCloseLayout->addWidget(this->thresholdCloseSlider, 1, 1, 1, 1);
thresholdCloseLayout->addWidget(this->visualClustersView,2, 0, 1,2 );



И по определенному сигналу, должна изменяться ширина распорки(по логике) :
void View::resizeSpacer(int newSize)
{
QRect *rect = new QRect(
this->spacer->geometry().left(),
this->spacer->geometry().top(),
newSize,
this->spacer->geometry().height()
);
    this->spacer->setGeometry(*rect);
}


Но изменений ширины не происходит.почему?
Что-то вроде того, что лейаут сам определяет ширину распорки?а как этого избежать?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 9:03