qt 通过类实现画图_QT案例IDE编写 通过枚举实现编码切换
生活随笔
收集整理的這篇文章主要介紹了
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编写 通过枚举实现编码切换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中扑克牌类设计_Python
- 下一篇: oracle19c 安装权限_Oracl