当我在括号中创建一个新的圆形对象时,如果需要生成一个圆,则不会出现问题。 (旧方式)
function vanillaObjectFunc(type) {
if (type === 'Rect') {
var tObject = new fabric.Rect({
width: 50,
height: 50,
opacity: 0.8,
fill: 'black',
left: canvasB.width / 2,
top: canvasB.height / 2
});
} else {
var tObject = new fabric.Circle({
radius: 20,
opacity: 0.8,
fill: 'black',
left: canvasB.width / 2,
top: canvasB.height / 2
});
}
canvasB.getObjects();
canvasB.add(tObject);
canvasB.selection = false;
canvasB.renderAll();
canvasB.calcOffset();
}
但现在在动态函数中,在创建圆形对象并在画布上添加圆形后定义所有属性,应该如下所示:(新方法)
function newObjectFunc(type) {
var tObject = new fabric[type]({});
tObject['opacity'] = 0.8;
tObject['fill'] = 'black';
tObject['left'] = canvasA.width / 2;
tObject['top'] = canvasA.height / 2;
if (type == 'Circle') {
tObject['radius'] = 100;
} else if (type == 'Rect') {
tObject['width'] = 50;
tObject['height'] = 50;
}
canvasA.getObjects();
canvasA.add(tObject);
canvasA.selection = false;
canvasA.renderAll();
canvasA.calcOffset();
}
看起来很简单,但是有一些奇怪的问题,因为Circle不会生成,这种方式我找不到原因。
属性是相同的。 circle-object的Console.log(新方式)看起来也是正确的。
https://jsfiddle.net/Sascha/052jnLu6/2/
我在这里缺少什么?
答案 0 :(得分:3)
在这种情况下,您应避免直接分配属性并改为使用fabric.Object.set():
QStringList genderList;
genderList << "Male" << Female" << "Other";
ui->genderComboBox->setCurrentIndex(genderList.indexOf(sl[2]));
您会找到更新的小提琴here。