日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

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

發布時間:2024/7/19 c/c++ 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt 通过类实现画图_QT案例IDE编写 通过枚举实现编码切换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

低谷期一定要默默的熬過去,別去打擾任何人,否則留下的只是別人的笑柄,不論幸或不幸,你的掙扎無人能見,無人能懂。。。

----? 網易云熱評

一、定義一個枚舉

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编写 通过枚举实现编码切换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。