Qt, Ошибка (malloc) при добавлении в окно нескольких виджетов с qcustomplots

Я пытаюсь создать виджет, который содержит несколько виджетов с каждым QCustomplot и некоторые данные графика (QLabel и QPushbuttons). Этот виджет открыт из главного окна с parent=0, Я добавляю подвиджеты с помощью функции, но если она используется более одного раза, выдается ошибка:

malloc.c: 3757: _int_malloc: Утверждение `(длинный без знака) (размер) >= (длинный без знака) (nb)'не выполнено.

Вот код, который приводит к этому:

Открытие виджета, который должен содержать подвиджеты:

Zeitdatenfenster = new Plotfenster();
Zeitdatenfenster->getZeitData(ausgewaehlteKanaele, *messdaten, double(Anfangszeiteingabe->value()), double(Endzeiteingabe->value()));
Zeitdatenfenster->show();

Zeitdatenfenster находится в заголовке класса MainWindow: Plotfenster* Zeitdatenfenster;

Конструктор:

Plotfenster::Plotfenster(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Plotfenster)
{
    ui->setupUi(this);
    counter=0;
}

getZeitData( ...) -функции:

void Plotfenster::getZeitData(const std::vector<bool>& Kanalauswahl, const Messdatenverwaltung& messdaten, double Anfangszeit, double Endzeit){
    setWindowTitle("Time Data");
    int zahler=0;
    for(int i = 0; i<Kanalauswahl.size();i++){
         if(Kanalauswahl[i]){
                Ploteigenschaften* kanalzeit = new Ploteigenschaften();
                std::cout << kanalzeit << std::endl;
                geplotteteDatenInhalt.push_back(kanalzeit);
                geplotteteDatenInhalt[zahler]->setZeitData(messdaten, i,Anfangszeit,Endzeit);
                addPlot(geplotteteDatenInhalt[zahler],zahler);
                zahler++;
          }
    }
}

geplotteteDatenInhalt это std::vector<Ploteigenschaften*>, addPlot() это функция, где создаются подвиджеты. Ploteigenschaften это просто класс, который хранит данные, которые являются plottet, и функции для их изменения (с двумя Qvector, добавленными в qcustomplot)

Функция AddPlot:

void Plotfenster::addPlot(Ploteigenschaften* plotDaten, int zahler ){
       Plot* aktuellerPlot = new Plot(plotDaten, this);
       geplottetes.push_back(aktuellerPlot);
       ui->plotcontainer->addWidget(geplottetes[zahler],counter);
       counter++;
}

Plot - это подвиджет, который содержит конструктор:

Plot::Plot(Ploteigenschaften* plotDatens, QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Plot)
{
    ui->setupUi(this);
    ui->plotGrid->setColumnStretch(1, 3);
    ui->plotGrid->setHorizontalSpacing(20);
    derPlot = new QCustomPlot(this);
    this->plotDaten = plotDatens;
    this->Datensetzten();
}

Программа вылетает в конструкторе QCustomplot. В Datensetzten указан участок:

void Plot::Datensetzten(){
    this->setInfoText();
    this->setPlot();
    this->setSaveButton();
}
void Plot::setPlot(){
    derPlot->addGraph();
    derPlot->graph(0)->setData(plotDaten->xDaten,plotDaten->yDaten);
    derPlot->xAxis->setRange(plotDaten->xUntereGrenze,plotDaten->xObereGrenze);
    derPlot->yAxis->setRange(plotDaten->yMinimum-std::abs(plotDaten->yMinimum)*0.01,plotDaten->yMaximum+std::abs(plotDaten->yMaximum)*0.01);
    derPlot->xAxis->setLabel(plotDaten->BeschriftungxAchse);
    derPlot->yAxis->setLabel(plotDaten->BeschriftungyAchse);
    derPlot->xAxis2->setVisible(true);
    derPlot->xAxis2->setTickLabels(false);
    derPlot->yAxis2->setVisible(true);
    derPlot->yAxis2->setTickLabels(false);
    ui->plotGrid->addWidget(derPlot,0,1,2,1);
    derPlot->show();
}

Извините за длинный пост, но я понятия не имею, где находится ошибка, и был бы очень рад за сом идеи.

Спасибо!

0 ответов

Другие вопросы по тегам