首页 > 解决方案 > 在再次使用之前清除 Qt 中的 GridLayout

问题描述

我在 mainwindow.cpp 的构造函数中将 8 个小部件添加到我的网格布局中,然后在按钮的功能中,我正在绘制 4 个新小部件,这将在前 8 个小部件的顶部创建 4 个小部件。我想做的是在添加 4 个小部件之前清除此网格布局...

这是我的构造函数代码:

for(int i = 0 ; i < 8 ; i++){

    QChart *charts = new QChart();
    charts->legend()->hide();
    charts->createDefaultAxes();
    std::string name = "Channel " + std::to_string(i);
    charts->setTitle(QString::fromStdString(name));

    QChartView *chartsView_1 = new QChartView(charts);
    chartsView_1->setRenderHint(QPainter::Antialiasing);

    if((i % 2) == 0){
        col = 0;
    }
    else{
        col = 1;
    }
    ui->gridLayout->addWidget(chartsView_1,i/2,col);
    ui->gridLayout->setColumnStretch(col,1);
    ui->gridLayout->setRowStretch(i/2,1);

}

这是我的按钮代码:

for(int i = 0 ; i < 4 ; i++){

    QScatterSeries *series_1 = new QScatterSeries();
    for(int k = 0; k < 115; k++){
        series_1->append(pow(k,7),k);
        series_1->setMarkerSize(4.0);
    }

    QChart *charts = new QChart();
    charts->legend()->hide();
    charts->createDefaultAxes();
    charts->addSeries(series_1);
    std::string name = "Channel " + std::to_string(i);
    charts->setTitle(QString::fromStdString(name));

    QChartView *chartsView_1 = new QChartView(charts);
    chartsView_1->setRenderHint(QPainter::Antialiasing);

    if((i % 2) == 0){
        col = 0;
    }
    else{
        col = 1;
    }

    ui->gridLayout->addWidget(chartsView_1,i/2,col);
    ui->gridLayout->setColumnStretch(col,1);
    ui->gridLayout->setRowStretch(i/2,1);


}

这是按下按钮后图片中的结果

在此处输入图像描述

在此处输入图像描述

标签: qt

解决方案


推荐阅读