IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Viadeo Twitter Facebook Share on Google+   
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

QVariant

La classe QVariant agit comme une union des types de données les plus courants de Qt. Plus d'informations...

  
 #include <QVariant>

Héritage

Hérité par QDBusVariant.

Description détaillée

La classe QVariant agit comme une union des types de données les plus courants Qt.

Comme le C++ interdit d'utiliser des unions avec des types n'ayant pas de constructeurs ou destructeurs par défaut, les classes les plus intéressantes de Qt ne peuvent pas être utilisées dans les unions. Sans la classe QVariant, cela aurait été un problème pour QObject::property(), pour le travail avec les bases de données, etc.

Un objet QVariant contient une valeur unique d'un seul type type() à la fois (quelques types sont multivaleurs, par exemple une liste de chaînes de caractères). Vous pouvez trouver le type T que contient le QVariant, puis le convertir en un autre type avec la fonction convert(), récupérer sa valeur grâce aux fonctions toT() (par exemple, toSize()) et vérifier si le type peut être converti en un type particulier en utilisant la fonction canConvert().

Les méthodes toT() (par exemple, toInt(), toString()) sont const. Si vous voulez récupérer le type stocké, les fonctions retournent une copie de celui-ci. Si vous demandez un type pouvant être généré à partir du type stocké, toT() copie, convertit et laisse l'objet inchangé. Si vous demandez un type ne pouvant pas être généré à partir de celui stocké, le résultat dépendra du type ; voir la documentation pour plus de détails.

Voici quelques exemples de code pour présenter l'utilisation de QVariant :

 QDataStream out(...);
 
 QVariant v(123);                // v contient un int
 
 int x = v.toInt();              // x = 123
 
 out << v;                       // Écrit un indicateur de type et un int dans out
 
 v = QVariant("hello");          // v contient un QByteArray
 
 v = QVariant(tr("hello"));      // v contient une QString
 
 int y = v.toInt();              // y = 0 car v ne peut être converti en int
 
 QString s = v.toString();       // s = tr("hello")  (voir QObject::tr())
 
 out << v;                       // Écrit un indicateur de type et une QString dans out
 
 ...
 
 QDataStream in(...);            // (ouvre le flux précédent)
 
 in >> v;                        // Lit un QVariant int
 
 int z = v.toInt();              // z = 123
 
 qDebug("Type is %s",            // Affiche "Type is int"
 
         v.typeName());
 
 v = v.toInt() + 100;            // v contient la valeur 223
 
 v = QVariant(QStringList());

Vous pouvez même stocker des valeurs QList<QVariant> et QMap<QString, QVariant> dans un QVariant, donc vous pouvez facilement construire des structures de données complexes de types arbitraires. Ceci est très puissant et flexible mais peut s'avérer moins efficace en mémoire et en performance qu'un stockage classique de structures de données spécifiques.

QVariant gère aussi la notion de valeur nulle, qui permet de définir un type sans spécifier de valeur. Cependant, notez que les types QVariant ne peuvent être convertis que lorsqu'ils possèdent une valeur définie.

 QVariant x, y(QString()), z(QString(""));
 
 x.convert(QVariant::Int);
 
 // x.isNull() == true
 
 // y.isNull() == true, z.isNull() == false

QVariant peut être étendu pour supporter d'autres types que ceux mentionnés dans l?énumération Type. Voir la documentation de QMetaType pour plus de détails.

Une note à propos des types pour les interfaces graphiques

Comme QVariant fait partie de la bibliothèque QtCore, il ne peut pas fournir des fonctions de conversions pour les types de données définis dans QtGui, tels que QColor, QImage et QPixmap. Autrement dit, il n'y a pas de fonction toColor(). À la place, vous pouvez utiliser les fonctions templates QVariant::value() ou qVariantValeur(). Par exemple :

 QVariant variant;
 
 ...
 
 QColor color = variant.value<QColor>();

La conversion inverse (c'est-à-dire à partir de QColor en QVariant) est automatique pour tous les types de données supportés par QVariant, y compris les types de données liés aux interfaces graphiques :

 QColor color = palette().background().color();
 
 QVariant variant = color;

Lors de l'utilisation de canConvert() et convert() consécutivement, il est possible que canConvert() retourne

true

mais que convert() retourne false. Ceci est dû à canConvert(), qui ne donne que la capacité générale de QVariant pour convertir les types dans le cas où les données fournies sont adéquates ; il reste possible de fournir des données qui ne peuvent pas réellement être converties.

Par exemple, canConvert() retournera true lors de l'appel sur un QVariant contenant une chaîne de caractères car, en principe, QVariant est capable de convertir les chaînes de caractères de nombres en entier. Par contre, si la chaîne de caractères contient des caractères non numériques, il ne peut pas être converti en un entier et tous les essais pour le convertir échoueront. Donc, il est important que les deux fonctions retournent true pour que la conversion soit réussie.

Voir aussi QMetaType.

Type

enum QVariant::Type

Cette énumération définit les types de variables qu'un QVariant peut contenir.

Constante Valeur Description
QVariant::Invalid   aucun type
QVariant::BitArray 13 un QBitArray
QVariant::Bitmap 73 un QBitmap
QVariant::Bool 1 un booléen
QVariant::Brush 66 un QBrush
QVariant::ByteArray 12 un QByteArray
QVariant::Char 7 un QChar
QVariant::Color 67 un QColor
QVariant::Cursor 74 un QCursor
QVariant::Date 14 un QDate
QVariant::DateTime 16 un QDateTime
QVariant::Double 6 un double
QVariant::EasingCurve 29 un QEasingCurve
QVariant::Font 64 un QFont
QVariant::Hash 28 un QVariantHash
QVariant::Icon 69 un QIcon
QVariant::Image 70 un QImage
QVariant::Int 2 un entier
QVariant::KeySequence 76 un QKeySequence
QVariant::Line 23 un QLine
QVariant::LineF 24 un QLineF
QVariant::List 9 un QVariantList
QVariant::Locale 18 un QLocale
QVariant::LongLong 4 un qlonglong
QVariant::Map 8 un QVariantMap
QVariant::Matrix 80 un QMatrix
QVariant::Transform 81 un QTransform
QVariant::Matrix4x4 82 un QMatrix4x4
QVariant::Palette 68 un QPalette
QVariant::Pen 77 un QPen
QVariant::Pixmap 65 un QPixmap
QVariant::Point 25 un QPoint
QVariant::PointArray Polygon un QPointArray
QVariant::PointF 26 un QPointF
QVariant::Polygon 71 un QPolygon
QVariant::Quaternion 86 un QQuaternion
QVariant::Rect 19 un QRect
QVariant::RectF 20 un QRectF
QVariant::RegExp 27 un QRegExp
QVariant::Region 72 un QRegion
QVariant::Size 21 un QSize
QVariant::SizeF 22 un QSizeF
QVariant::SizePolicy 75 un QSizePolicy
QVariant::String 10 un QString
QVariant::StringList 11 un QStringList
QVariant::TextFormat 79 un QTextFormat
QVariant::TextLength 78 un QTextLength
QVariant::Time 15 un QTime
QVariant::UInt 3 un uint
QVariant::ULongLong 5 un qulonglong
QVariant::Url 17 un QUrl
QVariant::Vector2D 83 un QVector2D
QVariant::Vector3D 84 un QVector3D
QVariant::Vector4D 85 un QVector4D
QVariant::UserType 127 valeur de base pour les types définis par l'utilisateur.

Fonctions membres

QVariant::QVariant ()

Construit un QVariant invalide.

QVariant::QVariant ( const QLocale & l )

Construit un nouveau QVariant avec la valeur l.

QVariant::QVariant ( const QRegExp & regExp )

Construit un nouveau QVariant avec la valeur regExp.

QVariant::QVariant ( const QEasingCurve & val )

Construit un nouveau QVariant avec la valeur val.

Cette fonction a été introduite dans Qt 4.7.

QVariant::QVariant ( Qt::GlobalColor color )

Construit un nouveau QVariant de type QVariant::Color et l'initialise avec color.

Ce constructeur permet d'utiliser la syntaxe QVariant(Qt::blue); pour créer un QVariant valide contenant un QColor.

Note. Ce constructeur lèvera une assertion si l'application n'est pas liée à la bibliothèque d'interfaces graphiques de Qt.

Cette fonction a été introduite dans Qt 4.2.

QVariant::QVariant ( Type type )

Construit un QVariant nul de type type.

QVariant::QVariant ( int typeOrUserType, const void * copy )

Construit un QVariant de type typeOrUserType et l'initialise avec copy si copy est différent de 0.

Notez que vous devez passer l'adresse de la variable que vous voulez stocker.

Habituellement, vous n'avez pas à utiliser ce constructeur, mais plutôt qVariantFromValeur(), afin de construire les QVariant à partir des types pointeurs représentés par QMetaType::VoidStar, QMetaType::QObjectStar et QMetaType::QWidgetStar.

Voir aussi qVariantFromValeur() et Type.

QVariant::QVariant ( const QVariant & p )

Construit une copie du QVariant, p, passé comme argument au constructeur.

QVariant::QVariant ( QDataStream & s )

Lit le QVariant à partir du flux de données, s.

QVariant::QVariant ( int val )

Construit un nouveau QVariant avec l'entier val.

QVariant::QVariant ( uint val )

Construit un nouveau QVariant avec l'entier non signé val.

QVariant::QVariant ( qlonglong val )

Construit un nouveau QVariant avec l'entier long long val.

QVariant::QVariant ( qulonglong val )

Construit un nouveau QVariant avec l'entier non signé long long val.

QVariant::QVariant ( bool val )

Construit un nouveau QVariant avec le booléen val.

QVariant::QVariant ( double val )

Construit un nouveau QVariant avec le nombre en virgule flottante val.

QVariant::QVariant ( float val )

Construit un nouveau QVariant avec le nombre en virgule flottante val.

Cette fonction a été introduite dans Qt 4.6.

QVariant::QVariant ( const char * val )

Construit un nouveau QVariant avec la chaîne de caractères val. Le QVariant crée une copie complète de val, utilisant l'encodage défini par QTextCodec::setCodecForCStrings().

Notez que val est converti en un QString pour le stockage dans le QVariant et la fonction QVariant::type() retournera QMetaType::QString pour ce QVariant.

Vous pouvez désactiver cet opérateur en définissant QT_NO_CAST_FROM_ASCII lors de la compilation de vos applications.

Voir aussi QTextCodec::setCodecForCStrings().

QVariant::QVariant ( const QByteArray & val )

Construit un nouveau QVariant avec le QByteArray val.

QVariant::QVariant ( const QBitArray & val )

Construit un nouveau QVariant avec le QBitArray val.

QVariant::QVariant ( const QString & val )

Construit un nouveau QVariant avec la chaîne de caractères val.

QVariant::QVariant ( const QLatin1String & val )

Construit un nouveau QVariant avec la chaîne de caractères val.

QVariant::QVariant ( const QStringList & val )

Construit un nouveau QVariant avec la liste de chaîne de caractères val.

QVariant::QVariant ( const QChar & c )

Construit un nouveau QVariant avec la valeur caractère c.

QVariant::QVariant ( const QDate & val )

Construit un nouveau QVariant avec la valeur date val.

QVariant::QVariant ( const QTime & val )

Construit un nouveau QVariant avec le QTime val.

QVariant::QVariant ( const QDateTime & val )

Construit un nouveau QVariant avec le QDateTime val.

QVariant::QVariant ( const QList<QVariant> & val )

Construit un nouveau QVariant avec la liste val.

QVariant::QVariant ( const QMap<QString, QVariant> & val )

Construit un nouveau QVariant avec la QMap de QVariant val.

QVariant::QVariant ( const QHash<QString, QVariant> & val )

Construit un nouveau QVariant avec la table de hachage de QVariant val.

QVariant::QVariant ( const QSize & val )

Construit un nouveau QVariant avec la valeur taille val.

QVariant::QVariant ( const QSizeF & val )

Construit un nouveau QVariant avec la valeur taille val.

QVariant::QVariant ( const QPoint & val )

Construit un nouveau QVariant avec le point val.

QVariant::QVariant ( const QPointF & val )

Construit un nouveau QVariant avec le point val.

QVariant::QVariant ( const QLine & val )

Construit un nouveau QVariant avec la ligne val.

QVariant::QVariant ( const QLineF & val )

Construit un nouveau QVariant avec la ligne val.

QVariant::QVariant ( const QRect & val )

Construit un nouveau QVariant avec le rectangle val.

QVariant::QVariant ( const QRectF & val )

Construit un nouveau QVariant avec le rectangle val.

QVariant::QVariant ( const QUrl & val )

Construit un nouveau QVariant avec l'URL val.

QVariant::~QVariant ()

Détruit le QVariant et l'objet contenu.

Notez que les classes dérivées qui réimplémentent clear() doivent réimplémenter le destructeur pour appeler clear(). Ce destructeur appelle clear() mais comme c'est le destructeur de base, QVariant::clear() est appelé à la place du clear() de la classe dérivée.

bool QVariant::canConvert ( Type t ) const

Retourne true si la type du QVariant peut être converti en type t. Cette conversion est effectuée automatiquement lors de l'appel des méthodes toInt(), toBool(), etc.

Les conversions suivantes sont effectuées automatiquement :

Type Automatiquement converti en
Bool Char, Double, Int, LongLong, String, UInt, ULongLong
ByteArray Double, Int, LongLong, String, UInt, ULongLong
Char Bool, Int, UInt, LongLong, ULongLong
Color String
Date DateTime, String
DateTime Date, String, Time
Double Bool, Int, LongLong, String, UInt, ULongLong
Font String
Int Bool, Char, Double, LongLong, String, UInt, ULongLong
KeySequence Int, String
List StringList (if the list's items can be converted to strings)
LongLong Bool, ByteArray, Char, Double, Int, String, UInt, ULongLong
Point PointF
Rect RectF
String Bool, ByteArray, Char, Color, Date, DateTime, Double, Font, Int, KeySequence, LongLong, StringList, Time, UInt, ULongLong
StringList List, String (si la liste contient exactement un élément)
Time String
UInt Bool, Char, Double, Int, LongLong, String, ULongLong
ULongLong Bool, Char, Double, Int, LongLong, String, UInt

Voir aussi convert().

bool QVariant::canConvert () const

Retourne true si le QVariant peut être converti dans le type template T, sinon retourne false.

Exemple:

 QVariant v = 42;
 
 
 
 v.canConvert<int>();              // retourne vrai
 
 v.canConvert<QString>();          // retourne vrai
 
 
 
 MyCustomStruct s;
 
 v.setValeur(s);
 
 
 
 v.canConvert<int>();              // retourne faux
 
 v.canConvert<MyCustomStruct>();   // retourne vrai

Attention : cette fonction n'est pas disponible avec MSVC 6. Utilisez la fonction qVariantCanConvert() à la place si vous avez besoin de supporter cette version du compilateur.

Voir aussi convert().

void QVariant::clear ()

Convertit le QVariant en type Invalid et libère les ressources utilisées.

bool QVariant::convert ( Type t )

Convertit le QVariant dans le type requis, t. Si la conversion ne peut être effectuée, le QVariant est invalidé. Retourne true si le type courant de QVariant a été converti avec succès; sinon retourne false.

Attention : pour des raisons historiques, la conversion d'un QVariant nul résulte en une valeur nulle du type désiré (c'est-à-dire, par exemple, une chaîne de caractères vide pour QString) et un retour de la valeur false.

Voir aussi canConvert() et clear().

QVariant QVariant::fromValeur ( const T & value ) [static]

Retourne un QVariant contenant une copie de value. Se comporte exactement comme setValeur().

Exemple:

 MyCustomStruct s;
 
 return QVariant::fromValeur(s);

Note : si vous travaillez avec des types personnalisés, vous devriez utiliser la macro Q_DECLARE_METATYPE() pour enregistrer votre type.

Attention : cette fonction n'est pas disponible avec MSVC 6. Utilisez la fonction qVariantFromValeur() à la place si vous avez besoin de supporter cette version du compilateur.

Voir aussi setValeur() et value().

bool QVariant::isNull () const

Retourne true si le QVariant est nul, sinon false.

bool QVariant::isValid () const

Retourne true si le type contenu dans ce QVariant n'est pas QVariant::Invalid; sinon retourne false.

Type QVariant::nameToType ( const char * name ) [static]

Convertit la chaîne de caractères name représentant un type en sa représentation dans l'énumération.

Si la chaîne de caractères ne peut être convertie en une valeur de l'énumération, le QVariant est défini à Invalid.

void QVariant::setValeur ( const T & value )

Stocke une copie de value. Si le type T n'est pas un type géré par QVariant, QMetaType est utilisé pour stocker la valeur. Une erreur de compilation se produira si QMetaType ne gère par le type.

Exemple:

 QVariant v;
 
 
 
 v.setValeur(5);
 
 int i = v.toInt();         // i vaut 5
 
 QString s = v.toString()   // s vaut "5"
 
 
 
 MyCustomStruct c;
 
 v.setValeur(c);
 
 
 
 ...
 
 
 
 MyCustomStruct c2 = v.value<MyCustomStruct>();

Attention : cette fonction n'est pas disponible pour MSVC 6. Utilisez la fonction qVariantSetValeur() à la place si vous avez besoin de supporter ce compilateur.

Voir aussi value(), fromValeur() et canConvert().

QBitArray QVariant::toBitArray () const

Retourne le QVariant sous forme d'un QBitArray si le type() du QVariant est BitArray ; sinon retourne un tableau de bits vide.

Voir aussi canConvert() et convert().

bool QVariant::toBool () const

Retourne le QVarient sous forme d'un booléen si le type() est Bool.

Retourne true si le type() est Bool, Char, Double, Int, LongLong, UInt ou ULongLong et la valeur est différente de zéro ou si le type est String ou ByteArray et qu'il n'est pas vide, «   » ou « false » ; sinon retourne false.

Voir aussi canConvert() et convert().

QByteArray QVariant::toByteArray () const

Retourne le QVariant sous forme d'un QByteArray si le QVarient est de type() ByteArray ou String (convertie avec QString::fromAscii()) ; sinon retourne un tableau d'octets vide.

Voir aussi canConvert() et convert().

QChar QVariant::toChar () const

Retourne le QVariant sous forme d'un QChar si le type() est Char, Int ou UInt ; sinon retourne un QChar invalide.

Voir aussi canConvert() et convert().

QDate QVariant::toDate () const

Retourne le QVariant tel un QDate si le type() est Date, DateTime ou String ; sinon retourne une date invalide.

Si le type() est String, une date invalide sera retournée si la chaine de caractères ne peut pas être analysée dans le format Qt::ISODate.

Voir aussi canConvert() et convert().

QDateTime QVariant::toDateTime () const

Retourne le QVariant sous forme d'un QDateTime si le type() est DateTime, Date ou String ; sinon, retourne une QDateTime invalide.

Si le type() est String, une QDateTime invalide sera retournée si la chaîne de caractères n'est pas dans le format Qt::ISODate.

Voir aussi canConvert() et convert().

double QVariant::toDouble ( bool * ok = 0 ) const

Retourne le QVariant sous forme d'un double si le type() est Double, QMetaType::Float, Bool, ByteArray, Int, LongLong, String, UInt ou ULongLong ; sinon retourne 0.0.

Si ok n'est pas nul, *ok est mis à true si la valeur a pu être convertie ; sinon, *ok est mis à false.

Voir aussi canConvert() et convert().

QEasingCurve QVariant::toEasingCurve () const

Retourne le QVariant sous forme d'un QEasingCurve si le type() est EasingCurve ; sinon retourne une QEasingCurve par défaut.

Cette fonction a été introduite dans Qt 4.7.

Voir aussi canConvert() et convert().

float QVariant::toFloat ( bool * ok = 0 ) const

Retourne le QVariant sous forme d'un float si le type() est Double, QMetaType::Float, Bool, ByteArray, Int, LongLong, String, UInt ou ULongLong; sinon retourne 0.0.

Si ok n'est pas nul, *ok est mis à true si la valeur a pu être convertie ; sinon, *ok est mis à false.

Cette fonction a été introduite dans Qt 4.6.

Voir aussi canConvert() et convert().

QHash<QString, QVariant> QVariant::toHash () const

Retourne le QVariant sous forme d'un QHash<QString, QVariant> si le type() est Hash ; sinon retourne une table de hachage vide.

Voir aussi canConvert() et convert().

int QVariant::toInt ( bool * ok = 0 ) const

Retourne le QVariant sous forme d'un int si le type() est Int, Bool, ByteArray, Char, Double, LongLong, String, UInt ou ULongLong ; sinon retourne 0.

Si ok est non nul, *ok est mis à true si la valeur a pu être convertie en int ; sinon, *ok est mis à false.

Attention : si la valeur est convertible en un LongLong mais qu'elle est trop grande pour être représentée dans un int, le dépassement arithmétique ne sera pas reflété dans ok. Un contournement simple est d'utiliser la fonction QString::toInt(). La correction de ce bogue a été reportée à Qt 5 afin d'éviter de casser le code existant.

Voir aussi canConvert() et convert().

QLine QVariant::toLine () const

Retourne le QVariant sous forme d'un QLine si le type() est Line ; sinon retourne un QLine invalide.

Voir aussi canConvert() et convert().

QLineF QVariant::toLineF () const

Retourne un QVariant sous forme d'un QLineF si le type() est LineF ; sinon retourne un QLineF invalide.

Voir aussi canConvert() et convert().

QList<QVariant> QVariant::toList () const

Retourne le QVariant sous forme d'un QVariantList si le type() est List ou StringList ; sinon retourne une liste vide.

Voir aussi canConvert() et convert().

QLocale QVariant::toLocale () const

Retourne le QVariant sous forme d'un QLocale si le type() est Locale ; sinon retourne un QLocale invalide.

Voir aussi canConvert() et convert().

qlonglong QVariant::toLongLong ( bool * ok = 0 ) const

Retourne le QVariant sous forme d'un long long int si le type() est LongLong, Bool, ByteArray, Char, Double, Int, String, UInt ou ULongLong ; sinon retourne 0.

Si ok est non nul: *ok est mis à true si la valeur a pu être convertie en int; sinon *ok est mis à false.

Voir aussi canConvert() et convert().

QMap<QString, QVariant> QVariant::toMap () const

Retourne le QVariant sous forme d'un QMap<QString, QVariant> si le type() est Map ; sinon retourne une table de hachage vide.

Voir aussi canConvert() et convert().

QPoint QVariant::toPoint () const

Retourne le QVariant sous forme d'un QPoint si le type() est Point ou PointF ; sinon retourne un QPoint nul.

Voir aussi canConvert() et convert().

QPointF QVariant::toPointF () const

Retourne le QVariant sous forme d'un QPointF si le type() est Point ou PointF ; sinon retourne un QPointF nul.

Voir aussi canConvert() et convert().

qreal QVariant::toReal ( bool * ok = 0 ) const

Retourne le QVariant sous forme d'un qreal si le type() est Double, QMetaType::Float, Bool, ByteArray, Int, LongLong, String, UInt ou ULongLong; sinon retourne 0.0.

Si ok n'est pas nul, *ok est mis à true si la valeur a pu être convertie ; sinon, *ok est mis à false.

Cette fonction a été introduite dans Qt 4.6.

Voir aussi canConvert() et convert().

QRect QVariant::toRect () const

Retourne le QVariant sous forme d'un QRect si le type() est Rect ; sinon retourne un QRect invalide.

Voir aussi canConvert() et convert().

QRectF QVariant::toRectF () const

Retourne le QVariant sous forme d'un QRectF si le type() est Rect ou RectF ; sinon retourne un QRectF invalide.

Voir aussi canConvert() et convert().

QRegExp QVariant::toRegExp () const

Retourne le QVariant sous forme d'un QRegExp si le type() est RegExp ; sinon retourne un QRegExp vide.

Cette fonction a été introduite dans Qt 4.1.

Voir aussi canConvert() et convert().

QSize QVariant::toSize () const

Retourne un QVariant sous forme d'un QSize si le type() Size ; sinon retourne un QSize invalide.

Voir aussi canConvert() et convert().

QSizeF QVariant::toSizeF () const

Retourne le QVariant sous forme d'un QSizeF si le type() est SizeF ; sinon retourne un QSizeF invalide.

Voir aussi canConvert() et convert().

QString QVariant::toString () const

Retourne le QVariant sous forme d'un QString si le type() est String, Bool, ByteArray, Char, Date, DateTime, Double, Int, LongLong, StringList, Time, UInt ou ULongLong ; sinon retourne une chaîne de caractères vide.

Voir aussi canConvert() et convert().

QStringList QVariant::toStringList () const

Retourne le QVariant sous forme d'un QStringList si le type() est StringList, String ou List d'un type qui peut être converti en QString ; sinon, retourne une liste vide.

Voir aussi canConvert() et convert().

QTime QVariant::toTime () const

Retourne le QVariant sous forme d'un QTime si le type() est Time, DateTime ou String ; sinon retourne un QTime invalide.

Si le type() est String, un QTime invalide sera retourné si la chaine de caractères ne peut pas être analysée dans le format de temps Qt::ISODate.

Voir aussi canConvert() et convert().

uint QVariant::toUInt ( bool * ok = 0 ) const

Retourne le QVariant sous forme d'un unsigned int si le type() est UInt, Bool, ByteArray, Char, Double, Int, LongLong, String ou ULongLong ; sinon retourne 0.

Si ok est non nul, *ok est mis à true si la valeur a pu être convertie en un unsigned int ; sinon, *ok est mis à false.

Attention : si la valeur est convertible en un ULongLong mais trop grande pour être représentée dans un unsigned int, le dépassement arithmétique ne sera pas reflété dans ok. Un contournement simple est d?utiliser la fonction QString::toUInt(). La correction de ce bogue a été repoussée à Qt 5 afin de ne pas casser le code existant.

Voir aussi canConvert() et convert().

qulonglong QVariant::toULongLong ( bool * ok = 0 ) const

Retourne le QVariant sous forme d'un unsigned long long int si le type() est ULongLong, Bool, ByteArray, Char, Double, Int, LongLong, String ou UInt ; sinon retourne 0.

Si ok est non nul, *ok est mis à true si la valeur n'a pas pu être convertie en un int ; sinon, *ok est mis à false.

Voir aussi canConvert() et convert().

QUrl QVariant::toUrl () const

Retourne le QVariant sous forme d'un QUrl si le type() est Url ; sinon retourne un QUrl invalide.

Voir aussi canConvert() et convert().

Type QVariant::type () const

Retourne le type de la valeur contenue dans le QVariant. Bien que cette fonction retourne un QVariant::Type, la valeur de retour devrait être interprétée comme un QMetaType::Type. En particulier, QVariant::UserType est retourné seulement si la valeur est égale ou supérieure à QMetaType::User.

Notez que les valeurs de retour comprises entre QVariant::Char et QVariant::RegExp ainsi qu'entre QVariant::Font et QVariant::Transform correspondent aux valeurs comprises entre QMetaType::QChar et QMetaType::QRegExp ainsi qu'entre QMetaType::QFont et QMetaType::QQuaternion.

Faites particulièrement attention lorsque vous travaillez avec des QVariant de char et QChar. Notez qu'il n'y a pas de constructeur de QVariant spécifique pour char mais il y en a un pour QChar. Pour les QVariant de type QChar, la fonction retourne QVariant::Char, qui est identique à QMetaType::QChar mais, pour les QVariant de type char, cette fonction retourne QMetaType::Char, qui est différent de QVariant::Char.

Notez aussi que les types void*, long, short, unsigned long, unsigned short, unsigned char, float, QObject* et QWidget* sont représentés dans QMetaType::Type mais pas dans QVariant::Type et qu'ils peuvent être renvoyés par cette fonction. Cependant, ils sont considérés comme des types définis par l'utilisateur lorsqu'ils sont testés avec QVariant::Type.

Pour tester si une instance de QVariant contient un type de donnée compatible avec le type qui vous intéresse, utilisez canConvert().

const char * QVariant::typeName () const

Retourne le nom du type contenu dans le QVariant. La chaîne de caractères décrit le type de donnée C++ utilisé pour stocker la donnée : par exemple,  »QFont »,  »QString » ou  »QVariantList ». Un QVariant invalide retourne 0.

const char * QVariant::typeToName ( Type typ ) [static]

Convertit la représentation dans l'énumération du type contenu, typ, en sa représentation en chaîne de caractères.

Retourne un pointeur nul si le type est QVariant::Invalid ou s'il n'existe pas.

int QVariant::userType () const

Retourne le type de la valeur contenue dans le QVariant. Pour les types non définis par l'utilisateur, cette fonction est identique à type().

Voir aussi type().

T QVariant::value () const

Retourne la valeur contenue convertie dans le type template T. Appelez la fonction canConvert() pour savoir si le type peut être converti. Si la valeur ne peut être convertie, une valeur construite par défaut sera retournée.

Si le type T n'est pas géré par QVariant, cette fonction se comporte exactement comme toString(), toInt(), etc.

Exemple:

 QVariant v;
 
 
 
 MyCustomStruct c;
 
 if (v.canConvert<MyCustomStruct>())
 
     c = v.value<MyCustomStruct>();
 
 
 
 v = 7;
 
 int i = v.value<int>();                        // identique à v.toInt()
 
 QString s = v.value<QString>();                // identique à v.toString(), s vaut "7"
 
 MyCustomStruct c2 = v.value<MyCustomStruct>(); // la conversion a échoué, c2 est vide

Attention : cette fonction n'est pas disponible avec MSVC 6. Utilisez la fonction qVariantValue() ou qvariant_cast() à la place si vous devez supporter ce compilateur.

Voir aussi setValeur(), fromValeur() et canConvert().

bool QVariant::operator!= ( const QVariant & v ) const

Compare ce QVariant avec v et retourne true s'ils sont différents ; sinon retourne false.

Attention : cette fonction ne gère pas les types personnalisés enregistrés avec qRegisterMetaType().

QVariant & QVariant::operator= ( const QVariant & variant )

Affecte la valeur variant au QVariant.

bool QVariant::operator== ( const QVariant & v ) const

Compare ce QVariant avec v et retourne true s'ils sont égaux ; sinon retourne false.

Dans le cas de types personnalisés, leurs opérateurs d'égalité ne sont pas appelés. À la place, on compare les adresses des valeurs.

En relation mais non membres de la classe

typedef QVariantHash

Synonyme de QHash<QString, QVariant>.

Ce typedef a été introduit dans Qt 4.5.

typedef QVariantList

Synonyme de QList<QVariant>.

typedef QVariantMap

Synonyme pour QMap<QString, QVariant>.

bool qVariantCanConvert ( const QVariant & value )

Retourne true si la valeur donnée value peut être convertie dans le type du template ; sinon retourne false.

Cette fonction est équivalente à QVariant::canConvert(value). Elle est fournie afin de contourner les limitations de MSVC 6, qui ne supporte pas les fonctions templates membres.

Voir aussi QVariant::canConvert().

QVariant qVariantFromValue ( const T & value )

Retourne un QVariant contenant une copie de la valeur donnée value de type T.

Cette fonction est équivalente à QVariant::fromValue(value). Elle est fournie afin de contourner les limitations de MSVC 6, qui ne supporte pas les fonctions templates membres.

Par exemple, un pointeur QObject peut être stocké dans un QVariant avec le code suivant :

 QObject *object = getObjectFromSomewhere();
 
 QVariant data = qVariantFromValue(object);

Voir aussi QVariant::fromValue().

void qVariantSetValue ( QVariant & variant, const T & value )

Définit le contenu du QVariant donné variant avec la copie de value du type T.

Cette fonction est équivalente à QVariant::setValue(value). Elle est fournie afin de contourner les limitations de MSVC 6, qui ne supporte pas les fonctions templates membres.

Voir aussi QVariant::setValue().

T qVariantValue ( const QVariant & value )

Retourne la valeur donnée value convertie en type T.

Cette fonction est équivalente à QVariant::value<T>(value). Elle est fournie afin de contourner les limitations de MSVC 6, qui ne supporte pas les fonctions templates membres.

Voir aussi QVariant::value() et qvariant_cast().

T qvariant_cast ( const QVariant & value )

Retourne la valeur donnée value convertie en type T.

Cette fonction est équivalente à qVariantValeur().

Voir aussi qVariantValeur() et QVariant::value().

bool operator!= ( const QVariant & v1, const QVariant & v2 )

Retourne false si v1 et v2 sont égaux ; sinon retourne true.

Attention : cette fonction ne supporte pas les types personnalisés enregistrés avec qRegisterMetaType().

bool operator== ( const QVariant & v1, const QVariant & v2 )

Retourne true si v1 et v2 sont égaux ; sinon, retourne false.

Attention : cette fonction ne supporte pas les types personnalisés enregistrés avec qRegisterMetaType().

Remerciements

Merci à Alexandre Laurent pour la traduction, ainsi qu'à Ilya Diallo et Claude Leloup pour la relecture !

Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt 4.7
Copyright © 2024 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur ? Un bug ? Une redirection cassée ? Ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !