2017-11-23 2 views
0

Ich implementiere Tests für meine Qt-Anwendung mit einer 'internen Testbibliothek'. Das Problem besteht darin, dass die Bibliothek keine Option zum Vergleichen von zwei QColor Objekten bietet.Vergleichen Sie die Farbe von zwei QColor-Objekten

Ist es richtig, den folgenden Code zu verwenden, um die Farbe von zwei QColor Objekten zu vergleichen?

void MyClass::compare(QColor color1, QColor color2) 
{ 
    ASSERT_EQ(color1.red(), color2.red()); 
    ASSERT_EQ(color1.green(), color2.green()); 
    ASSERT_EQ(color1.blue(), color2.blue()); 
    ASSERT_EQ(color1.alpha(), color2.alpha()); 
} 

Oder vielmehr, ist es genug, um die Rot-, Grün-, Blau- und Alpha-Kanäle zu vergleichen, um die beiden Farben gleich zu betrachten?

Hinweis: In diesem Fall muss ich genau wissen, welcher Kanal "nicht übereinstimmt", so dass ich nicht einfach den Operator == verwenden kann.

Antwort

3

QColor hat operator ==. Versuchen Sie einfach if(color1 == color2) ...

Dokumentation hier. (Wie Sie sehen können es vergleicht RGB und Alpha.)

http://doc.qt.io/qt-4.8/qcolor.html#operator-eq-eq

+0

Hoffe, dass Sie mich nicht dagegen Ashwel einen Link zu Ihrer Antwort hinzufügen? –

+0

Ja, 'operator ==()' sollte immer das Erste sein, was wir versuchen, und wir müssen uns nur darum sorgen, den Vergleich selbst durchzuführen, wenn der Klassenautor das nicht schon getan hat. –

+0

Sorry, ich war nicht sehr klar in meiner Frage, ich habe es aktualisiert. – KelvinS