添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
冷冷的电影票  ·  Caused by: ...·  9 月前    · 
绅士的鸡蛋面  ·  Hadoop之——Permission ...·  2 年前    · 
勤奋的洋葱  ·  org.apache.ibatis.ognl ...·  2 年前    · 

C++没有元对象,无法实现json和对象的映射(比如GSon),或者数据库的对象关系映射(比如GreenDao)。C++可以获取变量的字符串(#define name2str(name) (#name))和变量的类型(#define getType(value) typeid(value).name()),但是并没有办法遍历类的成员属性。解决办法是给类添加一个map,在构造函数中实现成员变量名称和成员变量类型的map,但这比较复杂。QT有QVariant,可以很好的实现映射。

QVariant与对象

class User {
    Qstring name;
    int age;
User user;
user.name = "zhang";
user.age = 100;
QVariantMap bob;
bob["name"] = user.name;
bob["age"] = user.age;

QVariant与json

1. 转json字符串
// QVariantMap键值对转json键值对
QVariantMap bob;
bob.insert("name", "Bob");
bob.insert("age", 123);
QVariantMap alice;
alice.insert("Name", "Alice");
alice.insert("Phonenumber", 321);
// QVariantList列表转json数组
QVariantList people;
people << bob << alice;
// 获取 QJsonDocument 对象
QJsonDocument jsonDocument = QJsonDocument::fromVariant(people); 
// 生成 JSON 文档
jsonDocument.toJson();
2. 字符串转map
QVariantMap result = jsonDocument.toVariant().toMap();
 QMapIterator<QString, int> i(result);
    while (i.hasNext()) {
        i.next();
        cout << i.key() << ": " << i.value() << endl;

QVariant与数据表

1. 定义一个类Bean,只有成员属性(成员属性映射数据表中的字段)
2. 把类的成员写入QVariantMap,再把QVariantMap作为参数,传到数据操作层
3. 数据操作层遍历QVariantMap获取查询条件或插入记录
4. 把多个查询结果封装为QList返回
				
1.编写继承自widget的新类,这里我们定义为colorWidget; 2.在colorWidget中添加私有变量QVector<QRect> m_rects,用于存放进度条的不同区间(矩形),这里为了省事,利用接口函数定义数量, 然后对widget空间作均匀划分; 3.重写paintEvent函数,在其中循环绘制m_rects所有矩形各自空间的颜色或其他...
       在Qt开发中,我们几乎都会使用到信号与槽的机制,在某些时候我们会碰到这样的事情,那就是很多个相同的信号执行(关联)同一个槽函数,如果我们一个一个的连接则会显得代码特别累赘,这时候我们就可以使用Qt的信号映射器,它的功能就是将很多个相同的信号(组件要为相同类型)’捆绑‘起来然后和一个槽函数进行关联,它可以自动识别信号发送者。 下面是我的示例程序,我使用了6个按钮,当单击一个按钮时它会调用一个槽函数,将按钮上的内容打印出来。实现
在Windows中,在同一台机器上数据共享的最底层机制就是内存映射文件。在我们处理较大文件的时候,通常需要使用文件映射,即将物理地址中的文件数据映射到进程的虚拟地址中。通过文件映射之后,可以像操作内存一样去直接操作文件,而不需要再调用文件读写方法了。内存映射文件可以用于这几个不同的目的: 系统使用内存映射文件,以便加载和执行. exe和DLL文件。这可以大大节省页文件空间和应用程序...
在使用中,我们常要将一些数据保存为文件的形式,完后在加载的时候,进行读取。常用的有UI界面的一些操作记录等配置文件,qt中,除了使用QSetting 外,我们还可以可以使用序列化的形式,废话不多说,直接从代码里面理解: 头文件: #include <QtCore/QCoreApplication> #include "qmap.h" #include <iostream&g...