QT 如何显示多条曲线且多条曲线的值通过读取txt获得
时间: 2023-12-11 21:03:50 浏览: 62
要在 QT 中显示多条曲线且多条曲线的值通过读取 txt 获得,可以使用 QtCharts 模块。以下是一个基本的示例代码:
```cpp
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QValueAxis>
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
QT_CHARTS_USE_NAMESPACE
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow window;
window.resize(800, 600);
// 创建一个 QChart 对象
QChart *chart = new QChart();
chart->setTitle("Multiple Line Chart");
// 创建一个 QValueAxis 对象作为 X 轴
QValueAxis *axisX = new QValueAxis();
axisX->setTitleText("X Axis");
chart->addAxis(axisX, Qt::AlignBottom);
// 创建一个 QValueAxis 对象作为 Y 轴
QValueAxis *axisY = new QValueAxis();
axisY->setTitleText("Y Axis");
chart->addAxis(axisY, Qt::AlignLeft);
// 创建多个 QLineSeries 对象并添加到 QChart 上
QStringList fileNames = {"data1.txt", "data2.txt", "data3.txt"};
for (const QString &fileName : fileNames) {
QLineSeries *series = new QLineSeries();
QFile file(fileName);
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
QTextStream in(&file);
while (!in.atEnd()) {
QString line = in.readLine();
QStringList values = line.split(",");
if (values.size() == 2) {
qreal x = values[0].toDouble();
qreal y = values[1].toDouble();
series->append(x, y);
}
}
file.close();
}
chart->addSeries(series);
series->attachAxis(axisX);
series->attachAxis(axisY);
}
// 创建一个 QChartView 对象并设置 QChart
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
window.setCentralWidget(chartView);
window.show();
return a.exec();
}
```
在这个示例代码中,我们首先创建了一个 QChart 对象,作为显示多条曲线的容器,并设置了 X 轴和 Y 轴。然后,我们使用一个 for 循环读取多个 txt 文件,每个文件对应一条曲线,将 txt 文件中的数据添加到一个 QLineSeries 对象中,并将 QLineSeries 对象添加到 QChart 上。最后,我们创建了一个 QChartView 对象,并将 QChart 设置为其内容,使得 QChart 可以显示在窗口中。
需要注意的是,我们在读取 txt 文件时,假设每行数据的格式为 `x,y`,其中 `x` 和 `y` 都是实数。如果你的数据格式不同,需要相应地修改代码。
阅读全文