Qt绘制带有坐标轴的图像

上传人:pu****.1 文档编号:506708958 上传时间:2023-06-08 格式:DOC 页数:4 大小:77KB
返回 下载 相关 举报
Qt绘制带有坐标轴的图像_第1页
第1页 / 共4页
Qt绘制带有坐标轴的图像_第2页
第2页 / 共4页
Qt绘制带有坐标轴的图像_第3页
第3页 / 共4页
Qt绘制带有坐标轴的图像_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《Qt绘制带有坐标轴的图像》由会员分享,可在线阅读,更多相关《Qt绘制带有坐标轴的图像(4页珍藏版)》请在金锄头文库上搜索。

1、=Widget.h=Widget.cpp=#includeWidget.h#includeui_Widget.h#includeWidget:Widget(QWidget *parent) : QWidget(parent), ui(new Ui:Widget) ui-setupUi(this); ui-widget-installEventFilter(this);Widget:Widget() delete ui;void Widget:changeEvent(QEvent *e) QWidget:changeEvent(e); switch (e-type() case QEvent:L

2、anguageChange: ui-retranslateUi(this); break; default: break; bool Widget:eventFilter(QObject *watched, QEvent *e) if (watched = ui-widget) if (e-type() = QEvent:Paint) paintOnWidget(ui-widget); return true; return QWidget:eventFilter(watched, e);void Widget:paintOnWidget(QWidget *w) QPainter painte

3、r(w); QFontMetrics metrics = painter.fontMetrics(); int textHeight = metrics.ascent() + metrics.descent(); int leftWidth = metrics.width(tr(9000) + 5; int rightWidth = metrics.width(tr(日); int width = w-size().width() - leftWidth - rightWidth; int height = w-size().height() - 3 * textHeight; / 绘制外框

4、painter.drawRect(0, 0, w-size().width() -1, w-size().height() - 1); /移动坐标系 /painter.translate(inset * 2, ui-yearWidget-size().height() - inset); painter.translate(leftWidth, 1.75 * textHeight + height); int totalCount = 9000; /默认每年收入9000件衣服 int count = 10; /分成10成 float deltaX = width / 12.0f; / x坐标上

5、每分的宽度 float deltaY = (float)height / count; / y坐标上每分的宽度 / 画横坐标 painter.drawLine(0, 0, width, 0); for (int i = 1; i = 12; +i) QString month = tr(%1月).arg(i); int stringWidth = metrics.width(month); / 绘制坐标刻度 painter.drawLine(deltaX * i, 0, deltaX * i, 4); / 绘制坐标处的月 int monthX = deltaX * (i - 1) + (del

6、taX - stringWidth) / 2); painter.drawText(monthX, textHeight, month); / 画纵坐标 painter.drawLine(0, 0, 0, -height); painter.drawText(-metrics.width(tr(件), -(deltaY * count + textHeight / 2 + metrics.descent(), tr(件); for (int i = 1; i = count; +i) QString value = QString(%1).arg(i * totalCount / count)

7、; int stringWidth = metrics.width(value); / 绘制坐标刻度 painter.drawLine(-4, -i * deltaY, 0, -i * deltaY); /绘制坐标值 /painter.drawText(-stringWidth - 4, -i * deltaY + stringHeight / 2, value); painter.drawText(-stringWidth - 4, -(deltaY * i + textHeight / 2 - metrics.ascent(), value); / / 绘制每个月收到的服饰 / paint

8、er.setBrush(Qt:BDiagPattern); / for (int i = 0; i height) / h = height; / / / painter.setPen(Qt:red); / /painter.drawText(deltaX * i + (deltaX - stringWidth) / 2, -(h + metrics.descent(), fineryString); / #ifndef WIDGET_H#define WIDGET_H#include namespace Ui class Widget;class Widget : public QWidget Q_OBJECTpublic: Widget(QWidget *parent = 0); Widget();protected: virtual void changeEvent(QEvent *e); virtual bool eventFilter(QObject *watched, QEvent *e); void paintOnWidget(QWidget *w);private: Ui:Widget *ui;#endif/ WIDGET_H

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号