2013-10-28 41 views
2

我有改變使用所選擇的形狀的顏色的函數:在QT更改的QColor C++

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

工作正常。但是,如果我將其更改爲:

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

我得到以下錯誤:

conversion from 'int' to 'const QColor' is ambigous

任何想法,爲什麼不這樣呢?

謝謝。

回答

5

嘗試:

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

C++11你也可以嘗試:

selectedShape->shapeColour = {0,0,0}; 
+1

那我會建議。坦率地說,我很驚訝'selectedShape-> shapeColour =(200,200,200);'甚至可以工作... – ssell

+0

以及它不能正確地改變到正確的顏色... – hunterge

+0

現在雖然工作,非常感謝! – hunterge

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); 

如果你想你正打算的顏色,我建議你使用過這種方法爲你(200200200)的情況下 -

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

感謝您解釋爲什麼'(200,200,200)'甚至是有效的。完全忘記了'''操作符可以以這種方式使用。 – ssell