❶ Qt編程發布後運行中文亂碼的問題
強調發布後是什麼意思? 亂碼和發布有什麼關系?
找到main函數 裡面加入以下代碼
QByteArray line = file.readAll();
QString str(line);
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
解決顯示中文亂碼的問題
❷ 為什麼我的QT經常出現亂碼
這個問題我也遇到過,因為家裡機器配置不怎麼樣,而且機器很老了有的東西跟不上!出現那種問題是很正常的!退出來再進又會好的!是吧?沒關系!
❸ 求Qt出現亂碼的具體解決辦法
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
#include <QTextCodec>
❹ openSUSE下用Qt寫的程序中文亂碼怎麼破
Centos6.3自身是帶QT4.6.2的,在裝系統時可以選擇安裝,但是沒有qvfb工具,所以又自己重新編譯了qt-x11的4.5.0版本。
qt各版本版本下載地址(在網上找的很多博文里給的鏈接都失效了,下面這個鏈接貌似還比較新,現在可以用):
ftp://ftp.qt-project.org/qt/source/
在ftp資源里找到 qt-x11-opensource-src-4.5.0、qt-embedded-linux-opensource-src-4.5.0這兩個源碼包並下載(tar.gz或tar.bz2包都有,網速不好的話看哪個小下載哪個)。
下載後將兩個源碼包分別解壓,qt-x11-opensource-src-4.5.0解壓一份,qt-embedded-linux- opensource-src-4.5.0解壓兩份,分別命名為qt-embedded-linux-opensource-src-4.5.0-x86 和 qt-embedded-linux-opensource-src-4.5.0-arm 。
開始編譯安裝:
一、X11編譯:
1.進入qt-x11-opensource-src-4.5.0源碼目錄。
./configure -no-openssl
在我這里必須加上-no-openssl選項,否則在make過程中,編譯到ssl時會報錯。出錯信息為:
ssl/qsslsocket_openssl_symbols_p.h:264: error: variable or field 『q_sk_free』 declared void
ssl/qsslsocket_openssl_symbols_p.h:264: error: 『STACK』 was not declared in this scope
ssl/qsslsocket_openssl_symbols_p.h:264: error: 『a』 was not declared in this scope
ssl/qsslsocket_openssl_symbols_p.h:265: error: 『STACK』 was not declared in this scope
ssl/qsslsocket_openssl_symbols_p.h:265: error: 『a』 was not declared in this scope
……
……
默認安裝路徑為 /usr/local/Trolltech/Qt-4.5.0。可用--prefix 指定其他安裝路徑。
2. gmake # linux下一般可直接用make代替gmake。如果要加快編譯速度,就加上 -jx ,x表示最大的線程數。
3. gmake install
二、qt-embedded-x86編譯:
1.進入qt-embedded-linux-opensource-src-4.5.0-x86源碼目錄。
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-x86 -embedded x86 -no-openssl -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb
先後配置了安裝目錄、嵌入式架構(x86)。同時也跟X11版本一樣,配置了 -no-openssl,沒有這一項的話,make的過程中會出現跟編譯X11時一樣的錯誤。再後面的幾項是為了更好的配合qvfb,網上說如果沒有這幾 項,安裝好qt-embedded-x86後想在qvfb上調試程序時,會出現類似下面的錯誤:
Error opening buffer device /dev/fb0QScreenLinuxFb::connect: No such file or directory
2. gmake
跟x11版一樣
3. gamke install
三、qt-embedded-arm:
與前面兩個不同,在編譯arm版本的qt-embedded前,必須確認已經安裝了交叉工具鏈,編譯過程中要生成許多arm架構的庫,所以必須有 arm-linux-gcc、arm-linux-g++等工具。我用的是友善提供的arm-linux-gcc-4.5.1版本。
1. 進入qt-embedded-linux-opensource-src-4.5.0-arm源碼目錄。
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-arm -embedded arm -no-openssl -qt-libpng
指定了安裝路徑、嵌入式架構。同時也跟X11版本一樣,配置了 -no-openssl,沒有這一項的話,make的過程中會出現跟編譯X11時一樣的錯誤。
另外,還增加了一項, -qt-libpng,這個選項應該是關於png相關的庫,指定用qt自帶的png庫。如果沒有這一項,我這里會出現如下錯誤:
image/qpnghandler.cpp: In member function 'virtual QVariant QPngHandler::option(QImageIOHandler::ImageOption) const':
image/qpnghandler.cpp:950:35: warning: 'png_info_struct::width' is deprecated (declared at /opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/include/png.h:639)
image/qpnghandler.cpp:950:35: warning: 'png_info_struct::width' is deprecated (declared at /opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/include/png.h:639)
image/qpnghandler.cpp:950:55: warning: 'png_info_struct::height' is deprecated (declared at /opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/include/png.h:640)
image/qpnghandler.cpp:950:55: warning: 'png_info_struct::height' is deprecated (declared at /opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/include/png.h:640)
make[1]: *** [.obj/release-shared-emb-arm/qpnghandler.o] 錯誤 1
make[1]: *** 正在等待未完成的任務....
make[1]: Leaving directory `/root/qt4.5.0/qt-embedded-linux-opensource-src-4.5.0-arm/src/gui'
make: *** [sub-gui-make_default-ordered] 錯誤 2
看起來像是我的交叉工具鏈跟這個QT版本匹配的不太好,Qt好像不太兼容交叉工具鏈的png.h頭文件中定義的數據結構。加上 -qt-libpng 可解決此問題。
四、qvfb:
這時QT就已安裝成功。但是還需要額外安裝qvfb。
進入qt-x11-opensource-src-4.5.0源碼包目錄,然後
cd tools/qvfb
在qvfb源碼目錄下運行 make 會在qt-x11-opensource-src-4.5.0/bin下生成qvfb,我們將它至/usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin下即可。
end:
到這里,QT的開發環境基本就搭建好了,利用 qt-embedded-x86 和 qvfb 工具可以很方便的調試QT程序,調試好的程序再經 qt-embedded-arm 編譯就可在開發板上運行(還有個小問題,我現在編譯好的QT程序雖然可以在開發板上運行,但是運行時觸摸屏不能用,只能用USB滑鼠控制,想支持觸摸屏貌 似還需要移植tslib庫,等我折騰完了再回來把相關內容補充上)。
❺ QT亂碼怎麼解決
方法/步驟
1
在一個linedit控制項裡面,我用了setplaceholdertext的方法,來顯示文字,如下圖
2
但是一跑起來,發現顯示的文字並不是期待的「網路測試」,而是如下亂碼
3
此時我們需要在對應的cpp文件中,包含一個頭文件「qtextcodec.h」,
即在前面加上一行代碼include "qtextcodec.h」
4
之後統一編碼格式為UTF-8,在setplaceholdertext方法調用之前加入以下代碼
QTextCodec
*codec=QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
5
然後再調試程序
6
你會發現,已經正常顯示中文了
http://jingyan..com/article/1612d500418fede20e1eeeb1.html
❻ Qt中文亂碼問題怎麼解決
(1)、中文編碼一律使用QString::fromLocal8Bit()介面。
原因:需要支持QT4版本。QStringLiteral()方法也可取,但是它只支持QT5版本,如果沒有版本問題,可以使用。
(2)、CPP等文件編碼一律使用UTF8—BOM格式。
原因1:UTF8-無BOM在使用window編譯器cl中編譯會失敗,當然除非你Windows中使用QT的Mingw版本編譯開發。
原因2:不使用GBK的文件編碼是為了更容易的兼容到linux版本與windows中,否則你需要改QtCreate的編碼環境與linux的系統字元環境。
❼ qt 5.4 tr()時中文亂碼
是由於港台的繁體中文大五碼(BIG5)與大陸簡體中文(GB2312)不通用而造成的.在正常機器上選擇「開始」→「運行」,即使你用內碼翻譯軟體處理也不會消除這類亂碼,導出該分支注冊表信息到文件(如ZT。這種亂碼形成的原因比較復雜,菜單等顯示界面上的漢字都是受一個動態鏈接庫「:是Windows系統顯示亂碼.文本亂碼.請你將游標定位到「HKEY_LOCAL_MACHINECurrentControlSet.選擇「HKEY_LOCAL_MACHINE.首先在顯示亂碼的機器上選擇「開始」→「運行」,在 「HKEY_LOCAL_MACHINESystem:是各種應用程序,打開注冊表編輯器;Control,把ZT.REG文件導入注冊表中即可:菜單。解決辦法是重新安裝中文軟體漢字亂碼現象有4種類型,在對話框中鍵入「regedit」:如果你找不到一台與你的Windows版本相同且顯示正常的機器;Fonassoc」下,打開注冊表編輯器,如果以後你安裝了某個...
❽ Qt顯示中文亂碼
先用文本文件的打開另存為的時候設置一下編碼就好了 一般Windows下是gbk
❾ qt5.2在編輯界面中顯示亂碼
編輯界面編碼不對,換種編碼,如果以前是utf-8就換成GBK,如果以前是GBK就換utf-8