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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

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

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

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

----? 網(wǎng)易云熱評(píng)

一、定義一個(gè)枚舉

enum MyCode{ utf_8,gbk};

二、定義一個(gè)枚舉變量,默認(rèn)設(shè)置為utf_8

enum MyCode flag;flag=utf_8;

三、設(shè)置編碼按鈕槽函數(shù)

void MainWindow::on_actionUTF8_triggered(){ flag=utf_8; ui->label->setText("當(dāng)前以UTF8編碼顯示");}void MainWindow::on_actionGBK_triggered(){ flag=gbk; ui->label->setText("當(dāng)前以GBK編碼顯示");}

四、編寫打開(kāi)按鈕槽函數(shù)

1、打開(kāi)一個(gè)文件,獲取文件目錄

#include //文件對(duì)話框QString path=QFileDialog::getOpenFileName();//獲取文件路徑 if(path.isEmpty()) //如果路徑是空,跳出 { return; }

2、將Qstring轉(zhuǎn)換為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、打開(kāi)文件,如果有中文,需要轉(zhuǎn)換gbk

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

4、循環(huán)讀取文件內(nèi)容,每次讀取一行fgets()

char buf[1024]; QString str1=""; while (1) { memset(buf,0,sizeof (buf)); fgets(buf,sizeof (buf),fp); if(flag==utf_8){ //判定是那種編碼,并顯示出來(lái) str1=str1+buf; }else if (flag==gbk){ str1=str1+code->toUnicode(buf); } if(feof(fp)){ break; }

需要注意的事項(xiàng):

(1) 包含頭文件 #include

(2) 定義全局變量 QTextCodec *codec;

(3) 構(gòu)造函數(shù)內(nèi)部初始化:

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

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

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

歡迎關(guān)注公眾號(hào):順便編點(diǎn)程

總結(jié)

以上是生活随笔為你收集整理的qt 通过类实现画图_QT案例IDE编写 通过枚举实现编码切换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。