crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Изменение размера распорки в QGridLayout, во время выполнения.
Andrewshkovskii
  опции профиля:
сообщение 19.10.2009, 1:42
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Есть распорочка, создается вот так вот :
    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);
}


Но изменений ширины не происходит.почему?
Что-то вроде того, что лейаут сам определяет ширину распорки?а как этого избежать?

Сообщение отредактировал Andrewshkovskii - 19.10.2009, 1:44
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 19.10.2009, 8:28
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Вот так у меня работает. Увеличиваю высоту распорки на 10 пикселей.

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


В документации написано, что нужно делать invalidate, что бы это не значило, но работает и без него. Пробовал не с QGridLayout, а с QVBoxLayout.

Сообщение отредактировал SABROG - 19.10.2009, 8:32
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 19.10.2009, 10:57
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Размер меняет, но до определенному уровня..это что, ограничения лейаута?ибо у меня в ячейке над спейсером лежит лейбл, и по всей видимости, именно размер верхней ячейки не дает уменьшить спейсер до минимума?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.12.2024, 16:41