• 9237阅读
  • 16回复

小问题求助 [复制链接]

上一主题 下一主题
离线杨宇
 

只看楼主 倒序阅读 楼主  发表于: 2014-02-19
D:\qt\graph01\myitem.h:4: 错误:QGraphicsItem: No such file or directory
#include <QGraphicsItem>。。这个问题是怎么回事啊
                         ^
离线wjz2047

只看该作者 1楼 发表于: 2014-02-19
请贴出详细代码
离线fomalhaut

只看该作者 2楼 发表于: 2014-02-19
有可能是你的pro文件中没有加入QT += widgets。
离线彩阳

只看该作者 3楼 发表于: 2014-02-19
可能没有加楼上那条语句。
上海Qt开发联盟,热忱地欢迎你的加入!
离线heolpoo

只看该作者 4楼 发表于: 2014-02-19
。。。。。。请看楼上的楼上。
离线杨宇

只看该作者 5楼 发表于: 2014-02-20
回 wjz2047 的帖子
wjz2047:请贴出详细代码 (2014-02-19 21:41) 

#ifndef MYITEM_H
#define MYITEM_H

#include <QGraphicsItem>
#include <QtGui>

class MyItem : public QGraphicsItem
{
public:
    MyItem();
    QRectFboundingRect() const;
    voidpaint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget*widget);

};

#endif // MYITEM_H
离线杨宇

只看该作者 6楼 发表于: 2014-02-20
回 fomalhaut 的帖子
fomalhaut:有可能是你的pro文件中没有加入QT += widgets。 (2014-02-19 22:44) 

加上了也不对啊。是不是版本问题啊
离线fomalhaut

只看该作者 7楼 发表于: 2014-02-20
回 杨宇 的帖子
你用的是Qt5吗?
离线杨宇

只看该作者 8楼 发表于: 2014-02-20
回 fomalhaut 的帖子
fomalhaut:你用的是Qt5吗? (2014-02-20 09:08) 

恩啊,qt5.1.1
离线杨宇

只看该作者 9楼 发表于: 2014-02-20
回 彩阳 的帖子
彩阳:可能没有加楼上那条语句。 (2014-02-19 23:17) 

是不是缺少头文件??
离线杨宇

只看该作者 10楼 发表于: 2014-02-20
回 杨宇 的帖子
杨宇:是不是缺少头文件?? (2014-02-20 09:49) 

文件目录里貌似没有,怎么办呢
离线wjz2047

只看该作者 11楼 发表于: 2014-02-20
回 杨宇 的帖子
杨宇:是不是缺少头文件?? (2014-02-20 09:49) 

你的程序找不到QGraphicsItem的定义
离线noidea

只看该作者 12楼 发表于: 2014-02-20
1. QGraphicsItem是随SDK一起发布的,如果你找不到文件,说明你的SDK装的有问题,或者和其他版本有冲突,或者你的QtCreator就没找到你的SDK版本 ,如果是自己编译的,你要看看你路径是否正确。

2. 你的部分代码我测试过,在我的Qt5.2 + MacOSX 10.9 没有问题。

3. 你可以贴出你整个代码来,看看是否其他地方有问题。
talk in code
Qt5.2.1 + MacOSX10.9
离线杨宇

只看该作者 13楼 发表于: 2014-02-20
回 noidea 的帖子
noidea:1. QGraphicsItem是随SDK一起发布的,如果你找不到文件,说明你的SDK装的有问题,或者和其他版本有冲突,或者你的QtCreator就没找到你的SDK版本 ,如果是自己编译的,你要看看你路径是否正确。
2. 你的部分代码我测试过,在我的Qt5.2 + MacOSX 10.9 没有问题。
3. 你可以贴出你 .. (2014-02-20 10:03) 

#include "myitem.h"

MyItem::MyItem()
{
    MyItem::MyItem()
    {
       setToolTip("Click and drag me!");  //提示
       setCursor(Qt::OpenHandCursor);   //改变光标形状
    }
}
QRectFMyItem::boundingRect() const
{
    qreal penWidth = 1;
    return QRectF(0 - penWidth / 2, 0 -penWidth / 2,
               20 + penWidth, 20 + penWidth);
}


voidMyItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,QWidget *widget)
{
Q_UNUSED(option);  //标明该参数没有使用
    Q_UNUSED(widget);
    painter->setBrush(Qt::red);
    painter->drawRect(0,0,20,20);
}


#include <QtGui>
#include "myitem.h"
int main(int argc,char* argv[ ])
{
   QApplication app(argc,argv);

   QGraphicsScene *scene = new QGraphicsScene;  //场景
   MyItem *item =new MyItem;   //矩形项
   scene->addItem(item);  //项添加到场景
   QGraphicsView *view = new QGraphicsView; //视图
   view->setScene(scene);  //视图关联场景
   view->show();  //显示视图

   return app.exec();
}


离线杨宇

只看该作者 14楼 发表于: 2014-02-20
回 wjz2047 的帖子
wjz2047:你的程序找不到QGraphicsItem的定义 (2014-02-20 09:58) 

那怎么办呢
离线noidea

只看该作者 15楼 发表于: 2014-02-20
回 杨宇 的帖子
杨宇:
#include "myitem.h"
MyItem::MyItem()
{
.......

来,试试看你能运行不?
我这里可以。

我不知道为什么不能上传文件,你参考一下代码吧。基本没改动你的东西,我这里是可以运行的。

pro 文件
  1. QT       += core gui
  2. greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
  3. TARGET = test1
  4. TEMPLATE = app
  5. SOURCES += main.cpp\
  6.     myitem.cpp
  7. HEADERS  += \
  8.     myitem.h


main 文件
  1. #include <QApplication>
  2. #include <QGraphicsScene>
  3. #include <QGraphicsView>
  4. #include "myitem.h"
  5. int main(int argc, char *argv[])
  6. {
  7.     QApplication a(argc, argv);
  8.     QGraphicsScene *scene = new QGraphicsScene;  //场景
  9.     MyItem *item =new MyItem;   //矩形项
  10.     scene->addItem(item);  //项添加到场景
  11.     QGraphicsView *view = new QGraphicsView; //视图
  12.     view->setScene(scene);  //视图关联场景
  13.     view->show();  //显示视图
  14.     return a.exec();
  15. }


MyItem.h 文件
  1. #ifndef MYITEM_H
  2. #define MYITEM_H
  3. #include <QGraphicsItem>
  4. #include <QtGui>
  5. class MyItem : public QGraphicsItem
  6. {
  7. public:
  8.     MyItem();
  9.     QRectF boundingRect() const;
  10.     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget*widget);
  11. };
  12. #endif // MYITEM_H


myitem.cpp 文件
  1. #include "myitem.h"
  2. MyItem::MyItem()
  3. {
  4.     setToolTip("Click and drag me");
  5.     setCursor(Qt::OpenHandCursor);
  6. }
  7. QRectF MyItem::boundingRect() const
  8. {
  9.     qreal penWidth = 1;
  10.     return QRectF(0 - penWidth / 2, 0 -penWidth / 2,
  11.                   20 + penWidth, 20 + penWidth);
  12. }
  13. void MyItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,QWidget *widget)
  14. {
  15.     Q_UNUSED(option);  //标明该参数没有使用
  16.     Q_UNUSED(widget);
  17.     painter->setBrush(Qt::red);
  18.     painter->drawRect(0,0,20,20);
  19. }


talk in code
Qt5.2.1 + MacOSX10.9
离线noidea

只看该作者 16楼 发表于: 2014-02-20
如果你不是自己编译的SDK,还是有问题的话,你可以重新安装SDK,SDK里边有QtCreator,不需要重新下载。
talk in code
Qt5.2.1 + MacOSX10.9
快速回复
限100 字节
 
上一个 下一个