qt解决编码问题

引入

先在一个路径下,创建两个文本文件,分别为 utf-8 和 ANSI 类型、


使用我们的记事本打开,发现会ANSI格式的会乱码,那是因为 代码里面我们指定了编码类型为 UTF-8


so 这些写死编码格式是不安全的,会打开不同类型的文件时候出现乱码

接下来看看我们怎么解决的吧
===============================

QTextStream

QTextStream 常用的字符编码

在 Qt 中, QTextStream 常用的字符编码主要包括以下几种:

这些编码覆盖了大部分常用的语言字符集,可以通过 QTextCodec::codecForName() 方法在
QTextStream 中进行设置

检测光标位置,并在右下角显示光标位置

在程序左上方显示当前打开的文件名称

====================================


QComboBox  -- 解决上面选择编码的问题

QComboBox 是 Qt 框架中用于创建下拉列表的一个控件。
它允许用户从一组选项中选择一个选项,并可以配置为可编辑,使用户能够在其中输入文本。
QComboBox 提供了一系列方法来添加、删除和修改列表中的项,支持通过索引或文本检索项,并可以通过信号和槽机制来响应用户的选择变化。该控件广泛应用于需要从多个选项中进行选择的用户界面场景,例如表单和设置界面。

QComboBox 常用API


case: 简单使用:


Widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    connect(ui->comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(onCurrentIndexChanged(int)));
}

Widget::~Widget()
{
    delete ui;
}

void Widget::onCurrentIndexChanged(int index)
{
  qDebug()<<index;
  qDebug()<<ui->comboBox->currentText();
}


Widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
public slots:
  void   onCurrentIndexChanged(int index);

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H


====================================================

优化到记事本后,现象;


void Widget::onCurrentIndexChanged(int index)
{
 // 实现功能,对打开的文件修改编码类型,同时能实现重新生成文本框内容
 // 先清屏
 ui->textEdit->clear();
 if(qfile.isOpen()){ // 判断文件是否打开

     //这个函数与修改编码格式的信号绑定了,只能编码类型发生变化的情况下才会使用
     QTextStream in(&qfile); // 实例化对象 -- 来操作这个文件
      //修改对应的编码格式
     in.setCodec(ui->comboBox->currentText().toStdString().c_str());
     //将修改后的文本打印出来
     // 注意前面打开文件的时候,光标已经到了最后面,我们需要给光标复位一下
     qfile.seek(0);//光标复位 --> 回到文件头
     while(!in.atEnd()){
     QString context = in.readLine();
     ui->textEdit->append(context);
     }

 }

}

我们的还可以应用到更加复杂的场景中,比如这篇: 一个项目带你入门qt - 记事本(上)-CSDN博客


 

相关推荐

  1. QT-通信编码格式问题

    2024-05-26 05:32:42       29 阅读
  2. qt mingw编辑器的编码问题

    2024-05-26 05:32:42       33 阅读
  3. 解决qt5.12.12编译源码没有libqxcb的问题

    2024-05-26 05:32:42       14 阅读
  4. Qt::中文乱码问题解决

    2024-05-26 05:32:42       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-26 05:32:42       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-26 05:32:42       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-26 05:32:42       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-26 05:32:42       18 阅读

热门阅读

  1. 【vue嵌套iframe】实现项目重构

    2024-05-26 05:32:42       15 阅读
  2. glances的安装方式

    2024-05-26 05:32:42       9 阅读
  3. netstat命令检查端口是否监听

    2024-05-26 05:32:42       10 阅读
  4. C语言基础-如何避免内存泄漏

    2024-05-26 05:32:42       12 阅读
  5. 泛型中K T V E ? Object等分别代表的含义

    2024-05-26 05:32:42       10 阅读
  6. 所有笔记总结目录

    2024-05-26 05:32:42       12 阅读
  7. Python库之Scrapy的简介、安装、使用方法详细攻略

    2024-05-26 05:32:42       11 阅读
  8. 诺兰电影欣赏笔记

    2024-05-26 05:32:42       11 阅读
  9. Kafka之【消费消息】

    2024-05-26 05:32:42       10 阅读
  10. 解决uniApp 中不能直接使用 Axios 的问题

    2024-05-26 05:32:42       12 阅读
  11. 关系型数据库的三范式理解

    2024-05-26 05:32:42       11 阅读
  12. 汇编小程序

    2024-05-26 05:32:42       10 阅读
  13. 怎样使用类和对象

    2024-05-26 05:32:42       8 阅读