低谷期一定要默默的熬过去,别去打扰任何人,否则留下的只是别人的笑柄,不论幸或不幸,你的挣扎无人能见,无人能懂。。。

----  网易云热评

一、定义一个枚举

enum MyCode{    utf_8,gbk};

二、定义一个枚举变量,默认设置为utf_8

enum MyCode flag;flag=utf_8;

三、设置编码按钮槽函数

void MainWindow::on_actionUTF8_triggered(){    flag=utf_8;    ui->label->setText("当前以UTF8编码显示");}void MainWindow::on_actionGBK_triggered(){    flag=gbk;    ui->label->setText("当前以GBK编码显示");}

四、编写打开按钮槽函数

1、打开一个文件,获取文件目录

#include   //文件对话框QString path=QFileDialog::getOpenFileName();//获取文件路径    if(path.isEmpty()) //如果路径是空,跳出    {        return;    }

2、将Qstring转换为char *,fopen需要char *

 std::string str=path.toStdString();       const char *filename=str.c_str();解决中文路径    std::string str=code->fromUnicode(path).data();    const char *filename=str.c_str();

3、打开文件,如果有中文,需要转换gbk

FILE *fp;    errno_t err;    if((err=fopen_s(&fp,filename,"rb"))!=0)    {        cout <<"打开文件失败";        cout <        return;    }    cout <<"打开文件成功";

4、循环读取文件内容,每次读取一行fgets()

  char buf[1024];    QString str1="";    while (1) {        memset(buf,0,sizeof (buf));        fgets(buf,sizeof (buf),fp);        if(flag==utf_8){  //判定是那种编码,并显示出来            str1=str1+buf;        }else if (flag==gbk){            str1=str1+code->toUnicode(buf);        }        if(feof(fp)){            break;        }

需要注意的事项:

(1) 包含头文件 #include

(2) 定义全局变量 QTextCodec *codec;

(3) 构造函数内部初始化:

codec = QTextCodec::codecForName("GBK");

(4) gbk > utf-8:codec->toUnicode()

(5) utf-8 > gbk: codec->fromUnicode()

欢迎关注公众号:顺便编点程

qt 通过类实现画图_QT案例IDE编写 通过枚举实现编码切换相关推荐

  1. Qt学习之路(1)------Qt常用类用法说明

    Qt常用类 向控制台输出文本 第一个例子,我们采用STL的方式: console.cpp #include <iostream>int main() {std::cout << ...

  2. Qt 串口类QSerialPort 使用笔记

    Qt 串口类QSerialPort 使用笔记 虽然现在大多数的家用PC机上已经不提供RS232接口了.但是由于RS232串口操作简单.通讯可靠,在工业领域中仍然有大量的应用.Qt以前的版本中,没有提供 ...

  3. 详解 QT 主要类 QWidget

    QWidget类是所有用户界面对象的基类,每一个窗口部件都是矩形,并且它们按Z轴顺序排列的.一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分. 先来看内容. AD: 2013云计算架构师 ...

  4. qt向服务器传输文字_Qt实现客户端与服务器消息发送

    这里用Qt来简单设计实现一个场景,即: (1)两端:服务器QtServer和客户端QtClient (2)功能:服务端连接客户端,两者能够互相发送消息,传送文件,并且显示文件传送进度. 环境:VS20 ...

  5. Qt4_在次线程中使用Qt的类

    在次线程中使用Qt的类 当函数可以同时被不同的线程安全地调用时,就称其为"线程安全的"(thread-safe).如果在不同的线程中对某一共享数据同时调用两个线程安全的函数,那么结 ...

  6. QT QVariant类数据类型使用

    QT QVariant类数据类型使用 1. QVariant 类用于封装数据成员的类型及取值等信息,该类类似于 C++ 共用体 union ,一个QVariant 对象,一次只能保存一个单一类型的值. ...

  7. 挑战杯三创互联网+创青春等创新创业类竞赛国家级作品案例模板全套资料分享

    挑战杯三创互联网+创青春等创新创业类竞赛国家级作品案例模板全套资料分享 三创创青春互联网+都参加过,这些竞赛大同小异.时间都在本学年的下学期,一般在学校教务处官网通知公告中可以看到具体参赛时间. 而大 ...

  8. 0004:Qt常用类 - QTime

    Qt常用类 - QTime 1 开发环境 在介绍内容之前,先说明一下开发环境,如下图: Qt版本:Qt5.3.2: Qt开发工具:Qt Creater 3.2.1: Qt构建工具:Desktop Qt ...

  9. 学习集合工具类CollectionUtils——List对象案例

    学习集合工具类CollectionUtils--List对象案例 一.依赖 二.案例 三.结果展示 一.依赖 <dependency><groupId>org.apache.c ...

最新文章

  1. leetcode网学习笔记(1)
  2. 机器学习Basics-第十一期-循环神经网络RNN
  3. IBM Cloud Speech to Text 语音识别
  4. 为ListView每个Item上面的按钮添加事件
  5. python 多元线性回归_Python机器学习,多元线性回归分析问题
  6. 敏捷开发的角色和职责阐述
  7. python学习04
  8. pytorch线性回归代码_[PyTorch 学习笔记] 1.3 张量操作与线性回归
  9. 助你解决新手开车四大问题 为您支招
  10. 如何成为一个技术“牛人”
  11. [原创]django+ldap实现统一认证部分一(django-auth-ldap实践)
  12. endwith php,辅助函数 | 进阶系列 | Laravel 7 中文文档
  13. python做一个本地搜索_用 python, django 实现的一个很简单的搜索引擎
  14. linux添加自己的键盘映射,linux下修改键盘映射
  15. 正规矩阵 酉矩阵 对角矩阵
  16. matlab帧差法图像识别
  17. 传感器 动态误差计算
  18. PAT甲级刷题计划-高精度
  19. 小三拆散原配上位结婚 因丈夫偷情将其捅死
  20. ArcGIS水文分析实战教程(4)地形预处理

热门文章

  1. VUE:解决判断网页端与手机端情况下,横竖屏无法判断的问题
  2. 【django学习】request.POST与request.POST.get两者主要区别
  3. 不能用蛮力法解决的问题_溆浦事蒙汉:脱贫攻坚绝不能心浮气躁骄傲自满疲倦厌战...
  4. (十九)【AAAI2021】Knowledge-Enhanced Hierarchical Graph Transformer Network for Multi-Behavior Recommend
  5. 插件化、热补丁中绕不开的Proguard的坑
  6. app = Flask(__name__)相关说明
  7. 数据库的方向 - 行vs列(转自: IBM i 中国开发团队)
  8. 责任链模式在Android中的应用
  9. Android官方开发文档Training系列课程中文版:连接无线设备之通过WIFI创建P2P连接
  10. Python实现二叉树的遍历