我有一个功能,可以使用以下方法更改所选形状的颜色:
selectedShape->shapeColour = (200,200,200);
工作正常。但如果我把它改为:
selectedShape->shapeColour = (0,0,0);
我收到以下错误:
从'int'到'const QColor'的转换是不明确的
为什么它不喜欢这个?
感谢。
答案 0 :(得分:5)
尝试:
selectedShape->shapeColour = QColor(0,0,0);
使用C++11
您也可以尝试:
selectedShape->shapeColour = {0,0,0};
答案 1 :(得分: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);