Qt简单坐标绘制

原创 2015年07月08日 00:17:10

今天试着在Qt中画一个简单的坐标系。简单记一下,还有一些问题。
在下面的测试当中,有用到鼠标事件,主要是获取鼠标的坐标位置;用到了QPen,QPainter等。
对于坐标的绘制,首先要明白一点,窗体中的坐标和平时数学中的坐标不是很一样,它以窗体左上角为坐标原点(0,0),然后水平向右为X正向,垂直向下为Y正向。
下图中重新绘制了一个像平时数学中的一个坐标系,把坐标原点显示在左下方,但是没有转换。文本框中显示的还是以窗体左上角为原点的鼠标位置。
效果如下图所示:
这里写图片描述
鼠标单击可以绘制以原点为起点,以鼠标单击的位置为终点的一条射线,两个文本框显示了当前鼠标的位置,也可以在文本框中输入坐标值来改变射线的终点位置。
代码如下所示:

“`

Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{

ui->setupUi(this);

}

Dialog::~Dialog()
{
delete ui;
}
void Dialog::mousePressEvent(QMouseEvent *e)//鼠标单击
{
int x;
int y;
QPoint p; //坐标点
p = e->pos(); //获取鼠标位置,保存在p中
x = p.x(); //p的x坐标值
y = p.y(); //p的y坐标值
QString sx,sy; //字符串变量
sx = QString::number(x); //x转换为字符串
sy = QString::number(y); //y转换为字符串
ui->lineEdit->setText(sx); //文本框显示 x值
ui->lineEdit_2->setText(sy); //文本框显示 y值

}
void Dialog::paintEvent(QPaintEvent *)
{
QPainter painter(this);// 画笔

QPen pen;
pen.setWidth(2); //设置宽度
pen.setBrush(Qt::blue); //设置颜色
painter.setPen(pen); //选中画笔

painter.drawLine(25,0,25,500);  //绘制y轴
painter.drawLine(25,500,525,500); //绘制x轴
int i;
for(i = 25;i<500;i+=50)//x zhou
{
     painter.drawLine(i+50,500,i+50,490); //绘制x轴上的点
     painter.drawText(5,525-i,QString::number(i-25)); //绘制文本

}
for(i=25;i<500;i+=50)//y zhou
{
     painter.drawLine(25,i+25,35,i+25); //绘制y轴上的点
     painter.drawText(i+50,525,QString::number(i+25)); //绘制文本
}

int x,y;
x = ui->lineEdit->text().toInt();
y = ui->lineEdit_2->text().toInt();
painter.drawLine(25,500,x,y);// 画射线

Dialog::update();

}

`画好以后,想让它像cad中那样,鼠标单击两个不同位置时,在两点之间画一条直线,不知道怎么搞。再想想。
当然了,Qt中画图的函数还有好多了,比如什么椭圆,矩形,直线,扇形,弧等等,上次实现了一下,画椭圆,矩形,和多边形的程序。下次再写。

版权声明:本文为博主原创文章,未经博主允许不得转载。

QT5简易坐标系和折线图的绘制

1. QT坐标系统。 在画坐标系之前,我们得先了解一下QT5的坐标系统。 QT5的坐标设定左上角为原点(0,0),向右为x轴正方向,向下为y轴正方向,这点与生活中常见的直角坐标系不同。 2...
  • a343902152
  • a343902152
  • 2015年07月23日 15:22
  • 10896

QT 坐标系统理解

这几天学习QT的2D绘图,可因为坐标系统把我拦住了。不但资料少,而且这些资料都是内容雷同。本来这是件非常简单的事情,却有种越描越黑的感觉。经过几天的折腾,总算是理解了这层关系。现在总结一下,不要让大家...
  • hgcprg
  • hgcprg
  • 2016年12月09日 11:45
  • 1640

Qt之坐标系统

坐标系统由 QPainter 类控制,再加上 QPaintDevice 和 QPaintEngine,就形成了 Qt 的绘图体系。 - QPainter:用于执行绘图操作 - QPaintDevic...
  • u011012932
  • u011012932
  • 2016年07月21日 15:55
  • 7308

QT 利用QPainter绘图的坐标系转换

Qt绘制图形时,少不了坐标计算,那么如何更好更快地计算出坐标呢?现在来分析一下。        如下图所示,原来坐标系是(0,0)X axis右Y axis下 现在想把它变成,坐标在窗口中间,X右...
  • fanyun_01
  • fanyun_01
  • 2017年01月25日 09:15
  • 2655

Qt中QGraphics类坐标映射关系详解(有图有真相,实例讲解)

如果你英文足够好,可以参考Qt帮助文档中的:The Graphics View Coordinate System。 ----------------------------------------...
  • imxiangzi
  • imxiangzi
  • 2016年03月25日 12:15
  • 3673

Qt:在widget的外部进行绘制带有坐标轴的图像

=====================================Widget.h===================================== #ifndef WIDGET...
  • imxiangzi
  • imxiangzi
  • 2015年12月03日 00:13
  • 1089

Qt坐标绘图

1.    坐标系简介Qt中每一个窗口都有自己的一个坐标系,默认窗口左上角为坐标原点(0,0),然后水平向右依次增大(X轴),垂直向下依次增大(Y轴)。例如:void  MyDraw::paintEv...
  • sunboy_2050
  • sunboy_2050
  • 2011年06月28日 23:13
  • 5668

Qt绘制坐标系

功能:绘制坐标系,并或许坐标系第一象限的点绘制X.h文件#ifndef QCSLABEL_H #define QCSLABEL_H#include #include #include #incl...
  • qq_25310869
  • qq_25310869
  • 2017年03月24日 13:55
  • 386

Qt基础编程 绘制坐标轴

//mainwindow.cpp #include "pointsave.h" #include "mainwindow.h" #include "ui_mainwindow.h"#include #...
  • liquan001789
  • liquan001789
  • 2015年04月25日 17:22
  • 533

关于qt保存数据到txt文件的问题

问题: 从lineEdit写入到txt文本的数据都被覆盖了 3个lineedit数值是实时写入到txt文本中的,但是光标一直都在文件头,怎么样才能使光标停留在数据末尾呢?qfile file("c:...
  • xu1129005165
  • xu1129005165
  • 2017年04月19日 09:33
  • 764
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Qt简单坐标绘制
举报原因:
原因补充:

(最多只允许输入30个字)