欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

QVaraint类

发布时间:2025/7/14 51 豆豆
生活随笔 收集整理的这篇文章主要介绍了 QVaraint类 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
一、QVaraint简介QVaraint类作为一个包含了大多数Qt普通类型的的联合体类。因为c++联合体没有构造函数和析构函数的,许多继承的Qt类不能够在联合体当中使用。(联合体当中的变量共用一个存储区),没有了联合变量,我们在物体属性以及数据库的工作等方面受到很多的困扰。一个QVariant对象一段时间只保留一种类型的值。我们可以使用 bool QVariant::canConvert(int targetTypeId) const来判断该类型是否可以转换。二、使用
  • QDataStream out(...);
  • QVariant v(123); // The variant now contains an int
  • int x = v.toInt(); // 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;



    来自为知笔记(Wiz)

    转载于:https://www.cnblogs.com/chengkeke/p/5417430.html

    总结

    以上是生活随笔为你收集整理的QVaraint类的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。