又出错了。

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();
}

最新文章

  1. 12306订票助手.net版如何抢指定过路某一地点的火车票
  2. 简单几句话总结Unicode,UTF-8和UTF-16
  3. Linux中fork的秘密
  4. barabasilab-networkScience学习笔记5- Barab&#225;si-Albert 模型
  5. Android WelcomeActivity 启动画更换网络图片
  6. GC 基础
  7. meteor icons &amp; splash配置
  8. 关于广义后缀树(多串SAM)的总结
  9. codevs 3160 最长公共子串(SAM)
  10. Unity3d 基于物理渲染Physically-Based Rendering之实现
  11. spring.net AOP初探
  12. 解决ubuntu的gedit显示中文乱码问题
  13. mybatis中mapper接口的参数设置几种方法
  14. Docker Data Center系列(三)- DTR安装指南
  15. C#:网络传输问题
  16. Python基础练习及答案
  17. Tronado自定义Session
  18. jenkins构建随笔
  19. MVC文件上传
  20. php以不同名字下载同一个文件(x-sendfile) 【转】

热门文章

  1. C# Thread.Abort方法真的让线程停止了吗?
  2. Redis哨兵(sentinel)模式搭建
  3. hadoop 用户
  4. Java基础——collection接口
  5. 【Java并发编程】1、ConcurrentHashMap原理分析
  6. Retrofit 2.0 使用和原理
  7. .net防止SQL注入的一种方式
  8. Can’t connect to local MySQL server through socket的解决方法
  9. django-csrf攻击
  10. 1.String、StringBuffer与StringBuilder之间区别