com.trolltech.qt
Class QVariant

java.lang.Object
  extended by com.trolltech.qt.QSignalEmitter
      extended by com.trolltech.qt.QtJambiObject
          extended by com.trolltech.qt.QVariant
All Implemented Interfaces:
QtJambiInterface

public class QVariant
extends QtJambiObject

The QVariant class acts like a union for the most common Qt data types.

Because C++ forbids unions from including types that have non-default constructors or destructors, most interesting Qt classes cannot be used in unions. Without QVariant, this would be a problem for QObject::property() and for database work, etc.

A QVariant object holds a single value of a single type() at a time. (Some type()s are multi-valued, for example a string list.) You can find out what type, T, the variant holds, convert it to a different type using convert(), get its value using one of the toT() functions (e.g., toSize()) and check whether the type can be converted to a particular type using canConvert().

The methods named toT() (e.g., toInt(), toString()) are const. If you ask for the stored type, they return a copy of the stored object. If you ask for a type that can be generated from the stored type, toT() copies and converts and leaves the object itself unchanged. If you ask for a type that cannot be generated from the stored type, the result depends on the type; see the function documentation for details.

Here is some example code to demonstrate the use of QVariant:

    QDataStream out(...);
    QVariant v(123);                // The variant now contains an int
    int x = v.toInt();              // x = 123
    out << v;                       // Writes a type tag and an int to out
    v = QVariant("hello");          // The variant now contains a QByteArray
    v = QVariant(tr("hello"));      // The variant now contains a QString
    int y = v.toInt();              // y = 0 since v cannot be converted to an int
    QString s = v.toString();       // s = tr("hello")  (see QObject::tr())
    out <<v;                  // Writes a type tag and a QString to out
    ...
    QDataStream in(...);            // (opening the previously written stream)
    in >> v;                  // Reads an Int variant
    int z = v.toInt();              // z = 123
    qDebug("Type is %s",            // prints "Type is int"
            v.typeName());
    v = v.toInt() + 100;            // The variant now hold the value 223
    v = QVariant(QStringList());

You can even store QList and QMap values in a variant, so you can easily construct arbitrarily complex data structures of arbitrary types. This is very powerful and versatile, but may prove less memory and speed efficient than storing specific types in standard data structures.

QVariant also supports the notion of null values, where you have a defined type with no value set.

    QVariant x, y(QString()), z(QString(""));
    x.convert(QVariant::Int);
    // x.isNull() == true
    // y.isNull() == true, z.isNull() == false
    // y.isEmpty() == true, z.isEmpty() == true
QVariant can be extended to support other types than those mentioned in the \l Type enum. See the \l QMetaType documentation for details.

A Note on GUI Types

Because QVariant is part of the QtCore library, it cannot provide conversion functions to data types defined in QtGui, such as QColor, QImage, and QPixmap. In other words, there is no \c toColor() function. Instead, you can use the QVariant::value() or the qVariantValue() template function. For example:

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

The inverse conversion (e.g., from QColor to QVariant) is automatic for all data types supported by QVariant, including GUI-related types:

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

Because of Java's introspection, you should only use the QVariant class when dealing with Qt Jambi classes that requires them.


Nested Class Summary
 
Nested classes/interfaces inherited from class com.trolltech.qt.QSignalEmitter
QSignalEmitter.Signal0, QSignalEmitter.Signal1, QSignalEmitter.Signal2, QSignalEmitter.Signal3, QSignalEmitter.Signal4, QSignalEmitter.Signal5, QSignalEmitter.Signal6, QSignalEmitter.Signal7, QSignalEmitter.Signal8, QSignalEmitter.Signal9
 
Field Summary
static int BitArray
           
static int Bitmap
           
static int Boolean
           
static int Brush
           
static int ByteArray
           
static int Char
           
static int Color
           
static int Cursor
           
static int Date
           
static int DateTime
           
static int Double
           
static int Font
           
static int Icon
           
static int Image
           
static int Int
           
static int Invalid
           
static int KeySequence
           
static int Line
           
static int LineF
           
static int Locale
           
static int Long
           
static int Palette
           
static int Pen
           
static int Pixmap
           
static int Point
           
static int PointF
           
static int Polygon
           
static int Rect
           
static int RectF
           
static int RegExp
           
static int Region
           
static int Size
           
static int SizeF
           
static int SizePolicy
           
static int String
           
static int StringList
           
static int TextFormat
           
static int TextLength
           
static int Time
           
static int UserType
           
 
Constructor Summary
QVariant()
           
 
Method Summary
static boolean canConvertToBitArray(java.lang.Object obj)
           
static boolean canConvertToBoolean(java.lang.Object obj)
           
static boolean canConvertToByteArray(java.lang.Object obj)
           
static boolean canConvertToChar(java.lang.Object obj)
           
static boolean canConvertToDate(java.lang.Object obj)
           
static boolean canConvertToDateTime(java.lang.Object obj)
           
static boolean canConvertToDouble(java.lang.Object obj)
           
static boolean canConvertToInt(java.lang.Object obj)
           
static boolean canConvertToLine(java.lang.Object obj)
           
static boolean canConvertToLineF(java.lang.Object obj)
           
static boolean canConvertToList(java.lang.Object obj)
           
static boolean canConvertToLocale(java.lang.Object obj)
           
static boolean canConvertToLong(java.lang.Object obj)
           
static boolean canConvertToMap(java.lang.Object obj)
           
static boolean canConvertToPoint(java.lang.Object obj)
           
static boolean canConvertToPointF(java.lang.Object obj)
           
static boolean canConvertToRect(java.lang.Object obj)
           
static boolean canConvertToRectF(java.lang.Object obj)
           
static boolean canConvertToRegExp(java.lang.Object obj)
           
static boolean canConvertToSize(java.lang.Object obj)
           
static boolean canConvertToSizeF(java.lang.Object obj)
           
static boolean canConvertToString(java.lang.Object obj)
           
static boolean canConvertToTime(java.lang.Object obj)
           
static QBitArray toBitArray(java.lang.Object obj)
           
static boolean toBoolean(java.lang.Object obj)
           
static QByteArray toByteArray(java.lang.Object obj)
           
static char toChar(java.lang.Object obj)
           
static QDate toDate(java.lang.Object obj)
           
static QDateTime toDateTime(java.lang.Object obj)
           
static double toDouble(java.lang.Object obj)
           
static double toDouble(java.lang.Object obj, java.lang.Boolean[] ok)
           
static int toInt(java.lang.Object obj)
           
static int toInt(java.lang.Object obj, java.lang.Boolean[] ok)
           
static QLine toLine(java.lang.Object obj)
           
static QLineF toLineF(java.lang.Object obj)
           
static java.util.List toList(java.lang.Object obj)
           
static QLocale toLocale(java.lang.Object obj)
           
static long toLong(java.lang.Object obj)
           
static long toLong(java.lang.Object obj, java.lang.Boolean[] ok)
           
static java.util.Map toMap(java.lang.Object obj)
           
static QPoint toPoint(java.lang.Object obj)
           
static QPointF toPointF(java.lang.Object obj)
           
static QRect toRect(java.lang.Object obj)
           
static QRectF toRectF(java.lang.Object obj)
           
static QRegExp toRegExp(java.lang.Object obj)
           
static QSize toSize(java.lang.Object obj)
           
static QSizeF toSizeF(java.lang.Object obj)
           
static java.lang.String toString(java.lang.Object obj)
          
static QTime toTime(java.lang.Object obj)
           
 
Methods inherited from class com.trolltech.qt.QtJambiObject
dispose, disposed, equals, finalize, reassignNativeResources, tr, tr, tr
 
Methods inherited from class com.trolltech.qt.QSignalEmitter
blockSignals, disconnect, disconnect, signalsBlocked, signalSender, thread
 
Methods inherited from class java.lang.Object
clone, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.trolltech.qt.QtJambiInterface
disableGarbageCollection, nativeId, nativePointer, reenableGarbageCollection, setJavaOwnership
 

Field Detail

Invalid

public static final int Invalid
See Also:
Constant Field Values

Double

public static final int Double
See Also:
Constant Field Values

String

public static final int String
See Also:
Constant Field Values

Boolean

public static final int Boolean
See Also:
Constant Field Values

ByteArray

public static final int ByteArray
See Also:
Constant Field Values

BitArray

public static final int BitArray
See Also:
Constant Field Values

Char

public static final int Char
See Also:
Constant Field Values

Date

public static final int Date
See Also:
Constant Field Values

DateTime

public static final int DateTime
See Also:
Constant Field Values

Int

public static final int Int
See Also:
Constant Field Values

Line

public static final int Line
See Also:
Constant Field Values

LineF

public static final int LineF
See Also:
Constant Field Values

Locale

public static final int Locale
See Also:
Constant Field Values

Long

public static final int Long
See Also:
Constant Field Values

Point

public static final int Point
See Also:
Constant Field Values

PointF

public static final int PointF
See Also:
Constant Field Values

Rect

public static final int Rect
See Also:
Constant Field Values

RectF

public static final int RectF
See Also:
Constant Field Values

RegExp

public static final int RegExp
See Also:
Constant Field Values

Size

public static final int Size
See Also:
Constant Field Values

SizeF

public static final int SizeF
See Also:
Constant Field Values

StringList

public static final int StringList
See Also:
Constant Field Values

Time

public static final int Time
See Also:
Constant Field Values

Font

public static final int Font
See Also:
Constant Field Values

Pixmap

public static final int Pixmap
See Also:
Constant Field Values

Brush

public static final int Brush
See Also:
Constant Field Values

Color

public static final int Color
See Also:
Constant Field Values

Palette

public static final int Palette
See Also:
Constant Field Values

Icon

public static final int Icon
See Also:
Constant Field Values

Image

public static final int Image
See Also:
Constant Field Values

Polygon

public static final int Polygon
See Also:
Constant Field Values

Region

public static final int Region
See Also:
Constant Field Values

Bitmap

public static final int Bitmap
See Also:
Constant Field Values

Cursor

public static final int Cursor
See Also:
Constant Field Values

SizePolicy

public static final int SizePolicy
See Also:
Constant Field Values

KeySequence

public static final int KeySequence
See Also:
Constant Field Values

Pen

public static final int Pen
See Also:
Constant Field Values

TextLength

public static final int TextLength
See Also:
Constant Field Values

TextFormat

public static final int TextFormat
See Also:
Constant Field Values

UserType

public static final int UserType
See Also:
Constant Field Values
Constructor Detail

QVariant

public QVariant()
Method Detail

canConvertToDouble

public static boolean canConvertToDouble(java.lang.Object obj)

toDouble

public static double toDouble(java.lang.Object obj)

toDouble

public static double toDouble(java.lang.Object obj,
                              java.lang.Boolean[] ok)

canConvertToString

public static boolean canConvertToString(java.lang.Object obj)

toString

public static java.lang.String toString(java.lang.Object obj)


canConvertToBoolean

public static boolean canConvertToBoolean(java.lang.Object obj)

toBoolean

public static boolean toBoolean(java.lang.Object obj)

canConvertToByteArray

public static boolean canConvertToByteArray(java.lang.Object obj)

toByteArray

public static QByteArray toByteArray(java.lang.Object obj)

canConvertToBitArray

public static boolean canConvertToBitArray(java.lang.Object obj)

toBitArray

public static QBitArray toBitArray(java.lang.Object obj)

canConvertToChar

public static boolean canConvertToChar(java.lang.Object obj)

toChar

public static char toChar(java.lang.Object obj)

canConvertToDate

public static boolean canConvertToDate(java.lang.Object obj)

toDate

public static QDate toDate(java.lang.Object obj)

canConvertToDateTime

public static boolean canConvertToDateTime(java.lang.Object obj)

toDateTime

public static QDateTime toDateTime(java.lang.Object obj)

canConvertToInt

public static boolean canConvertToInt(java.lang.Object obj)

toInt

public static int toInt(java.lang.Object obj)

toInt

public static int toInt(java.lang.Object obj,
                        java.lang.Boolean[] ok)

canConvertToLine

public static boolean canConvertToLine(java.lang.Object obj)

toLine

public static QLine toLine(java.lang.Object obj)

canConvertToLineF

public static boolean canConvertToLineF(java.lang.Object obj)

toLineF

public static QLineF toLineF(java.lang.Object obj)

canConvertToLocale

public static boolean canConvertToLocale(java.lang.Object obj)

toLocale

public static QLocale toLocale(java.lang.Object obj)

canConvertToPoint

public static boolean canConvertToPoint(java.lang.Object obj)

toPoint

public static QPoint toPoint(java.lang.Object obj)

canConvertToPointF

public static boolean canConvertToPointF(java.lang.Object obj)

toPointF

public static QPointF toPointF(java.lang.Object obj)

canConvertToRect

public static boolean canConvertToRect(java.lang.Object obj)

toRect

public static QRect toRect(java.lang.Object obj)

canConvertToRectF

public static boolean canConvertToRectF(java.lang.Object obj)

toRectF

public static QRectF toRectF(java.lang.Object obj)

canConvertToRegExp

public static boolean canConvertToRegExp(java.lang.Object obj)

toRegExp

public static QRegExp toRegExp(java.lang.Object obj)

canConvertToSize

public static boolean canConvertToSize(java.lang.Object obj)

toSize

public static QSize toSize(java.lang.Object obj)

canConvertToSizeF

public static boolean canConvertToSizeF(java.lang.Object obj)

toSizeF

public static QSizeF toSizeF(java.lang.Object obj)

canConvertToTime

public static boolean canConvertToTime(java.lang.Object obj)

toTime

public static QTime toTime(java.lang.Object obj)

canConvertToLong

public static boolean canConvertToLong(java.lang.Object obj)

toLong

public static long toLong(java.lang.Object obj)

toLong

public static long toLong(java.lang.Object obj,
                          java.lang.Boolean[] ok)

canConvertToList

public static boolean canConvertToList(java.lang.Object obj)

toList

public static java.util.List toList(java.lang.Object obj)

canConvertToMap

public static boolean canConvertToMap(java.lang.Object obj)

toMap

public static java.util.Map toMap(java.lang.Object obj)