Russian Qt Forum
Ноябрь 25, 2024, 22:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как в QGridLayout зделать одним размером все компоненты?  (Прочитано 3720 раз)
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« : Ноябрь 19, 2014, 16:29 »

Здраствуйте. В Photon Builder для GroupBox существует флаг Pt_GROUP_EQUAL_SIZE - выравнивает все дочерние компоненты GroupBox-а к одинаковому размеру(вроде к максимальному из существующих компонентов или же просто по размеру группы). В Qt групу компонентов я реализовал через присоединение к QGroupBox-у  QGridLayout, и доавив компоненты (у меня это кнопки) в этот layout. Как можно задать подобный флаг в Qt для layout? возможно ли это?
« Последнее редактирование: Ноябрь 19, 2014, 16:34 от billy4685 » Записан
carrygun
Гость
« Ответ #1 : Ноябрь 20, 2014, 05:35 »

Может стоит приложить скриншот?
Записан
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #2 : Ноябрь 20, 2014, 09:39 »

сейчас покажу, что я хочу)
Записан
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #3 : Ноябрь 20, 2014, 09:49 »

вот подобное этому:
Записан
VPS
Гость
« Ответ #4 : Ноябрь 20, 2014, 11:42 »

Поиграйтесь с sizePolicy (горизонтальную и вертикальную в "expanding") кнопок...
Записан
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #5 : Ноябрь 20, 2014, 13:00 »

спасибо) попробую
Записан
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #6 : Ноябрь 20, 2014, 15:29 »

увы но проблема не решилась( я ж изначально для кнопок задаю размер через setFixedSize(w, h)), после указания для каждой кнопки setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding), изменений не вижу, наверное из-за того, что максимальный размер кнопки стандартный очень велик, но не указывать же мне и его при создании) запаристо так будет.
« Последнее редактирование: Ноябрь 20, 2014, 15:30 от billy4685 » Записан
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #7 : Ноябрь 21, 2014, 14:27 »

Зделал другим путем) не очень конечно, но при незнании лучшего варианта сойдет)) box - здесь группа на которой
расположены кнопки (здесь cildTolBut - дочерняя кнопка группы). Я просто просматривая все дочерние кнопки группы,
нашел максимальную ширину и высоту, которые заданы для кнопок, и после задал фиксированный размер всем этим
кнопкам, указав эти найденные ширину и высоту. Не совсем то, что я хотел, но хоть что-то.

Код:

    QSize size(0, 0);
    QSize sizechild(0, 0);

    QObjectList children = box->children();
    foreach(QObject *child, children){
        QPushButton *cildTolBut = qobject_cast<QPushButton *> (child);
        if(cildTolBut){
            sizechild = cildTolBut->size();
            if(sizechild.height() > size.height())
                size.setHeight(sizechild.height());
            if(sizechild.width() > size.width())
                size.setWidth(sizechild.width());
        }
    }
    foreach(QObject *child, children){
        QPushButton *cildTolBut = qobject_cast<QPushButton *> (child);
        if(cildTolBut){
            cildTolBut->setFixedSize(size);
        }
    }

Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.148 секунд. Запросов: 23.