首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带按钮的Qt图表可用于多页

带按钮的Qt图表可用于多页
EN

Stack Overflow用户
提问于 2019-02-28 09:41:35
回答 1查看 707关注 0票数 1

我有一些数据可视化(在main.cpp中),我想有它,以便它选择显示基于按下的按钮。下面是一段main.cpp代码:

代码语言:javascript
复制
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

        // 1. Batting Averages!
   /*
        QBarSet *set0 = new QBarSet("Altuve");
        QBarSet *set1 = new QBarSet("Martinez");
        QBarSet *set2 = new QBarSet("Segura");
        QBarSet *set3 = new QBarSet("Simmons");
        QBarSet *set4 = new QBarSet("Trout");
        *set0 << 283 << 341 << 313 << 338 << 346 << 335;
        *set1 << 250 << 315 << 282 << 307 << 303 << 330;
        *set2 << 294 << 246 << 257 << 319 << 300 << 325;
        *set3 << 248 << 244 << 265 << 281 << 278 << 313;
        *set4 << 323 << 287 << 299 << 315 << 306 << 313;
        QBarSeries *series = new QBarSeries();
        series->append(set0);
        series->append(set1);
        series->append(set2);
        series->append(set3);
        series->append(set4);
        QChart *chart = new QChart();
        chart->addSeries(series);
        chart->setTitle("Batting Avg by Year");
        chart->setAnimationOptions(QChart::AllAnimations);
        QStringList categories;
        categories << "2013" << "2014" << "2015" << "2016" << "2017" << "2018";
        QBarCategoryAxis *axis = new QBarCategoryAxis();
        axis->append(categories);
        chart->createDefaultAxes();
        chart->setAxisX(axis, series);
    */
        // 2. Stacked Bar!
    /*
        chart->legend()->setVisible(true);
        chart->legend()->setAlignment(Qt::AlignBottom);
        QChartView *chartView = new QChartView(chart);
        chartView->setRenderHint(QPainter::Antialiasing);
        QPalette pal = qApp->palette();
        pal.setColor(QPalette::Window, QRgb(0xffffff));
        pal.setColor(QPalette::WindowText, QRgb(0x404044));
        qApp->setPalette(pal);
    */
        // 3. Line chart e!
        // Other options here https://doc.qt.io/qt-5.11/qtcharts-customchart-example.html
     /*
        QLineSeries *series = new QLineSeries();
        series->append(0, 16);
        series->append(1, 25);
        series->append(2, 24);
        series->append(3, 19);
        series->append(4, 33);
        series->append(5, 25);
        series->append(6, 34);
        QChart *chart = new QChart();
        chart->legend()->hide();
        chart->addSeries(series);
        chart->createDefaultAxes();
        QFont font;
        font.setPixelSize(18);
        chart->setTitleFont(font);
        chart->setTitleBrush(QBrush(Qt::black));
        chart->setTitle("Barry Bonds HRs as Pirate");
        QPen pen(QRgb(0x000000));
        pen.setWidth(5);
        series->setPen(pen);
        chart->setAnimationOptions(QChart::AllAnimations);
        QCategoryAxis *axisX = new QCategoryAxis();
        axisX->append("1986",0);
        axisX->append("1987",1);
        axisX->append("1988",2);
        axisX->append("1989",3);
        axisX->append("1990",4);
        axisX->append("1991",5);
        axisX->append("1992",6);
        chart->setAxisX(axisX, series);
        QChartView *chartView = new QChartView(chart);
        chartView->setRenderHint(QPainter::Antialiasing);
    */

        // 4. Pie Chart!
        // Define slices and percentage of whole they take up
    /*
        QPieSeries *series = new QPieSeries();
        series->append("Vegetables",.40);
        series->append("Beans",.20);
        series->append("Fruits",.15);
        series->append("Seeds/Nuts",.10);
        series->append("Whole Grains",.15);
        QPieSlice *slice0 = series->slices().at(0);
        slice0->setLabelVisible();
        QPieSlice *slice1 = series->slices().at(1);
        slice1->setExploded();
        slice1->setLabelVisible();
        slice1->setPen(QPen(Qt::darkGreen, 2));
        slice1->setBrush(Qt::green);
        QPieSlice *slice2 = series->slices().at(2);
        slice2->setLabelVisible();
        QPieSlice *slice3 = series->slices().at(3);
        slice3->setLabelVisible();
        QPieSlice *slice4 = series->slices().at(4);
        slice4->setLabelVisible();
        QChart *chart = new QChart();
        chart->addSeries(series);
        chart->setTitle("What Derek Ate this Week");
        chart->legend()->hide();
        QChartView *chartView = new QChartView(chart);
        chartView->setRenderHint(QPainter::Antialiasing);
*/

        // Create the main app window
        QMainWindow window;

        // Set the main window widget
        window.setCentralWidget(chartView);
        window.resize(420, 300);
        window.show();

        return a.exec();
}

我已经注释掉并拆分了每个部分。如果我使用charts.ui放置按钮,我不确定如何根据按下的内容显示和拆分每个可视化效果

EN

回答 1

Stack Overflow用户

发布于 2019-03-01 23:59:34

我会推荐一个QStackedWidget,你可以把每一个QChartViews放在那里。https://doc.qt.io/qt-5/qstackedwidget.html

或者(如果您希望真正替换chartView中的图表(意思是: series)),那么在每次单击按钮时删除现有的序列,然后添加与您的数据集相对应的新序列。但我对此有非常糟糕的体验-轴和缩放必须针对每个数据集进行调整。所以,我推荐第一个选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54917125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档