Russian Qt Forum

Qt => Вопросы новичков => Тема начата: billy4685 от Ноябрь 19, 2014, 16:29



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


Название: Re: Как в QGridLayout зделать одним размером все компоненты?
Отправлено: carrygun от Ноябрь 20, 2014, 05:35
Может стоит приложить скриншот?


Название: Re: Как в QGridLayout зделать одним размером все компоненты?
Отправлено: billy4685 от Ноябрь 20, 2014, 09:39
сейчас покажу, что я хочу)


Название: Re: Как в QGridLayout зделать одним размером все компоненты?
Отправлено: billy4685 от Ноябрь 20, 2014, 09:49
вот подобное этому:


Название: Re: Как в QGridLayout зделать одним размером все компоненты?
Отправлено: VPS от Ноябрь 20, 2014, 11:42
Поиграйтесь с sizePolicy (горизонтальную и вертикальную в "expanding") кнопок...


Название: Re: Как в QGridLayout зделать одним размером все компоненты?
Отправлено: billy4685 от Ноябрь 20, 2014, 13:00
спасибо) попробую


Название: Re: Как в QGridLayout зделать одним размером все компоненты?
Отправлено: billy4685 от Ноябрь 20, 2014, 15:29
увы но проблема не решилась( я ж изначально для кнопок задаю размер через setFixedSize(w, h)), после указания для каждой кнопки setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding), изменений не вижу, наверное из-за того, что максимальный размер кнопки стандартный очень велик, но не указывать же мне и его при создании) запаристо так будет.


Название: Re: Как в QGridLayout зделать одним размером все компоненты?
Отправлено: billy4685 от Ноябрь 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);
        }
    }