[SOLVED] Reading QColor from an INI file
-
[quote author="Subst27" date="1421078846"]try to remove # sign
it's issuer of syntax
from Assistant
QByteArray QByteArray::toHex() const
Returns a hex encoded copy of the byte array. The hex encoding uses the numbers 0-9 and the letters a-f.
[/quote]It is unclear what you are trying to illustrate.
Perhaps a trivial example?
-
can you wait some minutes?
-
[quote author="Subst27" date="1421079781"]can you wait some minutes?[/quote]
Of course
-
I found better variant
in INI
[common]
color=#FF0000result
"#FF0000"
16711680
QColor(ARGB 1, 1, 0, 0)look code in next message
-
@QSettings settings(qApp->applicationDirPath()+"/color.ini",QSettings::IniFormat);
QColor color;
settings.beginGroup("common");
QString string=settings.value("color","#0000FF").toString();
qDebug()<<string;
string.remove(0,1);
bool ok;
uint value=string.toUInt(&ok,16);
qDebug()<<value;
color=QColor::fromRgb(value);
qDebug()<<color;@ -
I'd add a bit more checking of the input. Before removing the first character, check if it actually is a # sign. And check if the length of the rest is what you expect (6 characters for a 3x8bit color).
-
[quote author="Andre" date="1421081171"]I'd add a bit more checking of the input. Before removing the first character, check if it actually is a # sign. And check if the length of the rest is what you expect (6 characters for a 3x8bit color).[/quote]
well.
I've just wrote the principal solve -
[quote author="Andre" date="1421081171"]I'd add a bit more checking of the input. Before removing the first character, check if it actually is a # sign. And check if the length of the rest is what you expect (6 characters for a 3x8bit color).[/quote]
Thanks as always @Andre and especially thanks to @Subst27! I will mark this Solved for now but will need to refine it a bit
-
[quote author="Subst27" date="1421081450"]
[quote author="Andre" date="1421081171"]I'd add a bit more checking of the input. Before removing the first character, check if it actually is a # sign. And check if the length of the rest is what you expect (6 characters for a 3x8bit color).[/quote]well.
I've just wrote the principal solve[/quote]Yes, of course. But reading an ini file is essentially user imput, so I think input checking should not be just an afterthought. That's why I mentioned it.
-
sure u are right
for this purpose global better to define T QVariant::value() const for QColor
:)
and problem die away. :)Well! I see you
-
I just wanted to add what I think is a better solution - at least for me. The issue was centered around the proper forming of the key in the input file which if not done correctly yielded a Invalid color status for the QColor. I went back to reading the value in as a number - not a string.
@
[Testing]
MarkerColor=#800000
@and in code:
@
m_MarkerColor = IniSettings.value("Testing/MarkerColor").value<QColor>();
@Sincere thanks to all who have assisted and contributed.