어떻게 Qt의 QVariant를 boost :: any로 변환 할 수 있습니까? 내가 쉬운 방법이 있다고 생각하지 말아어떻게 Qt의 QVariant를 boost :: any로 변환 할 수 있습니까?
4
A
답변
7
, 나는 다음과 같습니다 Boost.Variant이 Boost.Any의 aswell 대신 일을 할 것인지
boost::any qvariant_to_any(const QVariant& v) {
switch(v.userType()) {
case QVariant::Bool:
return boost::any(v.value<bool>());
//or: return boost::any(v.toBool());
case QVariant::Int:
return boost::any(v.value<int>());
//or: return boost::any(v.toInt());
case QVariant::UInt:
return boost::any(v.value<unsigned>());
// ...
// all your types which store in a QVariant in your use case
case QVariant::Invalid:
default:
throw std::bad_cast(); //or return default constructed boost::any
}
}
가, 독일하기 Magazin에 대한 좋은 기사가 있었다 이 당신을 interrests 경우 Boost.Variant 반대에 QVariant를 변환하는 소스 코드를 살펴 :
독일어 기사 : http://www.heise.de/developer/artikel/Konvertierungen-992950.html
소스 : 나는 어떤 사람에게 어떤을 저장 희망 ftp://ftp.heise.de/pub/ix/developer/elfenbein.zip
+0
환상적인 답변! 고맙습니다. –
6
smerlin의 위대한 대답에 정성을 기울임으로써 타이핑.
boost::any QVariantToAny(const QVariant& v) {
switch(v.userType()) {
case QVariant::BitArray:
return boost::any(v.value<QBitArray>());
case QVariant::Bitmap:
return boost::any(v.value<QBitmap>());
case QVariant::Bool:
return boost::any(v.value<bool>());
case QVariant::Brush:
return boost::any(v.value<QBrush>());
case QVariant::ByteArray:
return boost::any(v.value<QByteArray>());
case QVariant::Char:
return boost::any(v.value<QChar>());
case QVariant::Color:
return boost::any(v.value<QColor>());
case QVariant::Cursor:
return boost::any(v.value<QCursor>());
case QVariant::Date:
return boost::any(v.value<QDate>());
case QVariant::DateTime:
return boost::any(v.value<QDateTime>());
case QVariant::Double:
return boost::any(v.value<double>());
case QVariant::EasingCurve:
return boost::any(v.value<QEasingCurve>());
case QVariant::Font:
return boost::any(v.value<QFont>());
case QVariant::Hash:
return boost::any(v.value<QVariantHash>());
case QVariant::Icon:
return boost::any(v.value<QIcon>());
case QVariant::Image:
return boost::any(v.value<QImage>());
case QVariant::Int:
return boost::any(v.value<int>());
case QVariant::KeySequence:
return boost::any(v.value<QKeySequence>());
case QVariant::Line:
return boost::any(v.value<QLine>());
case QVariant::LineF:
return boost::any(v.value<QLineF>());
case QVariant::List:
return boost::any(v.value<QVariantList>());
case QVariant::Locale:
return boost::any(v.value<QLocale>());
case QVariant::LongLong:
return boost::any(v.value<qlonglong>());
case QVariant::Map:
return boost::any(v.value<QVariantMap>());
case QVariant::Matrix:
return boost::any(v.value<QMatrix>());
case QVariant::Transform:
return boost::any(v.value<QTransform>());
case QVariant::Matrix4x4:
return boost::any(v.value<QMatrix4x4>());
case QVariant::Palette:
return boost::any(v.value<QPalette>());
case QVariant::Pen:
return boost::any(v.value<QPen>());
case QVariant::Pixmap:
return boost::any(v.value<QPixmap>());
case QVariant::Point:
return boost::any(v.value<QPoint>());
case QVariant::PointArray:
return boost::any(v.value<QPointArray>());
case QVariant::PointF:
return boost::any(v.value<QPointF>());
case QVariant::Polygon:
return boost::any(v.value<QPolygon>());
case QVariant::Quaternion:
return boost::any(v.value<QQuaternion>());
case QVariant::Rect:
return boost::any(v.value<QRect>());
case QVariant::RectF:
return boost::any(v.value<QRectF>());
case QVariant::RegExp:
return boost::any(v.value<QRegExp>());
case QVariant::Region:
return boost::any(v.value<QRegion>());
case QVariant::Size:
return boost::any(v.value<QSize>());
case QVariant::SizeF:
return boost::any(v.value<QSizeF>());
case QVariant::SizePolicy:
return boost::any(v.value<QSizePolicy>());
case QVariant::String:
return boost::any(v.value<QString>());
case QVariant::StringList:
return boost::any(v.value<QStringList>());
case QVariant::TextFormat:
return boost::any(v.value<QTextFormat>());
case QVariant::TextLength:
return boost::any(v.value<QTextLength>());
case QVariant::Time:
return boost::any(v.value<QTime>());
case QVariant::UInt:
return boost::any(v.value<unsigned>());
case QVariant::ULongLong:
return boost::any(v.value<qulonglong>());
case QVariant::Url:
return boost::any(v.value<QUrl>());
case QVariant::Vector2D:
return boost::any(v.value<QVector2D>());
case QVariant::Vector3D:
return boost::any(v.value<QVector3D>());
case QVariant::Vector4D:
return boost::any(v.value<QVector4D>());
case QVariant::UserType:
case QVariant::Invalid:
default:
throw std::bad_cast(); //or return default constructed boost::any
}
}
관련 문제
- 1. Qt에서 QVariant를 QString으로 변환하고 그 반대로 변환 할 수 있습니까?
- 2. 사용자 지정 형식의 QVariant를 QString으로 변환
- 3. 어떻게 비트를 바이트로 변환 할 수 있습니까?
- 4. 어떻게 'System.Windows.Forms.Keys'로 'System.Windows.Input.Key'를 변환 할 수 있습니까?
- 5. 파이썬에서 어떻게 문자열을리스트로 변환 할 수 있습니까?
- 6. 어떻게 NSString을 NSDate로 변환 할 수 있습니까?
- 7. 어떻게 CodeVariableDeclarationStatement를 CodeAssignmentStatement로 변환 할 수 있습니까?
- 8. 어떻게 문자열 [] T로 변환 할 수 있습니까?
- 9. ObjectiveC 함수를 boost :: bind() 할 수 있습니까?
- 10. 부울로의 boost :: optional 변환
- 11. 어떻게 이종 boost :: map을 만들 수 있습니까?
- 12. 어떻게 boost :: random에서 lognormal_distribution을 얻을 수 있습니까 :: boost :: math :: lognormal_distribution
- 13. 어떻게 unsigned char 형식에 boost :: spirit을 컴파일 할 수 있습니까?
- 14. boost :: filter_iterator - 어떻게 STL로 그렇게 할 수 있습니까?
- 15. 어떻게 Perl 정규식을 Boost :: Regex와 함께 사용하도록 변환 할 수 있습니까?
- 16. QVariant를 이용한 단위 테스트
- 17. boost :: regex_search를 wstring에서 처리 할 수 있습니까?
- 18. 템플릿 파생 C++ 클래스를 Qt의 Q_OBJECT와 혼합 할 수 있습니까?
- 19. Qt의 QString에서 HTML을 쉽게 제거 할 수 있습니까?
- 20. boost :: bind를 사용하여 boost :: tuple 요소에 액세스 할 수 없습니다.
- 21. RELAX NG를 XSD로 변환 할 수 있습니까?
- 22. Android에서 텍스트를 PDF로 변환 할 수 있습니까?
- 23. JSON 문자열을 JsonResult로 변환 할 수 있습니까?
- 24. Trunk/Branch 개념을 Subversion에서 Git으로 어떻게 변환 할 수 있습니까?
- 25. Ruby on Rails에서 어떻게 html을 단어로 변환 할 수 있습니까?
- 26. 어떻게 C# 코드를 MATLAB으로 변환 할 수 있습니까?
- 27. 어떻게 이것을 람다 식으로 변환 할 수 있습니까?
- 28. 공백을 어떻게 으로 변환 할 수 있습니까?
- 29. 어떻게 PHP 페이지를 .doc 파일로 변환 할 수 있습니까?
- 30. 어떻게 LPCSTR 문자열을 LPCTSTR 문자열로 변환 할 수 있습니까?
부스트 : 무엇을 의미합니까? 정확히 무엇을 원하는지 설명 할 수 있습니까? – Naruto