qt 通过类实现画图_QT案例IDE编写 通过枚举实现编码切换
生活随笔
收集整理的這篇文章主要介紹了
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)題。
- 上一篇: python中扑克牌类设计_Python
- 下一篇: oracle19c 安装权限_Oracl