我有改變使用所選擇的形狀的顏色的函數:在QT更改的QColor C++
selectedShape->shapeColour = (200,200,200);
工作正常。但是,如果我將其更改爲:
selectedShape->shapeColour = (0,0,0);
我得到以下錯誤:
conversion from 'int' to 'const QColor' is ambigous
任何想法,爲什麼不這樣呢?
謝謝。
我有改變使用所選擇的形狀的顏色的函數:在QT更改的QColor C++
selectedShape->shapeColour = (200,200,200);
工作正常。但是,如果我將其更改爲:
selectedShape->shapeColour = (0,0,0);
我得到以下錯誤:
conversion from 'int' to 'const QColor' is ambigous
任何想法,爲什麼不這樣呢?
謝謝。
嘗試:
selectedShape->shapeColour = QColor(0,0,0);
與C++11
你也可以嘗試:
selectedShape->shapeColour = {0,0,0};
你(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);
感謝您解釋爲什麼'(200,200,200)'甚至是有效的。完全忘記了'''操作符可以以這種方式使用。 – ssell
那我會建議。坦率地說,我很驚訝'selectedShape-> shapeColour =(200,200,200);'甚至可以工作... – ssell
以及它不能正確地改變到正確的顏色... – hunterge
現在雖然工作,非常感謝! – hunterge