Qt提示QPainter::begin: Paint device returned engine == 0, type:0/1/2/3...,type数值代表什么


    最近在做一个绘图应用,经常会在调试的时候看到QPainter::begin: Paint device returned engine == 0, type:1/2/3之类的警告。一直对type代表的具体内容不解,前几天看了看QPainter的源码,恍然大悟~

   

d->engine = pd->paintEngine();

    if (!d->engine) {
        qWarning("QPainter::begin: Paint device returned engine == 0, type: %d", pd->devType());
        return false;
    }

    在这里找到了这个警告的原型,然后跟踪pd->devType()

int QImage::devType() const
{
    return QInternal::Image;
}
    看到了devType()返回的是QInternal::Image类型的枚举变量,再跟踪QInternal::Image,在qnamespace里,看到

class Q_CORE_EXPORT QInternal {
public:
    enum PaintDeviceFlags {
        UnknownDevice = 0x00,
        Widget        = 0x01,
        Pixmap        = 0x02,
        Image         = 0x03,
        Printer       = 0x04,
        Picture       = 0x05,
        Pbuffer       = 0x06,    // GL pbuffer
        FramebufferObject = 0x07, // GL framebuffer object
        CustomRaster  = 0x08,
        MacQuartz     = 0x09,
        PaintBuffer   = 0x0a,
        OpenGL        = 0x0b
    };
    都这里,就一切都明了了

你可能感兴趣的:(qt,QPainterbegin,Paint,type0123)