enum 클래스, QVariants 및 QSettings 클래스에 문제가 있습니다. QVariant 내에 QPtings 인스턴스로 들어가기를 원하는 enum 클래스 값이 있습니다. 주장은 점프와 불평, 코드를 실행에이 시점에서QSettings에서 QVariant의 enum 클래스
enum class Foo
{
Bar1, Bar2
}
Q_ENUMS(Foo)
Q_DECLARE_METATYPE(Foo)
...
Foo value = Bar2;
QSettings settings;
settings.setValue(QString("Foo"), QVariant::fromValue(value));
: 그래서, 내 코드는 실제로 다음과 같이 보입니다
ASSERT failure in QVariant::save: "Invalid type to save", file kernel\qvariant.cpp
인터넷 검색, I 클래스임을 발견 피팅이 누락되었습니다. < < 및 >> 연산자. 하지만 enum 클래스에는 옵션이 아닙니다. 심지어 사용하려고 시도했습니다.
qRegisterMetaType<Foo>("Foo");
그러나 도움이되지 않았습니다. 어쩌면 당신은 나를위한 다른 제안/해결책을 가지고있을 것입니다. 감사! 그것을 부호로 변환하는 것입니다 마스크 부호의 int입니다
맞습니다. QVariant의 열거 형에 문제가 있습니다. 내 원래 구현 QVariant에 실제 (서명되지 않은) 정수 값을 저장했다. 이제 스코프 된 열거 형을 시도했지만 QVariants에서이 문제점을 발견했습니다. 그러나 열거 형에서 가장 낮은 값/가장 높은 값의 트릭을 사용하여 원래 구현으로 되돌 렸습니다. 감사. – CppChris