无效使用不完整的类型'class QGraphicsRectItem'

invalid use of incomplete type 'class QGraphicsRectItem'

本文关键字:class QGraphicsRectItem 类型 用不完 无效      更新时间:2023-10-16

我正在尝试创建可移动的矩形,这是我的代码,但出现了以下 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);)程序运行没有任何错误。

小部件.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

小部件.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()
{
}

您尚未在代码中包含正在使用<QGraphicsRectItem>类。在开头添加它,如下所示:

#include <QGraphicsScene>
#include <QGraphicsRectItem> //You missed
#include <QWidget>
#include <QtCore>
#include <QtGui>