是的,您可以在同一个坐标系中显示多个曲线,并使用下拉菜单切换显示不同的曲线。
以下是一些示例代码,用于创建一个基于 Qt Charts 的应用程序,在同一个坐标系中显示多个曲线,并使用下拉菜单切换曲线:
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtWidgets/QComboBox>
QT_CHARTS_USE_NAMESPACE
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 创建主窗口和布局
QMainWindow window;
QWidget* centralWidget = new QWidget(&window);
QVBoxLayout* layout = new QVBoxLayout(centralWidget);
// 创建图表视图和图表对象
QChartView* chartView = new QChartView(centralWidget);
QChart* chart = chartView->chart();
chart->setTitle("Multiple Line Series");
// 创建下拉菜单并添加选项
QComboBox* comboBox = new QComboBox(centralWidget);
comboBox->addItem("Line Series 1");
comboBox->addItem("Line Series 2");
// 添加组件到布局中
layout->addWidget(chartView);
layout->addWidget(comboBox);
// 创建两个线性数据系列并添加到图表对象中
QLineSeries* series1 = new QLineSeries();
series1->setName("Line Series 1");
// 向 series1 添加数据点,这里为了演示方便直接设置了固定值
series1->append(0, 1);
series1->append(1, 2);
series1->append(2, 3);
chart->addSeries(series1);
QLineSeries* series2 = new QLineSeries();
series2->setName("Line Series 2");
// 向 series2 添加数据点,这里为了演示方便直接设置了固定值
series2->append(0, 3);
series2->append(1, 4);
series2->append(2, 5);
chart->addSeries(series2);
// 设置坐标轴范围
chart->createDefaultAxes();
// 连接下拉菜单的 currentIndexChanged() 信号,并根据所选项更新图表中显示的曲线
QObject::connect(comboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int index) {
if (index == 0) {
series1->setVisible(true);
series2->setVisible(false);
} else {
series1->setVisible(false);
series2->setVisible(true);
}
});
// 显示主窗口
window.setCentralWidget(centralWidget);
window.resize(800, 600);
window.show();
return a.exec();
}
在上述代码中,我们首先创建了一个 QMainWindow 对象和一个 QVBoxLayout 布局对象。然后,我们创建了一个 QChartView 和一个 QChart 对象,并将其添加到布局中。
接下来,我们创建了一个 QComboBox 下拉菜单并添加两个选项(”Line Series 1” 和 “Line Series 2”)。然后,我们创建了两个 QLineSeries 线性数据系列并将其添加到 QChart 对象中。我们还连接了 QComboBox 的 currentIndexChanged() 信号,并根据所选项更新图表中显示的曲线。
最后,我们设置了坐标轴范围,并显示主窗口。
希望这可以帮助您解决问题。