QT5 뷰 좌표

2680 단어 Qt
또 틀렸어.
main.obj:-1: error: LNK2001: 해석할 수 없는 외부 기호'public: virtual struct QMetaObject const * __thiscall Mybiew::metaObject (void) const'(?metaObject@MyView@@UBEPBUQMetaObject@@XZ)
main.obj:-1: error: LNK2001: 해석할 수 없는 외부 기호 "public: virtual void * _ _ thiscall Mybiew: qt _ metacast (char const *)"(?qt_metacast@MyView@@UAEPAXPBD@Z)
main.obj:-1: error: LNK2001: 해석할 수 없는 외부 기호'public: virtual int___thiscall Mybiew::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 

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 
#include 
#include 
MyView::MyView(QWidget *parent) :
    QGraphicsView(parent)
{
}
void MyView::mousePressEvent(QMouseEvent *event)
{
    QPoint viewPos = event->pos();
    qDebug() <itemAt(scenePos,transform);
    if(item)
    {
        QPointF itemPos = item->mapFromScene(scenePos);
        qDebug() << "itemPos:" << itemPos;
    }
}

main.cpp
#include 
#include 
#include 
#include 
#include 
#include 
#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();
}

좋은 웹페이지 즐겨찾기