QT C ++ QPainter - 如何正确使用'this'

时间:2013-08-25 02:05:42

标签: c++ qt

我正在尝试制作一个QPainter对象。
所有的例子都做了类似的事情。但它抱怨道:

  

X:\ Folder \ ink.cpp:56:错误:C2664:QPainter :: QPainter(QPaintDevice *):无法将参数1从Ink * const转换为QPaintDevice *   指向的类型是无关的;转换需要reinterpret_cast,C风格的转换或函数式转换

简化代码:

#include <QtCore>
#include <QtGui>
#include <QPainter>

class Ink
{
public:
    void ink::paintEvent( QPaintEvent* event )
    {
        QPainter painter(this);
    }
};

错误发生在行:QPainter painter(this);

然后它也抱怨

  

X:\ Folder \ ink.cpp:11:错误:C2653:ink:不是类或命名空间名称

在线:

void ink::paintEvent(QPaintEvent *event)

请使用宝贝的话,我今天才开始使用C ++。

1 个答案:

答案 0 :(得分:1)

  1. QPainter的构造函数似乎带有指向QPaintDevice的指针,并且您尝试将指针传递给Ink实例,因此它赢了“工作。也许您打算从Ink派生QPaintDevice,在这种情况下,您需要class Ink : public QPaintDevice { ...等。

  2. 当您在类中定义函数时,不需要ink::。在任何情况下,Inkink都不是一回事,因为C ++区分大小写。