2013-08-25 90 views
0

我正在尝试制作一个QPainter对象。所有的例子都做类似的事情。但抱怨:QT C++ QPainter - 如何正确使用'this'

X:\Folder\ink.cpp:56: error: C2664: QPainter::QPainter(QPaintDevice *) : cannot convert parameter 1 from Ink *const to QPaintDevice * Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

简化代码:

#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: error: C2653: ink : is not a class or namespace name

这是对线:

void ink::paintEvent(QPaintEvent *event) 

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

+4

如果你“今天开始使用C++”,我认为你不应该直接跳到Qt的东西,你必须先学习语言的基础。这适用于任何语言,但对于C++来说却是双重的,因为它作为一种语言特别复杂。 –

+0

我试图避免这么说,但我在想它。 –

+0

你们可能是对的,当项目开始觉得徒劳时,我总是走10步.. :) – Vii

回答

1
  1. QPainter的构造似乎需要一个指向QPaintDevice,和你想的指针传递给Ink实例,因此它不会工作。也许你的意思是从QPaintDevice获得Ink,在这种情况下,你会希望class Ink : public QPaintDevice { ...

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

+0

谢谢你,似乎是正确的方向,但现在我得到'inkpuppet.obj:-1:error: LNK2001:无法解析的外部符号“protected:virtual void __cdecl InkPuppet :: paintEvent(class QPaintEvent *)”(?paintEvent @ InkPuppet @@ MEAAXPEAVQPaintEvent @@@ Z)' – Vii

+0

我不知道'InkPuppet'可能是什么。 –

+0

多数民众赞成在项目的名称 – Vii