Для приложения требуется сохранять переменные типа QColor. У класса QSettings нет метода .toColor(), но в классе QVariant есть такое описание:
Because QVariant is part of the QtCore library, it cannot provide conversion functions to data types defined in QtGui, such as QColor, QImage, and QPixmap. In other words, there is no toColor() function. Instead, you can use the QVariant::value() or the qVariantValue() template function. For example:
QVariant variant;
...
QColor color = variant.value<QColor>();
The inverse conversion (e.g., from QColor to QVariant) is automatic for all data types supported by QVariant, including GUI-related types:
QColor color = palette().background().color();
QVariant variant = color;
По этому совету я сделал так. В конструкторе:
C++ (Qt)
QColor *my_color;
QSettings *settings = new QSettings( ... );
QVariant *variant = new QVariant;
*variant = settings->value("my_color", Qt::green);
my_color = new QColor( variant->value<QColor>() );
А при закрытии приложения так:
C++ (Qt)
QSettings *settings = new QSettings( ... );
settings->setValue( "my_color", QVariant(my_color) );
Но при запуске приложения цвет всегда оказывается черным, а в командной строке параллельно появляется сообщение (хотя приложение продолжает работать нормально):
QColor::setNamedColor: Unknown color name 'true'
Подскажите, пожалста, как сэйвить цвета.