不完整类型'class QGraphicsRectItem'的无效使用[重复]
Posted
技术标签:
【中文标题】不完整类型\'class QGraphicsRectItem\'的无效使用[重复]【英文标题】:invalid use of incomplete type 'class QGraphicsRectItem' [duplicate]不完整类型'class QGraphicsRectItem'的无效使用[重复] 【发布时间】:2017-10-12 18:23:24 【问题描述】:我正在尝试创建可移动矩形,这是我的代码。但出现以下 3 个错误。
invalid use of incomplete type 'class QGraphicsRectItem' rect->setFlag(QGraphicsItem::ItemIsMovable, true);
forward declaration of 'class QGraphicsItem' class QGraphicsItem;
incomplete type 'QGraphicsItem' used in nested name specifier
没有这一行 (rect->setFlag(QGraphicsItem::ItemIsMovable, true);
) 程序运行没有任何错误。
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QGraphicsScene>
#include <QWidget>
#include <QtCore>
#include <QtGui>
namespace Ui
class Widget;
class Widget : public QWidget
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_pushButton_clicked();
private:
Ui::Widget *ui;
QGraphicsScene *scene;
QGraphicsEllipseItem *elipse;
QGraphicsRectItem *rect;
;
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QCursor>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
ui->setupUi(this);
scene = new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
QBrush redBrush(Qt::red);
QBrush blueBrush(Qt::blue);
QPen blackPen(Qt::black);
blackPen.setWidth(6);
elipse = scene->addEllipse(10,10,100,100,blackPen,redBrush);
rect = scene->addRect(-10,-10,100,100,blackPen,redBrush);
rect->setFlag(QGraphicsItem::ItemIsMovable, true);
Widget::~Widget()
delete ui;
void Widget::on_pushButton_clicked()
【问题讨论】:
将#include <QGraphicsRectItem>
或#include <QGraphicsItem>
添加到widget.h,解决您的问题。
@eyllanesc 非常感谢先生 :) 问题已解决。先生,我怎么能识别这种类型的错误。 Qt 显示错误无助于我识别真正的问题。有任何方法来识别此类错误
我建议你包含你使用的每个类的标题,以避免这种愚蠢的问题。
任何时候你看到编译器告诉你一个类型是“不完整的”,这意味着它已经看到了一个前向声明,例如类 QGraphicsRectItem;但还没有看到完整的类定义。所以你所要做的就是找到包含完整类定义的头文件并确保它被正确包含。
@Joe 非常感谢你
【参考方案1】:
您的代码中没有包含您正在使用的<QGraphicsRectItem>
类。在开头添加它:
#include <QGraphicsScene>
#include <QGraphicsRectItem> //You missed
#include <QWidget>
#include <QtCore>
#include <QtGui>
【讨论】:
以上是关于不完整类型'class QGraphicsRectItem'的无效使用[重复]的主要内容,如果未能解决你的问题,请参考以下文章