带有按钮到多个页面的QT图表
Qt Charts with buttons to multiple pages
我有一些数据可视化(在main.cpp中),我想拥有它,以便它选择基于按下按钮显示的内容。这是一个主。cpp:
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放置按钮,则我不确定如何根据按下的内容显示和拆分每个可视化
我会推荐一个qstackedwidget,您将每个QChartViews放在其中。https://doc.qt.io/qt-5/qstackedwidget.html
或(如果您想真正替换图表视图内的图表(含义:series)),然后删除每个按钮上的现有系列,然后添加与您的数据集对应的新系列。但是我对此有很糟糕的经历 - 必须针对每个数据集调整轴和缩放率。因此,我建议您的第一个选择。
相关文章:
- Qt VTK交互风格的信号到小部件
- QT在错误的班级中寻找空位
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 如何在Qt C++中更改光标
- 如何在MS Visual Studio 2019中运行QT UI
- QT通过C++添加映射QML项目
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- Qt 图表条形图调整大小崩溃
- Qmake 错误:QT: 图表中的未知模块
- 项目错误:QT中的未知模块:Mac上的图表
- QT图表:如何获取QAbstractAxis的范围?
- 当窗口大小更改时,如何自动缩放QT中的图表
- Vtk 图表在 QT 中突破,"no override found for 'vtkContextDevice2D"
- 带有按钮到多个页面的QT图表
- 用鼠标中键按下qt图表移动视图
- 如何从Qt图表调整折线图示例
- 我的Qt QAbstractProxyModel崩溃与图表视图,但不与表视图
- 为什么Qt图表示例不删除动态分配的变量