自定义了一个图形项,但发现没有执行成功,原因为:
要有const 此paint是重写的QGraphicsRectItem中的paint函数,第二个参数必须有const。
详情看 霍亚飞版本的 P255
class MyRectItem : public QGraphicsRectItem
{
public:
MyRectItem();
QRectF boundRect() const;
//之前一直不成功,因为paint 中第二个参数 没有加 const 导致 没有继承QGraphicsRectItem中的paint虚函数
void paint(QPainter *painter,
const QStyleOptionGraphicsItem * option,
QWidget *widget);
};
类的前置声明报错:error: base class has incomplete type
类的前置声明,是为了告诉编译器,这些已经存在了,不需要知道具体的定义,避免了头文件被多次包含,提高了编译速度
参见连接:https://blog.csdn.net/sunriver2000/article/details/82819755
使用类的前置声明时,即使在.cpp添加了
#include <QGraphicsView>
#include <QWidget>
#include <QMouseEvent>
#include <QGraphicsItem>
在。h中添加了类的前置声明,
class QGraphicsView;
class QWidget;
class QMouseEvent;
但还是会发现::error: base class has incomplete type
最后的解决办法:
直接在头文件中include头文件