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)' is private

これを解決する方法。

4

2 に答える 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.
于 2013-02-21T17:19:48.910 に答える
3

QVariant を QColor などの QtGui モジュールから分離したかったようで、5.0 でそのコンストラクターを削除しました。一部の構文については、こちらで説明しています。

QVariant は QtCore ライブラリの一部であるため、QColor、QImage、QPixmap などの QtGui で定義されたデータ型への変換関数を提供できません。つまり、 toColor() 関数はありません。代わりに、QVariant::value() または qvariant_cast() テンプレート関数を使用できます。

于 2013-02-21T17:23:24.067 に答える