QVariantクラス
3027 ワード
詳細:
QVariantクラスは最も一般的なQtデータ型の結合である.
c++はコンストラクタと析出関数のない連合体を禁止するため,多くの継承Qtクラスは連合体では使用できない.(連合体の中の変数は1つの記憶領域を共用している),連係変数がなくなったため,物体属性やデータベースの作業など多くの面で悩まされている.
QVariantオブジェクトは、1つの時間に1つのタイプの値しか保持されません.canConvertを使用して、現在のタイプを変換できるかどうかを問い合わせることができます.変換タイプは一般的にtoT()で命名されます.
QVariantの使い方を説明するexampleを抜粋しました.
QVariantクラスは最も一般的なQtデータ型の結合である.
c++はコンストラクタと析出関数のない連合体を禁止するため,多くの継承Qtクラスは連合体では使用できない.(連合体の中の変数は1つの記憶領域を共用している),連係変数がなくなったため,物体属性やデータベースの作業など多くの面で悩まされている.
QVariantオブジェクトは、1つの時間に1つのタイプの値しか保持されません.canConvertを使用して、現在のタイプを変換できるかどうかを問い合わせることができます.変換タイプは一般的にtoT()で命名されます.
QVariantの使い方を説明するexampleを抜粋しました.
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());
QList<QVariant> QMap<QString ,QVariant>. 。
。QVariant null , , , QVariant 。
QVariant x, y(QString()), z(QString(""));
x.convert(QVariant::Int);
// x.isNull() == true
// y.isNull() == true, z.isNull() == false
QVariant QtCore , QtGui , QColor,QImage,he QPixmap 。 ,
toColor() 。 , QVariant::value() qVariantValue() 。
QVariant variant;
...
QColor color = variant.value<QColor>();
( QColor QVariant) 。 GUI 。
QColor color=palette().background().color();
QVariant variant=color;