2

我有一个功能可以使用以下方法更改所选形状的颜色:

selectedShape->shapeColour = (200,200,200);

效果很好。但是,如果我将其更改为:

selectedShape->shapeColour = (0,0,0);

我收到以下错误:

从“int”到“const QColor”的转换是模棱两可的

任何想法为什么它不喜欢这个?

谢谢。

4

2 回答 2

5

使用逗号运算符评估您(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);
于 2013-10-28T15:43:42.303 回答
5

尝试:

selectedShape->shapeColour = QColor(0,0,0);

C++11你也可以试试:

selectedShape->shapeColour = {0,0,0};
于 2013-10-28T15:04:45.770 回答