我有一个功能可以使用以下方法更改所选形状的颜色:
selectedShape->shapeColour = (200,200,200);
效果很好。但是,如果我将其更改为:
selectedShape->shapeColour = (0,0,0);
我收到以下错误:
从“int”到“const QColor”的转换是模棱两可的
任何想法为什么它不喜欢这个?
谢谢。
使用逗号运算符评估您(200,200,200)
的值为 200 的整数。
这满足QColor( QRgb color )
构造函数,因为QRgb
它是无符号整数的 typedef。
这与(0,0,0)
评估为 0 的情况不同,因为 0 也可以解释为空指针。
在您的上下文中,这会导致歧义,因为 QColor 也有一个带有指针的构造函数QColor( const char * name )
。
编译器无法判断您打算使用哪种构造,因此会给出关于它不明确的错误。
您可以使用 -
selectedShape->shapeColour = QColor(0,0,0);
如果您想要您想要的颜色,我建议您也将这种方法用于您的 (200,200,200) 案例 -
selectedShape->shapeColour = QColor(200,200,200);
尝试:
selectedShape->shapeColour = QColor(0,0,0);
C++11
你也可以试试:
selectedShape->shapeColour = {0,0,0};