QT5 视图坐标
又出错了。
。
main.obj:-1: error: LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall MyView::metaObject(void)const " (?metaObject@MyView@@UBEPBUQMetaObject@@XZ)
main.obj:-1: error: LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall MyView::qt_metacast(char const *)" (?
qt_metacast@MyView@@UAEPAXPBD@Z)
main.obj:-1: error: LNK2001: 无法解析的外部符号 "public: virtual int __thiscall MyView::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@MyView@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
debug\myScene.exe:-1: error: LNK1120: 3 个无法解析的外部命令
这些错都是什么啊。。
我建立了一个继承自QWidget的类,基类是 QGraphicsView
然后生成了myview.h 自己主动加上了宏Q_OBJECT 所以就报那些错了。
。 原理不懂呀
改完之后,记得清理项目!
myview.h
#ifndef MYVIEW_H
#define MYVIEW_H
#include <QGraphicsView>
class MyView : public QGraphicsView
{
// Q_OBJECT 仅仅需把这里凝视掉即可了
public:
explicit MyView(QWidget *parent = 0);
protected:
void mousePressEvent(QMouseEvent *event);
signals:
public slots:
};
#endif // MYVIEW_H
myview.cpp
#include "myview.h"
#include <QMouseEvent>
#include <QGraphicsItem>
#include <QDebug>
MyView::MyView(QWidget *parent) :
QGraphicsView(parent)
{
}
void MyView::mousePressEvent(QMouseEvent *event)
{
QPoint viewPos = event->pos();
qDebug() <<"viewPos:" << viewPos;
QPointF scenePos = mapToScene(viewPos);
qDebug() << "scenePos:" << scenePos;
QTransform transform;
QGraphicsItem *item = scene()->itemAt(scenePos,transform);
if(item)
{
QPointF itemPos = item->mapFromScene(scenePos);
qDebug() << "itemPos:" << itemPos;
}
}
main.cpp
#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsRectItem>
#include <QGraphicsItem>
#include <QDebug>
#include <QGraphicsView>
#include "myitem.h"
#include "myitem.cpp"
#include "myview.h"
#include "myview.cpp"
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
QGraphicsScene scene;
// QGraphicsRectItem * item = new QGraphicsRectItem(0,0,100,100);
MyItem *item = new MyItem;
scene.addItem(item);
item->setPos(10,10);
QGraphicsRectItem *rectItem = scene.addRect(QRect(0,0,100,100),
QPen(Qt::blue),QBrush(Qt::green));
rectItem->setPos(20,20);
MyView view;
view.setScene(&scene);
view.setForegroundBrush(QColor(255,255,255,100));
view.setBackgroundBrush(QPixmap("../myScene/11.jpg"));
view.show();
return app.exec();
}
QT5 视图坐标的更多相关文章
- Qt5图形视图框架的“俄罗斯方块”(使用了QGraphicsView)
Qt5 图形视图框架QGraphicsView 1.图形视图框架包含三大类:场景类(QGraphicsScene),视图类(QGraphicsView),图元类(QGraphicsItem): 2.对 ...
- android中的坐标系以及获取坐标的方法
android中有两种坐标系,分别称之为Android坐标系和视图坐标系.而对应的也有一些相关的方法可以获取坐标系中的 坐标值.只有搞清楚这些区别,才能在实现的时候不至于出错或者得不到你想要的效果. ...
- Qt之图形视图框架
简述 图形视图(Graphics View)提供了一个平台,用于大量自定义2D图元的管理与交互,并提供了一个视图部件(view widget)来显示可以缩放和旋转的图元. 框架包括一个事件传播架构,支 ...
- IOS开发-UI基础-视图
//------------------------------UIWindow--------------------------// 1.UIWindow:是 UIView 的子类,用于管理.协调 ...
- Android dp和px之间转换 及 获取坐标
dp.px.sp转换 public class DensityUtil { /** * 将px值转换为dip或dp值,保证尺寸大小不变 * * @param pxValue * @param scal ...
- Android View视图系统分析和Scroller和OverScroller分析
Android View视图系统分析和Scroller和OverScroller分析 View 视图分析 首先,我们知道.在Android中全部的视图资源(无论是Layout还是V ...
- Android View体系(一)视图坐标系
前言 Android View体系是界面编程的核心,他的重要性不亚于Android四大组件,在这个系列中我会陆续讲到View坐标系.View的滑动.View的事件分发等文章来逐步介绍Android V ...
- OpenGL超级宝典总结(二)2D/3D笛卡尔坐标、坐标裁剪、纹理坐标、MVP转换等概念
如果你想把图形渲染在正确的位置上,那么坐标的设置就很重要了.在OpenGL中,与坐标相关的主要有笛卡尔坐标.坐标裁剪.纹理坐标.MVP(Model View Projection)转换. 1.笛卡尔坐 ...
- Qt 插件综合编程-基于插件的OpenStreetMap瓦片查看器client(1)-墨卡托投影与坐标控制
(相关的代码能够从https://github.com/goldenhawking/mercator.qtviewer.git直接克隆) 我们如今是准备做一个C/S架构的地图显示控件.就必定牵扯到坐标 ...
随机推荐
- C#常见几道面试题
首先碰到的是这样的一首题目:计算数组{1,1,2,3,5,8.......} 第30位值,不用递归,我写出了以下这样的代码: static void Main(string[] args) { ]; ...
- 【游记】Noip2018
Day -1 Noip还有1天,加油!!! 今天上午就肝一肝树形DP,维护一些玄学差分,和前缀数组什么的吧 下午以及晚上搞一搞记忆化搜索和最朴素的DFS这样子吧. 还要打一打板子也是极有必要的qwq ...
- 数据结构与算法--最小生成树之Kruskal算法
数据结构与算法--最小生成树之Kruskal算法 上一节介绍了Prim算法,接着来看Kruskal算法. 我们知道Prim算法是从某个顶点开始,从现有树周围的所有邻边中选出权值最小的那条加入到MST中 ...
- MYSQL查询优化:数据类型与效率
这一部分提供了如何选择数据类型来帮助提高查询运行速度的一些指导: 在可以使用短数据列的时候就不要用长的.如果你有一个固定 长度的CHAR数据列,那么就不要让它的长度超出实际需要.如果你在数据列中 ...
- 漫画 | Redis常见面试问题(二)
上期,小知和阿音在进行面试问答,可是呢,还没问完小知就表示累了想休息一会,然后就休息去了,但是,以为这样就完了吗? 当然不是,还得继续啊,嘿嘿嘿 注:对于第一种,需要应用程序自己处理资源的同步,可以使 ...
- RxJava1升级到RxJava2的注意事项
1.package更改 rx1包名由原来的rx.xxx更改为io.reactivex.xxx,并且在同一个module之下,rx1和rx2是不兼容的. 2.背压支持 RxJava在1.0只有一个个观察 ...
- HDU1281(KB10-D 二分图最大匹配)
棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- web安全CSRF和XSS
web端的安全攻击有CSRF和XSS两种,将通过以下三个方面介绍这两种安全攻击: 1.基本概念和缩写 2.攻击原理 3.防御措施 CSRF 1.基本概念和缩写 CSRF(Cross-site req ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 2
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 1------------------- 建立如下数据表 CREATE ...
- LeetCode题解之N-ary Tree Postorder Traversal
1.题目描述 2.问题分析 递归. 3.代码 vector<int> postorder(Node* root) { vector<int> v; postNorder(roo ...