QVariant::QVariant(Qt::GlobalColor)是私有的

8

头文件中的声明

QColor dialogBoja, dialogBoja1;

.cpp文件

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

正如标题所示,在尝试在Qt5中编译时,我遇到了错误:“QVariant :: QVariant(Qt :: GlobalColor)”是私有的。如何解决这个问题。
2个回答

14

您需要显式创建一个QColor对象。以下代码可行:

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

这是因为在标题中进行了解释:
// 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.

3
看起来他们想把QVariant与QtGui模块分离开来,例如QColor中的构造函数在5.0版中已被删除。有关一些语法解释,请参见此处
由于QVariant是QtCore库的一部分,它无法提供用于QtGui中定义的数据类型(如QColor、QImage和QPixmap)的转换函数,换句话说,没有toColor()函数。您可以使用QVariant::value()或qvariant_cast()模板函数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接