Alen
Alen

Reputation: 1788

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

declaration in 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 on title, when I try to compile this in Qt5 I get error: QVariant::QVariant(Qt::GlobalColor)' is private

How to solve this.

Upvotes: 8

Views: 6044

Answers (2)

Phlucious
Phlucious

Reputation: 3843

Looks like they wanted to divorce QVariant from the QtGui modules, like QColor, and removed that 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 the qvariant_cast() template function.

Upvotes: 3

Dan Milburn
Dan Milburn

Reputation: 5718

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.

Upvotes: 14

Related Questions