Json格式
json对象: {"key":"value", "key2", "value2"}
{
"KSF": "陈丽",
"Kevin": "Apple",
"Leilei": "loveHanMeiMei",
"Licy": "red",
"Lucy": "HelloWorld",
"Tom": "123456"
}
json数组格式: ["value", "value2", "value3"]
[
"一汽大众",
"二汽神龙",
"上海大众"
]
解码流程图
一,读文件操作
#include <QFileDialog>
#include <QFileDevice>
#include <QFile>
#include <QMessageBox>
//格式转换
#include <QTextCodec>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//打开文件路径
QString filepath = QFileDialog::getOpenFileName(this, "D:/");
QFile file(filepath);
//以读写文件
bool bs = file.open(QIODevice::ReadWrite);
if (!bs)
{
QMessageBox::information(this, "file", "Not file");
return;
}
//读取文本
QByteArray array = file.readAll();
#if 0
// 判断是否读到结束
while (!file.atEnd())
{
QByteArray str = file.readLine();
array += str;
}
#endif
QMessageBox::information(this, "file", array);
#if 0
//rgb格式转换utf-8
QTextCodec* codec = QTextCodec::codecForName("rgb");
QString str = codec->toUnicode(array);
#endif
// 关闭文件
file.close();
}
二,文件操作
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QFile>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include <QDebug>
#include <QMessageBox>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//打开文件路径
QString filepath = QFileDialog::getOpenFileName(this, "D:/");
QFile file(filepath);
bool bs = file.open(QIODevice::ReadWrite);
QByteArray array = file.readAll();
//QBAray
QJsonDocument doc = QJsonDocument::fromJson(array);
//判断是否json数组还是json对象
if (doc.isArray())
{
//数组的处理
}else if (doc.isObject())
{
// jsonObject的处理
QJsonObject obj = doc.object();
QStringList keys = obj.keys();
int i;
for (i = 0; i < keys.size(); i++)
{
QJsonValue value = obj.value(keys.at(i));
// jsonValue 是什么格式
if (value.isString())
{
QString str = value.toString();
QMessageBox::information(this, "value", str);
}
if (value.isDouble())
{
double db = value.toDouble();
qDebug() << db;
}
}
}
// 关闭文件
file.close();
}
MainWindow::~MainWindow()
{
delete ui;
}
三,json写的操作
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QFileDialog>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QJsonObject obj;
obj.insert("王蓉", "11111111111111");
obj.insert("杨艳", "222222222222222");
obj.insert("王盼盼", "33333333333333333");
obj.insert("陈丽", "444444444444444444");
QJsonDocument doc(obj);
//对象转换bytearray数组
QByteArray bytearray = doc.toJson();
QFile file("D:/chenli.json");
bool bs = file.open(QIODevice::WriteOnly);
if (!bs)
{
return;
}
//写入文件
file.write(bytearray);
//关闭文件
file.close();
}
MainWindow::~MainWindow()
{
delete ui;
}
四,移动主窗口的的操作
操作mouse的事件
1. virtual void mousePressEvent(QMouseEvent *event); mouse点击时候的发生
2. virtual void mouseMoveEvent(QMouseEvent *event);mouse移动事件
#include "mytitlebar.h"
#include "ui_mytitlebar.h"
#include <QPixmap>
#include <QMouseEvent>
MyTitleBar::MyTitleBar(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyTitleBar)
{
ui->setupUi(this);
//设置logo 图片
ui->logo->setPixmap(QPixmap(":/images/logo.ico").scaled(40, 40));
ui->title->setText("baidu");
}
MyTitleBar::~MyTitleBar()
{
delete ui;
}
//接收父类的窗口
void MyTitleBar::setWinParent(QWidget *parent)
{
m_parent = parent;
}
//点击时候的事件
void MyTitleBar::mousePressEvent(QMouseEvent *event)
{
//判断是否是leftbutton事件
if(event->button() == Qt::LeftButton)
{
m_pt = event->globalPos() - m_parent->geometry().topLeft();
}
}
void MyTitleBar::mouseMoveEvent(QMouseEvent *event)
{
//判断事件
if (event->buttons() & Qt::LeftButton)
{
//移动
m_parent->move(event->globalPos() - m_pt);
}
}
//关闭窗口
void MyTitleBar::on_closeBtn_clicked()
{
m_parent->close();
}
//发小
void MyTitleBar::on_setbtn_clicked()
{
m_parent->showMinimized();
}
主要的事件
主窗口的传递到子窗口的事件 主窗口调用
ui-> 控件->setWinParent(this);
//在子窗口中是一个接口
void setWinParent(QWidget *parent);
#include "mytitlebar.h"
#include "ui_mytitlebar.h"
#include <QPixmap>
#include <QMouseEvent>
MyTitleBar::MyTitleBar(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyTitleBar)
{
ui->setupUi(this);
//设置logo 图片
ui->logo->setPixmap(QPixmap(":/images/logo.ico").scaled(40, 40));
ui->title->setText("baidu");
}
MyTitleBar::~MyTitleBar()
{
delete ui;
}
//接收父类的窗口
void MyTitleBar::setWinParent(QWidget *parent)
{
m_parent = parent;
}
//点击时候的事件
void MyTitleBar::mousePressEvent(QMouseEvent *event)
{
//判断是否是leftbutton事件
if(event->button() == Qt::LeftButton)
{
m_pt = event->globalPos() - m_parent->geometry().topLeft();
}
}
void MyTitleBar::mouseMoveEvent(QMouseEvent *event)
{
//判断事件
if (event->buttons() & Qt::LeftButton)
{
//移动
m_parent->move(event->globalPos() - m_pt);
}
}
//关闭窗口
void MyTitleBar::on_closeBtn_clicked()
{
m_parent->close();
}
//发小
void MyTitleBar::on_setbtn_clicked()
{
m_parent->showMinimized();
}