当前位置:   article > 正文

QT5 视图坐标_qt5坐标

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

  1. #ifndef MYVIEW_H
  2. #define MYVIEW_H
  3. #include <QGraphicsView>
  4. class MyView : public QGraphicsView
  5. {
  6. // Q_OBJECT 只需把这里注释掉就行了
  7. public:
  8. explicit MyView(QWidget *parent = 0);
  9. protected:
  10. void mousePressEvent(QMouseEvent *event);
  11. signals:
  12. public slots:
  13. };
  14. #endif // MYVIEW_H

myview.cpp

  1. #include "myview.h"
  2. #include <QMouseEvent>
  3. #include <QGraphicsItem>
  4. #include <QDebug>
  5. MyView::MyView(QWidget *parent) :
  6. QGraphicsView(parent)
  7. {
  8. }
  9. void MyView::mousePressEvent(QMouseEvent *event)
  10. {
  11. QPoint viewPos = event->pos();
  12. qDebug() <<"viewPos:" << viewPos;
  13. QPointF scenePos = mapToScene(viewPos);
  14. qDebug() << "scenePos:" << scenePos;
  15. QTransform transform;
  16. QGraphicsItem *item = scene()->itemAt(scenePos,transform);
  17. if(item)
  18. {
  19. QPointF itemPos = item->mapFromScene(scenePos);
  20. qDebug() << "itemPos:" << itemPos;
  21. }
  22. }

main.cpp

  1. #include <QApplication>
  2. #include <QGraphicsScene>
  3. #include <QGraphicsRectItem>
  4. #include <QGraphicsItem>
  5. #include <QDebug>
  6. #include <QGraphicsView>
  7. #include "myitem.h"
  8. #include "myitem.cpp"
  9. #include "myview.h"
  10. #include "myview.cpp"
  11. int main(int argc,char *argv[])
  12. {
  13. QApplication app(argc,argv);
  14. QGraphicsScene scene;
  15. // QGraphicsRectItem * item = new QGraphicsRectItem(0,0,100,100);
  16. MyItem *item = new MyItem;
  17. scene.addItem(item);
  18. item->setPos(10,10);
  19. QGraphicsRectItem *rectItem = scene.addRect(QRect(0,0,100,100),
  20. QPen(Qt::blue),QBrush(Qt::green));
  21. rectItem->setPos(20,20);
  22. MyView view;
  23. view.setScene(&scene);
  24. view.setForegroundBrush(QColor(255,255,255,100));
  25. view.setBackgroundBrush(QPixmap("../myScene/11.jpg"));
  26. view.show();
  27. return app.exec();
  28. }


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/91708
推荐阅读
相关标签
  

闽ICP备14008679号