#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QMap>
#include <QVariant>
#include <QMetaType>
namespace Ui {
class Widget;
}
typedef QMap<QString,QVariant> DataMap;
typedef QMap<QString,QVariant>::iterator DIterator;
class Point{
public:
Point(){
_x = 0;
_y = 0;
}
Point(int x,int y){
_x = x;
_y = y;
}
int _x;
int _y;
};
struct Obj{
QString name;
QString id;
int age;
};
Q_DECLARE_METATYPE(Obj);
Q_DECLARE_METATYPE(DataMap);
Q_DECLARE_METATYPE(Point);
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_A_clicked();
void on_B_clicked();
void on_C_clicked();
void on_D_clicked();
void on_E_clicked();
void on_F_clicked();
void on_G_clicked();
void on_H_clicked();
void on_I_clicked();
private:
Ui::Widget *ui;
DataMap m_map;
};
#endif // WIDGET_H
<pre name="code" class="cpp">#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_A_clicked()
{
m_map.insert("AKey","AValue");
}
void Widget::on_B_clicked()
{
m_map.insert("BKey","BValue");
}
void Widget::on_C_clicked()
{
m_map.insert("CKey","CValue");
}
void Widget::on_D_clicked()
{
for(DIterator begin = m_map.begin();begin != m_map.end();begin++){
QString key = begin.key();
if (key == "EKey"){
QVariant val = begin.value();
struct Obj ob = val.value<Obj>();
qDebug()<<"Ekey::"<<ob.name<<endl;
}else if (key == "FKey"){
QVariant val = begin.value();
DataMap mp = val.value<DataMap>();
qDebug()<<"Fkey::"<<mp<<endl;
}else if(key == "GKey"){
QVariant val = begin.value();
Point pt = val.value<Point>();
qDebug()<<"Gkey::"<<pt._x<<endl;
}
else{
QVariant val = begin.value();
qDebug()<<"key:"<<begin.key()<<"value::"<<val<<endl;
}
}
}
void Widget::on_E_clicked()
{
struct Obj ob;
ob.age = 10;
ob.name = "EValue";
ob.id = "110";
QVariant val;
val.setValue(ob);
m_map.insert("EKey",val);
}
void Widget::on_F_clicked()
{
DataMap fMap;
fMap.insert("1","11");
fMap.insert("2","22");
fMap.insert("3","33");
QVariant val;
val.setValue(fMap);
m_map.insert("FKey",val);
}
void Widget::on_G_clicked()
{
Point pt(44,44);
//pt._x = 4;
//pt._y = 8;
QVariant val;
val.setValue(pt);
m_map.insert("GKey",val);
}
void Widget::on_H_clicked()
{
}
void Widget::on_I_clicked()
{
}