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

#c #qt #qlayout #qgridlayout

#c #qт #qlayout ( описание ) #qgridlayout #qt #qlayout

Вопрос:

файл .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(amp;this->byteArray);
    buffer.open(QIODevice::WriteOnly);
    this->pixmap.save(amp;buffer,"JPG");
}
  

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

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

Ответ №1:

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

Комментарии:

1. Это сработало. это-> chrtViewArr[i]-> setSizePolicy(QSizePolicy::игнорируется,QSizePolicy::игнорируется);