代码1:
QT += core gui
QT += charts
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtCharts>
QT_CHARTS_USE_NAMESPACE
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
QChart *m_chart;
QLineSeries *m_series;
QChartView *m_chartView;
QStringList x_axis_lst ;
QStringList y_axis_lst ;
QStringList z_axis_lst ;
private slots:
void on_action_open_triggered();
void on_action_store_triggered();
void on_action_close_triggered();
void on_action_X_triggered();
void on_action_Y_triggered();
void on_action_Z_triggered();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#pragma warning (disable:4819)
#pragma execution_character_set("utf-8") //加入这行
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <qdebug.h>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_chart = new QChart();
m_series = new QLineSeries(m_chart);
m_chart->addSeries(m_series);
m_chart->createDefaultAxes();
m_chart->legend()->hide();
m_chartView = new QChartView(m_chart);
m_chartView->setRenderHint(QPainter::Antialiasing);
setCentralWidget(m_chartView);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_action_open_triggered()
{
qDebug("on_action_open_triggered\n");
QString str_line ;
QFile file("BXJC.txt");
file.open(QIODevice::ReadOnly | QIODevice::Text);
QTextStream stream_file(&file);
QStringList lst;
x_axis_lst.clear();
y_axis_lst.clear();
z_axis_lst.clear();
while(!stream_file.atEnd()){
str_line = stream_file.readLine();
qDebug()<<str_line;
lst = str_line.split("\t");
qDebug()<<lst;
if(lst.length() ==3){
x_axis_lst.append(lst[0]);
y_axis_lst.append(lst[1]);
z_axis_lst.append(lst[2]);
}
}
file.close();
}
void MainWindow::on_action_store_triggered()
{
qDebug("on_action_store_triggered\n");
QString strFile = QDateTime::currentDateTime().toString("yyyyMMddHHmmss") + ".png";
//QPixmap pix = QPixmap::grabWidget(ui.lineView);
QString fileName = QFileDialog::getSaveFileName(this, "保存图片", strFile, "PNG (*.png);;BMP (*.bmp);;JPEG (*.jpg *.jpeg)");
if (!fileName.isNull())
{
QScreen * screen = QGuiApplication::primaryScreen();
QPixmap p = screen->grabWindow(m_chartView->winId());
QImage image = p.toImage();
image.save(fileName);
}
}
void MainWindow::on_action_close_triggered()
{
qDebug("on_action_close_triggered\n");
}
void MainWindow::on_action_X_triggered()
{
qDebug("on_action_X_triggered\n");
m_chart->setTitle(tr("X方向变形曲线图"));
if(x_axis_lst.length() != 24){
return;
}
m_series->clear();
double value ;
double max_val = x_axis_lst[0].toDouble();
double min_val =x_axis_lst[0].toDouble();
double delta ;
for(int i =0 ;i< x_axis_lst.length(); i++){
value = x_axis_lst[i].toDouble();
m_series->append(i, value);
if(value > max_val){
max_val = value;
}else if(value < min_val){
min_val = value;
}
}
qDebug()<<min_val;
qDebug()<<max_val;
delta = (max_val - min_val)/8 ;
min_val = min_val - delta ;
max_val = max_val + delta ;
m_chart->axes(Qt::Vertical).first()->setRange(min_val, max_val);
// Add space to label to add space between labels and axis
QValueAxis *axisX = qobject_cast<QValueAxis*>(m_chart->axes(Qt::Horizontal).first());
QValueAxis *axisY = qobject_cast<QValueAxis*>(m_chart->axes(Qt::Vertical).first());
Q_ASSERT(axisY);
Q_ASSERT(axisX);
//axisY->setLabelFormat("%.1f ");
axisX->setTickCount(13);
axisX->setMinorTickCount(1);
axisX->setRange(0, 24);
axisX->setLabelFormat("%u");
m_chart->axes(Qt::Horizontal).first()->setGridLineVisible(true);
}
void MainWindow::on_action_Y_triggered()
{
qDebug("on_action_Y_triggered\n");
qDebug("on_action_X_triggered\n");
m_chart->setTitle(tr("Y方向变形曲线图"));
if(y_axis_lst.length() != 24){
return;
}
m_series->clear();
double value ;
double max_val = y_axis_lst[0].toDouble();
double min_val =y_axis_lst[0].toDouble();
double delta ;
for(int i =0 ;i< y_axis_lst.length(); i++){
value = y_axis_lst[i].toDouble();
m_series->append(i, value);
if(value > max_val){
max_val = value;
}else if(value < min_val){
min_val = value;
}
}
qDebug()<<min_val;
qDebug()<<max_val;
delta = (max_val - min_val)/8 ;
min_val = min_val - delta ;
max_val = max_val + delta ;
m_chart->axes(Qt::Vertical).first()->setRange(min_val, max_val);
// Add space to label to add space between labels and axis
QValueAxis *axisX = qobject_cast<QValueAxis*>(m_chart->axes(Qt::Horizontal).first());
QValueAxis *axisY = qobject_cast<QValueAxis*>(m_chart->axes(Qt::Vertical).first());
Q_ASSERT(axisY);
Q_ASSERT(axisX);
//axisY->setLabelFormat("%.1f ");
axisX->setTickCount(13);
axisX->setMinorTickCount(1);
axisX->setRange(0, 24);
axisX->setLabelFormat("%u");
m_chart->axes(Qt::Horizontal).first()->setGridLineVisible(true);
}
void MainWindow::on_action_Z_triggered()
{
qDebug("on_action_Z_triggered\n");
qDebug("on_action_X_triggered\n");
m_chart->setTitle(tr("Z方向变形曲线图"));
if(z_axis_lst.length() != 24){
return;
}
m_series->clear();
double value ;
double max_val = z_axis_lst[0].toDouble();
double min_val =z_axis_lst[0].toDouble();
double delta ;
for(int i =0 ;i< z_axis_lst.length(); i++){
value = z_axis_lst[i].toDouble();
m_series->append(i, value);
if(value > max_val){
max_val = value;
}else if(value < min_val){
min_val = value;
}
}
qDebug()<<min_val;
qDebug()<<max_val;
delta = (max_val - min_val)/8 ;
min_val = min_val - delta ;
max_val = max_val + delta ;
m_chart->axes(Qt::Vertical).first()->setRange(min_val, max_val);
// Add space to label to add space between labels and axis
QValueAxis *axisX = qobject_cast<QValueAxis*>(m_chart->axes(Qt::Horizontal).first());
QValueAxis *axisY = qobject_cast<QValueAxis*>(m_chart->axes(Qt::Vertical).first());
Q_ASSERT(axisY);
Q_ASSERT(axisX);
//axisY->setLabelFormat("%.1f ");
axisX->setTickCount(13);
axisX->setMinorTickCount(1);
axisX->setRange(0, 24);
axisX->setLabelFormat("%u");
m_chart->axes(Qt::Horizontal).first()->setGridLineVisible(true);
}
运行效果:
BXJC.txt 文件内容:
24
32.5801 -52.7876 0.1369
32.5786 -52.7892 0.1380
32.5784 -52.7845 0.1411
32.5812 -52.7852 0.1393
32.5782 -52.7863 0.1394
32.5791 -52.7852 0.1354
32.5788 -52.7841 0.1414
32.5788 -52.7817 0.1375
32.5745 -52.7833 0.1359
32.5815 -52.7854 0.1327
32.5822 -52.7841 0.1358
32.5839 -52.7826 0.1361
32.5820 -52.7852 0.1339
32.5800 -52.7863 0.1325
32.5792 -52.7845 0.1416
32.5807 -52.7834 0.1395
32.5778 -52.7846 0.1412
32.5792 -52.7843 0.1371
32.5794 -52.7833 0.1406
32.5806 -52.7841 0.1411
32.5800 -52.7863 0.1380
32.5785 -52.7840 0.1368
32.5811 -52.7848 0.1412
32.5828 -52.7863 0.1356
代码:
https://download.youkuaiyun.com/download/wowocpp/12419643