错误信息如下:
C:\Users\q\Desktop\Learn\myitem.cpp:40: error: jump to case label [-fpermissive]
C:\Users\q\Desktop\Learn\myitem.cpp:35: error: crosses initialization of 'QGraphicsBlurEffect* blurEffect'
这是由对象的生命周期引起的,容易在switch发生此类错误。
switch (event->key()) { case Qt::Key_1: QGraphicsBlurEffect *blurEffect = new QGraphicsBlurEffect; blurEffect->setBlurHints(QGraphicsBlurEffect::QualityHint); blurEffect->setBlurRadius(8); setGraphicsEffect(blurEffect); break; case Qt::Key_2: QGraphicsColorizeEffect *colorzeEffect = new QGraphicsColorizeEffect; colorzeEffect->setColor(Qt::white); colorzeEffect->setStrength(0.6); setGraphicsEffect(colorzeEffect); break; case Qt::Key_3: QGraphicsDropShadowEffect *drop = new QGraphicsDropShadowEffect; drop->setColor(QColor(63,63,63,100)); drop->setOffset(10); setGraphicsEffect(drop); break; }解决的方法很简单,即为每一个case都加上一个大括号,将case中定义的变量的生命周期限制在大括号内。