当前位置: 首页 > wzjs >正文

网站建设时间规划竞价广告是什么意思

网站建设时间规划,竞价广告是什么意思,网站什么做才会更吸引客户,网站不备案会怎样文章目录 一、QVariant介绍二、QVariant 的基本使用三、QVariant 作为容器(QVariantList / QVariantMap)四、QVariant中常用的静态函数五、 QVariant存储和传输自定义类型六、QVariant的典型应用场景 一、QVariant介绍 QVariant 是 Qt 提供的一个通用数…

文章目录

    • 一、QVariant介绍
    • 二、QVariant 的基本使用
    • 三、QVariant 作为容器(QVariantList / QVariantMap)
    • 四、QVariant中常用的静态函数
    • 五、 QVariant存储和传输自定义类型
    • 六、QVariant的典型应用场景

一、QVariant介绍

QVariant 是 Qt 提供的一个通用数据类型,它可以存储多种类型的数据,包括基本类型(如 int、double、QString)、复杂类型(如 QByteArray、QDateTime)、以及自定义类型。

二、QVariant 的基本使用

QVariant 的创建
可以直接通过构造函数存储不同类型的数据:

#include <QApplication>
#include <QVariant>
#include <QString>
#include <QDebug>int main(int argc, char *argv[])
{QApplication a(argc, argv);QVariant v1(42);               // 存储 intQVariant v2(3.14);             // 存储 doubleQVariant v3(QString("Hello")); // 存储 QStringQVariant v4(QByteArray("data")); // 存储 QByteArrayqDebug() << v1.toInt();    // 42qDebug() << v2.toDouble(); // 3.14qDebug() << v3.toString(); // "Hello"qDebug() << v4.toByteArray(); // "data"return a.exec();
}

输出结果:
在这里插入图片描述
QMap与QVariant的结合使用:

include <QApplication>
#include <QVariant>
#include <QDebug>
#include <QMap>
#include <QString>
#include <QColor>int main(int argc, char *argv[])
{QApplication a(argc, argv);QMap<QString, QVariant> qMap;qMap["int"] = 200; // 整型qMap["double"] = 99.99; // 浮点型qMap["string"] = "Good"; // 字符串qMap["color"] = QColor(255, 255, 0);// 输出:转换函数来处理qDebug() << qMap["int"] << "," <<  qMap["int"].toInt();qDebug() << qMap["double"] << "," << qMap["double"].toDouble();qDebug() << qMap["string"] << "," << qMap["string"].toString();qDebug() << qMap["color"] << "," << qMap["color"].value<QColor>();return a.exec();
}

输出结果:
在这里插入图片描述
QStringList与QVariant的结合使用:

#include <QApplication>
#include <QVariant>
#include <QString>
#include <QDebug>int main(int argc, char *argv[])
{QApplication a(argc, argv);// 创建一个字符串列表:QStringListQStringList qSList;qSList << "A" << "B" << "C" << "D" << "E" << "F";QVariant qVlist(qSList); // 将列表存储在一个QVariant变量中if (qVlist.type() == QVariant::StringList) {for (const auto &value : qVlist.toStringList()) {qDebug() << value; //输出列表数据信息}}return a.exec();
}

输出结果:
在这里插入图片描述

检查类型
使用 typeName() 或 typeId() 方法来检查 QVariant 存储的数据类型:

QVariant v(123.456);
qDebug() << "Type:" << v.typeName(); // "double"// 判断是否可以转换为特定类型
if (v.canConvert<double>()) {qDebug() << "Can convert to double";
}

QVariant 类型转换
QVariant 提供 toType() 方法来转换数据:

QVariant v("123");int intValue = v.toInt();       // 123
double doubleValue = v.toDouble(); // 123.0
QString strValue = v.toString(); // "123"

三、QVariant 作为容器(QVariantList / QVariantMap)

QVariantList 相当于 QList,可存储不同类型的数据:

QVariantList list;
list << 10 << 3.14 << "Qt" << QVariant(QDateTime::currentDateTime());for (const QVariant &item : list) {qDebug() << item;
}

QVariantMap 类似于 QMap<QString, QVariant>,可以用作字典:

QVariantMap map;
map["name"] = "Alice";
map["age"] = 25;
map["height"] = 1.68;qDebug() << map["name"].toString();   // "Alice"
qDebug() << map["age"].toInt();       // 25
qDebug() << map["height"].toDouble(); // 1.68

四、QVariant中常用的静态函数

static QVariant fromStdVariant(const std::variant<Types...> &value);

该方法用于将 std::variant<Types…> 转换为 QVariant,使其可以与 Qt 类型系统兼容。可以存储多种类型,并在 Qt 组件(如 QSettings、QAbstractItemModel)中使用。

#include <QVariant>
#include <QDebug>
#include <variant>int main() {std::variant<int, double, QString> myVariant = 42;QVariant qvar = QVariant::fromStdVariant(myVariant);qDebug() << "Stored QVariant:" << qvar; // 42myVariant = 3.14;qvar = QVariant::fromStdVariant(myVariant);qDebug() << "Stored QVariant:" << qvar.toDouble(); // 3.14myVariant = QString("Hello Qt");qvar = QVariant::fromStdVariant(myVariant);qDebug() << "Stored QVariant:" << qvar.toString(); // "Hello Qt"
}

输出结果:
在这里插入图片描述
注意:

  • std::variant 只能存储其中一个类型的值,而 QVariant 可灵活存储任意支持的类型。
  • fromStdVariant() 适用于 C++17 及以上的标准。
template<typename T>
static QVariant fromValue(const T &value);

注意:

  • 该方法用于将任意类型的值包装到 QVariant 中。
  • 适用于 Qt 内置类型以及用户自定义类型(需 Q_DECLARE_METATYPE)。
    通过 QVariant::value() 获取存储的值。
#include <QVariant>
#include <QDebug>int main() {QVariant qv1 = QVariant::fromValue(123);QVariant qv2 = QVariant::fromValue(3.14);QVariant qv3 = QVariant::fromValue(QString("Qt"));qDebug() << qv1.toInt();     // 123qDebug() << qv2.toDouble();  // 3.14qDebug() << qv3.toString();  // "Qt"
}
static QVariant::Type nameToType(const char *name);

注意:

  • 该方法用于将 类型名称(字符串)转换为 QVariant::Type 枚举值;仅支持 QVariant 内置类型,不支持自定义类型。
  • nameToType() 主要用于动态类型转换,如 JSON 解析或配置解析。
#include <QVariant>
#include <QDebug>int main() {QVariant::Type type1 = QVariant::nameToType("int");QVariant::Type type2 = QVariant::nameToType("QString");QVariant::Type type3 = QVariant::nameToType("double");qDebug() << type1; // QVariant::IntqDebug() << type2; // QVariant::StringqDebug() << type3; // QVariant::Double
}

输出结果:
在这里插入图片描述

static const char *typeToName(int typeId);

注意:

  • 该方法用于 将 QVariant::Type 枚举值转换回字符串名称。
  • typeToName() 可用于调试 QVariant 存储的类型,适用于反射机制或 QMetaType 相关操作。
    也可用于 QMetaType 类型 ID 获取类型名称。
#include <QApplication>
#include <QVariant>
#include <QDebug>int main(int argc, char *argv[])
{QApplication a(argc, argv);qDebug() << QVariant::typeToName(QVariant::Int);       // "int"qDebug() << QVariant::typeToName(QVariant::String);    // "QString"qDebug() << QVariant::typeToName(QVariant::Double);    // "double"return a.exec();
}

输出结果:
在这里插入图片描述
结合 QMetaType使用:

#include <QApplication>
#include <QVariant>
#include <QDebug>
#include <QMetaType>int main(int argc, char *argv[])
{QApplication a(argc, argv);int typeId = QMetaType::QString;qDebug() << "Type ID:" << typeId;qDebug() << "Type Name:" << QVariant::typeToName(typeId); // "QString"return a.exec();
}

输出结果:
在这里插入图片描述

五、 QVariant存储和传输自定义类型

注册自定义类型
如果需要在 QVariant 中存储自定义类型,需要使用 Q_DECLARE_METATYPE 并注册:

#include <QApplication>
#include <QVariant>
#include <QDebug>struct Person {QString name;int age;
};
Q_DECLARE_METATYPE(Person) // 声明元类型int main(int argc, char *argv[])
{QApplication a(argc, argv);qRegisterMetaType<Person>("Person"); // 注册自定义类型Person p = {"John Doe", 30};QVariant v = QVariant::fromValue(p);// 判断是否可以转换操作if (v.canConvert<Person>()) {Person p2 = v.value<Person>(); // 取出数据qDebug() << p2.name << p2.age; // 输出: "John Doe 30"Person p3 = qvariant_cast<Person>(v);qDebug() << p3.name << p3.age; // 输出: "John Doe 30"}return a.exec();
}

输出结果:
在这里插入图片描述

六、QVariant的典型应用场景

QSettings配置存储

QSettings settings("MyApp", "Config");
settings.setValue("username", "admin");
settings.setValue("volume", 50);QString username = settings.value("username").toString();
int volume = settings.value("volume").toInt();

QAbstractItemModel数据存储

QVariant data = model->data(index, Qt::DisplayRole);
if (data.isValid()) {qDebug() << data.toString();
}

设置动态属性

QWidget widget;
widget.setProperty("customValue", 123);
int value = widget.property("customValue").toInt();
http://www.dtcms.com/wzjs/43133.html

相关文章:

  • 专门做品牌折扣的网站青岛seo计费
  • 网站建设的技术指标河源今日头条新闻最新
  • 网站开发需要提供哪些资料快速建站哪个平台好
  • 清河网站制作网络营销的方式有几种
  • 改图网网站谁做的如何分步骤开展seo工作
  • 青岛做网站的大公司有站长工具网站备案查询
  • 广州软件制作公司谷歌seo技巧
  • 网上做外贸都有哪些网站百度搜索app免费下载
  • 广东网站建设包括什么软件上海网络推广招聘
  • 公司做网站 手机 电脑网站推广排名教程
  • 韶关市住房和城乡建设部网站百度公司在哪里
  • 网站企业备案和个人备案的区别吗推广自己的网站
  • 做网站那个平台好百度平台营销
  • 深圳营销型网站制作公司营销的概念是什么
  • 做营销网站多少钱百度电话怎么转人工
  • 网络推广公司怎么找客户怎样优化标题关键词
  • 公司网站建设厂家怎么做一个自己的网站
  • 上海网站建设模板外贸公司一般怎么找客户
  • 网站建设登录结构图百度seo可能消失
  • h5网站开发语言选择商城全网推广运营公司
  • 高端网站建设询问磐石网络百度seo搜索
  • 建立门户网站的步骤软文营销网站
  • wordpress4.9怎么安装外贸谷歌seo
  • 网站联盟是什么网站备案查询官网
  • 分析网站优缺点百度广告联盟点击一次多少钱
  • 平台网站很难做快速排名工具免费
  • 企业网站seo名称整合营销传播名词解释
  • 网站推广托管公司矿产网站建设价格
  • 租赁服务器做电影网站google推广技巧
  • 小说网站编辑怎么做友链交易平台源码