QT5 视图坐标

又出错了。。

main.obj:-1: error: LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall MyView::metaObject(void)const " ([email protected]@@[email protected]@XZ)

main.obj:-1: error: LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall MyView::qt_metacast(char const *)" ([email protected]@@[email protected])

main.obj:-1: error: LNK2001: 无法解析的外部符号 "public: virtual int __thiscall MyView::qt_metacall(enum QMetaObject::Call,int,void * *)" ([email protected]@@[email protected]@@[email protected])

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 视图坐标

时间: 2024-12-24 16:34:38

QT5 视图坐标的相关文章

Qt5图形视图框架之概念篇(1)

本章将主要简述Graphics View框架结构的特点.主要包含的元素及坐标系统. 1.Graphics View框架结构的特点: (1)系统可以利用Qt绘图系统的反锯齿.OpenGL工具来改善绘图性能. (2)其支持事件传播结构,可以使图元在场景中的交互能力提高一倍,凸缘可以处理键盘事件和鼠标事件. (3)通过BSP提供快速的图元查找,可以实现实时显示包含数百万图元的大场景. 2.Graphics View的三元素: (1)场景类(QGraphicsScene):本身不可见,是一个放置图元的容

父视图和子视图的关系

////  ViewController.m//  SuperViewSonView////  Created by hehe on 15/9/16.//  Copyright (c) 2015年 wang.hehe. All rights reserved.// #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad

用循环添加多行、多列视图

用循环构建多视图的相关代码 - (viod) viewDidLoad{ [super loadView]; UIView *view = [[[UIView alloc] init] autorelease]; self.view = view; NSInteger line = 3; NSInteger row = 3; CGFloat width = 80; CGFloat height = 80; //获取第一个视图的x,y坐标 CGFloat x = (self.view.bounds.

iOS UI03_UIViewController视图控制器

// //  AppDelegate.m //  UI03_UIViewController视图控制器 // //  Created by dllo on 15/7/31. //  Copyright (c) 2015年 zhozhicheng. All rights reserved. // #import "AppDelegate.h" #import "RootViewController.h" @interface AppDelegate () @end @

Android dp和px之间转换 及 获取坐标

dp.px.sp转换 1 public class DensityUtil { 2 /** 3 * 将px值转换为dip或dp值,保证尺寸大小不变 4 * 5 * @param pxValue 6 * @param scale 7 * (DisplayMetrics类中属性density) 8 */ 9 public static int px2dip(float pxValue, float scale) { 10 return (int) (pxValue / scale + 0.5f);

Android View体系(一)视图坐标系

前言 Android View体系是界面编程的核心,他的重要性不亚于Android四大组件,在这个系列中我会陆续讲到View坐标系.View的滑动.View的事件分发等文章来逐步介绍Android View体系. 1.View简介 View是Android所有控件的基类,同时ViewGroup也是继承自View,看下面这张图我们就会有一个直观的了解: 我们知道了View的层级关系有助于我们对View的理解,我们看到我们常用的这些控件都是继承于View,如果我们更好的掌握了View的知识体系,那么

Android View视图系统分析和Scroller和OverScroller分析

Android  View视图系统分析和Scroller和OverScroller分析 View  视图分析 首先,我们知道.在Android中全部的视图资源(无论是Layout还是View),终于的父类都是View类.各式各样的Layout仅仅是对ViewGroup的一中特别的实现.各种View也仅仅是View的特别实现. 而ViewGroup也是对于View的一种实现.所以说全部的View元素在根本上都是一样的.当然这并不等于说View == ViewGroup,就好比仅仅有ViewGrou

UI-基础之视图

//------------------------------UIWindow--------------------------// 1.UIWindow:是 UIView 的子类,用于管理.协调应用中显示的窗口   它是视图中的根view iOS 应用程序通常只有一个UIWindow,应用程序在启动时创建这个UIWindow,并往窗口中加入一或多个视图,然后将它显示出来,UIWindow的大小是根据设备的大小创建的,如果超出设备大小,那超出部分不会被显示,也不能对超的视图的事件进行操作(旋

Qt 插件综合编程-基于插件的OpenStreetMap瓦片查看器client(1)-墨卡托投影与坐标控制

(相关的代码能够从https://github.com/goldenhawking/mercator.qtviewer.git直接克隆) 我们如今是准备做一个C/S架构的地图显示控件.就必定牵扯到坐标系和UI的界面控制. 1.墨卡托投影 眼下osm採用墨卡托投影,这个投影的原理能够用一个假想实验解释. 如果地球是一个透明的球体.在球体的球心有一个光源.我们把一张幕布沿着赤道卷起来.使之与地球内切,地球上的一个点在这块幕布上的投影就是其墨卡托投影位置. 上图中,地球半径是R=6378137米,可想