加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
mainwindow.cpp 5.49 KB
一键复制 编辑 原始数据 按行查看 历史
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDebug>
#include<QFile>
#include<QChart>
#include<QChartView>
#include<QLineSeries>
#include<QSplineSeries>
#include<QValueAxis>
#include<QScatterSeries>
#include<QRandomGenerator>
QT_CHARTS_USE_NAMESPACE;
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
readText();
//writeText();
sourceScatterPlot();
fieldCurveGraph();
}
void MainWindow::readText()
{
QString displayString;
QFile file("E:/qt/demo1/model.txt");
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
qDebug()<<"Can't open the file!"<<endl;
}
while(!file.atEnd())
{
QByteArray line = file.readLine();
QString str(line);
displayString.append(str);
}
ui->textEdit->clear();
ui->textEdit->setPlainText(displayString);
}
//绘制散点图
void MainWindow::sourceScatterPlot()
{
ui->graphicsView_3->setRenderHint(QPainter::Antialiasing); // 设置抗锯齿
ui->graphicsView_3->chart()->setTitle("散点图测试"); // 设置图表标题
ui->graphicsView_3->chart()->setDropShadowEnabled(false); // 设置不启用背景阴影效果。
ui->graphicsView_3->chart()->legend()->setMarkerShape(QLegend::MarkerShapeFromSeries); // 在图例中显示点的形状样式
ui->graphicsView_3->chart()->setTheme(QChart::ChartThemeBlueCerulean); // 设置表的样式
QScatterSeries* series = new QScatterSeries(); // 创建一个散点数据集对象
series->setName("源位置");
series->setMarkerShape(QScatterSeries::MarkerShapeCircle); // 设置绘制的散点的样式为圆形
series->setMarkerSize(10); // 设置绘制的点的大小
//测试数据
for(int i = 0; i < 10; i++) // 添加10个任意点
{
*series << QPointF(i, QRandomGenerator::global()->bounded(10, 40)); // 换一种添加数据的方式
}
ui->graphicsView_3->chart()->addSeries(series); // 将创建的series添加经chart中
ui->graphicsView_3->chart()->createDefaultAxes(); // 根据已有series生成对于类型的坐标轴,并将轴附着到所有的series
}
//绘制曲线图
void MainWindow::fieldCurveGraph()
{
//绘制二维折线图
//x坐标轴
QValueAxis *m_pAxisX = new QValueAxis();
m_pAxisX->setRange(0,10);
m_pAxisX->setTitleText("t");
//y坐标轴
QValueAxis *m_pAxisY = new QValueAxis();
m_pAxisY->setRange(0, 10);
m_pAxisY->setTitleText("Ez");
//创建曲线类
QSplineSeries *m_pLineSeries = new QSplineSeries(); //创建折线绘制对象
m_pLineSeries->append(0,0);
m_pLineSeries->append(3,6);
m_pLineSeries->append(6,3);
m_pLineSeries->append(9,2);
m_pLineSeries->setPointsVisible(true); //设置数据点可见
m_pLineSeries->attachAxis(m_pAxisX); //X轴绑定
m_pLineSeries->attachAxis(m_pAxisY); //Y轴绑定
//创建QChart
QChart *m_pChart = new QChart();
m_pChart->addSeries(m_pLineSeries);
m_pChart->addAxis(m_pAxisX, Qt::AlignBottom); //将X轴添加到图表上
m_pChart->addAxis(m_pAxisY, Qt::AlignRight); //将Y轴添加到图表上
m_pChart->setMargins(QMargins(0, 0, 0, 0));
m_pChart->legend()->hide(); //隐藏图例
//绑定chart控件
ui->graphicsView->setChart(m_pChart);
ui->graphicsView->setRenderHint(QPainter::Antialiasing);
//ui->graphicsView->chart()->createDefaultAxes();
}
// void MainWindow::writeText() //读写text文件
//{
// QString strAll;
// QStringList strList;
// QFile readFile("E:/qt/demo1/model.txt"); //PATH是自定义读取文件的地址
// if(readFile.open((QIODevice::ReadOnly|QIODevice::Text)))
// {
// //把文件所有信息读出来
// QTextStream stream(&readFile);
// strAll=stream.readAll();
// }
// readFile.close();
// QFile writeFile("E:/qt/demo1/model.txt"); //PATH是自定义写文件的地址
// if(writeFile.open(QIODevice::WriteOnly|QIODevice::Text))
// {
// QTextStream stream(&writeFile);
// strList=strAll.split("\n"); //以换行符为基准分割文本
// for(int i=0;i<strList.count();i++) //遍历每一行
// {
// if(strList.at(i).contains("123456789")) //"123456789"是要修改的内容
// {
// QString tempStr=strList.at(i);
// tempStr.replace(0,tempStr.length(),"Hello!"); //"Hello!"是要替换的内容
// stream<<tempStr<<'\n';
// }
// //如果没有找到要替换的内容,照常写入
// else
// {
// if(i==strList.count()-1)
// {
// stream<<strList.at(i);
// }
// else
// {
// stream<<strList.at(i)<<'\n';
// }
// }
// }
// }
// writeFile.close();
// ui->textEdit->clear();
// ui->textEdit->setPlainText(strAll);
// }
MainWindow::~MainWindow()
{
delete ui;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化