Qt基础编程 绘制坐标轴

本文主要介绍了在Qt环境中进行基本的编程操作,重点讲解如何利用Qt库来绘制坐标轴。通过实例代码,详细阐述了创建窗口、设置画布、绘制X轴和Y轴的步骤,帮助初学者理解Qt绘图机制。
摘要由CSDN通过智能技术生成
<img src="https://img-blog.csdn.net/20150425172635867?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGlxdWFuMDAxNzg5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
//mainwindow.cpp
#include "pointsave.h"
#include "mainwindow.h"
#include "ui_mainwindow.h"
<span style="font-family: Arial, Helvetica, sans-serif;">#include <QString></span>
#include<QGraphicsView>
#include<QGraphicsScene>
#include<QGraphicsLineItem>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 //   QGraphicsLineItem *item = new QGraphicsLineItem(-100,100,0,0);

    QGraphicsScene *scene=new QGraphicsScene();
scene->addLine(-340,150,-340,-150);
scene->addLine(-340,-150,-343,-146);
scene->addLine(-340,-150,-337,-146);
scene->addLine(-340,150,340,150);
scene->addLine(340,150,336,147);
scene->addLine(340,150,336,153);
for(int i=-240;i<350;i+=100)
{
    scene->addLine(i,150,i,-150);


}
for(int i=150;i>-150;i-=100)
{
    scene->addLine(-340,i,340,i);
}

    scene->setSceneRect(-(ui->graphicsView->width()/2),-(ui->graphicsView->height()),ui->graphicsView->width()*2,ui->graphicsView->height()*2);

    ui->graphicsView->setScene(scene);

}

MainWindow::~MainWindow()
{
    delete ui;

}

void MainWindow::on_pushButton_4_clicked()
{
   extern Pointtt point;
    point.AddPoint(ui->lineEdit->text().toInt(),ui->lineEdit_2->text().toInt());
    ui->textEdit->append(ui->lineEdit->text()+","+ui->lineEdit_2->text()+";");
     Pointtt::po  *pdd;
     pdd=&point.rehead();

    // ui->textEdit-&
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要实现多参数数据的多线程实时曲线坐标轴绘制,你可以按照以下步骤进行: 1. 在你的项目中引入 QCustomPlot 库,并确保正确配置了编译环境。 2. 创建一个 QCustomPlot 实例,并将其添加到你的界面中。 3. 添加多个 QCPGraph 对象到 QCustomPlot 实例中,用于绘制不同的曲线。 4. 创建一个或多个数据源线程,用于生成或获取实时数据。 5. 在数据源线程中,将数据传递给主线程,并使用信号槽机制进行通信。 6. 在主线程的槽函数中,接收并处理传递过来的数据。 7. 在槽函数中,更新曲线数据,并重新绘制曲线。 8. 根据需要,设置坐标轴范围、刻度等属性。 下面是一个简单示例代码,展示了如何实现多参数数据多线程实时曲线坐标轴绘制: ```cpp #include <QApplication> #include <QThread> #include <QMutex> #include <QWaitCondition> #include "qcustomplot.h" // 数据源线程 class DataSourceThread : public QThread { Q_OBJECT public: DataSourceThread(QObject *parent = nullptr) : QThread(parent) {} signals: void newData(const QVector<double> &xData, const QVector<double> &yData); protected: void run() override { // 模拟生成实时数据 while (true) { QVector<double> xData, yData; // 假设获取最新的曲线数据并保存到 xData 和 yData 中 // ... emit newData(xData, yData); // 休眠一段时间 msleep(1000); } } }; int main(int argc, char *argv[]) { QApplication a(argc, argv); // 创建 QCustomPlot 实例 QCustomPlot customPlot; // 添加多个 QCPGraph 对象到 QCustomPlot 实例中 QVector<QCPGraph *> graphs; for (int i = 0; i < 3; ++i) { QCPGraph *graph = customPlot.addGraph(); graphs.append(graph); } // 创建数据源线程 DataSourceThread dataSourceThread; // 创建互斥锁和条件变量,用于线程间的同步 QMutex mutex; QWaitCondition newDataAvailable; // 在数据源线程中生成的新数据,通过信号槽机制传递给主线程 QObject::connect(&dataSourceThread, &DataSourceThread::newData, [&](const QVector<double> &xData, const QVector<double> &yData) { // 使用互斥锁保护共享数据 mutex.lock(); // 更新曲线数据 for (int i = 0; i < graphs.size(); ++i) { QCPGraph *graph = graphs[i]; graph->data()->clear(); for (int j = 0; j < xData.size(); ++j) { graph->addData(xData[j], yData[i * xData.size() + j]); } } // 释放互斥锁并通知主线程新数据可用 mutex.unlock(); newDataAvailable.wakeAll(); }); // 启动数据源线程 dataSourceThread.start(); // 设置坐标轴范围等属性 // ... // 主循环 while (true) { // 使用互斥锁保护共享数据 mutex.lock(); // 等待新数据的到来 newDataAvailable.wait(&mutex); // 在主线程中更新曲线并重新绘制 customPlot.replot(); // 释放互斥锁 mutex.unlock(); } return a.exec(); } ``` 这个示例代码中使用了一个数据源线程来模拟生成实时数据,然后通过信号槽机制将数据传递给主线程进行处理和绘制。你可以根据实际需求进行修改和扩展。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值