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...

Qt中对坐标轴的相关操作

//获取坐标轴的相关值 if(m_plotCurve != NULL) {        ui->lineEdit_nameX->setText(m_plotCurve->m_plot->axi...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Qt之坐标系统

坐标系统由 QPainter 类控制,再加上 QPaintDevice 和 QPaintEngine,就形成了 Qt 的绘图体系。 - QPainter:用于执行绘图操作 - QPaintDevic...

qt绘制坐标系--利用QCustomPlot

以下文章来自链接:http://www.cnblogs.com/yingjiehit/p/3988701.html 本文只为个人留作记录 一、QCustomPlot的安装 1 官方下载地址:htt...

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

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

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

QPainter

http://blog.csdn.net/u011012932/article/list/5

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

QT画图教程5:QT中QPainter的使用及矩形、圆形等常见图形的画法

#includeQApplication> #include QWidget>  #include QPainter>  class MyMainWindow:public QWidget {  pu...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Qt简单坐标绘制
举报原因:
原因补充:

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