Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        6年前关闭。
                                                                                            
                
        
我正在尝试制作一个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 ++。

最佳答案

QPainter的构造函数似乎采用了指向QPaintDevice的指针,而您试图将其传递给Ink实例的指针,因此它将无法正常工作。也许您打算从Ink导出QPaintDevice,在这种情况下,您需要class Ink : public QPaintDevice { ...等。
在类中定义函数时,不需要ink::。在任何情况下,Inkink都不一样,因为C ++区分大小写。

关于c++ - QT C++ QPainter-如何正确使用“this”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18424971/

10-12 17:50