Виджеты QGridLayout задают одинаковый размер

.h файл:

QChartView *chrtViewArr[5];
QGridLayout *graphLayout;
QFrame *graphFrame;

.cpp-файл:

{
...
this->graphLayout = new QGridLayout(this->graphFrame);

for(int i=0;i<3;i++){
        this->graphLayout->addWidget(this->chrtViewArr[i],i,0);
    }

this->graphFrame->setLayout(this->graphLayout);

for(int i=0;i<machine_count;i++){
        this->InsertIntoByteArray(this->chrtViewArr[i]);
    }
...
widget.show();
}

void GraphDialog::InsertIntoByteArray(QChartView *chartView){
    this->pixmap = chartView->grab();
    QBuffer buffer(&this->byteArray);
    buffer.open(QIODevice::WriteOnly);
    this->pixmap.save(&buffer,"JPG");
}

Когда я запускаю этот код, размещение виджетов выглядит следующим образом: размещение виджета

Как я могу установить высоту и ширину виджета равными? Я пытался использовать QVBoxLayout вместо QGridLayout, но ничего не изменилось. Когда я вызываю функцию InsertIntoByteArray(), проблема исправлена, но мне нужно использовать эту функцию для сохранения графиков. Есть идеи?


person trytobedeveloper    schedule 10.09.2020    source источник


Ответы (1)


Вы можете установить sizePolicy виджетов диаграммы, чтобы игнорировать sizeHint

person Patrick Parker    schedule 10.09.2020
comment
Это сработало. this-›chrtViewArr[i]-›setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored); - person trytobedeveloper; 10.09.2020