在 qt 中分配 QGraphicsDropShadowEffect 对象时不会发生复制构造函数
Copy constructor doesnt happen when assign a QGraphicsDropShadowEffect object in qt
我声明了两个 QGraphicsDropShadowEffect
空指针,因为在 qt
中的某些 QPushButton(s)
上添加了阴影效果:
QGraphicsDropShadowEffect *effectButton1;
QGraphicsDropShadowEffect *effectButton2;
然后我将内存分配给 effectButton1
并调用 setXOffset
、setYOffset
、setBlurRadius
方法来为 effectButton1
对象设置影子选项。
effectButton1 = new QGraphicsDropShadowEffect();
effectButton1->setXOffset(3);
effectButton1->setYOffset(3);
effectButton1->setBlurRadius(7);
现在,我想在使用 new
运算符创建实例时将 effectButton1
对象分配给 effectButton2
。如您所知,在以下语句中,复制构造函数必须发生,并且我用 setXOffset(3)
设置的值也必须设置为 effectButton2
内存。但是两个对象的 xOffset()
的 return 值是不同的(对于 effectButton1
是 3 而 effectButton2
是 8) :
effectButton2 = new QGraphicsDropShadowEffect(effectButton1);
QMessageBox::information(this, "", QString("%1").arg(effectButton1->xOffset()));
QMessageBox::information(this, "", QString("%1").arg(effectButton2->xOffset()));
我预计,当我调用 effectButton1->setXOffset(3)
并将 effectButton1
分配给 effectButton2
时,将为 effectButton2
内存设置相同的 XOffset
值,因为复制-构造函数必须发生)。
考虑声明...
effectButton2 = new QGraphicsDropShadowEffect(effectButton1);
这将调用 this constructor...
QGraphicsDropShadowEffect(QObject *parent)
以 effectButton1
作为 parent
参数。它并不像您所想的那样调用复制构造函数。实际上 QGraphicsDropShadowEffect
没有复制构造函数,因为它继承自 QObject
,它是不可复制的。
如果您想在 effectButton2
中复制 effectButton1
的状态,您需要手动复制相应的属性,例如...
effectButton2 = new QGraphicsDropShadowEffect;
effectButton2->setXOffset(effectButton1->xOffset());
等等
我声明了两个 QGraphicsDropShadowEffect
空指针,因为在 qt
中的某些 QPushButton(s)
上添加了阴影效果:
QGraphicsDropShadowEffect *effectButton1;
QGraphicsDropShadowEffect *effectButton2;
然后我将内存分配给 effectButton1
并调用 setXOffset
、setYOffset
、setBlurRadius
方法来为 effectButton1
对象设置影子选项。
effectButton1 = new QGraphicsDropShadowEffect();
effectButton1->setXOffset(3);
effectButton1->setYOffset(3);
effectButton1->setBlurRadius(7);
现在,我想在使用 new
运算符创建实例时将 effectButton1
对象分配给 effectButton2
。如您所知,在以下语句中,复制构造函数必须发生,并且我用 setXOffset(3)
设置的值也必须设置为 effectButton2
内存。但是两个对象的 xOffset()
的 return 值是不同的(对于 effectButton1
是 3 而 effectButton2
是 8) :
effectButton2 = new QGraphicsDropShadowEffect(effectButton1);
QMessageBox::information(this, "", QString("%1").arg(effectButton1->xOffset()));
QMessageBox::information(this, "", QString("%1").arg(effectButton2->xOffset()));
我预计,当我调用 effectButton1->setXOffset(3)
并将 effectButton1
分配给 effectButton2
时,将为 effectButton2
内存设置相同的 XOffset
值,因为复制-构造函数必须发生)。
考虑声明...
effectButton2 = new QGraphicsDropShadowEffect(effectButton1);
这将调用 this constructor...
QGraphicsDropShadowEffect(QObject *parent)
以 effectButton1
作为 parent
参数。它并不像您所想的那样调用复制构造函数。实际上 QGraphicsDropShadowEffect
没有复制构造函数,因为它继承自 QObject
,它是不可复制的。
如果您想在 effectButton2
中复制 effectButton1
的状态,您需要手动复制相应的属性,例如...
effectButton2 = new QGraphicsDropShadowEffect;
effectButton2->setXOffset(effectButton1->xOffset());
等等