Qt的读文件,json解析的操作和主界面的跳转(四)
来源:互联网 发布:知轩藏书网 编辑:程序博客网 时间:2024/06/05 03:46
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();}
阅读全文
0 0
- Qt的读文件,json解析的操作和主界面的跳转(四)
- json文件的解析(读写操作)
- Qt的json解析
- json文件解析为字符串的操作
- QT学习笔记(四) QtDesigner 实现简单的快捷键操作界面
- Json文件的解析
- QT的文件操作
- QT的文件操作
- Java创建和解析Json数据方法(四)——json-lib包的使用
- XML文件的解析和json的解析
- QT 下 json格式数据的 生成 和 解析
- Qt关于文件和文件夹的操作
- Qt关于文件和文件夹的操作
- Qt的文件和目录操作
- python解析json字符串和json文件的区别
- Qt中自己添加的ui界面和类,不能跳转的问题
- python爬虫 如何解析json文件 json文件的解析提取和jsonpath的应用
- 对JSON格式数据的操作和解析和创建
- Codeforces Round #437 (Div. 2)
- 利用python进入数据分析之准备篇
- redis基础知识
- win7如何搭建Python开发环境
- zookeeper-3.4.9安装时,启动正常,但是zkServer.sh status查看出
- Qt的读文件,json解析的操作和主界面的跳转(四)
- 布局优化
- [字典树] Codeforces 557E Ann and Half-Palindrome
- 2.1.6锁重入(支持继承锁)
- Java 获取接口所有实现类
- MFC函数汇总
- 显示时间
- 双六问题(扩展欧几里得模板)
- 实验二——静态链表