QVariant :: QVariant (Qt :: GlobalColor) 'is private

in the header file

QColor dialogBoja, dialogBoja1; 

.cpp file

 dialogBoja = postavke.value("boja", Qt::black).toString(); //postavke means settings dialogBoja1 = postavke.value("boja1", Qt::white).toString(); 

As I said in the title, when I try to compile this in Qt5, I get an error: QVariant :: QVariant (Qt :: GlobalColor) 'is private

How to solve it.

+7
source share
2 answers

You need to explicitly create a QColor object. This should work:

 dialogBoja = postavke.value("boja", QColor(Qt::black)).toString(); 

The reason for this is explained in the header:

 // These constructors don't create QVariants of the type associcated // with the enum, as expected, but they would create a QVariant of // type int with the value of the enum value. // Use QVariant v = QColor(Qt::red) instead of QVariant v = Qt::red for // example. 
+9
source

It looks like they wanted to strip QVariant from QtGui modules like QColor and remove this constructor in 5.0. Some syntax is explained here .

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 qvariant_cast () function of the template.

+3
source

All Articles